From: rtel Date: Wed, 24 Dec 2014 08:55:14 +0000 (+0000) Subject: Rename SAM4E demo directory to include the 'F' in 'M4F' - minor point for the sake... X-Git-Tag: V8.2.0rc1~1 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=fe67436e3ab4a399078aaf27b36ad6eac4651965;p=freertos Rename SAM4E demo directory to include the 'F' in 'M4F' - minor point for the sake of consistency. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@2319 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/RTOSDemo.atsln b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/RTOSDemo.atsln new file mode 100644 index 000000000..8de4446cc --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/RTOSDemo.atsln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Atmel Studio Solution File, Format Version 11.00 +Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "RTOSDemo", "RTOSDemo.cproj", "{257FE152-8D54-41CA-AFE7-777DE72FE329}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Release|ARM = Release|ARM + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {257FE152-8D54-41CA-AFE7-777DE72FE329}.Debug|ARM.ActiveCfg = Debug|ARM + {257FE152-8D54-41CA-AFE7-777DE72FE329}.Debug|ARM.Build.0 = Debug|ARM + {257FE152-8D54-41CA-AFE7-777DE72FE329}.Release|ARM.ActiveCfg = Release|ARM + {257FE152-8D54-41CA-AFE7-777DE72FE329}.Release|ARM.Build.0 = Release|ARM + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/RTOSDemo.atsuo b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/RTOSDemo.atsuo new file mode 100644 index 000000000..08cf7bfc1 Binary files /dev/null and b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/RTOSDemo.atsuo differ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/RTOSDemo.cproj b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/RTOSDemo.cproj new file mode 100644 index 000000000..e3941f3a6 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/RTOSDemo.cproj @@ -0,0 +1,1182 @@ + + + + 2.0 + 6.2 + {257fe152-8d54-41ca-afe7-777de72fe329} + $(MSBuildProjectName) + $(MSBuildProjectName) + $(MSBuildProjectName) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ATSAM4E16E + sam4e + C + com.Atmel.ARMGCC.C + + $(MSBuildProjectDirectory)\$(Configuration) + $(MSBuildProjectName) + .elf + Executable + Native + true + false + true + true + 0x20000000 + + exception_table + 2 + 1 + com.atmel.avrdbg.tool.samice + + + + false + 7020000 + + SWD + + com.atmel.avrdbg.tool.samice + 158000789 + J-Link + + SWD + + + + + True + True + True + True + True + + + ARM_MATH_CM4=true + BOARD=SAM4E_EK + __SAM4E16E__ + printf=iprintf + + + + + ../src + ../src/ASF/common/boards + ../src/ASF/common/services/clock + ../src/ASF/common/services/ioport + ../src/ASF/common/utils + ../src/ASF/sam/boards + ../src/ASF/sam/boards/sam4e_ek + ../src/ASF/sam/drivers/pmc + ../src/ASF/sam/utils + ../src/ASF/sam/utils/cmsis/sam4e/include + ../src/ASF/sam/utils/cmsis/sam4e/source/templates + ../src/ASF/sam/utils/fpu + ../src/ASF/sam/utils/header_files + ../src/ASF/sam/utils/preprocessor + ../src/ASF/thirdparty/CMSIS/Include + ../src/ASF/thirdparty/CMSIS/Lib/GCC + ../src/config + %24(ToolchainDir)\..\..\CMSIS_Atmel + %24(ToolchainDir)\..\..\CMSIS_Atmel\CMSIS\Include + %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL + %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL\sam4e\include + ../src/ASF/sam/components/ethernet_phy/ksz8051mnl + ../src/ASF/sam/drivers/gmac + ../src/ASF/sam/components/display/aat31xx + ../src/ASF/sam/components/display/ili93xx + ../src/ASF/sam/drivers/ebi/smc + ../src/ASF/sam/drivers/tc + + + Optimize for size (-Os) + -fdata-sections + True + True + -pipe -fno-strict-aliasing -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -std=gnu99 -ffunction-sections -fdata-sections -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int -Wmain -Wparentheses -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef -Wshadow -Wbad-function-cast -Wwrite-strings -Wsign-compare -Waggregate-return -Wmissing-declarations -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations -Wpacked -Wredundant-decls -Wnested-externs -Wlong-long -Wunreachable-code -Wcast-align --param max-inline-insns-single=500 -mfloat-abi=softfp -mfpu=vfpv4 + + + arm_cortexM4lf_math + m + + + + + ../src/ASF/thirdparty/CMSIS/Lib/GCC + + + True + -Wl,--entry=Reset_Handler -Wl,--cref -mthumb -T../src/ASF/sam/utils/linker_scripts/sam4e/sam4e16e/gcc/flash.ld + -DARM_MATH_CM4=true -DBOARD=SAM4E_EK -D__SAM4E16E__ -Dprintf=iprintf + + + ../src + ../src/ASF/common/boards + ../src/ASF/common/services/clock + ../src/ASF/common/services/ioport + ../src/ASF/common/utils + ../src/ASF/sam/boards + ../src/ASF/sam/boards/sam4e_ek + ../src/ASF/sam/drivers/pmc + ../src/ASF/sam/utils + ../src/ASF/sam/utils/cmsis/sam4e/include + ../src/ASF/sam/utils/cmsis/sam4e/source/templates + ../src/ASF/sam/utils/fpu + ../src/ASF/sam/utils/header_files + ../src/ASF/sam/utils/preprocessor + ../src/ASF/thirdparty/CMSIS/Include + ../src/ASF/thirdparty/CMSIS/Lib/GCC + ../src/config + %24(ToolchainDir)\..\..\CMSIS_Atmel + %24(ToolchainDir)\..\..\CMSIS_Atmel\CMSIS\Include + %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL + %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL\sam4e\include + ../src/ASF/sam/components/ethernet_phy/ksz8051mnl + ../src/ASF/sam/drivers/gmac + ../src/ASF/sam/components/display/aat31xx + ../src/ASF/sam/components/display/ili93xx + ../src/ASF/sam/drivers/ebi/smc + ../src/ASF/sam/drivers/tc + + + + + True + True + True + True + + + + + True + True + True + True + True + + + ARM_MATH_CM4=true + BOARD=SAM4E_EK + __SAM4E16E__ + + + + + ../src + ../src/ASF/common/boards + ../src/ASF/common/services/clock + ../src/ASF/common/services/ioport + ../src/ASF/common/utils + ../src/ASF/sam/boards + ../src/ASF/sam/boards/sam4e_ek + ../src/ASF/sam/drivers/pmc + ../src/ASF/sam/utils + ../src/ASF/sam/utils/cmsis/sam4e/include + ../src/ASF/sam/utils/cmsis/sam4e/source/templates + ../src/ASF/sam/utils/fpu + ../src/ASF/sam/utils/header_files + ../src/ASF/sam/utils/preprocessor + ../src/ASF/thirdparty/CMSIS/Include + ../src/ASF/thirdparty/CMSIS/Lib/GCC + ../src/config + %24(ToolchainDir)\..\..\CMSIS_Atmel + %24(ToolchainDir)\..\..\CMSIS_Atmel\CMSIS\Include + %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL + %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL\sam4e\include + ../../../../FreeRTOS/Source/portable/GCC/ARM_CM4F + ../../../../FreeRTOS/Source/include + ../../../../FreeRTOS-Plus/Source/FreeRTOS-Plus-UDP/include + ../../../../FreeRTOS-Plus/Source/FreeRTOS-Plus-UDP/portable/Compiler/GCC + ../../../../FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_UDP_Demos/TraceMacros/Example1 + ../src/ASF/sam/components/ethernet_phy/ksz8051mnl + ../src/ASF/sam/drivers/gmac + ../../../../FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI + ../../../../FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/api + ../../../../FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_UDP_Demos/CLICommands + ../../Common/include + ../src/ASF/sam/components/display/aat31xx + ../src/ASF/sam/components/display/ili93xx + ../src/ASF/sam/drivers/ebi/smc + ../../../../FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_UDP_Demos/EchoClients + ../src/ASF/sam/drivers/tc + + + -fdata-sections + True + Maximum (-g3) + True + True + -pipe -fno-strict-aliasing -Wall -Wextra -ffunction-sections -fdata-sections --param max-inline-insns-single=500 -mfloat-abi=softfp -mfpu=vfpv4 + + + m + + + + + ../src/ASF/thirdparty/CMSIS/Lib/GCC + + + True + + -Wl,--entry=Reset_Handler -Wl,--cref -mthumb -T../src/ASF/sam/utils/linker_scripts/sam4e/sam4e16e/gcc/flash.ld + Default (-g) + -DARM_MATH_CM4=true -DBOARD=SAM4E_EK -D__SAM4E16E__ -Dprintf=iprintf + + + ../src + ../src/ASF/common/boards + ../src/ASF/common/services/clock + ../src/ASF/common/services/ioport + ../src/ASF/common/utils + ../src/ASF/sam/boards + ../src/ASF/sam/boards/sam4e_ek + ../src/ASF/sam/drivers/pmc + ../src/ASF/sam/utils + ../src/ASF/sam/utils/cmsis/sam4e/include + ../src/ASF/sam/utils/cmsis/sam4e/source/templates + ../src/ASF/sam/utils/fpu + ../src/ASF/sam/utils/header_files + ../src/ASF/sam/utils/preprocessor + ../src/ASF/thirdparty/CMSIS/Include + ../src/ASF/thirdparty/CMSIS/Lib/GCC + ../src/config + %24(ToolchainDir)\..\..\CMSIS_Atmel + %24(ToolchainDir)\..\..\CMSIS_Atmel\CMSIS\Include + %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL + %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL\sam4e\include + ../src/ASF/sam/components/ethernet_phy/ksz8051mnl + ../src/ASF/sam/drivers/gmac + ../src/ASF/sam/components/display/aat31xx + ../src/ASF/sam/components/display/ili93xx + ../src/ASF/sam/drivers/ebi/smc + ../src/ASF/sam/drivers/tc + + + Default (-Wa,-g) + + + True + True + True + True + + + + compile + src\File-Related-CLI-commands.c + + + compile + src\Sample-CLI-commands.c + + + compile + src\UDP-Related-CLI-commands.c + + + compile + src\File-system-demo.c + + + compile + src\UDPCommandServer.c + + + compile + src\TwoEchoClients.c + + + compile + src\FreeRTOS+\FreeRTOS+FAT SL\dir.c + + + compile + src\FreeRTOS+\FreeRTOS+FAT SL\drv.c + + + compile + src\FreeRTOS+\FreeRTOS+FAT SL\fat.c + + + compile + src\FreeRTOS+\FreeRTOS+FAT SL\file.c + + + compile + src\FreeRTOS+\FreeRTOS+FAT SL\f_lock.c + + + compile + src\FreeRTOS+\FreeRTOS+FAT SL\util.c + + + compile + src\FreeRTOS+\FreeRTOS+FAT SL\util_sfn.c + + + compile + src\FreeRTOS+\FreeRTOS+FAT SL\volume.c + + + compile + src\FreeRTOS+\FreeRTOS+FAT SL\Media Driver\ramdrv_f.c + + + compile + src\FreeRTOS+\FreeRTOS+FAT SL\PSP\Target\RTC\psp_rtc.c + + + compile + src\FreeRTOS\event_groups.c + + + compile + src\Common Demo Tasks\blocktim.c + + + compile + src\Common Demo Tasks\countsem.c + + + compile + src\Common Demo Tasks\dynamic.c + + + compile + src\Common Demo Tasks\EventGroupsDemo.c + + + compile + src\Common Demo Tasks\flash_timer.c + + + compile + src\Common Demo Tasks\GenQTest.c + + + compile + src\Common Demo Tasks\IntQueue.c + + + compile + src\Common Demo Tasks\IntSemTest.c + + + compile + src\Common Demo Tasks\QPeek.c + + + compile + src\Common Demo Tasks\QueueOverwrite.c + + + compile + src\Common Demo Tasks\QueueSet.c + + + compile + src\Common Demo Tasks\recmutex.c + + + compile + src\Common Demo Tasks\semtest.c + + + compile + src\Common Demo Tasks\TaskNotify.c + + + compile + src\Common Demo Tasks\TimerDemo.c + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + src\DemoIPTrace.c + + + compile + src\FreeRTOS+\FreeRTOS+CLI\FreeRTOS_CLI.c + + + compile + src\FreeRTOS+\FreeRTOS+UDP\FreeRTOS_DHCP.c + + + compile + src\FreeRTOS+\FreeRTOS+UDP\FreeRTOS_DNS.c + + + compile + src\FreeRTOS+\FreeRTOS+UDP\FreeRTOS_Sockets.c + + + compile + src\FreeRTOS+\FreeRTOS+UDP\FreeRTOS_UDP_IP.c + + + compile + src\FreeRTOS+\FreeRTOS+UDP\portable\NetworkBuffers\BufferAllocation_2.c + + + compile + src\FreeRTOS+\FreeRTOS+UDP\portable\NetWorkInterface\NetworkInterface.c + + + compile + src\FreeRTOS\list.c + + + compile + src\FreeRTOS\portable\port.c + + + compile + src\FreeRTOS\portable\heap_4.c + + + compile + src\FreeRTOS\queue.c + + + compile + src\FreeRTOS\tasks.c + + + compile + src\FreeRTOS\timers.c + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/Read_Me_Instructions.url b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/Read_Me_Instructions.url new file mode 100644 index 000000000..86d28f180 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/Read_Me_Instructions.url @@ -0,0 +1,5 @@ +[InternetShortcut] +URL=http://www.freertos.org/Atmel_SAM4E_RTOS_Demo.html +IDList= +[{000214A0-0000-0000-C000-000000000046}] +Prop3=19,2 diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/jlink.config b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/jlink.config new file mode 100644 index 000000000..de1b137f3 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/jlink.config @@ -0,0 +1,34 @@ +[BREAKPOINTS] +ShowInfoWin = 1 +EnableFlashBP = 2 +BPDuringExecution = 0 +[CFI] +CFISize = 0x00 +CFIAddr = 0x00 +[CPU] +OverrideMemMap = 0 +AllowSimulation = 1 +ScriptFile="" +[FLASH] +CacheExcludeSize = 0x00 +CacheExcludeAddr = 0x00 +MinNumBytesFlashDL = 0 +SkipProgOnCRCMatch = 1 +VerifyDownload = 1 +AllowCaching = 1 +EnableFlashDL = 2 +Override = 0 +Device="UNSPECIFIED" +[GENERAL] +WorkRAMSize = 0x00 +WorkRAMAddr = 0x00 +RAMUsageLimit = 0x00 +[SWO] +SWOLogFile="" +[MEM] +RdOverrideOrMask = 0x00 +RdOverrideAndMask = 0xFFFFFFFF +RdOverrideAddr = 0xFFFFFFFF +WrOverrideOrMask = 0x00 +WrOverrideAndMask = 0xFFFFFFFF +WrOverrideAddr = 0xFFFFFFFF diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/boards/board.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/boards/board.h new file mode 100644 index 000000000..c355c03eb --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/boards/board.h @@ -0,0 +1,347 @@ +/** + * \file + * + * \brief Standard board header file. + * + * This file includes the appropriate board header file according to the + * defined board (parameter BOARD). + * + * Copyright (c) 2009-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _BOARD_H_ +#define _BOARD_H_ + +/** + * \defgroup group_common_boards Generic board support + * + * The generic board support module includes board-specific definitions + * and function prototypes, such as the board initialization function. + * + * \{ + */ + +#include "compiler.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/*! \name Base Boards + */ +//! @{ +#define EVK1100 1 //!< AT32UC3A EVK1100 board. +#define EVK1101 2 //!< AT32UC3B EVK1101 board. +#define UC3C_EK 3 //!< AT32UC3C UC3C_EK board. +#define EVK1104 4 //!< AT32UC3A3 EVK1104 board. +#define EVK1105 5 //!< AT32UC3A EVK1105 board. +#define STK600_RCUC3L0 6 //!< STK600 RCUC3L0 board. +#define UC3L_EK 7 //!< AT32UC3L-EK board. +#define XPLAIN 8 //!< ATxmega128A1 Xplain board. +#define STK600_RC064X 10 //!< ATxmega256A3 STK600 board. +#define STK600_RC100X 11 //!< ATxmega128A1 STK600 board. +#define UC3_A3_XPLAINED 13 //!< ATUC3A3 UC3-A3 Xplained board. +#define UC3_L0_XPLAINED 15 //!< ATUC3L0 UC3-L0 Xplained board. +#define STK600_RCUC3D 16 //!< STK600 RCUC3D board. +#define STK600_RCUC3C0 17 //!< STK600 RCUC3C board. +#define XMEGA_B1_XPLAINED 18 //!< ATxmega128B1 Xplained board. +#define XMEGA_A1_XPLAINED 19 //!< ATxmega128A1 Xplain-A1 board. +#define STK600_RCUC3L4 21 //!< ATUCL4 STK600 board +#define UC3_L0_XPLAINED_BC 22 //!< ATUC3L0 UC3-L0 Xplained board controller board +#define MEGA1284P_XPLAINED_BC 23 //!< ATmega1284P-Xplained board controller board +#define STK600_RC044X 24 //!< STK600 with RC044X routing card board. +#define STK600_RCUC3B0 25 //!< STK600 RCUC3B0 board. +#define UC3_L0_QT600 26 //!< QT600 UC3L0 MCU board. +#define XMEGA_A3BU_XPLAINED 27 //!< ATxmega256A3BU Xplained board. +#define STK600_RC064X_LCDX 28 //!< XMEGAB3 STK600 RC064X LCDX board. +#define STK600_RC100X_LCDX 29 //!< XMEGAB1 STK600 RC100X LCDX board. +#define UC3B_BOARD_CONTROLLER 30 //!< AT32UC3B1 board controller for Atmel boards +#define RZ600 31 //!< AT32UC3A RZ600 MCU board +#define SAM3S_EK 32 //!< SAM3S-EK board. +#define SAM3U_EK 33 //!< SAM3U-EK board. +#define SAM3X_EK 34 //!< SAM3X-EK board. +#define SAM3N_EK 35 //!< SAM3N-EK board. +#define SAM3S_EK2 36 //!< SAM3S-EK2 board. +#define SAM4S_EK 37 //!< SAM4S-EK board. +#define STK600_RCUC3A0 38 //!< STK600 RCUC3A0 board. +#define STK600_MEGA 39 //!< STK600 MEGA board. +#define MEGA_1284P_XPLAINED 40 //!< ATmega1284P Xplained board. +#define SAM4S_XPLAINED 41 //!< SAM4S Xplained board. +#define ATXMEGA128A1_QT600 42 //!< QT600 ATXMEGA128A1 MCU board. +#define ARDUINO_DUE_X 43 //!< Arduino Due/X board. +#define STK600_RCUC3L3 44 //!< ATUCL3 STK600 board +#define SAM4L_EK 45 //!< SAM4L-EK board. +#define STK600_MEGA_RF 46 //!< STK600 MEGA RF EVK board. +#define XMEGA_C3_XPLAINED 47 //!< ATxmega384C3 Xplained board. +#define STK600_RC032X 48 //!< STK600 with RC032X routing card board. +#define SAM4S_EK2 49 //!< SAM4S-EK2 board. +#define XMEGA_E5_XPLAINED 50 //!< ATxmega32E5 Xplained board. +#define SAM4E_EK 51 //!< SAM4E-EK board. +#define ATMEGA256RFR2_XPLAINED_PRO 52 //!< ATmega256RFR2 Xplained Pro board. +#define SAM4S_XPLAINED_PRO 53 //!< SAM4S Xplained Pro board. +#define SAM4L_XPLAINED_PRO 54 //!< SAM4L Xplained Pro board. +#define ATMEGA256RFR2_ZIGBIT 55 //!< ATmega256RFR2 zigbit +#define XMEGA_RF233_ZIGBIT 56 //!< ATxmega256A3U with AT86RF233 zigbit +#define XMEGA_RF212B_ZIGBIT 57 //!< ATxmega256A3U with AT86RF212B zigbit +#define SAM4S_WPIR_RD 58 //!< SAM4S-WPIR-RD board. +#define SAMD20_XPLAINED_PRO 59 //!< SAMD20 Xplained PRO board +#define SAM4L8_XPLAINED_PRO 60 //!< SAM4L8 Xplained Pro board. +#define SAM4N_XPLAINED_PRO 61 //!< SAM4N-XPLAINED-PRO board. +#define XMEGA_A3_REB_CBB 62 //!< SAM4L8 Xplained Pro board. +#define ATMEGARFX_RCB 63 //!< RFR2 & RFA1 RCB +#define SIMULATOR_XMEGA_A1 97 //!< Simulator for XMEGA A1 devices +#define AVR_SIMULATOR_UC3 98 //!< AVR SIMULATOR for AVR UC3 device family. +#define USER_BOARD 99 //!< User-reserved board (if any). +#define DUMMY_BOARD 100 //!< Dummy board to support board-independent applications (e.g. bootloader) +//! @} + +/*! \name Extension Boards + */ +//! @{ +#define EXT1102 1 //!< AT32UC3B EXT1102 board +#define MC300 2 //!< AT32UC3 MC300 board +#define SENSORS_XPLAINED_INERTIAL_1 3 //!< Xplained inertial sensor board 1 +#define SENSORS_XPLAINED_INERTIAL_2 4 //!< Xplained inertial sensor board 2 +#define SENSORS_XPLAINED_PRESSURE_1 5 //!< Xplained pressure sensor board +#define SENSORS_XPLAINED_LIGHTPROX_1 6 //!< Xplained light & proximity sensor board +#define SENSORS_XPLAINED_INERTIAL_A1 7 //!< Xplained inertial sensor board "A" +#define RZ600_AT86RF231 8 //!< AT86RF231 RF board in RZ600 +#define RZ600_AT86RF230B 9 //!< AT86RF230B RF board in RZ600 +#define RZ600_AT86RF212 10 //!< AT86RF212 RF board in RZ600 +#define SENSORS_XPLAINED_BREADBOARD 11 //!< Xplained sensor development breadboard +#define SECURITY_XPLAINED 12 //!< Xplained ATSHA204 board +#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any). +//! @} + +#if BOARD == EVK1100 +# include "evk1100/evk1100.h" +#elif BOARD == EVK1101 +# include "evk1101/evk1101.h" +#elif BOARD == UC3C_EK +# include "uc3c_ek/uc3c_ek.h" +#elif BOARD == EVK1104 +# include "evk1104/evk1104.h" +#elif BOARD == EVK1105 +# include "evk1105/evk1105.h" +#elif BOARD == STK600_RCUC3L0 +# include "stk600/rcuc3l0/stk600_rcuc3l0.h" +#elif BOARD == UC3L_EK +# include "uc3l_ek/uc3l_ek.h" +#elif BOARD == STK600_RCUC3L4 +# include "stk600/rcuc3l4/stk600_rcuc3l4.h" +#elif BOARD == XPLAIN +# include "xplain/xplain.h" +#elif BOARD == STK600_MEGA + /*No header-file to include*/ +#elif BOARD == STK600_MEGA_RF +# include "stk600.h" +#elif BOARD == ATMEGA256RFR2_XPLAINED_PRO +# include "atmega256rfr2_xplained_pro/atmega256rfr2_xplained_pro.h" +#elif BOARD == ATMEGA256RFR2_ZIGBIT +# include "atmega256rfr2_zigbit/atmega256rfr2_zigbit.h" +#elif BOARD == STK600_RC032X +# include "stk600/rc032x/stk600_rc032x.h" +#elif BOARD == STK600_RC044X +# include "stk600/rc044x/stk600_rc044x.h" +#elif BOARD == STK600_RC064X +# include "stk600/rc064x/stk600_rc064x.h" +#elif BOARD == STK600_RC100X +# include "stk600/rc100x/stk600_rc100x.h" +#elif BOARD == UC3_A3_XPLAINED +# include "uc3_a3_xplained/uc3_a3_xplained.h" +#elif BOARD == UC3_L0_XPLAINED +# include "uc3_l0_xplained/uc3_l0_xplained.h" +#elif BOARD == STK600_RCUC3B0 +# include "stk600/rcuc3b0/stk600_rcuc3b0.h" +#elif BOARD == STK600_RCUC3D +# include "stk600/rcuc3d/stk600_rcuc3d.h" +#elif BOARD == STK600_RCUC3C0 +# include "stk600/rcuc3c0/stk600_rcuc3c0.h" +#elif BOARD == XMEGA_B1_XPLAINED +# include "xmega_b1_xplained/xmega_b1_xplained.h" +#elif BOARD == STK600_RC064X_LCDX +# include "stk600/rc064x_lcdx/stk600_rc064x_lcdx.h" +#elif BOARD == STK600_RC100X_LCDX +# include "stk600/rc100x_lcdx/stk600_rc100x_lcdx.h" +#elif BOARD == XMEGA_A1_XPLAINED +# include "xmega_a1_xplained/xmega_a1_xplained.h" +#elif BOARD == UC3_L0_XPLAINED_BC +# include "uc3_l0_xplained_bc/uc3_l0_xplained_bc.h" +#elif BOARD == SAM3S_EK +# include "sam3s_ek/sam3s_ek.h" +# include "system_sam3s.h" +#elif BOARD == SAM3S_EK2 +# include "sam3s_ek2/sam3s_ek2.h" +# include "system_sam3sd8.h" +#elif BOARD == SAM3U_EK +# include "sam3u_ek/sam3u_ek.h" +# include "system_sam3u.h" +#elif BOARD == SAM3X_EK +# include "sam3x_ek/sam3x_ek.h" +# include "system_sam3x.h" +#elif BOARD == SAM3N_EK +# include "sam3n_ek/sam3n_ek.h" +# include "system_sam3n.h" +#elif BOARD == SAM4S_EK +# include "sam4s_ek/sam4s_ek.h" +# include "system_sam4s.h" +#elif BOARD == SAM4S_WPIR_RD +# include "sam4s_wpir_rd/sam4s_wpir_rd.h" +# include "system_sam4s.h" +#elif BOARD == SAM4S_XPLAINED +# include "sam4s_xplained/sam4s_xplained.h" +# include "system_sam4s.h" +#elif BOARD == SAM4S_EK2 +# include "sam4s_ek2/sam4s_ek2.h" +# include "system_sam4s.h" +#elif BOARD == MEGA_1284P_XPLAINED + /*No header-file to include*/ +#elif BOARD == ARDUINO_DUE_X +# include "arduino_due_x/arduino_due_x.h" +# include "system_sam3x.h" +#elif BOARD == SAM4L_EK +# include "sam4l_ek/sam4l_ek.h" +#elif BOARD == SAM4E_EK +# include "sam4e_ek/sam4e_ek.h" +#elif BOARD == SAMD20_XPLAINED_PRO +# include "samd20_xplained_pro/samd20_xplained_pro.h" +#elif BOARD == SAM4N_XPLAINED_PRO +# include "sam4n_xplained_pro/sam4n_xplained_pro.h" +#elif BOARD == MEGA1284P_XPLAINED_BC +# include "mega1284p_xplained_bc/mega1284p_xplained_bc.h" +#elif BOARD == UC3_L0_QT600 +# include "uc3_l0_qt600/uc3_l0_qt600.h" +#elif BOARD == XMEGA_A3BU_XPLAINED +# include "xmega_a3bu_xplained/xmega_a3bu_xplained.h" +#elif BOARD == XMEGA_E5_XPLAINED +# include "xmega_e5_xplained/xmega_e5_xplained.h" +#elif BOARD == UC3B_BOARD_CONTROLLER +# include "uc3b_board_controller/uc3b_board_controller.h" +#elif BOARD == RZ600 +# include "rz600/rz600.h" +#elif BOARD == STK600_RCUC3A0 +# include "stk600/rcuc3a0/stk600_rcuc3a0.h" +#elif BOARD == ATXMEGA128A1_QT600 +# include "atxmega128a1_qt600/atxmega128a1_qt600.h" +#elif BOARD == STK600_RCUC3L3 +# include "stk600/rcuc3l3/stk600_rcuc3l3.h" +#elif BOARD == SAM4S_XPLAINED_PRO +# include "sam4s_xplained_pro/sam4s_xplained_pro.h" +#elif BOARD == SAM4L_XPLAINED_PRO +# include "sam4l_xplained_pro/sam4l_xplained_pro.h" +#elif BOARD == SAM4L8_XPLAINED_PRO +# include "sam4l8_xplained_pro/sam4l8_xplained_pro.h" +#elif BOARD == SIMULATOR_XMEGA_A1 +# include "simulator/xmega_a1/simulator_xmega_a1.h" +#elif BOARD == XMEGA_C3_XPLAINED +# include "xmega_c3_xplained/xmega_c3_xplained.h" +#elif BOARD == XMEGA_RF233_ZIGBIT +# include "xmega_rf233_zigbit/xmega_rf233_zigbit.h" +#elif BOARD == XMEGA_A3_REB_CBB +# include "xmega_a3_reb_cbb/xmega_a3_reb_cbb.h" +#elif BOARD == ATMEGARFX_RCB +# include "atmegarfx_rcb/atmegarfx_rcb.h" +#elif BOARD == XMEGA_RF212B_ZIGBIT +# include "xmega_rf212b_zigbit/xmega_rf212b_zigbit.h" +#elif BOARD == AVR_SIMULATOR_UC3 +# include "avr_simulator_uc3/avr_simulator_uc3.h" +#elif BOARD == USER_BOARD + // User-reserved area: #include the header file of your board here (if any). +# include "user_board.h" +#elif BOARD == DUMMY_BOARD +# include "dummy/dummy_board.h" +#else +# error No known Atmel board defined +#endif + +#if (defined EXT_BOARD) +# if EXT_BOARD == MC300 +# include "mc300/mc300.h" +# elif (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_1) || \ + (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_2) || \ + (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_A1) || \ + (EXT_BOARD == SENSORS_XPLAINED_PRESSURE_1) || \ + (EXT_BOARD == SENSORS_XPLAINED_LIGHTPROX_1) || \ + (EXT_BOARD == SENSORS_XPLAINED_BREADBOARD) +# include "sensors_xplained/sensors_xplained.h" +# elif EXT_BOARD == RZ600_AT86RF231 +# include "at86rf231/at86rf231.h" +# elif EXT_BOARD == RZ600_AT86RF230B +# include "at86rf230b/at86rf230b.h" +# elif EXT_BOARD == RZ600_AT86RF212 +# include "at86rf212/at86rf212.h" +# elif EXT_BOARD == SECURITY_XPLAINED +# include "security_xplained.h" +# elif EXT_BOARD == USER_EXT_BOARD + // User-reserved area: #include the header file of your extension board here + // (if any). +# endif +#endif + + +#if (defined(__GNUC__) && defined(__AVR32__)) || (defined(__ICCAVR32__) || defined(__AAVR32__)) +#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. + +/*! \brief This function initializes the board target resources + * + * This function should be called to ensure proper initialization of the target + * board hardware connected to the part. + */ +extern void board_init(void); + +#endif // #ifdef __AVR32_ABI_COMPILER__ +#else +/*! \brief This function initializes the board target resources + * + * This function should be called to ensure proper initialization of the target + * board hardware connected to the part. + */ +extern void board_init(void); +#endif + + +#ifdef __cplusplus +} +#endif + +/** + * \} + */ + +#endif // _BOARD_H_ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/genclk.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/genclk.h new file mode 100644 index 000000000..4de140d9e --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/genclk.h @@ -0,0 +1,180 @@ +/** + * \file + * + * \brief Generic clock management + * + * Copyright (c) 2010-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ +#ifndef CLK_GENCLK_H_INCLUDED +#define CLK_GENCLK_H_INCLUDED + +#include "parts.h" + +#if SAM3S +# include "sam3s/genclk.h" +#elif SAM3U +# include "sam3u/genclk.h" +#elif SAM3N +# include "sam3n/genclk.h" +#elif SAM3XA +# include "sam3x/genclk.h" +#elif SAM4S +# include "sam4s/genclk.h" +#elif SAM4L +# include "sam4l/genclk.h" +#elif SAM4E +# include "sam4e/genclk.h" +#elif SAM4N +# include "sam4n/genclk.h" +#elif (UC3A0 || UC3A1) +# include "uc3a0_a1/genclk.h" +#elif UC3A3 +# include "uc3a3_a4/genclk.h" +#elif UC3B +# include "uc3b0_b1/genclk.h" +#elif UC3C +# include "uc3c/genclk.h" +#elif UC3D +# include "uc3d/genclk.h" +#elif UC3L +# include "uc3l/genclk.h" +#else +# error Unsupported chip type +#endif + +/** + * \ingroup clk_group + * \defgroup genclk_group Generic Clock Management + * + * Generic clocks are configurable clocks which run outside the system + * clock domain. They are often connected to peripherals which have an + * asynchronous component running independently of the bus clock, e.g. + * USB controllers, low-power timers and RTCs, etc. + * + * Note that not all platforms have support for generic clocks; on such + * platforms, this API will not be available. + * + * @{ + */ + +/** + * \def GENCLK_DIV_MAX + * \brief Maximum divider supported by the generic clock implementation + */ +/** + * \enum genclk_source + * \brief Generic clock source ID + * + * Each generic clock may be generated from a different clock source. + * These are the available alternatives provided by the chip. + */ + +//! \name Generic clock configuration +//@{ +/** + * \struct genclk_config + * \brief Hardware representation of a set of generic clock parameters + */ +/** + * \fn void genclk_config_defaults(struct genclk_config *cfg, + * unsigned int id) + * \brief Initialize \a cfg to the default configuration for the clock + * identified by \a id. + */ +/** + * \fn void genclk_config_read(struct genclk_config *cfg, unsigned int id) + * \brief Read the currently active configuration of the clock + * identified by \a id into \a cfg. + */ +/** + * \fn void genclk_config_write(const struct genclk_config *cfg, + * unsigned int id) + * \brief Activate the configuration \a cfg on the clock identified by + * \a id. + */ +/** + * \fn void genclk_config_set_source(struct genclk_config *cfg, + * enum genclk_source src) + * \brief Select a new source clock \a src in configuration \a cfg. + */ +/** + * \fn void genclk_config_set_divider(struct genclk_config *cfg, + * unsigned int divider) + * \brief Set a new \a divider in configuration \a cfg. + */ +/** + * \fn void genclk_enable_source(enum genclk_source src) + * \brief Enable the source clock \a src used by a generic clock. + */ + //@} + +//! \name Enabling and disabling Generic Clocks +//@{ +/** + * \fn void genclk_enable(const struct genclk_config *cfg, unsigned int id) + * \brief Activate the configuration \a cfg on the clock identified by + * \a id and enable it. + */ +/** + * \fn void genclk_disable(unsigned int id) + * \brief Disable the generic clock identified by \a id. + */ +//@} + +/** + * \brief Enable the configuration defined by \a src and \a divider + * for the generic clock identified by \a id. + * + * \param id The ID of the generic clock. + * \param src The source clock of the generic clock. + * \param divider The divider used to generate the generic clock. + */ +static inline void genclk_enable_config(unsigned int id, enum genclk_source src, unsigned int divider) +{ + struct genclk_config gcfg; + + genclk_config_defaults(&gcfg, id); + genclk_enable_source(src); + genclk_config_set_source(&gcfg, src); + genclk_config_set_divider(&gcfg, divider); + genclk_enable(&gcfg, id); +} + +//! @} + +#endif /* CLK_GENCLK_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/osc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/osc.h new file mode 100644 index 000000000..a21c7eb6e --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/osc.h @@ -0,0 +1,166 @@ +/** + * \file + * + * \brief Oscillator management + * + * Copyright (c) 2010-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ +#ifndef OSC_H_INCLUDED +#define OSC_H_INCLUDED + +#include "parts.h" +#include "conf_clock.h" + +#if SAM3S +# include "sam3s/osc.h" +#elif SAM3XA +# include "sam3x/osc.h" +#elif SAM3U +# include "sam3u/osc.h" +#elif SAM3N +# include "sam3n/osc.h" +#elif SAM4S +# include "sam4s/osc.h" +#elif SAM4E +# include "sam4e/osc.h" +#elif SAM4L +# include "sam4l/osc.h" +#elif SAM4N +# include "sam4n/osc.h" +#elif (UC3A0 || UC3A1) +# include "uc3a0_a1/osc.h" +#elif UC3A3 +# include "uc3a3_a4/osc.h" +#elif UC3B +# include "uc3b0_b1/osc.h" +#elif UC3C +# include "uc3c/osc.h" +#elif UC3D +# include "uc3d/osc.h" +#elif UC3L +# include "uc3l/osc.h" +#elif XMEGA +# include "xmega/osc.h" +#else +# error Unsupported chip type +#endif + +/** + * \ingroup clk_group + * \defgroup osc_group Oscillator Management + * + * This group contains functions and definitions related to configuring + * and enabling/disabling on-chip oscillators. Internal RC-oscillators, + * external crystal oscillators and external clock generators are + * supported by this module. What all of these have in common is that + * they swing at a fixed, nominal frequency which is normally not + * adjustable. + * + * \par Example: Enabling an oscillator + * + * The following example demonstrates how to enable the external + * oscillator on XMEGA A and wait for it to be ready to use. The + * oscillator identifiers are platform-specific, so while the same + * procedure is used on all platforms, the parameter to osc_enable() + * will be different from device to device. + * \code + osc_enable(OSC_ID_XOSC); + osc_wait_ready(OSC_ID_XOSC); \endcode + * + * \section osc_group_board Board-specific Definitions + * If external oscillators are used, the board code must provide the + * following definitions for each of those: + * - \b BOARD__HZ: The nominal frequency of the oscillator. + * - \b BOARD__STARTUP_US: The startup time of the + * oscillator in microseconds. + * - \b BOARD__TYPE: The type of oscillator connected, i.e. + * whether it's a crystal or external clock, and sometimes what kind + * of crystal it is. The meaning of this value is platform-specific. + * + * @{ + */ + +//! \name Oscillator Management +//@{ +/** + * \fn void osc_enable(uint8_t id) + * \brief Enable oscillator \a id + * + * The startup time and mode value is automatically determined based on + * definitions in the board code. + */ +/** + * \fn void osc_disable(uint8_t id) + * \brief Disable oscillator \a id + */ +/** + * \fn osc_is_ready(uint8_t id) + * \brief Determine whether oscillator \a id is ready. + * \retval true Oscillator \a id is running and ready to use as a clock + * source. + * \retval false Oscillator \a id is not running. + */ +/** + * \fn uint32_t osc_get_rate(uint8_t id) + * \brief Return the frequency of oscillator \a id in Hz + */ + +#ifndef __ASSEMBLY__ + +/** + * \brief Wait until the oscillator identified by \a id is ready + * + * This function will busy-wait for the oscillator identified by \a id + * to become stable and ready to use as a clock source. + * + * \param id A number identifying the oscillator to wait for. + */ +static inline void osc_wait_ready(uint8_t id) +{ + while (!osc_is_ready(id)) { + /* Do nothing */ + } +} + +#endif /* __ASSEMBLY__ */ + +//@} + +//! @} + +#endif /* OSC_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/pll.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/pll.h new file mode 100644 index 000000000..82bcd2468 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/pll.h @@ -0,0 +1,322 @@ +/** + * \file + * + * \brief PLL management + * + * Copyright (c) 2010-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ +#ifndef CLK_PLL_H_INCLUDED +#define CLK_PLL_H_INCLUDED + +#include "parts.h" +#include "conf_clock.h" + +#if SAM3S +# include "sam3s/pll.h" +#elif SAM3XA +# include "sam3x/pll.h" +#elif SAM3U +# include "sam3u/pll.h" +#elif SAM3N +# include "sam3n/pll.h" +#elif SAM4S +# include "sam4s/pll.h" +#elif SAM4E +# include "sam4e/pll.h" +#elif SAM4L +# include "sam4l/pll.h" +#elif SAM4N +# include "sam4n/pll.h" +#elif (UC3A0 || UC3A1) +# include "uc3a0_a1/pll.h" +#elif UC3A3 +# include "uc3a3_a4/pll.h" +#elif UC3B +# include "uc3b0_b1/pll.h" +#elif UC3C +# include "uc3c/pll.h" +#elif UC3D +# include "uc3d/pll.h" +#elif (UC3L0128 || UC3L0256 || UC3L3_L4) +# include "uc3l/pll.h" +#elif XMEGA +# include "xmega/pll.h" +#else +# error Unsupported chip type +#endif + +/** + * \ingroup clk_group + * \defgroup pll_group PLL Management + * + * This group contains functions and definitions related to configuring + * and enabling/disabling on-chip PLLs. A PLL will take an input signal + * (the \em source), optionally divide the frequency by a configurable + * \em divider, and then multiply the frequency by a configurable \em + * multiplier. + * + * Some devices don't support input dividers; specifying any other + * divisor than 1 on these devices will result in an assertion failure. + * Other devices may have various restrictions to the frequency range of + * the input and output signals. + * + * \par Example: Setting up PLL0 with default parameters + * + * The following example shows how to configure and enable PLL0 using + * the default parameters specified using the configuration symbols + * listed above. + * \code + pll_enable_config_defaults(0); \endcode + * + * To configure, enable PLL0 using the default parameters and to disable + * a specific feature like Wide Bandwidth Mode (a UC3A3-specific + * PLL option.), you can use this initialization process. + * \code + struct pll_config pllcfg; + if (pll_is_locked(pll_id)) { + return; // Pll already running + } + pll_enable_source(CONFIG_PLL0_SOURCE); + pll_config_defaults(&pllcfg, 0); + pll_config_set_option(&pllcfg, PLL_OPT_WBM_DISABLE); + pll_enable(&pllcfg, 0); + pll_wait_for_lock(0); \endcode + * + * When the last function call returns, PLL0 is ready to be used as the + * main system clock source. + * + * \section pll_group_config Configuration Symbols + * + * Each PLL has a set of default parameters determined by the following + * configuration symbols in the application's configuration file: + * - \b CONFIG_PLLn_SOURCE: The default clock source connected to the + * input of PLL \a n. Must be one of the values defined by the + * #pll_source enum. + * - \b CONFIG_PLLn_MUL: The default multiplier (loop divider) of PLL + * \a n. + * - \b CONFIG_PLLn_DIV: The default input divider of PLL \a n. + * + * These configuration symbols determine the result of calling + * pll_config_defaults() and pll_get_default_rate(). + * + * @{ + */ + +//! \name Chip-specific PLL characteristics +//@{ +/** + * \def PLL_MAX_STARTUP_CYCLES + * \brief Maximum PLL startup time in number of slow clock cycles + */ +/** + * \def NR_PLLS + * \brief Number of on-chip PLLs + */ + +/** + * \def PLL_MIN_HZ + * \brief Minimum frequency that the PLL can generate + */ +/** + * \def PLL_MAX_HZ + * \brief Maximum frequency that the PLL can generate + */ +/** + * \def PLL_NR_OPTIONS + * \brief Number of PLL option bits + */ +//@} + +/** + * \enum pll_source + * \brief PLL clock source + */ + +//! \name PLL configuration +//@{ + +/** + * \struct pll_config + * \brief Hardware-specific representation of PLL configuration. + * + * This structure contains one or more device-specific values + * representing the current PLL configuration. The contents of this + * structure is typically different from platform to platform, and the + * user should not access any fields except through the PLL + * configuration API. + */ + +/** + * \fn void pll_config_init(struct pll_config *cfg, + * enum pll_source src, unsigned int div, unsigned int mul) + * \brief Initialize PLL configuration from standard parameters. + * + * \note This function may be defined inline because it is assumed to be + * called very few times, and usually with constant parameters. Inlining + * it will in such cases reduce the code size significantly. + * + * \param cfg The PLL configuration to be initialized. + * \param src The oscillator to be used as input to the PLL. + * \param div PLL input divider. + * \param mul PLL loop divider (i.e. multiplier). + * + * \return A configuration which will make the PLL run at + * (\a mul / \a div) times the frequency of \a src + */ +/** + * \def pll_config_defaults(cfg, pll_id) + * \brief Initialize PLL configuration using default parameters. + * + * After this function returns, \a cfg will contain a configuration + * which will make the PLL run at (CONFIG_PLLx_MUL / CONFIG_PLLx_DIV) + * times the frequency of CONFIG_PLLx_SOURCE. + * + * \param cfg The PLL configuration to be initialized. + * \param pll_id Use defaults for this PLL. + */ +/** + * \def pll_get_default_rate(pll_id) + * \brief Get the default rate in Hz of \a pll_id + */ +/** + * \fn void pll_config_set_option(struct pll_config *cfg, + * unsigned int option) + * \brief Set the PLL option bit \a option in the configuration \a cfg. + * + * \param cfg The PLL configuration to be changed. + * \param option The PLL option bit to be set. + */ +/** + * \fn void pll_config_clear_option(struct pll_config *cfg, + * unsigned int option) + * \brief Clear the PLL option bit \a option in the configuration \a cfg. + * + * \param cfg The PLL configuration to be changed. + * \param option The PLL option bit to be cleared. + */ +/** + * \fn void pll_config_read(struct pll_config *cfg, unsigned int pll_id) + * \brief Read the currently active configuration of \a pll_id. + * + * \param cfg The configuration object into which to store the currently + * active configuration. + * \param pll_id The ID of the PLL to be accessed. + */ +/** + * \fn void pll_config_write(const struct pll_config *cfg, + * unsigned int pll_id) + * \brief Activate the configuration \a cfg on \a pll_id + * + * \param cfg The configuration object representing the PLL + * configuration to be activated. + * \param pll_id The ID of the PLL to be updated. + */ + +//@} + +//! \name Interaction with the PLL hardware +//@{ +/** + * \fn void pll_enable(const struct pll_config *cfg, + * unsigned int pll_id) + * \brief Activate the configuration \a cfg and enable PLL \a pll_id. + * + * \param cfg The PLL configuration to be activated. + * \param pll_id The ID of the PLL to be enabled. + */ +/** + * \fn void pll_disable(unsigned int pll_id) + * \brief Disable the PLL identified by \a pll_id. + * + * After this function is called, the PLL identified by \a pll_id will + * be disabled. The PLL configuration stored in hardware may be affected + * by this, so if the caller needs to restore the same configuration + * later, it should either do a pll_config_read() before disabling the + * PLL, or remember the last configuration written to the PLL. + * + * \param pll_id The ID of the PLL to be disabled. + */ +/** + * \fn bool pll_is_locked(unsigned int pll_id) + * \brief Determine whether the PLL is locked or not. + * + * \param pll_id The ID of the PLL to check. + * + * \retval true The PLL is locked and ready to use as a clock source + * \retval false The PLL is not yet locked, or has not been enabled. + */ +/** + * \fn void pll_enable_source(enum pll_source src) + * \brief Enable the source of the pll. + * The source is enabled, if the source is not already running. + * + * \param src The ID of the PLL source to enable. + */ +/** + * \fn void pll_enable_config_defaults(unsigned int pll_id) + * \brief Enable the pll with the default configuration. + * PLL is enabled, if the PLL is not already locked. + * + * \param pll_id The ID of the PLL to enable. + */ + +/** + * \brief Wait for PLL \a pll_id to become locked + * + * \todo Use a timeout to avoid waiting forever and hanging the system + * + * \param pll_id The ID of the PLL to wait for. + * + * \retval STATUS_OK The PLL is now locked. + * \retval ERR_TIMEOUT Timed out waiting for PLL to become locked. + */ +static inline int pll_wait_for_lock(unsigned int pll_id) +{ + Assert(pll_id < NR_PLLS); + + while (!pll_is_locked(pll_id)) { + /* Do nothing */ + } + + return 0; +} + +//@} +//! @} + +#endif /* CLK_PLL_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/genclk.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/genclk.h new file mode 100644 index 000000000..f9dc6d061 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/genclk.h @@ -0,0 +1,266 @@ +/** + * \file + * + * \brief Chip-specific generic clock management. + * + * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef CHIP_GENCLK_H_INCLUDED +#define CHIP_GENCLK_H_INCLUDED + +#include +#include + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \weakgroup genclk_group + * @{ + */ + +//! \name Programmable Clock Identifiers (PCK) +//@{ +#define GENCLK_PCK_0 0 //!< PCK0 ID +#define GENCLK_PCK_1 1 //!< PCK1 ID +#define GENCLK_PCK_2 2 //!< PCK2 ID +//@} + +//! \name Programmable Clock Sources (PCK) +//@{ + +enum genclk_source { + GENCLK_PCK_SRC_SLCK_RC = 0,//!< Internal 32kHz RC oscillator as PCK source clock + GENCLK_PCK_SRC_SLCK_XTAL = 1,//!< External 32kHz crystal oscillator as PCK source clock + GENCLK_PCK_SRC_SLCK_BYPASS = 2,//!< External 32kHz bypass oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_4M_RC = 3,//!< Internal 4MHz RC oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_8M_RC = 4,//!< Internal 8MHz RC oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_12M_RC = 5,//!< Internal 12MHz RC oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_XTAL = 6,//!< External crystal oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_BYPASS = 7,//!< External bypass oscillator as PCK source clock + GENCLK_PCK_SRC_PLLACK = 8,//!< Use PLLACK as PCK source clock + GENCLK_PCK_SRC_MCK = 9,//!< Use Master Clk as PCK source clock +}; + +//@} + +//! \name Programmable Clock Prescalers (PCK) +//@{ + +enum genclk_divider { + GENCLK_PCK_PRES_1 = PMC_PCK_PRES_CLK_1, //!< Set PCK clock prescaler to 1 + GENCLK_PCK_PRES_2 = PMC_PCK_PRES_CLK_2, //!< Set PCK clock prescaler to 2 + GENCLK_PCK_PRES_4 = PMC_PCK_PRES_CLK_4, //!< Set PCK clock prescaler to 4 + GENCLK_PCK_PRES_8 = PMC_PCK_PRES_CLK_8, //!< Set PCK clock prescaler to 8 + GENCLK_PCK_PRES_16 = PMC_PCK_PRES_CLK_16, //!< Set PCK clock prescaler to 16 + GENCLK_PCK_PRES_32 = PMC_PCK_PRES_CLK_32, //!< Set PCK clock prescaler to 32 + GENCLK_PCK_PRES_64 = PMC_PCK_PRES_CLK_64, //!< Set PCK clock prescaler to 64 +}; + +//@} + +struct genclk_config { + uint32_t ctrl; +}; + +static inline void genclk_config_defaults(struct genclk_config *p_cfg, + uint32_t ul_id) +{ + ul_id = ul_id; + p_cfg->ctrl = 0; +} + +static inline void genclk_config_read(struct genclk_config *p_cfg, + uint32_t ul_id) +{ + p_cfg->ctrl = PMC->PMC_PCK[ul_id]; +} + +static inline void genclk_config_write(const struct genclk_config *p_cfg, + uint32_t ul_id) +{ + PMC->PMC_PCK[ul_id] = p_cfg->ctrl; +} + +//! \name Programmable Clock Source and Prescaler configuration +//@{ + +static inline void genclk_config_set_source(struct genclk_config *p_cfg, + enum genclk_source e_src) +{ + p_cfg->ctrl &= (~PMC_PCK_CSS_Msk); + + switch (e_src) { + case GENCLK_PCK_SRC_SLCK_RC: + case GENCLK_PCK_SRC_SLCK_XTAL: + case GENCLK_PCK_SRC_SLCK_BYPASS: + p_cfg->ctrl |= (PMC_PCK_CSS_SLOW_CLK); + break; + + case GENCLK_PCK_SRC_MAINCK_4M_RC: + case GENCLK_PCK_SRC_MAINCK_8M_RC: + case GENCLK_PCK_SRC_MAINCK_12M_RC: + case GENCLK_PCK_SRC_MAINCK_XTAL: + case GENCLK_PCK_SRC_MAINCK_BYPASS: + p_cfg->ctrl |= (PMC_PCK_CSS_MAIN_CLK); + break; + + case GENCLK_PCK_SRC_PLLACK: + p_cfg->ctrl |= (PMC_PCK_CSS_PLLA_CLK); + break; + + case GENCLK_PCK_SRC_MCK: + p_cfg->ctrl |= (PMC_PCK_CSS_MCK); + break; + + default: + break; + } +} + +static inline void genclk_config_set_divider(struct genclk_config *p_cfg, + uint32_t e_divider) +{ + p_cfg->ctrl &= ~PMC_PCK_PRES_Msk; + p_cfg->ctrl |= e_divider; +} + +//@} + +static inline void genclk_enable(const struct genclk_config *p_cfg, uint32_t ul_id) +{ + PMC->PMC_PCK[ul_id] = p_cfg->ctrl; + pmc_enable_pck(ul_id); +} + +static inline void genclk_disable(uint32_t ul_id) +{ + pmc_disable_pck(ul_id); +} + +static inline void genclk_enable_source(enum genclk_source e_src) +{ + switch (e_src) { + case GENCLK_PCK_SRC_SLCK_RC: + if (!osc_is_ready(OSC_SLCK_32K_RC)) { + osc_enable(OSC_SLCK_32K_RC); + osc_wait_ready(OSC_SLCK_32K_RC); + } + break; + + case GENCLK_PCK_SRC_SLCK_XTAL: + if (!osc_is_ready(OSC_SLCK_32K_XTAL)) { + osc_enable(OSC_SLCK_32K_XTAL); + osc_wait_ready(OSC_SLCK_32K_XTAL); + } + break; + + case GENCLK_PCK_SRC_SLCK_BYPASS: + if (!osc_is_ready(OSC_SLCK_32K_BYPASS)) { + osc_enable(OSC_SLCK_32K_BYPASS); + osc_wait_ready(OSC_SLCK_32K_BYPASS); + } + break; + + case GENCLK_PCK_SRC_MAINCK_4M_RC: + if (!osc_is_ready(OSC_MAINCK_4M_RC)) { + osc_enable(OSC_MAINCK_4M_RC); + osc_wait_ready(OSC_MAINCK_4M_RC); + } + break; + + case GENCLK_PCK_SRC_MAINCK_8M_RC: + if (!osc_is_ready(OSC_MAINCK_8M_RC)) { + osc_enable(OSC_MAINCK_8M_RC); + osc_wait_ready(OSC_MAINCK_8M_RC); + } + break; + + case GENCLK_PCK_SRC_MAINCK_12M_RC: + if (!osc_is_ready(OSC_MAINCK_12M_RC)) { + osc_enable(OSC_MAINCK_12M_RC); + osc_wait_ready(OSC_MAINCK_12M_RC); + } + break; + + case GENCLK_PCK_SRC_MAINCK_XTAL: + if (!osc_is_ready(OSC_MAINCK_XTAL)) { + osc_enable(OSC_MAINCK_XTAL); + osc_wait_ready(OSC_MAINCK_XTAL); + } + break; + + case GENCLK_PCK_SRC_MAINCK_BYPASS: + if (!osc_is_ready(OSC_MAINCK_BYPASS)) { + osc_enable(OSC_MAINCK_BYPASS); + osc_wait_ready(OSC_MAINCK_BYPASS); + } + break; + +#ifdef CONFIG_PLL0_SOURCE + case GENCLK_PCK_SRC_PLLACK: + pll_enable_config_defaults(0); + break; +#endif + + case GENCLK_PCK_SRC_MCK: + break; + + default: + Assert(false); + break; + } +} + +//! @} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* CHIP_GENCLK_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/osc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/osc.h new file mode 100644 index 000000000..69f1de181 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/osc.h @@ -0,0 +1,223 @@ +/** + * \file + * + * \brief Chip-specific oscillator management functions. + * + * Copyright (c) 2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef CHIP_OSC_H_INCLUDED +#define CHIP_OSC_H_INCLUDED + +#include "board.h" +#include "pmc.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \weakgroup osc_group + * @{ + */ + +//! \name Oscillator identifiers +//@{ +#define OSC_SLCK_32K_RC 0 //!< Internal 32kHz RC oscillator. +#define OSC_SLCK_32K_XTAL 1 //!< External 32kHz crystal oscillator. +#define OSC_SLCK_32K_BYPASS 2 //!< External 32kHz bypass oscillator. +#define OSC_MAINCK_4M_RC 3 //!< Internal 4MHz RC oscillator. +#define OSC_MAINCK_8M_RC 4 //!< Internal 8MHz RC oscillator. +#define OSC_MAINCK_12M_RC 5 //!< Internal 12MHz RC oscillator. +#define OSC_MAINCK_XTAL 6 //!< External crystal oscillator. +#define OSC_MAINCK_BYPASS 7 //!< External bypass oscillator. +//@} + +//! \name Oscillator clock speed in hertz +//@{ +#define OSC_SLCK_32K_RC_HZ CHIP_FREQ_SLCK_RC //!< Internal 32kHz RC oscillator. +#define OSC_SLCK_32K_XTAL_HZ BOARD_FREQ_SLCK_XTAL //!< External 32kHz crystal oscillator. +#define OSC_SLCK_32K_BYPASS_HZ BOARD_FREQ_SLCK_BYPASS //!< External 32kHz bypass oscillator. +#define OSC_MAINCK_4M_RC_HZ CHIP_FREQ_MAINCK_RC_4MHZ //!< Internal 4MHz RC oscillator. +#define OSC_MAINCK_8M_RC_HZ CHIP_FREQ_MAINCK_RC_8MHZ //!< Internal 8MHz RC oscillator. +#define OSC_MAINCK_12M_RC_HZ CHIP_FREQ_MAINCK_RC_12MHZ //!< Internal 12MHz RC oscillator. +#define OSC_MAINCK_XTAL_HZ BOARD_FREQ_MAINCK_XTAL //!< External crystal oscillator. +#define OSC_MAINCK_BYPASS_HZ BOARD_FREQ_MAINCK_BYPASS //!< External bypass oscillator. +//@} + +static inline void osc_enable(uint32_t ul_id) +{ + switch (ul_id) { + case OSC_SLCK_32K_RC: + break; + + case OSC_SLCK_32K_XTAL: + pmc_switch_sclk_to_32kxtal(PMC_OSC_XTAL); + break; + + case OSC_SLCK_32K_BYPASS: + pmc_switch_sclk_to_32kxtal(PMC_OSC_BYPASS); + break; + + + case OSC_MAINCK_4M_RC: + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_4_MHz); + break; + + case OSC_MAINCK_8M_RC: + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_8_MHz); + break; + + case OSC_MAINCK_12M_RC: + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_12_MHz); + break; + + + case OSC_MAINCK_XTAL: + pmc_switch_mainck_to_xtal(PMC_OSC_XTAL, + pmc_us_to_moscxtst(BOARD_OSC_STARTUP_US, + OSC_SLCK_32K_RC_HZ)); + break; + + case OSC_MAINCK_BYPASS: + pmc_switch_mainck_to_xtal(PMC_OSC_BYPASS, + pmc_us_to_moscxtst(BOARD_OSC_STARTUP_US, + OSC_SLCK_32K_RC_HZ)); + break; + } +} + +static inline void osc_disable(uint32_t ul_id) +{ + switch (ul_id) { + case OSC_SLCK_32K_RC: + case OSC_SLCK_32K_XTAL: + case OSC_SLCK_32K_BYPASS: + break; + + case OSC_MAINCK_4M_RC: + case OSC_MAINCK_8M_RC: + case OSC_MAINCK_12M_RC: + pmc_osc_disable_fastrc(); + break; + + case OSC_MAINCK_XTAL: + pmc_osc_disable_xtal(PMC_OSC_XTAL); + break; + + case OSC_MAINCK_BYPASS: + pmc_osc_disable_xtal(PMC_OSC_BYPASS); + break; + } +} + +static inline bool osc_is_ready(uint32_t ul_id) +{ + switch (ul_id) { + case OSC_SLCK_32K_RC: + return 1; + + case OSC_SLCK_32K_XTAL: + case OSC_SLCK_32K_BYPASS: + return pmc_osc_is_ready_32kxtal(); + + case OSC_MAINCK_4M_RC: + case OSC_MAINCK_8M_RC: + case OSC_MAINCK_12M_RC: + case OSC_MAINCK_XTAL: + case OSC_MAINCK_BYPASS: + return pmc_osc_is_ready_mainck(); + } + + return 0; +} + +static inline uint32_t osc_get_rate(uint32_t ul_id) +{ + switch (ul_id) { + case OSC_SLCK_32K_RC: + return OSC_SLCK_32K_RC_HZ; + +#ifdef BOARD_FREQ_SLCK_XTAL + case OSC_SLCK_32K_XTAL: + return BOARD_FREQ_SLCK_XTAL; +#endif + +#ifdef BOARD_FREQ_SLCK_BYPASS + case OSC_SLCK_32K_BYPASS: + return BOARD_FREQ_SLCK_BYPASS; +#endif + + case OSC_MAINCK_4M_RC: + return OSC_MAINCK_4M_RC_HZ; + + case OSC_MAINCK_8M_RC: + return OSC_MAINCK_8M_RC_HZ; + + case OSC_MAINCK_12M_RC: + return OSC_MAINCK_12M_RC_HZ; + +#ifdef BOARD_FREQ_MAINCK_XTAL + case OSC_MAINCK_XTAL: + return BOARD_FREQ_MAINCK_XTAL; +#endif + +#ifdef BOARD_FREQ_MAINCK_BYPASS + case OSC_MAINCK_BYPASS: + return BOARD_FREQ_MAINCK_BYPASS; +#endif + } + + return 0; +} + +//! @} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* CHIP_OSC_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/pll.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/pll.h new file mode 100644 index 000000000..5570e9dc3 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/pll.h @@ -0,0 +1,225 @@ +/** + * \file + * + * \brief Chip-specific PLL definitions. + * + * Copyright (c) 2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef CHIP_PLL_H_INCLUDED +#define CHIP_PLL_H_INCLUDED + +#include + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \weakgroup pll_group + * @{ + */ + +#define PLL_OUTPUT_MIN_HZ 80000000 +#define PLL_OUTPUT_MAX_HZ 240000000 + +#define PLL_INPUT_MIN_HZ 3000000 +#define PLL_INPUT_MAX_HZ 32000000 + +#define NR_PLLS 1 +#define PLLA_ID 0 + +#define PLL_COUNT 0x3fU + +enum pll_source { + PLL_SRC_MAINCK_4M_RC = OSC_MAINCK_4M_RC, //!< Internal 4MHz RC oscillator. + PLL_SRC_MAINCK_8M_RC = OSC_MAINCK_8M_RC, //!< Internal 8MHz RC oscillator. + PLL_SRC_MAINCK_12M_RC = OSC_MAINCK_12M_RC, //!< Internal 12MHz RC oscillator. + PLL_SRC_MAINCK_XTAL = OSC_MAINCK_XTAL, //!< External crystal oscillator. + PLL_SRC_MAINCK_BYPASS = OSC_MAINCK_BYPASS, //!< External bypass oscillator. + PLL_NR_SOURCES, //!< Number of PLL sources. +}; + +struct pll_config { + uint32_t ctrl; +}; + +#define pll_get_default_rate(pll_id) \ + ((osc_get_rate(CONFIG_PLL##pll_id##_SOURCE) \ + * CONFIG_PLL##pll_id##_MUL) \ + / CONFIG_PLL##pll_id##_DIV) + +/** + * \note The SAM4E PLL hardware interprets mul as mul+1. For readability the + * hardware mul+1 is hidden in this implementation. Use mul as mul effective + * value. + */ +static inline void pll_config_init(struct pll_config *p_cfg, + enum pll_source e_src, uint32_t ul_div, uint32_t ul_mul) +{ + uint32_t vco_hz; + + Assert(e_src < PLL_NR_SOURCES); + + /* Calculate internal VCO frequency */ + vco_hz = osc_get_rate(e_src) / ul_div; + Assert(vco_hz >= PLL_INPUT_MIN_HZ); + Assert(vco_hz <= PLL_INPUT_MAX_HZ); + + vco_hz *= ul_mul; + Assert(vco_hz >= PLL_OUTPUT_MIN_HZ); + Assert(vco_hz <= PLL_OUTPUT_MAX_HZ); + + /* PMC hardware will automatically make it mul+1 */ + p_cfg->ctrl = CKGR_PLLAR_MULA(ul_mul - 1) | CKGR_PLLAR_DIVA(ul_div) | \ + CKGR_PLLAR_PLLACOUNT(PLL_COUNT); +} + +#define pll_config_defaults(cfg, pll_id) \ + pll_config_init(cfg, \ + CONFIG_PLL##pll_id##_SOURCE, \ + CONFIG_PLL##pll_id##_DIV, \ + CONFIG_PLL##pll_id##_MUL) + +static inline void pll_config_read(struct pll_config *p_cfg, uint32_t ul_pll_id) +{ + Assert(ul_pll_id < NR_PLLS); + + if (ul_pll_id == PLLA_ID) { + p_cfg->ctrl = PMC->CKGR_PLLAR; + } +} + +static inline void pll_config_write(const struct pll_config *p_cfg, uint32_t ul_pll_id) +{ + Assert(ul_pll_id < NR_PLLS); + + if (ul_pll_id == PLLA_ID) { + pmc_disable_pllack(); // Always stop PLL first! + PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | p_cfg->ctrl; + } +} + +static inline void pll_enable(const struct pll_config *p_cfg, uint32_t ul_pll_id) +{ + Assert(ul_pll_id < NR_PLLS); + + if (ul_pll_id == PLLA_ID) { + pmc_disable_pllack(); // Always stop PLL first! + PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | p_cfg->ctrl; + } +} + +/** + * \note This will only disable the selected PLL, not the underlying oscillator (mainck). + */ +static inline void pll_disable(uint32_t ul_pll_id) +{ + Assert(ul_pll_id < NR_PLLS); + + if (ul_pll_id == PLLA_ID) { + pmc_disable_pllack(); + } +} + +static inline uint32_t pll_is_locked(uint32_t ul_pll_id) +{ + Assert(ul_pll_id < NR_PLLS); + + UNUSED(ul_pll_id); + return pmc_is_locked_pllack(); +} + +static inline void pll_enable_source(enum pll_source e_src) +{ + switch (e_src) { + case PLL_SRC_MAINCK_4M_RC: + case PLL_SRC_MAINCK_8M_RC: + case PLL_SRC_MAINCK_12M_RC: + case PLL_SRC_MAINCK_XTAL: + case PLL_SRC_MAINCK_BYPASS: + osc_enable(e_src); + osc_wait_ready(e_src); + break; + + default: + Assert(false); + break; + } +} + +static inline void pll_enable_config_defaults(unsigned int ul_pll_id) +{ + struct pll_config pllcfg; + + if (pll_is_locked(ul_pll_id)) { + return; // Pll already running + } + switch (ul_pll_id) { +#ifdef CONFIG_PLL0_SOURCE + case 0: + pll_enable_source(CONFIG_PLL0_SOURCE); + pll_config_init(&pllcfg, + CONFIG_PLL0_SOURCE, + CONFIG_PLL0_DIV, + CONFIG_PLL0_MUL); + break; +#endif + default: + Assert(false); + break; + } + pll_enable(&pllcfg, ul_pll_id); + while (!pll_is_locked(ul_pll_id)); +} + +//! @} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* CHIP_PLL_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/sysclk.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/sysclk.c new file mode 100644 index 000000000..66288d833 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/sysclk.c @@ -0,0 +1,234 @@ +/** + * \file + * + * \brief Chip-specific system clock management functions. + * + * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#include + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \weakgroup sysclk_group + * @{ + */ + +#if defined(CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC) +/** + * \brief boolean signalling that the sysclk_init is done. + */ +uint32_t sysclk_initialized = 0; +#endif + +/** + * \brief Set system clock prescaler configuration + * + * This function will change the system clock prescaler configuration to + * match the parameters. + * + * \note The parameters to this function are device-specific. + * + * \param ul_pres The CPU clock will be divided by \f$2^{mck\_pres}\f$ + */ +void sysclk_set_prescalers(uint32_t ul_pres) +{ + pmc_mck_set_prescaler(ul_pres); + SystemCoreClockUpdate(); +} + +/** + * \brief Change the source of the main system clock. + * + * \param ul_src The new system clock source. Must be one of the constants + * from the System Clock Sources section. + */ +void sysclk_set_source(uint32_t ul_src) +{ + switch (ul_src) { + case SYSCLK_SRC_SLCK_RC: + case SYSCLK_SRC_SLCK_XTAL: + case SYSCLK_SRC_SLCK_BYPASS: + pmc_mck_set_source(PMC_MCKR_CSS_SLOW_CLK); + break; + + case SYSCLK_SRC_MAINCK_4M_RC: + case SYSCLK_SRC_MAINCK_8M_RC: + case SYSCLK_SRC_MAINCK_12M_RC: + case SYSCLK_SRC_MAINCK_XTAL: + case SYSCLK_SRC_MAINCK_BYPASS: + pmc_mck_set_source(PMC_MCKR_CSS_MAIN_CLK); + break; + + case SYSCLK_SRC_PLLACK: + pmc_mck_set_source(PMC_MCKR_CSS_PLLA_CLK); + break; + } + + SystemCoreClockUpdate(); +} + +#if defined(CONFIG_USBCLK_SOURCE) || defined(__DOXYGEN__) +/** + * \brief Enable USB clock. + * + * \note The SAM3S UDP hardware interprets div as div+1. For readability the hardware div+1 + * is hidden in this implementation. Use div as div effective value. + * + * \param pll_id Source of the USB clock. + * \param div Actual clock divisor. Must be superior to 0. + */ +void sysclk_enable_usb(void) +{ + Assert(CONFIG_USBCLK_DIV > 0); + +#ifdef CONFIG_PLL0_SOURCE + if (CONFIG_USBCLK_SOURCE == USBCLK_SRC_PLL0) { + struct pll_config pllcfg; + + pll_enable_source(CONFIG_PLL0_SOURCE); + pll_config_defaults(&pllcfg, 0); + pll_enable(&pllcfg, 0); + pll_wait_for_lock(0); + pmc_switch_udpck_to_pllack(CONFIG_USBCLK_DIV - 1); + pmc_enable_udpck(); + return; + } +#endif +} + +/** + * \brief Disable the USB clock. + * + * \note This implementation does not switch off the PLL, it just turns off the USB clock. + */ +void sysclk_disable_usb(void) +{ + pmc_disable_udpck(); +} +#endif // CONFIG_USBCLK_SOURCE + +void sysclk_init(void) +{ + /* Set a flash wait state depending on the new cpu frequency */ + system_init_flash(sysclk_get_cpu_hz()); + + /* Config system clock setting */ + if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_RC) { + osc_enable(OSC_SLCK_32K_RC); + osc_wait_ready(OSC_SLCK_32K_RC); + pmc_switch_mck_to_sclk(CONFIG_SYSCLK_PRES); + } + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_XTAL) { + osc_enable(OSC_SLCK_32K_XTAL); + osc_wait_ready(OSC_SLCK_32K_XTAL); + pmc_switch_mck_to_sclk(CONFIG_SYSCLK_PRES); + } + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_BYPASS) { + osc_enable(OSC_SLCK_32K_BYPASS); + osc_wait_ready(OSC_SLCK_32K_BYPASS); + pmc_switch_mck_to_sclk(CONFIG_SYSCLK_PRES); + } + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_4M_RC) { + /* Already running from SYSCLK_SRC_MAINCK_4M_RC */ + } + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_8M_RC) { + osc_enable(OSC_MAINCK_8M_RC); + osc_wait_ready(OSC_MAINCK_8M_RC); + pmc_switch_mck_to_mainck(CONFIG_SYSCLK_PRES); + } + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_12M_RC) { + osc_enable(OSC_MAINCK_12M_RC); + osc_wait_ready(OSC_MAINCK_12M_RC); + pmc_switch_mck_to_mainck(CONFIG_SYSCLK_PRES); + } + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_XTAL) { + osc_enable(OSC_MAINCK_XTAL); + osc_wait_ready(OSC_MAINCK_XTAL); + pmc_switch_mck_to_mainck(CONFIG_SYSCLK_PRES); + } + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_BYPASS) { + osc_enable(OSC_MAINCK_BYPASS); + osc_wait_ready(OSC_MAINCK_BYPASS); + pmc_switch_mck_to_mainck(CONFIG_SYSCLK_PRES); + } + +#ifdef CONFIG_PLL0_SOURCE + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_PLLACK) { + struct pll_config pllcfg; + + pll_enable_source(CONFIG_PLL0_SOURCE); + pll_config_defaults(&pllcfg, 0); + pll_enable(&pllcfg, 0); + pll_wait_for_lock(0); + pmc_switch_mck_to_pllack(CONFIG_SYSCLK_PRES); + } +#endif + + /* Update the SystemFrequency variable */ + SystemCoreClockUpdate(); + +#if (defined CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC) + /* Signal that the internal frequencies are setup */ + sysclk_initialized = 1; +#endif +} + +//! @} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/sysclk.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/sysclk.h new file mode 100644 index 000000000..4460fd561 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/sysclk.h @@ -0,0 +1,456 @@ +/** + * \file + * + * \brief Chip-specific system clock management functions. + * + * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef CHIP_SYSCLK_H_INCLUDED +#define CHIP_SYSCLK_H_INCLUDED + +#include +#include + +/** + * \page sysclk_quickstart Quick Start Guide for the System Clock Management + * service (SAM4E) + * + * This is the quick start guide for the \ref sysclk_group "System Clock + * Management" service, with step-by-step instructions on how to configure and + * use the service for specific use cases. + * + * \section sysclk_quickstart_usecases System Clock Management use cases + * - \ref sysclk_quickstart_basic + * - \ref sysclk_quickstart_use_case_2 + * + * \section sysclk_quickstart_basic Basic usage of the System Clock Management + * service + * This section will present a basic use case for the System Clock Management + * service. This use case will configure the main system clock to 120MHz, + * using an internal PLL module to multiply the frequency of a crystal attached + * to the microcontroller. + * + * \subsection sysclk_quickstart_use_case_1_prereq Prerequisites + * - None + * + * \subsection sysclk_quickstart_use_case_1_setup_steps Initialization code + * Add to the application initialization code: + * \code + * sysclk_init(); + * \endcode + * + * \subsection sysclk_quickstart_use_case_1_setup_steps_workflow Workflow + * -# Configure the system clocks according to the settings in conf_clock.h: + * \code sysclk_init(); \endcode + * + * \subsection sysclk_quickstart_use_case_1_example_code Example code + * Add or uncomment the following in your conf_clock.h header file, + * commenting out all other definitions of the same symbol(s): + * \code + * #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK + * + * // Fpll0 = (Fclk * PLL_mul) / PLL_div + * #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL + * #define CONFIG_PLL0_MUL (120000000UL / BOARD_FREQ_MAINCK_XTAL) + * #define CONFIG_PLL0_DIV 1 + * + * // Fbus = Fsys / BUS_div + * #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 + * \endcode + * + * \subsection sysclk_quickstart_use_case_1_example_workflow Workflow + * -# Configure the main system clock to use the output of the PLL module as + * its source: + * \code #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK \endcode + * -# Configure the PLL module to use the fast external fast crystal + * oscillator as its source: + * \code #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL \endcode + * -# Configure the PLL module to multiply the external fast crystal + * oscillator frequency up to 120MHz: + * \code + * #define CONFIG_PLL0_MUL (120000000UL / BOARD_FREQ_MAINCK_XTAL) + * #define CONFIG_PLL0_DIV 1 + * \endcode + * \note For user boards, \c BOARD_FREQ_MAINCK_XTAL should be defined in the + * board \c conf_board.h configuration + * file as the frequency of the fast crystal attached to the microcontroller. + * -# Configure the main clock to run at the full 120MHz, disable scaling of + * the main system clock speed: + * \code + * #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 + * \endcode + * \note Some dividers are powers of two, while others are integer division + * factors. Refer to the formulas in the conf_clock.h template commented + * above each division define. + */ + +/** + * \page sysclk_quickstart_use_case_2 Advanced use case - Peripheral Bus Clock + * Management (SAM4E) + * + * \section sysclk_quickstart_use_case_2 Advanced use case - Peripheral Bus + * Clock Management + * This section will present a more advanced use case for the System Clock + * Management service. This use case will configure the main system clock to + * 96MHz, using an internal PLL module to multiply the frequency of a crystal + * attached to the microcontroller. The USB clock will be configured via the + * same PLL module. + * + * \subsection sysclk_quickstart_use_case_2_prereq Prerequisites + * - None + * + * \subsection sysclk_quickstart_use_case_2_setup_steps Initialization code + * Add to the application initialization code: + * \code + * sysclk_init(); + * \endcode + * + * \subsection sysclk_quickstart_use_case_2_setup_steps_workflow Workflow + * -# Configure the system clocks according to the settings in conf_clock.h: + * \code sysclk_init(); \endcode + * + * \subsection sysclk_quickstart_use_case_2_example_code Example code + * Add or uncomment the following in your conf_clock.h header file, + * commenting out all other definitions of the same symbol(s): + * \code + * #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK + * + * // Fpll0 = (Fclk * PLL_mul) / PLL_div + * #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL + * #define CONFIG_PLL0_MUL (96000000UL / BOARD_FREQ_MAINCK_XTAL) + * #define CONFIG_PLL0_DIV 1 + * + * // Fbus = Fsys / BUS_div + * #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 + * + * // Fusb = Fsys / USB_div + * #define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL0 + * #define CONFIG_USBCLK_DIV 2 + * \endcode + * + * \subsection sysclk_quickstart_use_case_2_example_workflow Workflow + * -# Configure the main system clock to use the output of the PLL0 module as + * its source: + * \code #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK \endcode + * -# Configure the PLL0 module to use the fast external fast crystal + * oscillator as its source: + * \code #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL \endcode + * -# Configure the PLL0 module to multiply the external fast crystal + * oscillator frequency up to 96MHz: + * \code + * #define CONFIG_PLL0_MUL (96000000UL / BOARD_FREQ_MAINCK_XTAL) + * #define CONFIG_PLL0_DIV 1 + * \endcode + * \note For user boards, \c BOARD_FREQ_MAINCK_XTAL should be defined in the + * board \c conf_board.h configuration file as the frequency of the fast + * crystal attached to the microcontroller. + * -# Configure the main clock to run at the full 96MHz, disable scaling of + * the main system clock speed: + * \code + * #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 + * \endcode + * \note Some dividers are powers of two, while others are integer division + * factors. Refer to the formulas in the conf_clock.h template commented + * above each division define. + * -# Configure the USB module clock to use the output of the PLL0 module as + * its source with division 2: + * \code + * #define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL0 + * #define CONFIG_USBCLK_DIV 2 + * \endcode + */ + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \weakgroup sysclk_group + * @{ + */ + +//! \name Configuration Symbols +//@{ +/** + * \def CONFIG_SYSCLK_SOURCE + * \brief Initial/static main system clock source + * + * The main system clock will be configured to use this clock during + * initialization. + */ +#ifndef CONFIG_SYSCLK_SOURCE +# define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_4M_RC +#endif +/** + * \def CONFIG_SYSCLK_PRES + * \brief Initial CPU clock divider (mck) + * + * The MCK will run at + * \f[ + * f_{MCK} = \frac{f_{sys}}{\mathrm{CONFIG\_SYSCLK\_PRES}}\,\mbox{Hz} + * \f] + * after initialization. + */ +#ifndef CONFIG_SYSCLK_PRES +# define CONFIG_SYSCLK_PRES 0 +#endif + +//@} + +//! \name Master Clock Sources (MCK) +//@{ +#define SYSCLK_SRC_SLCK_RC 0 //!< Internal 32kHz RC oscillator as master source clock +#define SYSCLK_SRC_SLCK_XTAL 1 //!< External 32kHz crystal oscillator as master source clock +#define SYSCLK_SRC_SLCK_BYPASS 2 //!< External 32kHz bypass oscillator as master source clock +#define SYSCLK_SRC_MAINCK_4M_RC 3 //!< Internal 4MHz RC oscillator as master source clock +#define SYSCLK_SRC_MAINCK_8M_RC 4 //!< Internal 8MHz RC oscillator as master source clock +#define SYSCLK_SRC_MAINCK_12M_RC 5 //!< Internal 12MHz RC oscillator as master source clock +#define SYSCLK_SRC_MAINCK_XTAL 6 //!< External crystal oscillator as master source clock +#define SYSCLK_SRC_MAINCK_BYPASS 7 //!< External bypass oscillator as master source clock +#define SYSCLK_SRC_PLLACK 8 //!< Use PLLACK as master source clock +//@} + +//! \name Master Clock Prescalers (MCK) +//@{ +#define SYSCLK_PRES_1 PMC_MCKR_PRES_CLK_1 //!< Set master clock prescaler to 1 +#define SYSCLK_PRES_2 PMC_MCKR_PRES_CLK_2 //!< Set master clock prescaler to 2 +#define SYSCLK_PRES_4 PMC_MCKR_PRES_CLK_4 //!< Set master clock prescaler to 4 +#define SYSCLK_PRES_8 PMC_MCKR_PRES_CLK_8 //!< Set master clock prescaler to 8 +#define SYSCLK_PRES_16 PMC_MCKR_PRES_CLK_16 //!< Set master clock prescaler to 16 +#define SYSCLK_PRES_32 PMC_MCKR_PRES_CLK_32 //!< Set master clock prescaler to 32 +#define SYSCLK_PRES_64 PMC_MCKR_PRES_CLK_64 //!< Set master clock prescaler to 64 +#define SYSCLK_PRES_3 PMC_MCKR_PRES_CLK_3 //!< Set master clock prescaler to 3 +//@} + +//! \name USB Clock Sources +//@{ +#define USBCLK_SRC_PLL0 0 //!< Use PLLA +//@} + +/** + * \def CONFIG_USBCLK_SOURCE + * \brief Configuration symbol for the USB generic clock source + * + * Sets the clock source to use for the USB. The source must also be properly + * configured. + * + * Define this to one of the \c USBCLK_SRC_xxx settings. Leave it undefined if + * USB is not required. + */ +#ifdef __DOXYGEN__ +# define CONFIG_USBCLK_SOURCE +#endif + +/** + * \def CONFIG_USBCLK_DIV + * \brief Configuration symbol for the USB generic clock divider setting + * + * Sets the clock division for the USB generic clock. If a USB clock source is + * selected with CONFIG_USBCLK_SOURCE, this configuration symbol must also be + * defined. + */ +#ifdef __DOXYGEN__ +# define CONFIG_USBCLK_DIV +#endif + +/** + * \name Querying the system clock + * + * The following functions may be used to query the current frequency of + * the system clock and the CPU and bus clocks derived from it. + * sysclk_get_main_hz() and sysclk_get_cpu_hz() can be assumed to be + * available on all platforms, although some platforms may define + * additional accessors for various chip-internal bus clocks. These are + * usually not intended to be queried directly by generic code. + */ +//@{ + +/** + * \brief Return the current rate in Hz of the main system clock + * + * \todo This function assumes that the main clock source never changes + * once it's been set up, and that PLL0 always runs at the compile-time + * configured default rate. While this is probably the most common + * configuration, which we want to support as a special case for + * performance reasons, we will at some point need to support more + * dynamic setups as well. + */ +#if (defined CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC) +extern uint32_t sysclk_initialized; +#endif +static inline uint32_t sysclk_get_main_hz(void) +{ +#if (defined CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC) + if (!sysclk_initialized ) { + return OSC_MAINCK_4M_RC_HZ; + } +#endif + + /* Config system clock setting */ + if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_RC) { + return OSC_SLCK_32K_RC_HZ; + } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_XTAL) { + return OSC_SLCK_32K_XTAL_HZ; + } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_BYPASS) { + return OSC_SLCK_32K_BYPASS_HZ; + } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_4M_RC) { + return OSC_MAINCK_4M_RC_HZ; + } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_8M_RC) { + return OSC_MAINCK_8M_RC_HZ; + } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_12M_RC) { + return OSC_MAINCK_12M_RC_HZ; + } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_XTAL) { + return OSC_MAINCK_XTAL_HZ; + } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_BYPASS) { + return OSC_MAINCK_BYPASS_HZ; + } +#ifdef CONFIG_PLL0_SOURCE + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_PLLACK) { + return pll_get_default_rate(0); + } +#endif + + else { + /* unhandled_case(CONFIG_SYSCLK_SOURCE); */ + return 0; + } +} + +/** + * \brief Return the current rate in Hz of the CPU clock + * + * \todo This function assumes that the CPU always runs at the system + * clock frequency. We want to support at least two more scenarios: + * Fixed CPU/bus clock dividers (config symbols) and dynamic CPU/bus + * clock dividers (which may change at run time). Ditto for all the bus + * clocks. + * + * \return Frequency of the CPU clock, in Hz. + */ +static inline uint32_t sysclk_get_cpu_hz(void) +{ + /* CONFIG_SYSCLK_PRES is the register value for setting the expected */ + /* prescaler, not an immediate value. */ + return sysclk_get_main_hz() / + ((CONFIG_SYSCLK_PRES == SYSCLK_PRES_3) ? 3 : + (1 << (CONFIG_SYSCLK_PRES >> PMC_MCKR_PRES_Pos))); +} + +/** + * \brief Retrieves the current rate in Hz of the peripheral clocks. + * + * \return Frequency of the peripheral clocks, in Hz. + */ +static inline uint32_t sysclk_get_peripheral_hz(void) +{ + /* CONFIG_SYSCLK_PRES is the register value for setting the expected */ + /* prescaler, not an immediate value. */ + return sysclk_get_main_hz() / + ((CONFIG_SYSCLK_PRES == SYSCLK_PRES_3) ? 3 : + (1 << (CONFIG_SYSCLK_PRES >> PMC_MCKR_PRES_Pos))); +} + +/** + * \brief Retrieves the current rate in Hz of the Peripheral Bus clock attached + * to the specified peripheral. + * + * \param module Pointer to the module's base address. + * + * \return Frequency of the bus attached to the specified peripheral, in Hz. + */ +static inline uint32_t sysclk_get_peripheral_bus_hz(const volatile void *module) +{ + UNUSED(module); + return sysclk_get_peripheral_hz(); +} +//@} + +//! \name Enabling and disabling synchronous clocks +//@{ + +/** + * \brief Enable a peripheral's clock. + * + * \param ul_id Id (number) of the peripheral clock. + */ +static inline void sysclk_enable_peripheral_clock(uint32_t ul_id) +{ + pmc_enable_periph_clk(ul_id); +} + +/** + * \brief Disable a peripheral's clock. + * + * \param ul_id Id (number) of the peripheral clock. + */ +static inline void sysclk_disable_peripheral_clock(uint32_t ul_id) +{ + pmc_disable_periph_clk(ul_id); +} + +//@} + +//! \name System Clock Source and Prescaler configuration +//@{ + +extern void sysclk_set_prescalers(uint32_t ul_pres); +extern void sysclk_set_source(uint32_t ul_src); + +//@} + +extern void sysclk_enable_usb(void); +extern void sysclk_disable_usb(void); + +extern void sysclk_init(void); + +//! @} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* CHIP_SYSCLK_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sysclk.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sysclk.h new file mode 100644 index 000000000..5221b8a36 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sysclk.h @@ -0,0 +1,175 @@ +/** + * \file + * + * \brief System clock management + * + * Copyright (c) 2010-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ +#ifndef SYSCLK_H_INCLUDED +#define SYSCLK_H_INCLUDED + +#include "parts.h" +#include "conf_clock.h" + +#if SAM3S +# include "sam3s/sysclk.h" +#elif SAM3U +# include "sam3u/sysclk.h" +#elif SAM3N +# include "sam3n/sysclk.h" +#elif SAM3XA +# include "sam3x/sysclk.h" +#elif SAM4S +# include "sam4s/sysclk.h" +#elif SAM4E +# include "sam4e/sysclk.h" +#elif SAM4L +# include "sam4l/sysclk.h" +#elif SAM4N +# include "sam4n/sysclk.h" +#elif (UC3A0 || UC3A1) +# include "uc3a0_a1/sysclk.h" +#elif UC3A3 +# include "uc3a3_a4/sysclk.h" +#elif UC3B +# include "uc3b0_b1/sysclk.h" +#elif UC3C +# include "uc3c/sysclk.h" +#elif UC3D +# include "uc3d/sysclk.h" +#elif UC3L +# include "uc3l/sysclk.h" +#elif XMEGA +# include "xmega/sysclk.h" +#elif MEGA +# include "mega/sysclk.h" +#else +# error Unsupported chip type +#endif + +/** + * \defgroup clk_group Clock Management + */ + +/** + * \ingroup clk_group + * \defgroup sysclk_group System Clock Management + * + * See \ref sysclk_quickstart. + * + * The sysclk API covers the system clock and all + * clocks derived from it. The system clock is a chip-internal clock on + * which all synchronous clocks, i.e. CPU and bus/peripheral + * clocks, are based. The system clock is typically generated from one + * of a variety of sources, which may include crystal and RC oscillators + * as well as PLLs. The clocks derived from the system clock are + * sometimes also known as synchronous clocks, since they + * always run synchronously with respect to each other, as opposed to + * generic clocks which may run from different oscillators or + * PLLs. + * + * Most applications should simply call sysclk_init() to initialize + * everything related to the system clock and its source (oscillator, + * PLL or DFLL), and leave it at that. More advanced applications, and + * platform-specific drivers, may require additional services from the + * clock system, some of which may be platform-specific. + * + * \section sysclk_group_platform Platform Dependencies + * + * The sysclk API is partially chip- or platform-specific. While all + * platforms provide mostly the same functionality, there are some + * variations around how different bus types and clock tree structures + * are handled. + * + * The following functions are available on all platforms with the same + * parameters and functionality. These functions may be called freely by + * portable applications, drivers and services: + * - sysclk_init() + * - sysclk_set_source() + * - sysclk_get_main_hz() + * - sysclk_get_cpu_hz() + * - sysclk_get_peripheral_bus_hz() + * + * The following functions are available on all platforms, but there may + * be variations in the function signature (i.e. parameters) and + * behavior. These functions are typically called by platform-specific + * parts of drivers, and applications that aren't intended to be + * portable: + * - sysclk_enable_peripheral_clock() + * - sysclk_disable_peripheral_clock() + * - sysclk_enable_module() + * - sysclk_disable_module() + * - sysclk_module_is_enabled() + * - sysclk_set_prescalers() + * + * All other functions should be considered platform-specific. + * Enabling/disabling clocks to specific peripherals as well as + * determining the speed of these clocks should be done by calling + * functions provided by the driver for that peripheral. + * + * @{ + */ + +//! \name System Clock Initialization +//@{ +/** + * \fn void sysclk_init(void) + * \brief Initialize the synchronous clock system. + * + * This function will initialize the system clock and its source. This + * includes: + * - Mask all synchronous clocks except for any clocks which are + * essential for normal operation (for example internal memory + * clocks). + * - Set up the system clock prescalers as specified by the + * application's configuration file. + * - Enable the clock source specified by the application's + * configuration file (oscillator or PLL) and wait for it to become + * stable. + * - Set the main system clock source to the clock specified by the + * application's configuration file. + * + * Since all non-essential peripheral clocks are initially disabled, it + * is the responsibility of the peripheral driver to re-enable any + * clocks that are needed for normal operation. + */ +//@} + +//! @} + +#endif /* SYSCLK_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/ioport/ioport.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/ioport/ioport.h new file mode 100644 index 000000000..7cf38f77c --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/ioport/ioport.h @@ -0,0 +1,538 @@ +/** + * \file + * + * \brief Common IOPORT service main header file for AVR, UC3 and ARM + * architectures. + * + * Copyright (c) 2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ +#ifndef IOPORT_H +#define IOPORT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/** + * \defgroup ioport_group Common IOPORT API + * + * See \ref ioport_quickstart. + * + * This is common IOPORT service for GPIO pin configuration and control in a + * standardized manner across the MEGA, MEGA_RF, XMEGA, UC3 and ARM devices. + * + * Port pin control code is optimized for each platform, and should produce + * both compact and fast execution times when used with constant values. + * + * \section dependencies Dependencies + * This driver depends on the following modules: + * - \ref sysclk_group for clock speed and functions. + * @{ + */ + +/** + * \def IOPORT_CREATE_PIN(port, pin) + * \brief Create IOPORT pin number + * + * Create a IOPORT pin number for use with the IOPORT functions. + * + * \param port IOPORT port (e.g. PORTA, PA or PIOA depending on chosen + * architecture) + * \param pin IOPORT zero-based index of the I/O pin + */ + +/** \brief IOPORT pin directions */ +enum ioport_direction { + IOPORT_DIR_INPUT, /*!< IOPORT input direction */ + IOPORT_DIR_OUTPUT, /*!< IOPORT output direction */ +}; + +/** \brief IOPORT levels */ +enum ioport_value { + IOPORT_PIN_LEVEL_LOW, /*!< IOPORT pin value low */ + IOPORT_PIN_LEVEL_HIGH, /*!< IOPORT pin value high */ +}; + +#if MEGA_RF +/** \brief IOPORT edge sense modes */ +enum ioport_sense { + IOPORT_SENSE_LEVEL, /*!< IOPORT sense low level */ + IOPORT_SENSE_BOTHEDGES, /*!< IOPORT sense both rising and falling edges */ + IOPORT_SENSE_FALLING, /*!< IOPORT sense falling edges */ + IOPORT_SENSE_RISING, /*!< IOPORT sense rising edges */ +}; +#elif SAM && !SAM4L +/** \brief IOPORT edge sense modes */ +enum ioport_sense { + IOPORT_SENSE_BOTHEDGES, /*!< IOPORT sense both rising and falling edges */ + IOPORT_SENSE_FALLING, /*!< IOPORT sense falling edges */ + IOPORT_SENSE_RISING, /*!< IOPORT sense rising edges */ + IOPORT_SENSE_LEVEL_LOW, /*!< IOPORT sense low level */ + IOPORT_SENSE_LEVEL_HIGH,/*!< IOPORT sense High level */ +}; +#else +enum ioport_sense { + IOPORT_SENSE_BOTHEDGES, /*!< IOPORT sense both rising and falling edges */ + IOPORT_SENSE_RISING, /*!< IOPORT sense rising edges */ + IOPORT_SENSE_FALLING, /*!< IOPORT sense falling edges */ +}; +#endif + + +#if XMEGA +# include "xmega/ioport.h" +# if defined(IOPORT_XMEGA_COMPAT) +# include "xmega/ioport_compat.h" +# endif +#elif MEGA +# include "mega/ioport.h" +#elif UC3 +# include "uc3/ioport.h" +#elif SAM +# if SAM4L +# include "sam/ioport_gpio.h" +# elif SAMD20 +# include "sam0/ioport.h" +# else +# include "sam/ioport_pio.h" +# endif +#endif + +/** + * \brief Initializes the IOPORT service, ready for use. + * + * This function must be called before using any other functions in the IOPORT + * service. + */ +static inline void ioport_init(void) +{ + arch_ioport_init(); +} + +/** + * \brief Enable an IOPORT pin, based on a pin created with \ref + * IOPORT_CREATE_PIN(). + * + * \param pin IOPORT pin to enable + */ +static inline void ioport_enable_pin(ioport_pin_t pin) +{ + arch_ioport_enable_pin(pin); +} + +/** + * \brief Enable multiple pins in a single IOPORT port. + * + * \param port IOPORT port to enable + * \param mask Mask of pins within the port to enable + */ +static inline void ioport_enable_port(ioport_port_t port, + ioport_port_mask_t mask) +{ + arch_ioport_enable_port(port, mask); +} + +/** + * \brief Disable IOPORT pin, based on a pin created with \ref + * IOPORT_CREATE_PIN(). + * + * \param pin IOPORT pin to disable + */ +static inline void ioport_disable_pin(ioport_pin_t pin) +{ + arch_ioport_disable_pin(pin); +} + +/** + * \brief Disable multiple pins in a single IOPORT port. + * + * \param port IOPORT port to disable + * \param mask Pin mask of pins to disable + */ +static inline void ioport_disable_port(ioport_port_t port, + ioport_port_mask_t mask) +{ + arch_ioport_disable_port(port, mask); +} + +/** + * \brief Set multiple pin modes in a single IOPORT port, such as pull-up, + * pull-down, etc. configuration. + * + * \param port IOPORT port to configure + * \param mask Pin mask of pins to configure + * \param mode Mode masks to configure for the specified pins (\ref + * ioport_modes) + */ +static inline void ioport_set_port_mode(ioport_port_t port, + ioport_port_mask_t mask, ioport_mode_t mode) +{ + arch_ioport_set_port_mode(port, mask, mode); +} + +/** + * \brief Set pin mode for one single IOPORT pin. + * + * \param pin IOPORT pin to configure + * \param mode Mode masks to configure for the specified pin (\ref ioport_modes) + */ +static inline void ioport_set_pin_mode(ioport_pin_t pin, ioport_mode_t mode) +{ + arch_ioport_set_pin_mode(pin, mode); +} + +/** + * \brief Reset multiple pin modes in a specified IOPORT port to defaults. + * + * \param port IOPORT port to configure + * \param mask Mask of pins whose mode configuration is to be reset + */ +static inline void ioport_reset_port_mode(ioport_port_t port, + ioport_port_mask_t mask) +{ + arch_ioport_set_port_mode(port, mask, 0); +} + +/** + * \brief Reset pin mode configuration for a single IOPORT pin + * + * \param pin IOPORT pin to configure + */ +static inline void ioport_reset_pin_mode(ioport_pin_t pin) +{ + arch_ioport_set_pin_mode(pin, 0); +} + +/** + * \brief Set I/O direction for a group of pins in a single IOPORT. + * + * \param port IOPORT port to configure + * \param mask Pin mask of pins to configure + * \param dir Direction to set for the specified pins (\ref ioport_direction) + */ +static inline void ioport_set_port_dir(ioport_port_t port, + ioport_port_mask_t mask, enum ioport_direction dir) +{ + arch_ioport_set_port_dir(port, mask, dir); +} + +/** + * \brief Set direction for a single IOPORT pin. + * + * \param pin IOPORT pin to configure + * \param dir Direction to set for the specified pin (\ref ioport_direction) + */ +static inline void ioport_set_pin_dir(ioport_pin_t pin, + enum ioport_direction dir) +{ + arch_ioport_set_pin_dir(pin, dir); +} + +/** + * \brief Set an IOPORT pin to a specified logical value. + * + * \param pin IOPORT pin to configure + * \param level Logical value of the pin + */ +static inline void ioport_set_pin_level(ioport_pin_t pin, bool level) +{ + arch_ioport_set_pin_level(pin, level); +} + +/** + * \brief Set a group of IOPORT pins in a single port to a specified logical + * value. + * + * \param port IOPORT port to write to + * \param mask Pin mask of pins to modify + * \param level Level of the pins to be modified + */ +static inline void ioport_set_port_level(ioport_port_t port, + ioport_port_mask_t mask, ioport_port_mask_t level) +{ + arch_ioport_set_port_level(port, mask, level); +} + +/** + * \brief Get current value of an IOPORT pin, which has been configured as an + * input. + * + * \param pin IOPORT pin to read + * \return Current logical value of the specified pin + */ +static inline bool ioport_get_pin_level(ioport_pin_t pin) +{ + return arch_ioport_get_pin_level(pin); +} + +/** + * \brief Get current value of several IOPORT pins in a single port, which have + * been configured as an inputs. + * + * \param port IOPORT port to read + * \param mask Pin mask of pins to read + * \return Logical levels of the specified pins from the read port, returned as + * a mask. + */ +static inline ioport_port_mask_t ioport_get_port_level(ioport_pin_t port, + ioport_port_mask_t mask) +{ + return arch_ioport_get_port_level(port, mask); +} + +/** + * \brief Toggle the value of an IOPORT pin, which has previously configured as + * an output. + * + * \param pin IOPORT pin to toggle + */ +static inline void ioport_toggle_pin_level(ioport_pin_t pin) +{ + arch_ioport_toggle_pin_level(pin); +} + +/** + * \brief Toggle the values of several IOPORT pins located in a single port. + * + * \param port IOPORT port to modify + * \param mask Pin mask of pins to toggle + */ +static inline void ioport_toggle_port_level(ioport_port_t port, + ioport_port_mask_t mask) +{ + arch_ioport_toggle_port_level(port, mask); +} + +/** + * \brief Set the pin sense mode of a single IOPORT pin. + * + * \param pin IOPORT pin to configure + * \param pin_sense Edge to sense for the pin (\ref ioport_sense) + */ +static inline void ioport_set_pin_sense_mode(ioport_pin_t pin, + enum ioport_sense pin_sense) +{ + arch_ioport_set_pin_sense_mode(pin, pin_sense); +} + +/** + * \brief Set the pin sense mode of a multiple IOPORT pins on a single port. + * + * \param port IOPORT port to configure + * \param mask Bitmask if pins whose edge sense is to be configured + * \param pin_sense Edge to sense for the pins (\ref ioport_sense) + */ +static inline void ioport_set_port_sense_mode(ioport_port_t port, + ioport_port_mask_t mask, + enum ioport_sense pin_sense) +{ + arch_ioport_set_port_sense_mode(port, mask, pin_sense); +} + +/** + * \brief Convert a pin ID into a its port ID. + * + * \param pin IOPORT pin ID to convert + * \retval Port ID for the given pin ID + */ +static inline ioport_port_t ioport_pin_to_port_id(ioport_pin_t pin) +{ + return arch_ioport_pin_to_port_id(pin); +} + +/** + * \brief Convert a pin ID into a bitmask mask for the given pin on its port. + * + * \param pin IOPORT pin ID to convert + * \retval Bitmask with a bit set that corresponds to the given pin ID in its port + */ +static inline ioport_port_mask_t ioport_pin_to_mask(ioport_pin_t pin) +{ + return arch_ioport_pin_to_mask(pin); +} + +/** @} */ + +/** + * \page ioport_quickstart Quick start guide for the common IOPORT service + * + * This is the quick start guide for the \ref ioport_group, with + * step-by-step instructions on how to configure and use the service in a + * selection of use cases. + * + * The use cases contain several code fragments. The code fragments in the + * steps for setup can be copied into a custom initialization function, while + * the steps for usage can be copied into, e.g., the main application function. + * + * \section ioport_quickstart_basic Basic use case + * In this use case we will configure one IO pin for button input and one for + * LED control. Then it will read the button state and output it on the LED. + * + * \section ioport_quickstart_basic_setup Setup steps + * + * \subsection ioport_quickstart_basic_setup_code Example code + * \code + * #define MY_LED IOPORT_CREATE_PIN(PORTA, 5) + * #define MY_BUTTON IOPORT_CREATE_PIN(PORTA, 6) + * + * ioport_init(); + * + * ioport_set_pin_dir(MY_LED, IOPORT_DIR_OUTPUT); + * ioport_set_pin_dir(MY_BUTTON, IOPORT_DIR_INPUT); + * ioport_set_pin_mode(MY_BUTTON, IOPORT_MODE_PULLUP); + * \endcode + * + * \subsection ioport_quickstart_basic_setup_flow Workflow + * -# It's useful to give the GPIOs symbolic names and this can be done with + * the \ref IOPORT_CREATE_PIN macro. We define one for a LED and one for a + * button. + * - \code + * #define MY_LED IOPORT_CREATE_PIN(PORTA, 5) + * #define MY_BUTTON IOPORT_CREATE_PIN(PORTA, 6) + * \endcode + * - \note The usefulness of the \ref IOPORT_CREATE_PIN macro and port names + * differ between architectures: + * - MEGA, MEGA_RF and XMEGA: Use \ref IOPORT_CREATE_PIN macro with port definitions + * PORTA, PORTB ... + * - UC3: Most convenient to pick up the device header file pin definition + * and us it directly. E.g.: AVR32_PIN_PB06 + * - SAM: Most convenient to pick up the device header file pin definition + * and us it directly. E.g.: PIO_PA5_IDX
+ * \ref IOPORT_CREATE_PIN can also be used with port definitions + * PIOA, PIOB ... + * -# Initialize the ioport service. This typically enables the IO module if + * needed. + * - \code ioport_init(); \endcode + * -# Set the LED GPIO as output: + * - \code ioport_set_pin_dir(MY_LED, IOPORT_DIR_OUTPUT); \endcode + * -# Set the button GPIO as input: + * - \code ioport_set_pin_dir(MY_BUTTON, IOPORT_DIR_INPUT); \endcode + * -# Enable pull-up for the button GPIO: + * - \code ioport_set_pin_mode(MY_BUTTON, IOPORT_MODE_PULLUP); \endcode + * + * \section ioport_quickstart_basic_usage Usage steps + * + * \subsection ioport_quickstart_basic_usage_code Example code + * \code + * bool value; + * + * value = ioport_get_pin_level(MY_BUTTON); + * ioport_set_pin_level(MY_LED, value); + * \endcode + * + * \subsection ioport_quickstart_basic_usage_flow Workflow + * -# Define a boolean variable for state storage: + * - \code bool value; \endcode + * -# Read out the button level into variable value: + * - \code value = ioport_get_pin_level(MY_BUTTON); \endcode + * -# Set the LED to read out value from the button: + * - \code ioport_set_pin_level(MY_LED, value); \endcode + * + * \section ioport_quickstart_advanced Advanced use cases + * - \subpage ioport_quickstart_use_case_1 : Port access + */ + +/** + * \page ioport_quickstart_use_case_1 Advanced use case doing port access + * + * In this case we will read out the pins from one whole port and write the + * read value to another port. + * + * \section ioport_quickstart_use_case_1_setup Setup steps + * + * \subsection ioport_quickstart_use_case_1_setup_code Example code + * \code + * #define IN_PORT IOPORT_PORTA + * #define OUT_PORT IOPORT_PORTB + * #define MASK 0x00000060 + * + * ioport_init(); + * + * ioport_set_port_dir(IN_PORT, MASK, IOPORT_DIR_INPUT); + * ioport_set_port_dir(OUT_PORT, MASK, IOPORT_DIR_OUTPUT); + * \endcode + * + * \subsection ioport_quickstart_basic_setup_flow Workflow + * -# It's useful to give the ports symbolic names: + * - \code + * #define IN_PORT IOPORT_PORTA + * #define OUT_PORT IOPORT_PORTB + * \endcode + * - \note The port names differ between architectures: + * - MEGA_RF, MEGA and XMEGA: There are predefined names for ports: IOPORT_PORTA, + * IOPORT_PORTB ... + * - UC3: Use the index value of the different IO blocks: 0, 1 ... + * - SAM: There are predefined names for ports: IOPORT_PIOA, IOPORT_PIOB + * ... + * -# Also useful to define a mask for the bits to work with: + * - \code #define MASK 0x00000060 \endcode + * -# Initialize the ioport service. This typically enables the IO module if + * needed. + * - \code ioport_init(); \endcode + * -# Set one of the ports as input: + * - \code ioport_set_pin_dir(IN_PORT, MASK, IOPORT_DIR_INPUT); \endcode + * -# Set the other port as output: + * - \code ioport_set_pin_dir(OUT_PORT, MASK, IOPORT_DIR_OUTPUT); \endcode + * + * \section ioport_quickstart_basic_usage Usage steps + * + * \subsection ioport_quickstart_basic_usage_code Example code + * \code + * ioport_port_mask_t value; + * + * value = ioport_get_port_level(IN_PORT, MASK); + * ioport_set_port_level(OUT_PORT, MASK, value); + * \endcode + * + * \subsection ioport_quickstart_basic_usage_flow Workflow + * -# Define a variable for port date storage: + * - \code ioport_port_mask_t value; \endcode + * -# Read out from one port: + * - \code value = ioport_get_port_level(IN_PORT, MASK); \endcode + * -# Put the read data out on the other port: + * - \code ioport_set_port_level(OUT_PORT, MASK, value); \endcode + */ + +#ifdef __cplusplus +} +#endif + +#endif /* IOPORT_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/ioport/sam/ioport_pio.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/ioport/sam/ioport_pio.h new file mode 100644 index 000000000..20f97c0a1 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/services/ioport/sam/ioport_pio.h @@ -0,0 +1,364 @@ +/** + * \file + * + * \brief SAM architecture specific IOPORT service implementation header file. + * + * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ +#ifndef IOPORT_SAM_H +#define IOPORT_SAM_H + +#include + +#define IOPORT_CREATE_PIN(port, pin) ((IOPORT_ ## port) * 32 + (pin)) +#define IOPORT_BASE_ADDRESS (uintptr_t)PIOA +#define IOPORT_PIO_OFFSET ((uintptr_t)PIOB - (uintptr_t)PIOA) + +#define IOPORT_PIOA 0 +#define IOPORT_PIOB 1 +#define IOPORT_PIOC 2 +#define IOPORT_PIOD 3 +#define IOPORT_PIOE 4 +#define IOPORT_PIOF 5 + +/** + * \weakgroup ioport_group + * \section ioport_modes IOPORT Modes + * + * For details on these please see the SAM Manual. + * + * @{ + */ + +/** \name IOPORT Mode bit definitions */ +/** @{ */ +#define IOPORT_MODE_MUX_MASK (0x7 << 0) /*!< MUX bits mask */ +#define IOPORT_MODE_MUX_BIT0 ( 1 << 0) /*!< MUX BIT0 mask */ + +#if SAM3N || SAM3S || SAM4S || SAM4E || SAM4N +#define IOPORT_MODE_MUX_BIT1 ( 1 << 1) /*!< MUX BIT1 mask */ +#endif + +#define IOPORT_MODE_MUX_A ( 0 << 0) /*!< MUX function A */ +#define IOPORT_MODE_MUX_B ( 1 << 0) /*!< MUX function B */ + +#if SAM3N || SAM3S || SAM4S || SAM4E || SAM4N +#define IOPORT_MODE_MUX_C ( 2 << 0) /*!< MUX function C */ +#define IOPORT_MODE_MUX_D ( 3 << 0) /*!< MUX function D */ +#endif + +#define IOPORT_MODE_PULLUP ( 1 << 3) /*!< Pull-up */ + +#if SAM3N || SAM3S || SAM4S || SAM4E || SAM4N +#define IOPORT_MODE_PULLDOWN ( 1 << 4) /*!< Pull-down */ +#endif + +#define IOPORT_MODE_OPEN_DRAIN ( 1 << 5) /*!< Open drain */ + +#define IOPORT_MODE_GLITCH_FILTER ( 1 << 6) /*!< Glitch filter */ +#define IOPORT_MODE_DEBOUNCE ( 1 << 7) /*!< Input debounce */ +/** @} */ + +/** @} */ + +typedef uint32_t ioport_mode_t; +typedef uint32_t ioport_pin_t; +typedef uint32_t ioport_port_t; +typedef uint32_t ioport_port_mask_t; + +__always_inline static ioport_port_t arch_ioport_pin_to_port_id(ioport_pin_t pin) +{ + return pin >> 5; +} + +__always_inline static Pio *arch_ioport_port_to_base(ioport_port_t port) +{ + return (Pio *)((uintptr_t)IOPORT_BASE_ADDRESS + + (IOPORT_PIO_OFFSET * port)); +} + +__always_inline static Pio *arch_ioport_pin_to_base(ioport_pin_t pin) +{ + return arch_ioport_port_to_base(arch_ioport_pin_to_port_id(pin)); +} + +__always_inline static ioport_port_mask_t arch_ioport_pin_to_mask(ioport_pin_t pin) +{ + return 1U << (pin & 0x1F); +} + +__always_inline static void arch_ioport_init(void) +{ +#ifdef ID_PIOA + sysclk_enable_peripheral_clock(ID_PIOA); +#endif +#ifdef ID_PIOB + sysclk_enable_peripheral_clock(ID_PIOB); +#endif +#ifdef ID_PIOC + sysclk_enable_peripheral_clock(ID_PIOC); +#endif +#ifdef ID_PIOD + sysclk_enable_peripheral_clock(ID_PIOD); +#endif +#ifdef ID_PIOE + sysclk_enable_peripheral_clock(ID_PIOE); +#endif +#ifdef ID_PIOF + sysclk_enable_peripheral_clock(ID_PIOF); +#endif +} + +__always_inline static void arch_ioport_enable_port(ioport_port_t port, + ioport_port_mask_t mask) +{ + arch_ioport_port_to_base(port)->PIO_PER = mask; +} + +__always_inline static void arch_ioport_disable_port(ioport_port_t port, + ioport_port_mask_t mask) +{ + arch_ioport_port_to_base(port)->PIO_PDR = mask; +} + +__always_inline static void arch_ioport_enable_pin(ioport_pin_t pin) +{ + arch_ioport_enable_port(arch_ioport_pin_to_port_id(pin), + arch_ioport_pin_to_mask(pin)); +} + +__always_inline static void arch_ioport_disable_pin(ioport_pin_t pin) +{ + arch_ioport_disable_port(arch_ioport_pin_to_port_id(pin), + arch_ioport_pin_to_mask(pin)); +} + +__always_inline static void arch_ioport_set_port_mode(ioport_port_t port, + ioport_port_mask_t mask, ioport_mode_t mode) +{ + Pio *base = arch_ioport_port_to_base(port); + + if (mode & IOPORT_MODE_PULLUP) { + base->PIO_PUER = mask; + } else { + base->PIO_PUDR = mask; + } + +#if defined(IOPORT_MODE_PULLDOWN) + if (mode & IOPORT_MODE_PULLDOWN) { + base->PIO_PPDER = mask; + } else { + base->PIO_PPDDR = mask; + } +#endif + + if (mode & IOPORT_MODE_OPEN_DRAIN) { + base->PIO_MDER = mask; + } else { + base->PIO_MDDR = mask; + } + + if (mode & (IOPORT_MODE_GLITCH_FILTER | IOPORT_MODE_DEBOUNCE)) { + base->PIO_IFER = mask; + } else { + base->PIO_IFDR = mask; + } + + if (mode & IOPORT_MODE_DEBOUNCE) { +#if SAM3U || SAM3XA + base->PIO_DIFSR = mask; +#else + base->PIO_IFSCER = mask; +#endif + } else { +#if SAM3U || SAM3XA + base->PIO_SCIFSR = mask; +#else + base->PIO_IFSCDR = mask; +#endif + } + +#if !defined(IOPORT_MODE_MUX_BIT1) + if (mode & IOPORT_MODE_MUX_BIT0) { + base->PIO_ABSR |= mask; + } else { + base->PIO_ABSR &= ~mask; + } +#else + if (mode & IOPORT_MODE_MUX_BIT0) { + base->PIO_ABCDSR[0] |= mask; + } else { + base->PIO_ABCDSR[0] &= ~mask; + } + + if (mode & IOPORT_MODE_MUX_BIT1) { + base->PIO_ABCDSR[1] |= mask; + } else { + base->PIO_ABCDSR[1] &= ~mask; + } +#endif +} + +__always_inline static void arch_ioport_set_pin_mode(ioport_pin_t pin, + ioport_mode_t mode) +{ + arch_ioport_set_port_mode(arch_ioport_pin_to_port_id(pin), + arch_ioport_pin_to_mask(pin), mode); +} + +__always_inline static void arch_ioport_set_port_dir(ioport_port_t port, + ioport_port_mask_t mask, enum ioport_direction group_direction) +{ + Pio *base = arch_ioport_port_to_base(port); + + if (group_direction == IOPORT_DIR_OUTPUT) { + base->PIO_OER = mask; + } else if (group_direction == IOPORT_DIR_INPUT) { + base->PIO_ODR = mask; + } + + base->PIO_OWER = mask; +} + +__always_inline static void arch_ioport_set_pin_dir(ioport_pin_t pin, + enum ioport_direction dir) +{ + Pio *base = arch_ioport_pin_to_base(pin); + + if (dir == IOPORT_DIR_OUTPUT) { + base->PIO_OER = arch_ioport_pin_to_mask(pin); + } else if (dir == IOPORT_DIR_INPUT) { + base->PIO_ODR = arch_ioport_pin_to_mask(pin); + } + + base->PIO_OWER = arch_ioport_pin_to_mask(pin); +} + +__always_inline static void arch_ioport_set_pin_level(ioport_pin_t pin, + bool level) +{ + Pio *base = arch_ioport_pin_to_base(pin); + + if (level) { + base->PIO_SODR = arch_ioport_pin_to_mask(pin); + } else { + base->PIO_CODR = arch_ioport_pin_to_mask(pin); + } +} + +__always_inline static void arch_ioport_set_port_level(ioport_port_t port, + ioport_port_mask_t mask, ioport_port_mask_t level) +{ + Pio *base = arch_ioport_port_to_base(port); + + base->PIO_SODR = mask & level; + base->PIO_CODR = mask & ~level; +} + +__always_inline static bool arch_ioport_get_pin_level(ioport_pin_t pin) +{ + return arch_ioport_pin_to_base(pin)->PIO_PDSR & arch_ioport_pin_to_mask(pin); +} + +__always_inline static ioport_port_mask_t arch_ioport_get_port_level( + ioport_port_t port, ioport_port_mask_t mask) +{ + return arch_ioport_port_to_base(port)->PIO_PDSR & mask; +} + +__always_inline static void arch_ioport_toggle_pin_level(ioport_pin_t pin) +{ + Pio *port = arch_ioport_pin_to_base(pin); + ioport_port_mask_t mask = arch_ioport_pin_to_mask(pin); + + if (port->PIO_PDSR & arch_ioport_pin_to_mask(pin)) { + port->PIO_CODR = mask; + } else { + port->PIO_SODR = mask; + } +} + +__always_inline static void arch_ioport_toggle_port_level(ioport_port_t port, + ioport_port_mask_t mask) +{ + arch_ioport_port_to_base(port)->PIO_ODSR ^= mask; +} + +__always_inline static void arch_ioport_set_port_sense_mode(ioport_port_t port, + ioport_port_mask_t mask, enum ioport_sense pin_sense) +{ + Pio *base = arch_ioport_port_to_base(port); + /* AIMMR ELSR FRLHSR + * 0 X X IOPORT_SENSE_BOTHEDGES (Default) + * 1 0 0 IOPORT_SENSE_FALLING + * 1 0 1 IOPORT_SENSE_RISING + * 1 1 0 IOPORT_SENSE_LEVEL_LOW + * 1 1 1 IOPORT_SENSE_LEVEL_HIGH + */ + switch(pin_sense) { + case IOPORT_SENSE_LEVEL_LOW: + base->PIO_LSR = mask; + base->PIO_FELLSR = mask; + break; + case IOPORT_SENSE_LEVEL_HIGH: + base->PIO_LSR = mask; + base->PIO_REHLSR = mask; + break; + case IOPORT_SENSE_FALLING: + base->PIO_ESR = mask; + base->PIO_FELLSR = mask; + break; + case IOPORT_SENSE_RISING: + base->PIO_ESR = mask; + base->PIO_REHLSR = mask; + break; + default: + base->PIO_AIMDR = mask; + return; + } + base->PIO_AIMER = mask; +} + +__always_inline static void arch_ioport_set_pin_sense_mode(ioport_pin_t pin, + enum ioport_sense pin_sense) +{ + arch_ioport_set_port_sense_mode(arch_ioport_pin_to_port_id(pin), + arch_ioport_pin_to_mask(pin), pin_sense); +} + +#endif /* IOPORT_SAM_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt.h new file mode 100644 index 000000000..677487989 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt.h @@ -0,0 +1,139 @@ +/** + * \file + * + * \brief Global interrupt management for 8- and 32-bit AVR + * + * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ +#ifndef UTILS_INTERRUPT_H +#define UTILS_INTERRUPT_H + +#include + +#if XMEGA || MEGA || TINY +# include "interrupt/interrupt_avr8.h" +#elif UC3 +# include "interrupt/interrupt_avr32.h" +#elif SAM3S || SAM3N || SAM3XA || SAM3U || SAM4S || SAM4L || SAM4E || SAMD20 || SAM +# include "interrupt/interrupt_sam_nvic.h" +#else +# error Unsupported device. +#endif + +/** + * \defgroup interrupt_group Global interrupt management + * + * This is a driver for global enabling and disabling of interrupts. + * + * @{ + */ + +#if defined(__DOXYGEN__) +/** + * \def CONFIG_INTERRUPT_FORCE_INTC + * \brief Force usage of the ASF INTC driver + * + * Predefine this symbol when preprocessing to force the use of the ASF INTC driver. + * This is useful to ensure compatibility across compilers and shall be used only when required + * by the application needs. + */ +# define CONFIG_INTERRUPT_FORCE_INTC +#endif + +//! \name Global interrupt flags +//@{ +/** + * \typedef irqflags_t + * \brief Type used for holding state of interrupt flag + */ + +/** + * \def cpu_irq_enable + * \brief Enable interrupts globally + */ + +/** + * \def cpu_irq_disable + * \brief Disable interrupts globally + */ + +/** + * \fn irqflags_t cpu_irq_save(void) + * \brief Get and clear the global interrupt flags + * + * Use in conjunction with \ref cpu_irq_restore. + * + * \return Current state of interrupt flags. + * + * \note This function leaves interrupts disabled. + */ + +/** + * \fn void cpu_irq_restore(irqflags_t flags) + * \brief Restore global interrupt flags + * + * Use in conjunction with \ref cpu_irq_save. + * + * \param flags State to set interrupt flag to. + */ + +/** + * \fn bool cpu_irq_is_enabled_flags(irqflags_t flags) + * \brief Check if interrupts are globally enabled in supplied flags + * + * \param flags Currents state of interrupt flags. + * + * \return True if interrupts are enabled. + */ + +/** + * \def cpu_irq_is_enabled + * \brief Check if interrupts are globally enabled + * + * \return True if interrupts are enabled. + */ +//@} + +//! @} + +/** + * \ingroup interrupt_group + * \defgroup interrupt_deprecated_group Deprecated interrupt definitions + */ + +#endif /* UTILS_INTERRUPT_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c new file mode 100644 index 000000000..37dd08398 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c @@ -0,0 +1,83 @@ +/** + * \file + * + * \brief Global interrupt management for SAM D20, SAM3 and SAM4 (NVIC based) + * + * Copyright (c) 2012-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#include "interrupt_sam_nvic.h" + +#if !defined(__DOXYGEN__) +/* Deprecated - global flag to determine the global interrupt state. Required by + * QTouch library, however new applications should use cpu_irq_is_enabled() + * which probes the true global interrupt state from the CPU special registers. + */ +volatile bool g_interrupt_enabled = true; +#endif + +void cpu_irq_enter_critical(void) +{ + if (cpu_irq_critical_section_counter == 0) { + if (cpu_irq_is_enabled()) { + cpu_irq_disable(); + cpu_irq_prev_interrupt_state = true; + } else { + /* Make sure the to save the prev state as false */ + cpu_irq_prev_interrupt_state = false; + } + + } + + cpu_irq_critical_section_counter++; +} + +void cpu_irq_leave_critical(void) +{ + /* Check if the user is trying to leave a critical section when not in a critical section */ + Assert(cpu_irq_critical_section_counter > 0); + + cpu_irq_critical_section_counter--; + + /* Only enable global interrupts when the counter reaches 0 and the state of the global interrupt flag + was enabled when entering critical state */ + if ((cpu_irq_critical_section_counter == 0) && (cpu_irq_prev_interrupt_state)) { + cpu_irq_enable(); + } +} + diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h new file mode 100644 index 000000000..8dbe15e01 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h @@ -0,0 +1,178 @@ +/** + * \file + * + * \brief Global interrupt management for SAM D20, SAM3 and SAM4 (NVIC based) + * + * Copyright (c) 2012-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef UTILS_INTERRUPT_INTERRUPT_H +#define UTILS_INTERRUPT_INTERRUPT_H + +#include +#include + +/** + * \weakgroup interrupt_group + * + * @{ + */ + +/** + * \name Interrupt Service Routine definition + * + * @{ + */ + +/** + * \brief Define service routine + * + * \note For NVIC devices the interrupt service routines are predefined to + * add to vector table in binary generation, so there is no service + * register at run time. The routine collections are in exceptions.h. + * + * Usage: + * \code + * ISR(foo_irq_handler) + * { + * // Function definition + * ... + * } + * \endcode + * + * \param func Name for the function. + */ +# define ISR(func) \ + void func (void) + +/** + * \brief Initialize interrupt vectors + * + * For NVIC the interrupt vectors are put in vector table. So nothing + * to do to initialize them, except defined the vector function with + * right name. + * + * This must be called prior to \ref irq_register_handler. + */ +# define irq_initialize_vectors() \ + do { \ + } while(0) + +/** + * \brief Register handler for interrupt + * + * For NVIC the interrupt vectors are put in vector table. So nothing + * to do to register them, except defined the vector function with + * right name. + * + * Usage: + * \code + * irq_initialize_vectors(); + * irq_register_handler(foo_irq_handler); + * \endcode + * + * \note The function \a func must be defined with the \ref ISR macro. + * \note The functions prototypes can be found in the device exception header + * files (exceptions.h). + */ +# define irq_register_handler(int_num, int_prio) \ + NVIC_ClearPendingIRQ( (IRQn_Type)int_num); \ + NVIC_SetPriority( (IRQn_Type)int_num, int_prio); \ + NVIC_EnableIRQ( (IRQn_Type)int_num); \ + +//@} + +# define cpu_irq_enable() \ + do { \ + g_interrupt_enabled = true; \ + __DMB(); \ + __enable_irq(); \ + } while (0) +# define cpu_irq_disable() \ + do { \ + __disable_irq(); \ + __DMB(); \ + g_interrupt_enabled = false; \ + } while (0) + +typedef uint32_t irqflags_t; + +#if !defined(__DOXYGEN__) +extern volatile bool g_interrupt_enabled; +#endif + +#define cpu_irq_is_enabled() (__get_PRIMASK() == 0) + +static volatile uint32_t cpu_irq_critical_section_counter; +static volatile bool cpu_irq_prev_interrupt_state; + +static inline irqflags_t cpu_irq_save(void) +{ + irqflags_t flags = cpu_irq_is_enabled(); + cpu_irq_disable(); + return flags; +} + +static inline bool cpu_irq_is_enabled_flags(irqflags_t flags) +{ + return (flags); +} + +static inline void cpu_irq_restore(irqflags_t flags) +{ + if (cpu_irq_is_enabled_flags(flags)) + cpu_irq_enable(); +} + +void cpu_irq_enter_critical(void); +void cpu_irq_leave_critical(void); + +/** + * \weakgroup interrupt_deprecated_group + * @{ + */ + +#define Enable_global_interrupt() cpu_irq_enable() +#define Disable_global_interrupt() cpu_irq_disable() +#define Is_global_interrupt_enabled() cpu_irq_is_enabled() + +//@} + +//@} + +#endif /* UTILS_INTERRUPT_INTERRUPT_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/utils/parts.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/utils/parts.h new file mode 100644 index 000000000..4f063a553 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/common/utils/parts.h @@ -0,0 +1,949 @@ +/** + * \file + * + * \brief Atmel part identification macros + * + * Copyright (C) 2012-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef ATMEL_PARTS_H +#define ATMEL_PARTS_H + +/** + * \defgroup part_macros_group Atmel part identification macros + * + * This collection of macros identify which series and families that the various + * Atmel parts belong to. These can be used to select part-dependent sections of + * code at compile time. + * + * @{ + */ + +/** + * \name Convenience macros for part checking + * @{ + */ +/* ! Check GCC and IAR part definition for 8-bit AVR */ +#define AVR8_PART_IS_DEFINED(part) \ + (defined(__ ## part ## __) || defined(__AVR_ ## part ## __)) + +/* ! Check GCC and IAR part definition for 32-bit AVR */ +#define AVR32_PART_IS_DEFINED(part) \ + (defined(__AT32 ## part ## __) || defined(__AVR32_ ## part ## __)) + +/* ! Check GCC and IAR part definition for SAM */ +#define SAM_PART_IS_DEFINED(part) (defined(__ ## part ## __)) +/** @} */ + +/** + * \defgroup uc3_part_macros_group AVR UC3 parts + * @{ + */ + +/** + * \name AVR UC3 A series + * @{ + */ +#define UC3A0 ( \ + AVR32_PART_IS_DEFINED(UC3A0128) || \ + AVR32_PART_IS_DEFINED(UC3A0256) || \ + AVR32_PART_IS_DEFINED(UC3A0512) \ + ) + +#define UC3A1 ( \ + AVR32_PART_IS_DEFINED(UC3A1128) || \ + AVR32_PART_IS_DEFINED(UC3A1256) || \ + AVR32_PART_IS_DEFINED(UC3A1512) \ + ) + +#define UC3A3 ( \ + AVR32_PART_IS_DEFINED(UC3A364) || \ + AVR32_PART_IS_DEFINED(UC3A364S) || \ + AVR32_PART_IS_DEFINED(UC3A3128) || \ + AVR32_PART_IS_DEFINED(UC3A3128S) || \ + AVR32_PART_IS_DEFINED(UC3A3256) || \ + AVR32_PART_IS_DEFINED(UC3A3256S) \ + ) + +#define UC3A4 ( \ + AVR32_PART_IS_DEFINED(UC3A464) || \ + AVR32_PART_IS_DEFINED(UC3A464S) || \ + AVR32_PART_IS_DEFINED(UC3A4128) || \ + AVR32_PART_IS_DEFINED(UC3A4128S) || \ + AVR32_PART_IS_DEFINED(UC3A4256) || \ + AVR32_PART_IS_DEFINED(UC3A4256S) \ + ) +/** @} */ + +/** + * \name AVR UC3 B series + * @{ + */ +#define UC3B0 ( \ + AVR32_PART_IS_DEFINED(UC3B064) || \ + AVR32_PART_IS_DEFINED(UC3B0128) || \ + AVR32_PART_IS_DEFINED(UC3B0256) || \ + AVR32_PART_IS_DEFINED(UC3B0512) \ + ) + +#define UC3B1 ( \ + AVR32_PART_IS_DEFINED(UC3B164) || \ + AVR32_PART_IS_DEFINED(UC3B1128) || \ + AVR32_PART_IS_DEFINED(UC3B1256) || \ + AVR32_PART_IS_DEFINED(UC3B1512) \ + ) +/** @} */ + +/** + * \name AVR UC3 C series + * @{ + */ +#define UC3C0 ( \ + AVR32_PART_IS_DEFINED(UC3C064C) || \ + AVR32_PART_IS_DEFINED(UC3C0128C) || \ + AVR32_PART_IS_DEFINED(UC3C0256C) || \ + AVR32_PART_IS_DEFINED(UC3C0512C) \ + ) + +#define UC3C1 ( \ + AVR32_PART_IS_DEFINED(UC3C164C) || \ + AVR32_PART_IS_DEFINED(UC3C1128C) || \ + AVR32_PART_IS_DEFINED(UC3C1256C) || \ + AVR32_PART_IS_DEFINED(UC3C1512C) \ + ) + +#define UC3C2 ( \ + AVR32_PART_IS_DEFINED(UC3C264C) || \ + AVR32_PART_IS_DEFINED(UC3C2128C) || \ + AVR32_PART_IS_DEFINED(UC3C2256C) || \ + AVR32_PART_IS_DEFINED(UC3C2512C) \ + ) +/** @} */ + +/** + * \name AVR UC3 D series + * @{ + */ +#define UC3D3 ( \ + AVR32_PART_IS_DEFINED(UC64D3) || \ + AVR32_PART_IS_DEFINED(UC128D3) \ + ) + +#define UC3D4 ( \ + AVR32_PART_IS_DEFINED(UC64D4) || \ + AVR32_PART_IS_DEFINED(UC128D4) \ + ) +/** @} */ + +/** + * \name AVR UC3 L series + * @{ + */ +#define UC3L0 ( \ + AVR32_PART_IS_DEFINED(UC3L016) || \ + AVR32_PART_IS_DEFINED(UC3L032) || \ + AVR32_PART_IS_DEFINED(UC3L064) \ + ) + +#define UC3L0128 ( \ + AVR32_PART_IS_DEFINED(UC3L0128) \ + ) + +#define UC3L0256 ( \ + AVR32_PART_IS_DEFINED(UC3L0256) \ + ) + +#define UC3L3 ( \ + AVR32_PART_IS_DEFINED(UC64L3U) || \ + AVR32_PART_IS_DEFINED(UC128L3U) || \ + AVR32_PART_IS_DEFINED(UC256L3U) \ + ) + +#define UC3L4 ( \ + AVR32_PART_IS_DEFINED(UC64L4U) || \ + AVR32_PART_IS_DEFINED(UC128L4U) || \ + AVR32_PART_IS_DEFINED(UC256L4U) \ + ) + +#define UC3L3_L4 (UC3L3 || UC3L4) +/** @} */ + +/** + * \name AVR UC3 families + * @{ + */ +/** AVR UC3 A family */ +#define UC3A (UC3A0 || UC3A1 || UC3A3 || UC3A4) + +/** AVR UC3 B family */ +#define UC3B (UC3B0 || UC3B1) + +/** AVR UC3 C family */ +#define UC3C (UC3C0 || UC3C1 || UC3C2) + +/** AVR UC3 D family */ +#define UC3D (UC3D3 || UC3D4) + +/** AVR UC3 L family */ +#define UC3L (UC3L0 || UC3L0128 || UC3L0256 || UC3L3_L4) +/** @} */ + +/** AVR UC3 product line */ +#define UC3 (UC3A || UC3B || UC3C || UC3D || UC3L) + +/** @} */ + +/** + * \defgroup xmega_part_macros_group AVR XMEGA parts + * @{ + */ + +/** + * \name AVR XMEGA A series + * @{ + */ +#define XMEGA_A1 ( \ + AVR8_PART_IS_DEFINED(ATxmega64A1) || \ + AVR8_PART_IS_DEFINED(ATxmega128A1) \ + ) + +#define XMEGA_A3 ( \ + AVR8_PART_IS_DEFINED(ATxmega64A3) || \ + AVR8_PART_IS_DEFINED(ATxmega128A3) || \ + AVR8_PART_IS_DEFINED(ATxmega192A3) || \ + AVR8_PART_IS_DEFINED(ATxmega256A3) \ + ) + +#define XMEGA_A3B ( \ + AVR8_PART_IS_DEFINED(ATxmega256A3B) \ + ) + +#define XMEGA_A4 ( \ + AVR8_PART_IS_DEFINED(ATxmega16A4) || \ + AVR8_PART_IS_DEFINED(ATxmega32A4) \ + ) +/** @} */ + +/** + * \name AVR XMEGA AU series + * @{ + */ +#define XMEGA_A1U ( \ + AVR8_PART_IS_DEFINED(ATxmega64A1U) || \ + AVR8_PART_IS_DEFINED(ATxmega128A1U) \ + ) + +#define XMEGA_A3U ( \ + AVR8_PART_IS_DEFINED(ATxmega64A3U) || \ + AVR8_PART_IS_DEFINED(ATxmega128A3U) || \ + AVR8_PART_IS_DEFINED(ATxmega192A3U) || \ + AVR8_PART_IS_DEFINED(ATxmega256A3U) \ + ) + +#define XMEGA_A3BU ( \ + AVR8_PART_IS_DEFINED(ATxmega256A3BU) \ + ) + +#define XMEGA_A4U ( \ + AVR8_PART_IS_DEFINED(ATxmega16A4U) || \ + AVR8_PART_IS_DEFINED(ATxmega32A4U) || \ + AVR8_PART_IS_DEFINED(ATxmega64A4U) || \ + AVR8_PART_IS_DEFINED(ATxmega128A4U) \ + ) +/** @} */ + +/** + * \name AVR XMEGA B series + * @{ + */ +#define XMEGA_B1 ( \ + AVR8_PART_IS_DEFINED(ATxmega64B1) || \ + AVR8_PART_IS_DEFINED(ATxmega128B1) \ + ) + +#define XMEGA_B3 ( \ + AVR8_PART_IS_DEFINED(ATxmega64B3) || \ + AVR8_PART_IS_DEFINED(ATxmega128B3) \ + ) +/** @} */ + +/** + * \name AVR XMEGA C series + * @{ + */ +#define XMEGA_C3 ( \ + AVR8_PART_IS_DEFINED(ATxmega384C3) || \ + AVR8_PART_IS_DEFINED(ATxmega256C3) || \ + AVR8_PART_IS_DEFINED(ATxmega192C3) || \ + AVR8_PART_IS_DEFINED(ATxmega128C3) || \ + AVR8_PART_IS_DEFINED(ATxmega64C3) \ + ) + +#define XMEGA_C4 ( \ + AVR8_PART_IS_DEFINED(ATxmega32C4) || \ + AVR8_PART_IS_DEFINED(ATxmega16C4) \ + ) +/** @} */ + +/** + * \name AVR XMEGA D series + * @{ + */ +#define XMEGA_D3 ( \ + AVR8_PART_IS_DEFINED(ATxmega64D3) || \ + AVR8_PART_IS_DEFINED(ATxmega128D3) || \ + AVR8_PART_IS_DEFINED(ATxmega192D3) || \ + AVR8_PART_IS_DEFINED(ATxmega256D3) || \ + AVR8_PART_IS_DEFINED(ATxmega384D3) \ + ) + +#define XMEGA_D4 ( \ + AVR8_PART_IS_DEFINED(ATxmega16D4) || \ + AVR8_PART_IS_DEFINED(ATxmega32D4) || \ + AVR8_PART_IS_DEFINED(ATxmega64D4) || \ + AVR8_PART_IS_DEFINED(ATxmega128D4) \ + ) +/** @} */ + +/** + * \name AVR XMEGA E series + * @{ + */ +#define XMEGA_E5 ( \ + AVR8_PART_IS_DEFINED(ATxmega8E5) || \ + AVR8_PART_IS_DEFINED(ATxmega16E5) || \ + AVR8_PART_IS_DEFINED(ATxmega32E5) \ + ) +/** @} */ + + +/** + * \name AVR XMEGA families + * @{ + */ +/** AVR XMEGA A family */ +#define XMEGA_A (XMEGA_A1 || XMEGA_A3 || XMEGA_A3B || XMEGA_A4) + +/** AVR XMEGA AU family */ +#define XMEGA_AU (XMEGA_A1U || XMEGA_A3U || XMEGA_A3BU || XMEGA_A4U) + +/** AVR XMEGA B family */ +#define XMEGA_B (XMEGA_B1 || XMEGA_B3) + +/** AVR XMEGA C family */ +#define XMEGA_C (XMEGA_C3 || XMEGA_C4) + +/** AVR XMEGA D family */ +#define XMEGA_D (XMEGA_D3 || XMEGA_D4) + +/** AVR XMEGA E family */ +#define XMEGA_E (XMEGA_E5) +/** @} */ + + +/** AVR XMEGA product line */ +#define XMEGA (XMEGA_A || XMEGA_AU || XMEGA_B || XMEGA_C || XMEGA_D || XMEGA_E) + +/** @} */ + +/** + * \defgroup mega_part_macros_group megaAVR parts + * + * \note These megaAVR groupings are based on the groups in AVR Libc for the + * part header files. They are not names of official megaAVR device series or + * families. + * + * @{ + */ + +/** + * \name ATmegaxx0/xx1 subgroups + * @{ + */ +#define MEGA_XX0 ( \ + AVR8_PART_IS_DEFINED(ATmega640) || \ + AVR8_PART_IS_DEFINED(ATmega1280) || \ + AVR8_PART_IS_DEFINED(ATmega2560) \ + ) + +#define MEGA_XX1 ( \ + AVR8_PART_IS_DEFINED(ATmega1281) || \ + AVR8_PART_IS_DEFINED(ATmega2561) \ + ) +/** @} */ + +/** + * \name megaAVR groups + * @{ + */ +/** ATmegaxx0/xx1 group */ +#define MEGA_XX0_1 (MEGA_XX0 || MEGA_XX1) + +/** ATmegaxx4 group */ +#define MEGA_XX4 ( \ + AVR8_PART_IS_DEFINED(ATmega164A) || \ + AVR8_PART_IS_DEFINED(ATmega164PA) || \ + AVR8_PART_IS_DEFINED(ATmega324A) || \ + AVR8_PART_IS_DEFINED(ATmega324PA) || \ + AVR8_PART_IS_DEFINED(ATmega644) || \ + AVR8_PART_IS_DEFINED(ATmega644A) || \ + AVR8_PART_IS_DEFINED(ATmega644PA) || \ + AVR8_PART_IS_DEFINED(ATmega1284P) || \ + AVR8_PART_IS_DEFINED(ATmega128RFA1) \ + ) + +/** ATmegaxx4 group */ +#define MEGA_XX4_A ( \ + AVR8_PART_IS_DEFINED(ATmega164A) || \ + AVR8_PART_IS_DEFINED(ATmega164PA) || \ + AVR8_PART_IS_DEFINED(ATmega324A) || \ + AVR8_PART_IS_DEFINED(ATmega324PA) || \ + AVR8_PART_IS_DEFINED(ATmega644A) || \ + AVR8_PART_IS_DEFINED(ATmega644PA) || \ + AVR8_PART_IS_DEFINED(ATmega1284P) \ + ) + +/** ATmegaxx8 group */ +#define MEGA_XX8 ( \ + AVR8_PART_IS_DEFINED(ATmega48) || \ + AVR8_PART_IS_DEFINED(ATmega48A) || \ + AVR8_PART_IS_DEFINED(ATmega48PA) || \ + AVR8_PART_IS_DEFINED(ATmega88) || \ + AVR8_PART_IS_DEFINED(ATmega88A) || \ + AVR8_PART_IS_DEFINED(ATmega88PA) || \ + AVR8_PART_IS_DEFINED(ATmega168) || \ + AVR8_PART_IS_DEFINED(ATmega168A) || \ + AVR8_PART_IS_DEFINED(ATmega168PA) || \ + AVR8_PART_IS_DEFINED(ATmega328) || \ + AVR8_PART_IS_DEFINED(ATmega328P) \ + ) + +/** ATmegaxx8A/P/PA group */ +#define MEGA_XX8_A ( \ + AVR8_PART_IS_DEFINED(ATmega48A) || \ + AVR8_PART_IS_DEFINED(ATmega48PA) || \ + AVR8_PART_IS_DEFINED(ATmega88A) || \ + AVR8_PART_IS_DEFINED(ATmega88PA) || \ + AVR8_PART_IS_DEFINED(ATmega168A) || \ + AVR8_PART_IS_DEFINED(ATmega168PA) || \ + AVR8_PART_IS_DEFINED(ATmega328P) \ + ) + +/** ATmegaxx group */ +#define MEGA_XX ( \ + AVR8_PART_IS_DEFINED(ATmega16) || \ + AVR8_PART_IS_DEFINED(ATmega16A) || \ + AVR8_PART_IS_DEFINED(ATmega32) || \ + AVR8_PART_IS_DEFINED(ATmega32A) || \ + AVR8_PART_IS_DEFINED(ATmega64) || \ + AVR8_PART_IS_DEFINED(ATmega64A) || \ + AVR8_PART_IS_DEFINED(ATmega128) || \ + AVR8_PART_IS_DEFINED(ATmega128A) \ + ) + +/** ATmegaxxA/P/PA group */ +#define MEGA_XX_A ( \ + AVR8_PART_IS_DEFINED(ATmega16A) || \ + AVR8_PART_IS_DEFINED(ATmega32A) || \ + AVR8_PART_IS_DEFINED(ATmega64A) || \ + AVR8_PART_IS_DEFINED(ATmega128A) \ + ) +/** ATmegaxxRFA1 group */ +#define MEGA_RFA1 ( \ + AVR8_PART_IS_DEFINED(ATmega128RFA1) \ + ) + +/** ATmegaxxRFR2 group */ +#define MEGA_RFR2 ( \ + AVR8_PART_IS_DEFINED(ATmega64RFR2) || \ + AVR8_PART_IS_DEFINED(ATmega128RFR2) || \ + AVR8_PART_IS_DEFINED(ATmega256RFR2) \ + ) + + +/** ATmegaxxRFxx group */ +#define MEGA_RF (MEGA_RFA1 || MEGA_RFR2) + +/** + * \name ATmegaxx_un0/un1/un2 subgroups + * @{ + */ +#define MEGA_XX_UN0 ( \ + AVR8_PART_IS_DEFINED(ATmega16) || \ + AVR8_PART_IS_DEFINED(ATmega16A) || \ + AVR8_PART_IS_DEFINED(ATmega32) || \ + AVR8_PART_IS_DEFINED(ATmega32A) \ + ) + +/** ATmegaxx group without power reduction and + * And interrupt sense register. + */ +#define MEGA_XX_UN1 ( \ + AVR8_PART_IS_DEFINED(ATmega64) || \ + AVR8_PART_IS_DEFINED(ATmega64A) || \ + AVR8_PART_IS_DEFINED(ATmega128) || \ + AVR8_PART_IS_DEFINED(ATmega128A) \ + ) + +/** ATmegaxx group without power reduction and + * And interrupt sense register. + */ +#define MEGA_XX_UN2 ( \ + AVR8_PART_IS_DEFINED(ATmega169P) || \ + AVR8_PART_IS_DEFINED(ATmega169PA) || \ + AVR8_PART_IS_DEFINED(ATmega329P) || \ + AVR8_PART_IS_DEFINED(ATmega329PA) \ + ) + +/** Devices added to complete megaAVR offering. + * Please do not use this group symbol as it is not intended + * to be permanent: the devices should be regrouped. + */ +#define MEGA_UNCATEGORIZED ( \ + AVR8_PART_IS_DEFINED(AT90CAN128) || \ + AVR8_PART_IS_DEFINED(AT90CAN32) || \ + AVR8_PART_IS_DEFINED(AT90CAN64) || \ + AVR8_PART_IS_DEFINED(AT90PWM1) || \ + AVR8_PART_IS_DEFINED(AT90PWM216) || \ + AVR8_PART_IS_DEFINED(AT90PWM2B) || \ + AVR8_PART_IS_DEFINED(AT90PWM316) || \ + AVR8_PART_IS_DEFINED(AT90PWM3B) || \ + AVR8_PART_IS_DEFINED(AT90PWM81) || \ + AVR8_PART_IS_DEFINED(AT90USB1286) || \ + AVR8_PART_IS_DEFINED(AT90USB1287) || \ + AVR8_PART_IS_DEFINED(AT90USB162) || \ + AVR8_PART_IS_DEFINED(AT90USB646) || \ + AVR8_PART_IS_DEFINED(AT90USB647) || \ + AVR8_PART_IS_DEFINED(AT90USB82) || \ + AVR8_PART_IS_DEFINED(ATmega1284) || \ + AVR8_PART_IS_DEFINED(ATmega162) || \ + AVR8_PART_IS_DEFINED(ATmega164P) || \ + AVR8_PART_IS_DEFINED(ATmega165A) || \ + AVR8_PART_IS_DEFINED(ATmega165P) || \ + AVR8_PART_IS_DEFINED(ATmega165PA) || \ + AVR8_PART_IS_DEFINED(ATmega168P) || \ + AVR8_PART_IS_DEFINED(ATmega169A) || \ + AVR8_PART_IS_DEFINED(ATmega16M1) || \ + AVR8_PART_IS_DEFINED(ATmega16U2) || \ + AVR8_PART_IS_DEFINED(ATmega16U4) || \ + AVR8_PART_IS_DEFINED(ATmega2564RFR2) || \ + AVR8_PART_IS_DEFINED(ATmega256RFA2) || \ + AVR8_PART_IS_DEFINED(ATmega324P) || \ + AVR8_PART_IS_DEFINED(ATmega325) || \ + AVR8_PART_IS_DEFINED(ATmega3250) || \ + AVR8_PART_IS_DEFINED(ATmega3250A) || \ + AVR8_PART_IS_DEFINED(ATmega3250P) || \ + AVR8_PART_IS_DEFINED(ATmega3250PA) || \ + AVR8_PART_IS_DEFINED(ATmega325A) || \ + AVR8_PART_IS_DEFINED(ATmega325P) || \ + AVR8_PART_IS_DEFINED(ATmega325PA) || \ + AVR8_PART_IS_DEFINED(ATmega329) || \ + AVR8_PART_IS_DEFINED(ATmega3290) || \ + AVR8_PART_IS_DEFINED(ATmega3290A) || \ + AVR8_PART_IS_DEFINED(ATmega3290P) || \ + AVR8_PART_IS_DEFINED(ATmega3290PA) || \ + AVR8_PART_IS_DEFINED(ATmega329A) || \ + AVR8_PART_IS_DEFINED(ATmega32M1) || \ + AVR8_PART_IS_DEFINED(ATmega32U2) || \ + AVR8_PART_IS_DEFINED(ATmega32U4) || \ + AVR8_PART_IS_DEFINED(ATmega48P) || \ + AVR8_PART_IS_DEFINED(ATmega644P) || \ + AVR8_PART_IS_DEFINED(ATmega645) || \ + AVR8_PART_IS_DEFINED(ATmega6450) || \ + AVR8_PART_IS_DEFINED(ATmega6450A) || \ + AVR8_PART_IS_DEFINED(ATmega6450P) || \ + AVR8_PART_IS_DEFINED(ATmega645A) || \ + AVR8_PART_IS_DEFINED(ATmega645P) || \ + AVR8_PART_IS_DEFINED(ATmega649) || \ + AVR8_PART_IS_DEFINED(ATmega6490) || \ + AVR8_PART_IS_DEFINED(ATmega6490A) || \ + AVR8_PART_IS_DEFINED(ATmega6490P) || \ + AVR8_PART_IS_DEFINED(ATmega649A) || \ + AVR8_PART_IS_DEFINED(ATmega649P) || \ + AVR8_PART_IS_DEFINED(ATmega64M1) || \ + AVR8_PART_IS_DEFINED(ATmega64RFA2) || \ + AVR8_PART_IS_DEFINED(ATmega8) || \ + AVR8_PART_IS_DEFINED(ATmega8515) || \ + AVR8_PART_IS_DEFINED(ATmega8535) || \ + AVR8_PART_IS_DEFINED(ATmega88P) || \ + AVR8_PART_IS_DEFINED(ATmega8A) || \ + AVR8_PART_IS_DEFINED(ATmega8U2) \ + ) + +/** Unspecified group */ +#define MEGA_UNSPECIFIED (MEGA_XX_UN0 || MEGA_XX_UN1 || MEGA_XX_UN2 || \ + MEGA_UNCATEGORIZED) + +/** @} */ + +/** megaAVR product line */ +#define MEGA (MEGA_XX0_1 || MEGA_XX4 || MEGA_XX8 || MEGA_XX || MEGA_RF || \ + MEGA_UNSPECIFIED) + +/** @} */ + +/** + * \defgroup tiny_part_macros_group tinyAVR parts + * + * @{ + */ + +/** + * \name tinyAVR groups + * @{ + */ + +/** Devices added to complete tinyAVR offering. + * Please do not use this group symbol as it is not intended + * to be permanent: the devices should be regrouped. + */ +#define TINY_UNCATEGORIZED ( \ + AVR8_PART_IS_DEFINED(ATtiny10) || \ + AVR8_PART_IS_DEFINED(ATtiny13) || \ + AVR8_PART_IS_DEFINED(ATtiny13A) || \ + AVR8_PART_IS_DEFINED(ATtiny1634) || \ + AVR8_PART_IS_DEFINED(ATtiny167) || \ + AVR8_PART_IS_DEFINED(ATtiny20) || \ + AVR8_PART_IS_DEFINED(ATtiny2313) || \ + AVR8_PART_IS_DEFINED(ATtiny2313A) || \ + AVR8_PART_IS_DEFINED(ATtiny24) || \ + AVR8_PART_IS_DEFINED(ATtiny24A) || \ + AVR8_PART_IS_DEFINED(ATtiny25) || \ + AVR8_PART_IS_DEFINED(ATtiny26) || \ + AVR8_PART_IS_DEFINED(ATtiny261) || \ + AVR8_PART_IS_DEFINED(ATtiny261A) || \ + AVR8_PART_IS_DEFINED(ATtiny4) || \ + AVR8_PART_IS_DEFINED(ATtiny40) || \ + AVR8_PART_IS_DEFINED(ATtiny4313) || \ + AVR8_PART_IS_DEFINED(ATtiny43U) || \ + AVR8_PART_IS_DEFINED(ATtiny44) || \ + AVR8_PART_IS_DEFINED(ATtiny44A) || \ + AVR8_PART_IS_DEFINED(ATtiny45) || \ + AVR8_PART_IS_DEFINED(ATtiny461) || \ + AVR8_PART_IS_DEFINED(ATtiny461A) || \ + AVR8_PART_IS_DEFINED(ATtiny48) || \ + AVR8_PART_IS_DEFINED(ATtiny5) || \ + AVR8_PART_IS_DEFINED(ATtiny828) || \ + AVR8_PART_IS_DEFINED(ATtiny84) || \ + AVR8_PART_IS_DEFINED(ATtiny84A) || \ + AVR8_PART_IS_DEFINED(ATtiny85) || \ + AVR8_PART_IS_DEFINED(ATtiny861) || \ + AVR8_PART_IS_DEFINED(ATtiny861A) || \ + AVR8_PART_IS_DEFINED(ATtiny87) || \ + AVR8_PART_IS_DEFINED(ATtiny88) || \ + AVR8_PART_IS_DEFINED(ATtiny9) \ + ) + +/** @} */ + +/** tinyAVR product line */ +#define TINY (TINY_UNCATEGORIZED) + +/** @} */ + +/** + * \defgroup sam_part_macros_group SAM parts + * @{ + */ + +/** + * \name SAM3S series + * @{ + */ +#define SAM3S1 ( \ + SAM_PART_IS_DEFINED(SAM3S1A) || \ + SAM_PART_IS_DEFINED(SAM3S1B) || \ + SAM_PART_IS_DEFINED(SAM3S1C) \ + ) + +#define SAM3S2 ( \ + SAM_PART_IS_DEFINED(SAM3S2A) || \ + SAM_PART_IS_DEFINED(SAM3S2B) || \ + SAM_PART_IS_DEFINED(SAM3S2C) \ + ) + +#define SAM3S4 ( \ + SAM_PART_IS_DEFINED(SAM3S4A) || \ + SAM_PART_IS_DEFINED(SAM3S4B) || \ + SAM_PART_IS_DEFINED(SAM3S4C) \ + ) + +#define SAM3S8 ( \ + SAM_PART_IS_DEFINED(SAM3S8B) || \ + SAM_PART_IS_DEFINED(SAM3S8C) \ + ) + +#define SAM3SD8 ( \ + SAM_PART_IS_DEFINED(SAM3SD8B) || \ + SAM_PART_IS_DEFINED(SAM3SD8C) \ + ) +/** @} */ + +/** + * \name SAM3U series + * @{ + */ +#define SAM3U1 ( \ + SAM_PART_IS_DEFINED(SAM3U1C) || \ + SAM_PART_IS_DEFINED(SAM3U1E) \ + ) + +#define SAM3U2 ( \ + SAM_PART_IS_DEFINED(SAM3U2C) || \ + SAM_PART_IS_DEFINED(SAM3U2E) \ + ) + +#define SAM3U4 ( \ + SAM_PART_IS_DEFINED(SAM3U4C) || \ + SAM_PART_IS_DEFINED(SAM3U4E) \ + ) +/** @} */ + +/** + * \name SAM3N series + * @{ + */ +#define SAM3N1 ( \ + SAM_PART_IS_DEFINED(SAM3N1A) || \ + SAM_PART_IS_DEFINED(SAM3N1B) || \ + SAM_PART_IS_DEFINED(SAM3N1C) \ + ) + +#define SAM3N2 ( \ + SAM_PART_IS_DEFINED(SAM3N2A) || \ + SAM_PART_IS_DEFINED(SAM3N2B) || \ + SAM_PART_IS_DEFINED(SAM3N2C) \ + ) + +#define SAM3N4 ( \ + SAM_PART_IS_DEFINED(SAM3N4A) || \ + SAM_PART_IS_DEFINED(SAM3N4B) || \ + SAM_PART_IS_DEFINED(SAM3N4C) \ + ) +/** @} */ + +/** + * \name SAM3X series + * @{ + */ +#define SAM3X4 ( \ + SAM_PART_IS_DEFINED(SAM3X4C) || \ + SAM_PART_IS_DEFINED(SAM3X4E) \ + ) + +#define SAM3X8 ( \ + SAM_PART_IS_DEFINED(SAM3X8C) || \ + SAM_PART_IS_DEFINED(SAM3X8E) || \ + SAM_PART_IS_DEFINED(SAM3X8H) \ + ) +/** @} */ + +/** + * \name SAM3A series + * @{ + */ +#define SAM3A4 ( \ + SAM_PART_IS_DEFINED(SAM3A4C) \ + ) + +#define SAM3A8 ( \ + SAM_PART_IS_DEFINED(SAM3A8C) \ + ) +/** @} */ + +/** + * \name SAM4S series + * @{ + */ +#define SAM4S8 ( \ + SAM_PART_IS_DEFINED(SAM4S8B) || \ + SAM_PART_IS_DEFINED(SAM4S8C) \ + ) + +#define SAM4S16 ( \ + SAM_PART_IS_DEFINED(SAM4S16B) || \ + SAM_PART_IS_DEFINED(SAM4S16C) \ + ) + +#define SAM4SA16 ( \ + SAM_PART_IS_DEFINED(SAM4SA16B) || \ + SAM_PART_IS_DEFINED(SAM4SA16C) \ + ) + +#define SAM4SD16 ( \ + SAM_PART_IS_DEFINED(SAM4SD16B) || \ + SAM_PART_IS_DEFINED(SAM4SD16C) \ + ) + +#define SAM4SD32 ( \ + SAM_PART_IS_DEFINED(SAM4SD32B) || \ + SAM_PART_IS_DEFINED(SAM4SD32C) \ + ) +/** @} */ + +/** + * \name SAM4L series + * @{ + */ +#define SAM4LS ( \ + SAM_PART_IS_DEFINED(SAM4LS2A) || \ + SAM_PART_IS_DEFINED(SAM4LS2B) || \ + SAM_PART_IS_DEFINED(SAM4LS2C) || \ + SAM_PART_IS_DEFINED(SAM4LS4A) || \ + SAM_PART_IS_DEFINED(SAM4LS4B) || \ + SAM_PART_IS_DEFINED(SAM4LS4C) || \ + SAM_PART_IS_DEFINED(SAM4LS8A) || \ + SAM_PART_IS_DEFINED(SAM4LS8B) || \ + SAM_PART_IS_DEFINED(SAM4LS8C) \ + ) + +#define SAM4LC ( \ + SAM_PART_IS_DEFINED(SAM4LC2A) || \ + SAM_PART_IS_DEFINED(SAM4LC2B) || \ + SAM_PART_IS_DEFINED(SAM4LC2C) || \ + SAM_PART_IS_DEFINED(SAM4LC4A) || \ + SAM_PART_IS_DEFINED(SAM4LC4B) || \ + SAM_PART_IS_DEFINED(SAM4LC4C) || \ + SAM_PART_IS_DEFINED(SAM4LC8A) || \ + SAM_PART_IS_DEFINED(SAM4LC8B) || \ + SAM_PART_IS_DEFINED(SAM4LC8C) \ + ) +/** @} */ + +/** + * \name SAMD20 series + * @{ + */ +#define SAMD20J ( \ + SAM_PART_IS_DEFINED(SAMD20J14) || \ + SAM_PART_IS_DEFINED(SAMD20J15) || \ + SAM_PART_IS_DEFINED(SAMD20J16) || \ + SAM_PART_IS_DEFINED(SAMD20J17) || \ + SAM_PART_IS_DEFINED(SAMD20J18) \ + ) + +#define SAMD20G ( \ + SAM_PART_IS_DEFINED(SAMD20G14) || \ + SAM_PART_IS_DEFINED(SAMD20G15) || \ + SAM_PART_IS_DEFINED(SAMD20G16) || \ + SAM_PART_IS_DEFINED(SAMD20G17) || \ + SAM_PART_IS_DEFINED(SAMD20G18) \ + ) + +#define SAMD20E ( \ + SAM_PART_IS_DEFINED(SAMD20E14) || \ + SAM_PART_IS_DEFINED(SAMD20E15) || \ + SAM_PART_IS_DEFINED(SAMD20E16) || \ + SAM_PART_IS_DEFINED(SAMD20E17) || \ + SAM_PART_IS_DEFINED(SAMD20E18) \ + ) +/** @} */ + +/** + * \name SAM4E series + * @{ + */ +#define SAM4E8 ( \ + SAM_PART_IS_DEFINED(SAM4E8E) \ + ) + +#define SAM4E16 ( \ + SAM_PART_IS_DEFINED(SAM4E16E) \ + ) +/** @} */ + +/** + * \name SAM4N series + * @{ + */ +#define SAM4N8 ( \ + SAM_PART_IS_DEFINED(SAM4N8A) || \ + SAM_PART_IS_DEFINED(SAM4N8B) || \ + SAM_PART_IS_DEFINED(SAM4N8C) \ + ) + +#define SAM4N16 ( \ + SAM_PART_IS_DEFINED(SAM4N16B) || \ + SAM_PART_IS_DEFINED(SAM4N16C) \ + ) +/** @} */ + +/** + * \name SAM families + * @{ + */ +/** SAM3S Family */ +#define SAM3S (SAM3S1 || SAM3S2 || SAM3S4 || SAM3S8 || SAM3SD8) + +/** SAM3U Family */ +#define SAM3U (SAM3U1 || SAM3U2 || SAM3U4) + +/** SAM3N Family */ +#define SAM3N (SAM3N1 || SAM3N2 || SAM3N4) + +/** SAM3XA Family */ +#define SAM3XA (SAM3X4 || SAM3X8 || SAM3A4 || SAM3A8) + +/** SAM4S Family */ +#define SAM4S (SAM4S8 || SAM4S16 || SAM4SA16 || SAM4SD16 || SAM4SD32) + +/** SAM4L Family */ +#define SAM4L (SAM4LS || SAM4LC) + +/** SAMD20 Family */ +#define SAMD20 (SAMD20J || SAMD20G || SAMD20E) +/** @} */ + +/** SAM4E Family */ +#define SAM4E (SAM4E8 || SAM4E16) + +/** SAM4N Family */ +#define SAM4N (SAM4N8 || SAM4N16) + +/** @} */ + +/** SAM product line */ +#define SAM (SAM3S || SAM3U || SAM3N || SAM3XA || SAM4S || SAM4L || SAM4E || SAMD20 || SAM4N) + +/** @} */ + +/** @} */ + +/** @} */ + +#endif /* ATMEL_PARTS_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/init.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/init.c new file mode 100644 index 000000000..f6dff4635 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/init.c @@ -0,0 +1,370 @@ +/** + * \file + * + * \brief SAM4E-EK board init. + * + * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#include "compiler.h" +#include "board.h" +#include "conf_board.h" +#include "ioport.h" + +/** + * \brief Set peripheral mode for IOPORT pins. + * It will configure port mode and disable pin mode (but enable peripheral). + * \param port IOPORT port to configure + * \param masks IOPORT pin masks to configure + * \param mode Mode masks to configure for the specified pin (\ref ioport_modes) + */ +#define ioport_set_port_peripheral_mode(port, masks, mode) \ + do {\ + ioport_set_port_mode(port, masks, mode);\ + ioport_disable_port(port, masks);\ + } while (0) + +/** + * \brief Set peripheral mode for one single IOPORT pin. + * It will configure port mode and disable pin mode (but enable peripheral). + * \param pin IOPORT pin to configure + * \param mode Mode masks to configure for the specified pin (\ref ioport_modes) + */ +#define ioport_set_pin_peripheral_mode(pin, mode) \ + do {\ + ioport_set_pin_mode(pin, mode);\ + ioport_disable_pin(pin);\ + } while (0) + +/** + * \brief Set input mode for one single IOPORT pin. + * It will configure port mode and disable pin mode (but enable peripheral). + * \param pin IOPORT pin to configure + * \param mode Mode masks to configure for the specified pin (\ref ioport_modes) + * \param sense Sense for interrupt detection (\ref ioport_sense) + */ +#define ioport_set_pin_input_mode(pin, mode, sense) \ + do {\ + ioport_set_pin_dir(pin, IOPORT_DIR_INPUT);\ + ioport_set_pin_mode(pin, mode);\ + ioport_set_pin_sense_mode(pin, sense);\ + } while (0) + +void board_init(void) +{ +#ifndef CONF_BOARD_KEEP_WATCHDOG_AT_INIT + /* Disable the watchdog */ + WDT->WDT_MR = WDT_MR_WDDIS; +#endif + + /* Initialize IOPORTs */ + ioport_init(); + + /* Configure the pins connected to LEDs as output and set their + * default initial state to high (LEDs off). + */ + ioport_set_pin_dir(LED0_GPIO, IOPORT_DIR_OUTPUT); + ioport_set_pin_level(LED0_GPIO, LED0_INACTIVE_LEVEL); + ioport_set_pin_dir(LED1_GPIO, IOPORT_DIR_OUTPUT); + ioport_set_pin_level(LED1_GPIO, LED0_INACTIVE_LEVEL); + ioport_set_pin_dir(LED2_GPIO, IOPORT_DIR_OUTPUT); + ioport_set_pin_level(LED2_GPIO, LED0_INACTIVE_LEVEL); + + /* Configure Push Button pins */ + ioport_set_pin_input_mode(GPIO_PUSH_BUTTON_1, GPIO_PUSH_BUTTON_1_FLAGS, + GPIO_PUSH_BUTTON_1_SENSE); + ioport_set_pin_input_mode(GPIO_PUSH_BUTTON_2, GPIO_PUSH_BUTTON_2_FLAGS, + GPIO_PUSH_BUTTON_2_SENSE); + ioport_set_pin_input_mode(GPIO_PUSH_BUTTON_3, GPIO_PUSH_BUTTON_3_FLAGS, + GPIO_PUSH_BUTTON_3_SENSE); + ioport_set_pin_input_mode(GPIO_PUSH_BUTTON_4, GPIO_PUSH_BUTTON_4_FLAGS, + GPIO_PUSH_BUTTON_4_SENSE); + +#ifdef CONF_BOARD_UART_CONSOLE + /* Configure UART pins */ + ioport_set_port_peripheral_mode(PINS_UART0_PORT, PINS_UART0, + PINS_UART0_MASK); +#endif + +#ifdef CONF_BOARD_PWM_LED0 + /* Configure PWM LED0 pin */ + ioport_set_pin_peripheral_mode(PIN_PWM_LED0_GPIO, PIN_PWM_LED0_FLAGS); +#endif + +#ifdef CONF_BOARD_PWM_LED1 + /* Configure PWM LED1 pin */ + ioport_set_pin_peripheral_mode(PIN_PWM_LED1_GPIO, PIN_PWM_LED1_FLAGS); +#endif + +#ifdef CONF_BOARD_PWM_LED2 + /* Configure PWM LED2 pin */ + ioport_set_pin_peripheral_mode(PIN_PWM_LED2_GPIO, PIN_PWM_LED2_FLAGS); +#endif + +#ifdef CONF_BOARD_PWM_LED3 + /* Configure PWM LED3 pin */ + ioport_set_pin_peripheral_mode(PIN_PWM_LED3_GPIO, PIN_PWM_LED3_FLAGS); +#endif + +#ifdef CONF_BOARD_USART_RXD + /* Configure USART RXD pin */ + ioport_set_pin_peripheral_mode(PIN_USART1_RXD_IDX, + PIN_USART1_RXD_FLAGS); +#endif + +#ifdef CONF_BOARD_USART_TXD + /* Configure USART TXD pin */ + ioport_set_pin_peripheral_mode(PIN_USART1_TXD_IDX, + PIN_USART1_TXD_FLAGS); +#endif + +#ifdef CONF_BOARD_USART_CTS + /* Configure USART CTS pin */ + ioport_set_pin_peripheral_mode(PIN_USART1_CTS_IDX, + PIN_USART1_CTS_FLAGS); +#endif + +#ifdef CONF_BOARD_USART_RTS + /* Configure USART RTS pin */ + ioport_set_pin_peripheral_mode(PIN_USART1_RTS_IDX, + PIN_USART1_RTS_FLAGS); +#endif + +#ifdef CONF_BOARD_USART_SCK + /* Configure USART synchronous communication SCK pin */ + ioport_set_pin_peripheral_mode(PIN_USART1_SCK_IDX, + PIN_USART1_SCK_FLAGS); +#endif + +#ifdef CONF_BOARD_ADM3312_EN + /* Configure ADM3312 enable pin */ + ioport_set_pin_dir(PIN_USART1_EN_IDX, IOPORT_DIR_OUTPUT); +#ifdef CONF_BOARD_ADM3312_EN_DISABLE_AT_INIT + ioport_set_pin_level(PIN_USART1_EN_IDX, PIN_USART1_EN_INACTIVE_LEVEL); +#else + ioport_set_pin_level(PIN_USART1_EN_IDX, PIN_USART1_EN_ACTIVE_LEVEL); +#endif +#endif + +#ifdef CONF_BOARD_ADS7843 + /* Configure Touchscreen SPI pins */ + ioport_set_pin_dir(BOARD_ADS7843_IRQ_GPIO, IOPORT_DIR_INPUT); + ioport_set_pin_mode(BOARD_ADS7843_IRQ_GPIO, BOARD_ADS7843_IRQ_FLAGS); + ioport_set_pin_dir(BOARD_ADS7843_BUSY_GPIO, IOPORT_DIR_INPUT); + ioport_set_pin_mode(BOARD_ADS7843_BUSY_GPIO, BOARD_ADS7843_BUSY_FLAGS); + ioport_set_pin_peripheral_mode(SPI_MISO_GPIO, SPI_MISO_FLAGS); + ioport_set_pin_peripheral_mode(SPI_MOSI_GPIO, SPI_MOSI_FLAGS); + ioport_set_pin_peripheral_mode(SPI_SPCK_GPIO, SPI_SPCK_FLAGS); + ioport_set_pin_peripheral_mode(SPI_NPCS0_GPIO, SPI_NPCS0_FLAGS); +#endif + +#ifdef CONF_BOARD_CAN0 + /* Configure the CAN0 TX and RX pins. */ + ioport_set_pin_peripheral_mode(PIN_CAN0_RX_IDX, PIN_CAN0_RX_FLAGS); + ioport_set_pin_peripheral_mode(PIN_CAN0_TX_IDX, PIN_CAN0_TX_FLAGS); + /* Configure the transiver0 RS & EN pins. */ + ioport_set_pin_dir(PIN_CAN0_TR_RS_IDX, IOPORT_DIR_OUTPUT); + ioport_set_pin_dir(PIN_CAN0_TR_EN_IDX, IOPORT_DIR_OUTPUT); +#endif + +#ifdef CONF_BOARD_CAN1 + /* Configure the CAN1 TX and RX pin. */ + ioport_set_pin_peripheral_mode(PIN_CAN1_RX_IDX, PIN_CAN1_RX_FLAGS); + ioport_set_pin_peripheral_mode(PIN_CAN1_TX_IDX, PIN_CAN1_TX_FLAGS); + /* Configure the transiver1 RS & EN pins. */ + ioport_set_pin_dir(PIN_CAN1_TR_RS_IDX, IOPORT_DIR_OUTPUT); + ioport_set_pin_dir(PIN_CAN1_TR_EN_IDX, IOPORT_DIR_OUTPUT); +#endif + +#if defined(CONF_BOARD_USB_PORT) +# if defined(CONF_BOARD_USB_VBUS_DETECT) + gpio_configure_pin(USB_VBUS_PIN, USB_VBUS_FLAGS); +# endif +#endif + +#ifdef CONF_BOARD_ILI93XX + /* Configure LCD EBI pins */ + ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D0,PIN_EBI_DATA_BUS_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D1,PIN_EBI_DATA_BUS_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D2,PIN_EBI_DATA_BUS_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D3,PIN_EBI_DATA_BUS_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D4,PIN_EBI_DATA_BUS_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D5,PIN_EBI_DATA_BUS_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D6,PIN_EBI_DATA_BUS_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D7,PIN_EBI_DATA_BUS_FLAGS); + + ioport_set_pin_peripheral_mode(PIN_EBI_NRD,PIN_EBI_NRD_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_NWE,PIN_EBI_NWE_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_NCS1,PIN_EBI_NCS1_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_LCD_RS,PIN_EBI_LCD_RS_FLAGS); +#endif + +#ifdef CONF_BOARD_AAT3155 + /* Configure Backlight control pin */ + ioport_set_pin_dir(BOARD_AAT31XX_SET_GPIO, IOPORT_DIR_OUTPUT); +#endif + +#ifdef CONF_BOARD_SPI + ioport_set_pin_peripheral_mode(SPI_MISO_GPIO, SPI_MISO_FLAGS); + ioport_set_pin_peripheral_mode(SPI_MOSI_GPIO, SPI_MOSI_FLAGS); + ioport_set_pin_peripheral_mode(SPI_SPCK_GPIO, SPI_SPCK_FLAGS); + +#ifdef CONF_BOARD_SPI_NPCS0 + ioport_set_pin_peripheral_mode(SPI_NPCS0_GPIO, SPI_NPCS0_FLAGS); +#endif + +#ifdef CONF_BOARD_SPI_NPCS3 +#if defined(CONF_BOARD_SPI_NPCS3_GPIO) && defined(CONF_BOARD_SPI_NPCS3_FLAGS) + ioport_set_pin_peripheral_mode(CONF_BOARD_SPI_NPCS3_GPIO, + CONF_BOARD_SPI_NPCS3_FLAGS); +#else + ioport_set_pin_peripheral_mode(SPI_NPCS3_PA5_GPIO, SPI_NPCS3_PA5_FLAGS); +#endif +#endif +#endif + +#if (defined(CONF_BOARD_TWI0) || defined(CONF_BOARD_QTOUCH)) + ioport_set_pin_peripheral_mode(TWI0_DATA_GPIO, TWI0_DATA_FLAGS); + ioport_set_pin_peripheral_mode(TWI0_CLK_GPIO, TWI0_CLK_FLAGS); +#endif + +#if defined (CONF_BOARD_SD_MMC_HSMCI) + /* Configure HSMCI pins */ + ioport_set_pin_peripheral_mode(PIN_HSMCI_MCCDA_GPIO, PIN_HSMCI_MCCDA_FLAGS); + ioport_set_pin_peripheral_mode(PIN_HSMCI_MCCK_GPIO, PIN_HSMCI_MCCK_FLAGS); + ioport_set_pin_peripheral_mode(PIN_HSMCI_MCDA0_GPIO, PIN_HSMCI_MCDA0_FLAGS); + ioport_set_pin_peripheral_mode(PIN_HSMCI_MCDA1_GPIO, PIN_HSMCI_MCDA1_FLAGS); + ioport_set_pin_peripheral_mode(PIN_HSMCI_MCDA2_GPIO, PIN_HSMCI_MCDA2_FLAGS); + ioport_set_pin_peripheral_mode(PIN_HSMCI_MCDA3_GPIO, PIN_HSMCI_MCDA3_FLAGS); + + /* Configure SD/MMC card detect pin */ + ioport_set_pin_peripheral_mode(SD_MMC_0_CD_GPIO, SD_MMC_0_CD_FLAGS); +#endif + +#ifdef CONF_BOARD_TWI1 + ioport_set_pin_peripheral_mode(TWI1_DATA_GPIO, TWI1_DATA_FLAGS); + ioport_set_pin_peripheral_mode(TWI1_CLK_GPIO, TWI1_CLK_FLAGS); +#endif + +#ifdef CONF_BOARD_KSZ8051MNL + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_RXC_IDX, + PIN_KSZ8051MNL_RXC_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_TXC_IDX, + PIN_KSZ8051MNL_TXC_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_TXEN_IDX, + PIN_KSZ8051MNL_TXEN_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_TXD3_IDX, + PIN_KSZ8051MNL_TXD3_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_TXD2_IDX, + PIN_KSZ8051MNL_TXD2_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_TXD1_IDX, + PIN_KSZ8051MNL_TXD1_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_TXD0_IDX, + PIN_KSZ8051MNL_TXD0_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_RXD3_IDX, + PIN_KSZ8051MNL_RXD3_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_RXD2_IDX, + PIN_KSZ8051MNL_RXD2_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_RXD1_IDX, + PIN_KSZ8051MNL_RXD1_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_RXD0_IDX, + PIN_KSZ8051MNL_RXD0_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_RXER_IDX, + PIN_KSZ8051MNL_RXER_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_RXDV_IDX, + PIN_KSZ8051MNL_RXDV_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_CRS_IDX, + PIN_KSZ8051MNL_CRS_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_COL_IDX, + PIN_KSZ8051MNL_COL_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_MDC_IDX, + PIN_KSZ8051MNL_MDC_FLAGS); + ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_MDIO_IDX, + PIN_KSZ8051MNL_MDIO_FLAGS); + ioport_set_pin_dir(PIN_KSZ8051MNL_INTRP_IDX, IOPORT_DIR_INPUT); +#endif + +#ifdef CONF_BOARD_TFDU4300_SD + /* Configure IrDA transceiver shutdown pin */ + ioport_set_pin_dir(PIN_IRDA_SD_IDX, IOPORT_DIR_OUTPUT); + ioport_set_pin_level(PIN_IRDA_SD_IDX, IOPORT_PIN_LEVEL_HIGH); +#endif + +#ifdef CONF_BOARD_ADM3485_RE + /* Configure RS485 transceiver RE pin */ + ioport_set_pin_dir(PIN_RE_IDX, IOPORT_DIR_OUTPUT); + ioport_set_pin_level(PIN_RE_IDX, IOPORT_PIN_LEVEL_LOW); +#endif + +#ifdef CONF_BOARD_ISO7816_RST + /* Configure ISO7816 card reset pin */ + ioport_set_pin_dir(PIN_ISO7816_RST_IDX, IOPORT_DIR_OUTPUT); + ioport_set_pin_level(PIN_ISO7816_RST_IDX, IOPORT_PIN_LEVEL_LOW); +#endif + +#ifdef CONF_BOARD_ISO7816 + /* Configure ISO7816 interface TXD & SCK pin */ + ioport_set_pin_peripheral_mode(PIN_USART1_TXD_IDX, PIN_USART1_TXD_FLAGS); + ioport_set_pin_peripheral_mode(PIN_USART1_SCK_IDX, PIN_USART1_SCK_FLAGS); +#endif + +#ifdef CONF_BOARD_NAND + ioport_set_pin_peripheral_mode(PIN_EBI_NANDOE, PIN_EBI_NANDOE_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_NANDWE, PIN_EBI_NANDWE_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_NANDCLE, PIN_EBI_NANDCLE_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_NANDALE, PIN_EBI_NANDALE_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_0, PIN_EBI_NANDIO_0_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_1, PIN_EBI_NANDIO_1_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_2, PIN_EBI_NANDIO_2_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_3, PIN_EBI_NANDIO_3_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_4, PIN_EBI_NANDIO_4_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_5, PIN_EBI_NANDIO_5_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_6, PIN_EBI_NANDIO_6_FLAGS); + ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_7, PIN_EBI_NANDIO_7_FLAGS); + ioport_set_pin_dir(PIN_NF_CE_IDX, IOPORT_DIR_OUTPUT); + ioport_set_pin_dir(PIN_NF_RB_IDX, IOPORT_DIR_INPUT); + ioport_set_pin_mode(PIN_NF_RB_IDX, IOPORT_MODE_PULLUP); +#endif + + +#ifdef CONF_BOARD_QTOUCH + /* Configure CHANGE pin for QTouch device */ + ioport_set_pin_input_mode(BOARD_QT_CHANGE_PIN_IDX, BOARD_QT_CHANGE_PIN_FLAGS, + BOARD_QT_CHANGE_PIN_SENSE); +#endif +} diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/led.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/led.h new file mode 100644 index 000000000..22efbf248 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/led.h @@ -0,0 +1,78 @@ +/** + * \file + * + * \brief SAM4E-EK LEDs support package. + * + * Copyright (c) 2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef LED_H_INCLUDED +#define LED_H_INCLUDED + +#include "compiler.h" +#include "ioport.h" + +/** + * \brief Turns off the specified LEDs. + * + * \param led LED to turn off (LEDx_GPIO). + * + * \note The pins of the specified LEDs are set to GPIO output mode. + */ +#define LED_Off(led) ioport_set_pin_level(led##_GPIO, led##_INACTIVE_LEVEL) + +/** + * \brief Turns on the specified LEDs. + * + * \param led LED to turn on (LEDx_GPIO). + * + * \note The pins of the specified LEDs are set to GPIO output mode. + */ +#define LED_On(led) ioport_set_pin_level(led##_GPIO, led##_ACTIVE_LEVEL) + +/** + * \brief Toggles the specified LEDs. + * + * \param led LED to toggle (LEDx_GPIO). + * + * \note The pins of the specified LEDs are set to GPIO output mode. + */ +#define LED_Toggle(led) ioport_toggle_pin_level(led##_GPIO) + + +#endif // LED_H_INCLUDED diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/sam4e_ek.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/sam4e_ek.h new file mode 100644 index 000000000..678c0fd6d --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/sam4e_ek.h @@ -0,0 +1,811 @@ +/** + * \file + * + * \brief SAM4E-EK Board Definition. + * + * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_EK_H_ +#define _SAM4E_EK_H_ + +#include "compiler.h" +#include "system_sam4e.h" +#include "exceptions.h" + +/*----------------------------------------------------------------------------*/ +/** + * \page sam4e_ek_opfreq "SAM4E-EK - Operating frequencies" + * This page lists several definition related to the board operating frequency + * + * \section Definitions + * - \ref BOARD_FREQ_* + * - \ref BOARD_MCK + */ + +/** Board oscillator settings */ +#define BOARD_FREQ_SLCK_XTAL (32768U) +#define BOARD_FREQ_SLCK_BYPASS (32768U) +#define BOARD_FREQ_MAINCK_XTAL (12000000U) +#define BOARD_FREQ_MAINCK_BYPASS (12000000U) + +/** Master clock frequency */ +#define BOARD_MCK CHIP_FREQ_CPU_MAX + +/** board main clock xtal statup time */ +#define BOARD_OSC_STARTUP_US 15625 + +/*----------------------------------------------------------------------------*/ +/** + * \page sam4e_ek_board_info "SAM4E-EK - Board informations" + * This page lists several definition related to the board description. + * + * \section Definitions + * - \ref BOARD_NAME + */ + +/** Name of the board */ +#define BOARD_NAME "SAM4E-EK" +/** Board definition */ +#define sam4eek +/** Family definition (already defined) */ +#define sam4e +/** Core definition */ +#define cortexm4 + +/*----------------------------------------------------------------------------*/ + +/** UART0 pins (UTXD0 and URXD0) definitions, PA10,9. */ +#define PINS_UART0 (PIO_PA9A_URXD0 | PIO_PA10A_UTXD0) +#define PINS_UART0_FLAGS (IOPORT_MODE_MUX_A) + +#define PINS_UART0_PORT IOPORT_PIOA +#define PINS_UART0_MASK (PIO_PA9A_URXD0 | PIO_PA10A_UTXD0) +#define PINS_UART0_PIO PIOA +#define PINS_UART0_ID ID_PIOA +#define PINS_UART0_TYPE PIO_PERIPH_A +#define PINS_UART0_ATTR PIO_DEFAULT + +/** UART1 pins (UTXD1 and URXD1) definitions, PA6,5. */ +#define PINS_UART1 (PIO_PA6C_URXD1 | PIO_PA5C_UTXD1) +#define PINS_UART1_FLAGS (IOPORT_MODE_MUX_C) + +#define PINS_UART1_PORT IOPORT_PIOA +#define PINS_UART1_MASK (PIO_PA6C_URXD1 | PIO_PA5C_UTXD1) +#define PINS_UART1_PIO PIOA +#define PINS_UART1_ID ID_PIOA +#define PINS_UART1_TYPE PIO_PERIPH_C +#define PINS_UART1_ATTR PIO_DEFAULT + +/** LED #0 pin definition (Blue). */ +#define LED_0_NAME "Blue LED D2" +#define PIN_LED_0 {PIO_PA0, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT} +#define PIN_LED_0_MASK PIO_PA0 +#define PIN_LED_0_PIO PIOA +#define PIN_LED_0_ID ID_PIOA +#define PIN_LED_0_TYPE PIO_OUTPUT_1 +#define PIN_LED_0_ATTR PIO_DEFAULT + +#define LED0_GPIO (PIO_PA0_IDX) +#define LED0_FLAGS (0) +#define LED0_ACTIVE_LEVEL IOPORT_PIN_LEVEL_LOW +#define LED0_INACTIVE_LEVEL IOPORT_PIN_LEVEL_HIGH + +/** LED #1 pin definition (Amber). */ +#define LED_1_NAME "Amber LED D3" +#define PIN_LED_1 {PIO_PD20, PIOD, ID_PIOD, PIO_OUTPUT_1, PIO_DEFAULT} +#define PIN_LED_1_MASK PIO_PD20 +#define PIN_LED_1_PIO PIOD +#define PIN_LED_1_ID ID_PIOD +#define PIN_LED_1_TYPE PIO_OUTPUT_1 +#define PIN_LED_1_ATTR PIO_DEFAULT + +#define LED1_GPIO (PIO_PD20_IDX) +#define LED1_FLAGS (0) +#define LED1_ACTIVE_LEVEL IOPORT_PIN_LEVEL_LOW +#define LED1_INACTIVE_LEVEL IOPORT_PIN_LEVEL_HIGH + +/** LED #2 pin definition (Green). */ +#define LED_2_NAME "Green LED D4" +#define PIN_LED_2_MASK PIO_PD21 +#define PIN_LED_2_PIO PIOD +#define PIN_LED_2_ID ID_PIOD +#define PIN_LED_2_TYPE PIO_OUTPUT_1 +#define PIN_LED_2_ATTR PIO_DEFAULT + +#define LED2_GPIO (PIO_PD21_IDX) +#define LED2_FLAGS (0) +#define LED2_ACTIVE_LEVEL IOPORT_PIN_LEVEL_LOW +#define LED2_INACTIVE_LEVEL IOPORT_PIN_LEVEL_HIGH + +/** LED #3 pin definition (Red). */ +#define LED_3_NAME "Red LED D5" +#define PIN_LED_3_MASK PIO_PD22 +#define PIN_LED_3_PIO PIOD +#define PIN_LED_3_ID ID_PIOD +#define PIN_LED_3_TYPE PIO_OUTPUT_0 +#define PIN_LED_3_ATTR PIO_DEFAULT + +#define LED3_GPIO (PIO_PD22_IDX) +#define LED3_FLAGS (0) +#define LED3_ACTIVE_LEVEL IOPORT_PIN_LEVEL_HIGH +#define LED3_INACTIVE_LEVEL IOPORT_PIN_LEVEL_LOW + +#define BOARD_NUM_OF_LED 4 + +/** HSMCI pins definition. */ +/*! Number of slot connected on HSMCI interface */ +#define SD_MMC_HSMCI_MEM_CNT 1 +#define SD_MMC_HSMCI_SLOT_0_SIZE 4 +#define PINS_HSMCI {0x3fUL << 26, PIOA, ID_PIOA, PIO_PERIPH_C, PIO_PULLUP} +/** HSMCI MCCDA pin definition. */ +#define PIN_HSMCI_MCCDA_GPIO (PIO_PA28_IDX) +#define PIN_HSMCI_MCCDA_FLAGS (IOPORT_MODE_MUX_C) +/** HSMCI MCCK pin definition. */ +#define PIN_HSMCI_MCCK_GPIO (PIO_PA29_IDX) +#define PIN_HSMCI_MCCK_FLAGS (IOPORT_MODE_MUX_C) +/** HSMCI MCDA0 pin definition. */ +#define PIN_HSMCI_MCDA0_GPIO (PIO_PA30_IDX) +#define PIN_HSMCI_MCDA0_FLAGS (IOPORT_MODE_MUX_C) +/** HSMCI MCDA1 pin definition. */ +#define PIN_HSMCI_MCDA1_GPIO (PIO_PA31_IDX) +#define PIN_HSMCI_MCDA1_FLAGS (IOPORT_MODE_MUX_C) +/** HSMCI MCDA2 pin definition. */ +#define PIN_HSMCI_MCDA2_GPIO (PIO_PA26_IDX) +#define PIN_HSMCI_MCDA2_FLAGS (IOPORT_MODE_MUX_C) +/** HSMCI MCDA3 pin definition. */ +#define PIN_HSMCI_MCDA3_GPIO (PIO_PA27_IDX) +#define PIN_HSMCI_MCDA3_FLAGS (IOPORT_MODE_MUX_C) + +/** SD/MMC card detect pin definition. */ +#define PIN_HSMCI_CD {PIO_PA6, PIOA, ID_PIOA, PIO_INPUT, PIO_PULLUP} +#define SD_MMC_0_CD_GPIO (PIO_PA6_IDX) +#define SD_MMC_0_CD_PIO_ID ID_PIOA +#define SD_MMC_0_CD_FLAGS (IOPORT_MODE_PULLUP) +#define SD_MMC_0_CD_DETECT_VALUE 0 + +/** + * Push button #0 definition. Attributes = pull-up + debounce + interrupt on + * rising edge. + */ +#define PUSHBUTTON_1_NAME "BP2 WAKU" +#define PUSHBUTTON_1_WKUP_LINE (9) +#define PUSHBUTTON_1_WKUP_FSTT (PMC_FSMR_FSTT9) +#define GPIO_PUSH_BUTTON_1 (PIO_PA19_IDX) +#define GPIO_PUSH_BUTTON_1_FLAGS (IOPORT_MODE_PULLUP | IOPORT_MODE_DEBOUNCE) +#define GPIO_PUSH_BUTTON_1_SENSE (IOPORT_SENSE_RISING) + +#define PIN_PUSHBUTTON_1 {PIO_PA19, PIOA, ID_PIOA, PIO_INPUT, \ + PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE} +#define PIN_PUSHBUTTON_1_MASK PIO_PA19 +#define PIN_PUSHBUTTON_1_PIO PIOA +#define PIN_PUSHBUTTON_1_ID ID_PIOA +#define PIN_PUSHBUTTON_1_TYPE PIO_INPUT +#define PIN_PUSHBUTTON_1_ATTR (PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE) +#define PIN_PUSHBUTTON_1_IRQn PIOA_IRQn + +/** + * Push button #1 definition. Attributes = pull-up + debounce + interrupt on + * falling edge. + */ +#define PUSHBUTTON_2_NAME "BP3 TAMP" +#define PUSHBUTTON_2_WKUP_LINE (10) +#define PUSHBUTTON_2_WKUP_FSTT (PMC_FSMR_FSTT10) +#define GPIO_PUSH_BUTTON_2 (PIO_PA20_IDX) +#define GPIO_PUSH_BUTTON_2_FLAGS (IOPORT_MODE_PULLUP | IOPORT_MODE_DEBOUNCE) +#define GPIO_PUSH_BUTTON_2_SENSE (IOPORT_SENSE_FALLING) + +#define PIN_PUSHBUTTON_2 {PIO_PA20, PIOA, ID_PIOA, PIO_INPUT, \ + PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_FALL_EDGE} +#define PIN_PUSHBUTTON_2_MASK PIO_PA20 +#define PIN_PUSHBUTTON_2_PIO PIOA +#define PIN_PUSHBUTTON_2_ID ID_PIOA +#define PIN_PUSHBUTTON_2_TYPE PIO_INPUT +#define PIN_PUSHBUTTON_2_ATTR (PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_FALL_EDGE) +#define PIN_PUSHBUTTON_2_IRQn PIOA_IRQn + +/** + * Push button #2 definition. Attributes = pull-up + debounce + interrupt on + * both edges. + */ +#define PUSHBUTTON_3_NAME "BP4 SCROLL-UP" +#define PUSHBUTTON_3_WKUP_LINE (1) +#define PUSHBUTTON_3_WKUP_FSTT (PMC_FSMR_FSTT1) +#define GPIO_PUSH_BUTTON_3 (PIO_PA1_IDX) +#define GPIO_PUSH_BUTTON_3_FLAGS (IOPORT_MODE_PULLUP | IOPORT_MODE_DEBOUNCE) +#define GPIO_PUSH_BUTTON_3_SENSE (IOPORT_SENSE_BOTHEDGES) + +#define PIN_PUSHBUTTON_3 {PIO_PA1, PIOA, ID_PIOA, PIO_INPUT, \ + PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE} +#define PIN_PUSHBUTTON_3_MASK PIO_PA1 +#define PIN_PUSHBUTTON_3_PIO PIOA +#define PIN_PUSHBUTTON_3_ID ID_PIOA +#define PIN_PUSHBUTTON_3_TYPE PIO_INPUT +#define PIN_PUSHBUTTON_3_ATTR (PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE) +#define PIN_PUSHBUTTON_3_IRQn PIOA_IRQn + +/** + * Push button #3 definition. Attributes = pull-up + debounce + interrupt on + * rising edge. + */ +#define PUSHBUTTON_4_NAME "BP5 SCROLL-DOWN" +#define PUSHBUTTON_4_WKUP_LINE (2) +#define PUSHBUTTON_4_WKUP_FSTT (PMC_FSMR_FSTT2) +#define GPIO_PUSH_BUTTON_4 (PIO_PA2_IDX) +#define GPIO_PUSH_BUTTON_4_FLAGS (IOPORT_MODE_PULLUP | IOPORT_MODE_DEBOUNCE) +#define GPIO_PUSH_BUTTON_4_SENSE (IOPORT_SENSE_RISING) + +#define PIN_PUSHBUTTON_4 {PIO_PA2, PIOA, ID_PIOA, PIO_INPUT, \ + PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE} +#define PIN_PUSHBUTTON_4_MASK PIO_PA2 +#define PIN_PUSHBUTTON_4_PIO PIOA +#define PIN_PUSHBUTTON_4_ID ID_PIOA +#define PIN_PUSHBUTTON_4_TYPE PIO_INPUT +#define PIN_PUSHBUTTON_4_ATTR (PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE) +#define PIN_PUSHBUTTON_4_IRQn PIOA_IRQn + +/** List of all push button definitions. */ +#define PINS_PUSHBUTTONS {PIN_PUSHBUTTON_1, PIN_PUSHBUTTON_2,\ + PIN_PUSHBUTTON_3, PIN_PUSHBUTTON_4} + +#define PIN_TC0_TIOA0 (PIO_PA0_IDX) +#define PIN_TC0_TIOA0_MUX (IOPORT_MODE_MUX_B) +#define PIN_TC0_TIOA0_FLAGS (IOPORT_MODE_MUX_B) + +#define PIN_TC0_TIOA1 (PIO_PA15_IDX) +#define PIN_TC0_TIOA1_MUX (IOPORT_MODE_MUX_B) +#define PIN_TC0_TIOA1_FLAGS (IOPORT_MODE_MUX_B) + +#define PIN_TC0_TIOA1_PIO PIOA +#define PIN_TC0_TIOA1_MASK PIO_PA15 +#define PIN_TC0_TIOA1_ID ID_PIOA +#define PIN_TC0_TIOA1_TYPE PIO_PERIPH_B +#define PIN_TC0_TIOA1_ATTR PIO_DEFAULT + +#define PIN_TC0_TIOA2 (PIO_PA26_IDX) +#define PIN_TC0_TIOA2_MUX (IOPORT_MODE_MUX_B) +#define PIN_TC0_TIOA2_FLAGS (IOPORT_MODE_MUX_B) + +#define PIN_TC0_TIOA2_PIO PIOA +#define PIN_TC0_TIOA2_MASK PIO_PA26 +#define PIN_TC0_TIOA2_ID ID_PIOA +#define PIN_TC0_TIOA2_TYPE PIO_PERIPH_B +#define PIN_TC0_TIOA2_ATTR PIO_DEFAULT + +/** PWM LED0 pin definitions. */ +#define PIN_PWM_LED0_GPIO PIO_PD20_IDX +#define PIN_PWM_LED0_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_PWM_LED0_CHANNEL PWM_CHANNEL_0 + +/** PWM LED1 pin definitions. */ +#define PIN_PWM_LED1_GPIO PIO_PD21_IDX +#define PIN_PWM_LED1_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_PWM_LED1_CHANNEL PWM_CHANNEL_1 + +/** PWM LED2 pin definitions. */ +#define PIN_PWM_LED2_GPIO PIO_PD22_IDX +#define PIN_PWM_LED2_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_PWM_LED2_CHANNEL PWM_CHANNEL_2 + +/** PWM LED3 pin definitions. */ +#define PIN_PWM_LED3_GPIO PIO_PA0_IDX +#define PIN_PWM_LED3_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_PWM_LED3_CHANNEL PWM_CHANNEL_0 + + +/** SPI MISO pin definition. */ +#define SPI_MISO_GPIO (PIO_PA12_IDX) +#define SPI_MISO_FLAGS (IOPORT_MODE_MUX_A) +/** SPI MOSI pin definition. */ +#define SPI_MOSI_GPIO (PIO_PA13_IDX) +#define SPI_MOSI_FLAGS (IOPORT_MODE_MUX_A) +/** SPI SPCK pin definition. */ +#define SPI_SPCK_GPIO (PIO_PA14_IDX) +#define SPI_SPCK_FLAGS (IOPORT_MODE_MUX_A) + +/** SPI chip select 0 pin definition. (Only one configuration is possible) */ +#define SPI_NPCS0_GPIO (PIO_PA11_IDX) +#define SPI_NPCS0_FLAGS (IOPORT_MODE_MUX_A) +/** SPI chip select 1 pin definition. (multiple configurations are possible) */ +#define SPI_NPCS1_PA9_GPIO (PIO_PA9_IDX) +#define SPI_NPCS1_PA9_FLAGS (IOPORT_MODE_MUX_B) +#define SPI_NPCS1_PA31_GPIO (PIO_PA31_IDX) +#define SPI_NPCS1_PA31_FLAGS (IOPORT_MODE_MUX_A) +#define SPI_NPCS1_PB14_GPIO (PIO_PB14_IDX) +#define SPI_NPCS1_PB14_FLAGS (IOPORT_MODE_MUX_A) +#define SPI_NPCS1_PC4_GPIO (PIO_PC4_IDX) +#define SPI_NPCS1_PC4_FLAGS (IOPORT_MODE_MUX_B) +/** SPI chip select 2 pin definition. (multiple configurations are possible) */ +#define SPI_NPCS2_PA10_GPIO (PIO_PA10_IDX) +#define SPI_NPCS2_PA10_FLAGS (IOPORT_MODE_MUX_B) +#define SPI_NPCS2_PA30_GPIO (PIO_PA30_IDX) +#define SPI_NPCS2_PA30_FLAGS (IOPORT_MODE_MUX_B) +#define SPI_NPCS2_PB2_GPIO (PIO_PB2_IDX) +#define SPI_NPCS2_PB2_FLAGS (IOPORT_MODE_MUX_B) +/** SPI chip select 3 pin definition. (multiple configurations are possible) */ +#define SPI_NPCS3_PA3_GPIO (PIO_PA3_IDX) +#define SPI_NPCS3_PA3_FLAGS (IOPORT_MODE_MUX_B) +#define SPI_NPCS3_PA5_GPIO (PIO_PA5_IDX) +#define SPI_NPCS3_PA5_FLAGS (IOPORT_MODE_MUX_B) +#define SPI_NPCS3_PA22_GPIO (PIO_PA22_IDX) +#define SPI_NPCS3_PA22_FLAGS (IOPORT_MODE_MUX_B) + +/* Select the SPI module that AT25DFx is connected to */ +#define AT25DFX_SPI_MODULE SPI + +/* Chip select used by AT25DFx components on the SPI module instance */ +#define AT25DFX_CS 3 + +/* Touch screen IRQ & Busy pin definition */ +#define BOARD_ADS7843_IRQ_GPIO (PIO_PA16_IDX) +#define BOARD_ADS7843_IRQ_FLAGS IOPORT_MODE_PULLUP +#define BOARD_ADS7843_BUSY_GPIO (PIO_PA17_IDX) +#define BOARD_ADS7843_BUSY_FLAGS IOPORT_MODE_PULLUP +/** +* SPI instance, which can be SPI, SPI0 or SPI1, depends on which SPI +* channel is used. +*/ +#define BOARD_ADS7843_SPI_BASE SPI +/* SPI chip select NO., depends on which SPI CS pin is used by ADS7843. */ +#define BOARD_ADS7843_SPI_NPCS 0 + +/** TWI0 pins definition */ +#define TWI0_DATA_GPIO PIO_PA3_IDX +#define TWI0_DATA_FLAGS (IOPORT_MODE_MUX_A) +#define TWI0_CLK_GPIO PIO_PA4_IDX +#define TWI0_CLK_FLAGS (IOPORT_MODE_MUX_A) + +/** TWI1 pins definition */ +#define TWI1_DATA_GPIO PIO_PB4_IDX +#define TWI1_DATA_FLAGS (IOPORT_MODE_MUX_A) +#define TWI1_CLK_GPIO PIO_PB5_IDX +#define TWI1_CLK_FLAGS (IOPORT_MODE_MUX_A) + +/** PCK0 pin definition (PA6) */ +#define PIN_PCK0 (PIO_PA6_IDX) +#define PIN_PCK0_MUX (IOPORT_MODE_MUX_B) +#define PIN_PCK0_FLAGS (IOPORT_MODE_MUX_B) +#define PIN_PCK0_PORT IOPORT_PIOA +#define PIN_PCK0_MASK PIO_PA6B_PCK0 +#define PIN_PCK0_PIO PIOA +#define PIN_PCK0_ID ID_PIOA +#define PIN_PCK0_TYPE PIO_PERIPH_B +#define PIN_PCK0_ATTR PIO_DEFAULT + +/** USART0 pin RX */ +#define PIN_USART0_RXD {PIO_PB0C_RXD0, PIOB, ID_PIOB, PIO_PERIPH_C, \ + PIO_DEFAULT} +#define PIN_USART0_RXD_IDX (PIO_PB0_IDX) +#define PIN_USART0_RXD_FLAGS (IOPORT_MODE_MUX_C) +/** USART0 pin TX */ +#define PIN_USART0_TXD {PIO_PB1C_TXD0, PIOB, ID_PIOB, PIO_PERIPH_C, \ + PIO_DEFAULT} +#define PIN_USART0_TXD_IDX (PIO_PB1_IDX) +#define PIN_USART0_TXD_FLAGS (IOPORT_MODE_MUX_C) +/** USART0 pin CTS */ +#define PIN_USART0_CTS {PIO_PB2C_CTS0, PIOB, ID_PIOB, PIO_PERIPH_C, \ + PIO_DEFAULT} +#define PIN_USART0_CTS_IDX (PIO_PB2_IDX) +#define PIN_USART0_CTS_FLAGS (IOPORT_MODE_MUX_C) +/** USART0 pin RTS */ +#define PIN_USART0_RTS {PIO_PB3C_RTS0, PIOB, ID_PIOB, PIO_PERIPH_C, \ + PIO_DEFAULT} +#define PIN_USART0_RTS_IDX (PIO_PB3_IDX) +#define PIN_USART0_RTS_FLAGS (IOPORT_MODE_MUX_C) +/** USART0 pin SCK */ +#define PIN_USART0_SCK {PIO_PB13C_SCK0, PIOB, ID_PIOB, PIO_PERIPH_C, \ + PIO_DEFAULT} +#define PIN_USART0_SCK_IDX (PIO_PB13_IDX) +#define PIN_USART0_SCK_FLAGS (IOPORT_MODE_MUX_C) + +/** USART1 pin RX */ +#define PIN_USART1_RXD {PIO_PA21A_RXD1, PIOA, ID_PIOA, PIO_PERIPH_A, \ + PIO_DEFAULT} +#define PIN_USART1_RXD_IDX (PIO_PA21_IDX) +#define PIN_USART1_RXD_FLAGS (IOPORT_MODE_MUX_A) +/** USART1 pin TX */ +#define PIN_USART1_TXD {PIO_PA22A_TXD1, PIOA, ID_PIOA, PIO_PERIPH_A, \ + PIO_DEFAULT} +#define PIN_USART1_TXD_IDX (PIO_PA22_IDX) +#define PIN_USART1_TXD_FLAGS (IOPORT_MODE_MUX_A) +/** USART1 pin CTS */ +#define PIN_USART1_CTS {PIO_PA25A_CTS1, PIOA, ID_PIOA, PIO_PERIPH_A, \ + PIO_DEFAULT} +#define PIN_USART1_CTS_IDX (PIO_PA25_IDX) +#define PIN_USART1_CTS_FLAGS (IOPORT_MODE_MUX_A) +/** USART1 pin RTS */ +#define PIN_USART1_RTS {PIO_PA24A_RTS1, PIOA, ID_PIOA, PIO_PERIPH_A, \ + PIO_DEFAULT} +#define PIN_USART1_RTS_IDX (PIO_PA24_IDX) +#define PIN_USART1_RTS_FLAGS (IOPORT_MODE_MUX_A) +/** USART1 pin SCK */ +#define PIN_USART1_SCK {PIO_PA23A_SCK1, PIOA, ID_PIOA, PIO_PERIPH_A, \ + PIO_DEFAULT} +#define PIN_USART1_SCK_IDX (PIO_PA23_IDX) +#define PIN_USART1_SCK_FLAGS (IOPORT_MODE_MUX_A) +/** USART1 pin ENABLE */ +#define PIN_USART1_EN {PIO_PA23, PIOA, ID_PIOA, PIO_OUTPUT_0, \ + PIO_DEFAULT} +#define PIN_USART1_EN_IDX (PIO_PA23_IDX) +#define PIN_USART1_EN_FLAGS (0) +#define PIN_USART1_EN_ACTIVE_LEVEL IOPORT_PIN_LEVEL_LOW +#define PIN_USART1_EN_INACTIVE_LEVEL IOPORT_PIN_LEVEL_HIGH + +/** USB VBus monitoring pin definition. */ +#define PIN_USB_VBUS {PIO_PC21, PIOC, ID_PIOC, PIO_INPUT, PIO_PULLUP} +#define USB_VBUS_FLAGS (PIO_INPUT | PIO_DEBOUNCE | PIO_IT_EDGE) +#define USB_VBUS_PIN_IRQn (PIOC_IRQn) +#define USB_VBUS_PIN (PIO_PC21_IDX) +#define USB_VBUS_PIO_ID (ID_PIOC) +#define USB_VBUS_PIO_MASK (PIO_PC21) +/* This pin can not be used as fast wakeup source such as + * USB_VBUS_WKUP PMC_FSMR_FSTT7 */ + +/** USB D- pin (System function) */ +#define PIN_USB_DM {PIO_PB10} +/** USB D+ pin (System function) */ +#define PIN_USB_DP {PIO_PB11} + +/** EBI Data Bus pins */ +#define PIN_EBI_DATA_BUS_D0 PIO_PC0_IDX +#define PIN_EBI_DATA_BUS_D1 PIO_PC1_IDX +#define PIN_EBI_DATA_BUS_D2 PIO_PC2_IDX +#define PIN_EBI_DATA_BUS_D3 PIO_PC3_IDX +#define PIN_EBI_DATA_BUS_D4 PIO_PC4_IDX +#define PIN_EBI_DATA_BUS_D5 PIO_PC5_IDX +#define PIN_EBI_DATA_BUS_D6 PIO_PC6_IDX +#define PIN_EBI_DATA_BUS_D7 PIO_PC7_IDX +#define PIN_EBI_DATA_BUS_FLAGS (IOPORT_MODE_MUX_A | IOPORT_MODE_PULLUP) + +#define PIN_EBI_NRD PIO_PC11_IDX +#define PIN_EBI_NRD_FLAGS (IOPORT_MODE_MUX_A | IOPORT_MODE_PULLUP) +#define PIN_EBI_NWE PIO_PC8_IDX +#define PIN_EBI_NWE_FLAGS (IOPORT_MODE_MUX_A | IOPORT_MODE_PULLUP) + +/** EBI pin for LCD CS and RS **/ +#define PIN_EBI_NCS1 PIO_PD18_IDX +#define PIN_EBI_NCS1_FLAGS (IOPORT_MODE_MUX_A | IOPORT_MODE_PULLUP) +#define PIN_EBI_LCD_RS PIO_PC19_IDX +#define PIN_EBI_LCD_RS_FLAGS (IOPORT_MODE_MUX_A | IOPORT_MODE_PULLUP) + +/** Indicates board has an ILI9325 external component to manage LCD. */ +#define BOARD_LCD_ILI93XX + +/** Backlight pin definition. */ +#define BOARD_AAT31XX_SET_GPIO PIO_PC13_IDX +/** Define ILI93xx base address. */ +#define BOARD_ILI93XX_ADDR 0x61000000 +/** Define ILI9325 register select signal. */ +#define BOARD_ILI93XX_RS (1 << 1) +/** Display width in pixels. */ +#define BOARD_LCD_WIDTH 240 +/** Display height in pixels. */ +#define BOARD_LCD_HEIGHT 320 + +/* KSZ8051MNL relate PIN definition */ +#define PIN_KSZ8051MNL_RXC_IDX PIO_PD14_IDX +#define PIN_KSZ8051MNL_RXC_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_TXC_IDX PIO_PD0_IDX +#define PIN_KSZ8051MNL_TXC_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_TXEN_IDX PIO_PD1_IDX +#define PIN_KSZ8051MNL_TXEN_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_TXD3_IDX PIO_PD16_IDX +#define PIN_KSZ8051MNL_TXD3_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_TXD2_IDX PIO_PD15_IDX +#define PIN_KSZ8051MNL_TXD2_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_TXD1_IDX PIO_PD3_IDX +#define PIN_KSZ8051MNL_TXD1_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_TXD0_IDX PIO_PD2_IDX +#define PIN_KSZ8051MNL_TXD0_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_RXD3_IDX PIO_PD12_IDX +#define PIN_KSZ8051MNL_RXD3_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_RXD2_IDX PIO_PD11_IDX +#define PIN_KSZ8051MNL_RXD2_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_RXD1_IDX PIO_PD6_IDX +#define PIN_KSZ8051MNL_RXD1_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_RXD0_IDX PIO_PD5_IDX +#define PIN_KSZ8051MNL_RXD0_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_RXER_IDX PIO_PD7_IDX +#define PIN_KSZ8051MNL_RXER_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_RXDV_IDX PIO_PD4_IDX +#define PIN_KSZ8051MNL_RXDV_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_CRS_IDX PIO_PD10_IDX +#define PIN_KSZ8051MNL_CRS_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_COL_IDX PIO_PD13_IDX +#define PIN_KSZ8051MNL_COL_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_MDC_IDX PIO_PD8_IDX +#define PIN_KSZ8051MNL_MDC_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_MDIO_IDX PIO_PD9_IDX +#define PIN_KSZ8051MNL_MDIO_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_KSZ8051MNL_INTRP_IDX PIO_PD28_IDX + +/** NandFlash pins definition: OE. */ +#define PIN_EBI_NANDOE (PIO_PC9_IDX) +#define PIN_EBI_NANDOE_FLAGS (IOPORT_MODE_MUX_A) + +/** NandFlash pins definition: WE. */ +#define PIN_EBI_NANDWE (PIO_PC10_IDX) +#define PIN_EBI_NANDWE_FLAGS (IOPORT_MODE_MUX_A) + +/** NandFlash pins definition: CLE. */ +#define PIN_EBI_NANDCLE (PIO_PC17_IDX) +#define PIN_EBI_NANDCLE_FLAGS (IOPORT_MODE_MUX_A) + +/** NandFlash pins definition: ALE. */ +#define PIN_EBI_NANDALE (PIO_PC16_IDX) +#define PIN_EBI_NANDALE_FLAGS (IOPORT_MODE_MUX_A) + +/** NandFlash pins definition: DATA. */ +#define PIN_EBI_NANDIO_0 (PIO_PC0_IDX) +#define PIN_EBI_NANDIO_0_FLAGS (IOPORT_MODE_MUX_A) + +#define PIN_EBI_NANDIO_1 (PIO_PC1_IDX) +#define PIN_EBI_NANDIO_1_FLAGS (IOPORT_MODE_MUX_A) + +#define PIN_EBI_NANDIO_2 (PIO_PC2_IDX) +#define PIN_EBI_NANDIO_2_FLAGS (IOPORT_MODE_MUX_A) + +#define PIN_EBI_NANDIO_3 (PIO_PC3_IDX) +#define PIN_EBI_NANDIO_3_FLAGS (IOPORT_MODE_MUX_A) + +#define PIN_EBI_NANDIO_4 (PIO_PC4_IDX) +#define PIN_EBI_NANDIO_4_FLAGS (IOPORT_MODE_MUX_A) + +#define PIN_EBI_NANDIO_5 (PIO_PC5_IDX) +#define PIN_EBI_NANDIO_5_FLAGS (IOPORT_MODE_MUX_A) + +#define PIN_EBI_NANDIO_6 (PIO_PC6_IDX) +#define PIN_EBI_NANDIO_6_FLAGS (IOPORT_MODE_MUX_A) + +#define PIN_EBI_NANDIO_7 (PIO_PC7_IDX) +#define PIN_EBI_NANDIO_7_FLAGS (IOPORT_MODE_MUX_A) + +/** Nandflash chip enable pin definition. */ +#define PIN_NF_CE_IDX (PIO_PC14_IDX) + +/** Nandflash ready/busy pin definition. */ +#define PIN_NF_RB_IDX (PIO_PC18_IDX) + +/* Chip select number for nand */ +#define BOARD_NAND_CS 0 + +/*----------------------------------------------------------------------------*/ +/** + * \page sam4e_ek_usb "SAM4E-EK - USB device" + * + * \section Definitions + * - \ref BOARD_USB_BMATTRIBUTES + * - \ref CHIP_USB_UDP + * - \ref CHIP_USB_PULLUP_INTERNAL + * - \ref CHIP_USB_NUMENDPOINTS + * - \ref CHIP_USB_ENDPOINTS_MAXPACKETSIZE + * - \ref CHIP_USB_ENDPOINTS_BANKS + */ + +/** + * USB attributes configuration descriptor (bus or self powered, + * remote wakeup) + */ +#define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_SELFPOWERED_RWAKEUP + +/** Indicates chip has an UDP Full Speed. */ +#define CHIP_USB_UDP + +/** Indicates chip has an internal pull-up. */ +#define CHIP_USB_PULLUP_INTERNAL + +/** Number of USB endpoints */ +#define CHIP_USB_NUMENDPOINTS 8 + +/** Endpoints max packet size */ +#define CHIP_USB_ENDPOINTS_MAXPACKETSIZE(i) \ + ((i == 0) ? 64 : \ + ((i == 1) ? 64 : \ + ((i == 2) ? 64 : \ + ((i == 3) ? 64 : \ + ((i == 4) ? 512 : \ + ((i == 5) ? 512 : \ + ((i == 6) ? 64 : \ + ((i == 7) ? 64 : 0 )))))))) + +/** Endpoints Number of Bank */ +#define CHIP_USB_ENDPOINTS_BANKS(i) \ + ((i == 0) ? 1 : \ + ((i == 1) ? 2 : \ + ((i == 2) ? 2 : \ + ((i == 3) ? 1 : \ + ((i == 4) ? 2 : \ + ((i == 5) ? 2 : \ + ((i == 6) ? 2 : \ + ((i == 7) ? 2 : 0 )))))))) + +/*----------------------------------------------------------------------------*/ +/** + * \page sam4e_ek_extcomp "SAM4E-EK - External components" + * This page lists the definitions related to external on-board components + * located in the board.h file for the SAM4E-EK. + * + * SD Card + * - \ref BOARD_SD_PINS + * - \ref BOARD_SD_PIN_CD + * + * QTouch component (QT2160) + * - \ref BOARD_QT_TWI_INSTANCE + * - \ref BOARD_QT_DEVICE_ADDRESS + * - \ref BOARD_QT_CHANGE_PIN_IDX + * - \ref BOARD_QT_CHANGE_PIN_FLAGS + * - \ref BOARD_QT_CHANGE_PIN_SENSE + */ + +/** HSMCI pins that shall be configured to access the SD card. */ +#define BOARD_SD_PINS PINS_HSMCI +/** HSMCI Card Detect pin. */ +#define BOARD_SD_PIN_CD PIN_HSMCI_CD + +/** TWI instance for QTouch device */ +#define BOARD_QT_TWI_INSTANCE TWI0 +/* QTouch device address (I2CA1 = I2CA0 = 0) */ +#define BOARD_QT_DEVICE_ADDRESS 0x0D +/** QTouch component pin definition */ +#define BOARD_QT_CHANGE_PIN_IDX (PIO_PE4_IDX) +#define BOARD_QT_CHANGE_PIN_FLAGS (IOPORT_MODE_PULLUP | IOPORT_MODE_DEBOUNCE) +#define BOARD_QT_CHANGE_PIN_SENSE (IOPORT_SENSE_FALLING) + +/*----------------------------------------------------------------------------*/ +/** + * \page sam4e_ek_mem "SAM4E-EK - Memories" + * This page lists definitions related to internal & external on-board memories. + * + * \section NandFlash + * - \ref BOARD_NF_COMMAND_ADDR + * - \ref BOARD_NF_ADDRESS_ADDR + * - \ref BOARD_NF_DATA_ADDR + * + * \section NorFlash + * - \ref BOARD_NORFLASH_ADDR + * - \ref BOARD_NORFLASH_DFT_BUS_SIZE + */ + +/** Address for transferring command bytes to the nandflash. */ +#define BOARD_NF_COMMAND_ADDR 0x60400000 +/** Address for transferring address bytes to the nandflash. */ +#define BOARD_NF_ADDRESS_ADDR 0x60200000 +/** Address for transferring data bytes to the nandflash. */ +#define BOARD_NF_DATA_ADDR 0x60000000 +/* Bus width for NAND */ +#define CONF_NF_BUSWIDTH 8 +/* Access timing for NAND */ +#define CONF_NF_SETUP_TIMING (SMC_SETUP_NWE_SETUP(0) \ + | SMC_SETUP_NCS_WR_SETUP(1) \ + | SMC_SETUP_NRD_SETUP(0) \ + | SMC_SETUP_NCS_RD_SETUP(1)) +#define CONF_NF_PULSE_TIMING (SMC_PULSE_NWE_PULSE(2) \ + | SMC_PULSE_NCS_WR_PULSE(3) \ + | SMC_PULSE_NRD_PULSE(4) \ + | SMC_PULSE_NCS_RD_PULSE(4)) +#define CONF_NF_CYCLE_TIMING (SMC_CYCLE_NWE_CYCLE(4) \ + | SMC_CYCLE_NRD_CYCLE(7)) + +/** Address for transferring command bytes to the norflash. */ +#define BOARD_NORFLASH_ADDR 0x63000000 +/** Default NOR bus size after power up reset */ +#define BOARD_NORFLASH_DFT_BUS_SIZE 8 + +/*----------------------------------------------------------------------------*/ + +#define CONSOLE_UART UART0 +#define CONSOLE_UART_ID ID_UART0 + +/* RE pin. */ +#define PIN_RE_IDX PIN_USART1_CTS_IDX +#define PIN_RE_FLAGS (0) + +/* IRDA SD pin. */ +#define PIN_IRDA_SD_IDX PIN_USART1_CTS_IDX +#define PIN_IRDA_SD_FLAGS (0) + +/* TXD pin configuration. */ +#define PIN_USART_TXD_IDX PIN_USART1_TXD_IDX +#define PIN_USART_TXD_FLAGS (IOPORT_MODE_MUX_A) +#define PIN_USART_TXD_IO_FLAGS (0) + +/* ISO7816 example relate PIN definition. */ +#define ISO7816_USART_ID ID_USART1 +#define ISO7816_USART USART1 +#define PIN_ISO7816_RST_IDX PIO_PA15_IDX +#define PIN_ISO7816_RST_FLAG (0) + +/*----------------------------------------------------------------------------*/ +/* GMAC HW configurations */ +#define BOARD_GMAC_PHY_ADDR 0 + +/*----------------------------------------------------------------------------*/ +/** + * \page sam4e_ek_CAN "SAM4E-EK - CAN" + * This page lists definitions related to CAN0 and CAN1. + * + * CAN + * - \ref PIN_CAN0_TRANSCEIVER_RXEN + * - \ref PIN_CAN0_TRANSCEIVER_RS + * - \ref PIN_CAN0_TXD + * - \ref PIN_CAN0_RXD + * - \ref PINS_CAN0 + * + * - \ref PIN_CAN1_TRANSCEIVER_RXEN + * - \ref PIN_CAN1_TRANSCEIVER_RS + * - \ref PIN_CAN1_TXD + * - \ref PIN_CAN1_RXD + * - \ref PINS_CAN1 + */ +/** CAN0 transceiver PIN RS. */ +#define PIN_CAN0_TR_RS_IDX PIO_PE0_IDX +#define PIN_CAN0_TR_RS_FLAGS IOPORT_DIR_OUTPUT + +/** CAN0 transceiver PIN EN. */ +#define PIN_CAN0_TR_EN_IDX PIO_PE1_IDX +#define PIN_CAN0_TR_EN_FLAGS IOPORT_DIR_OUTPUT + +/** CAN0 PIN RX. */ +#define PIN_CAN0_RX_IDX PIO_PB3_IDX +#define PIN_CAN0_RX_FLAGS IOPORT_MODE_MUX_A + +/** CAN0 PIN TX. */ +#define PIN_CAN0_TX_IDX PIO_PB2_IDX +#define PIN_CAN0_TX_FLAGS IOPORT_MODE_MUX_A + +/** CAN1 transceiver PIN RS. */ +#define PIN_CAN1_TR_RS_IDX PIO_PE2_IDX +#define PIN_CAN1_TR_RS_FLAGS IOPORT_DIR_OUTPUT + +/** CAN1 transceiver PIN EN. */ +#define PIN_CAN1_TR_EN_IDX PIO_PE3_IDX +#define PIN_CAN1_TR_EN_FLAGS IOPORT_DIR_OUTPUT + +/** CAN1 PIN RX. */ +#define PIN_CAN1_RX_IDX PIO_PC12_IDX +#define PIN_CAN1_RX_FLAGS IOPORT_MODE_MUX_C + +/** CAN1 PIN TX. */ +#define PIN_CAN1_TX_IDX PIO_PC15_IDX +#define PIN_CAN1_TX_FLAGS IOPORT_MODE_MUX_C + +/** AFEC channel for potentiometer */ +#define AFEC_CHANNEL_POTENTIOMETER AFEC_CHANNEL_5 + +/*----------------------------------------------------------------------------*/ +#endif /* _SAM4E_EK_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/aat31xx/aat31xx.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/aat31xx/aat31xx.c new file mode 100644 index 000000000..6a5d4b387 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/aat31xx/aat31xx.c @@ -0,0 +1,137 @@ +/** + * \file + * + * \brief API driver for component aat31xx. + * + * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +/** + * \defgroup aat31xx_display_group Display - AAT31XX Controller + * + * Low-level driver for the AAT31XX LCD backlight controller. This driver provides access to the main + * features of the AAT31XX controller. + * + * \{ + */ + +#include "board.h" +#include "ioport.h" +#include "aat31xx.h" +#include "conf_aat31xx.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +#define DELAY_PULSE (0x18u) +#define DELAY_ENABLE (0x20000u) +#define DELAY_DISABLE (0x20000u) + +/** + * \brief Set the LCD backlight level. + * + * \param ul_level backlight level. + * + * \note pin BOARD_AAT31XX_SET_GPIO must be configured before calling aat31xx_set_backlight. + */ +void aat31xx_set_backlight(uint32_t ul_level) +{ + volatile uint32_t ul_delay; + uint32_t i; + +#ifdef CONF_BOARD_AAT3155 + ul_level = AAT31XX_MAX_BACKLIGHT_LEVEL - ul_level + 1; +#endif + +#ifdef CONF_BOARD_AAT3193 + ul_level = AAT31XX_MAX_BACKLIGHT_LEVEL - ul_level + 1; +#endif + + /* Ensure valid level */ + ul_level = (ul_level > AAT31XX_MAX_BACKLIGHT_LEVEL) ? AAT31XX_MAX_BACKLIGHT_LEVEL : ul_level; + ul_level = (ul_level < AAT31XX_MIN_BACKLIGHT_LEVEL) ? AAT31XX_MIN_BACKLIGHT_LEVEL : ul_level; + + /* Set new backlight level */ + for (i = 0; i < ul_level; i++) { + ioport_set_pin_level(BOARD_AAT31XX_SET_GPIO, IOPORT_PIN_LEVEL_LOW); + ul_delay = DELAY_PULSE; + while (ul_delay--) { + } + + ioport_set_pin_level(BOARD_AAT31XX_SET_GPIO, IOPORT_PIN_LEVEL_HIGH); + + ul_delay = DELAY_PULSE; + while (ul_delay--) { + } + } + + ul_delay = DELAY_ENABLE; + while (ul_delay--) { + } +} + +/** + * \brief Switch off backlight. + */ +void aat31xx_disable_backlight(void) +{ + volatile uint32_t ul_delay; + + ioport_set_pin_level(BOARD_AAT31XX_SET_GPIO, IOPORT_PIN_LEVEL_LOW); + + ul_delay = DELAY_DISABLE; + while (ul_delay--) { + } +} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \} + */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/aat31xx/aat31xx.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/aat31xx/aat31xx.h new file mode 100644 index 000000000..8d0397ba6 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/aat31xx/aat31xx.h @@ -0,0 +1,94 @@ +/** + * \file + * + * \brief API driver for component aat31xx. + * + * Copyright (c) 2011-2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef AAT31XX_H_INCLUDED +#define AAT31XX_H_INCLUDED + +#include "compiler.h" +#include "conf_board.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/* The minimum, average and maximum brightness level values */ +#ifdef CONF_BOARD_AAT3155 +#define AAT31XX_MIN_BACKLIGHT_LEVEL 1 +#define AAT31XX_AVG_BACKLIGHT_LEVEL 8 +#define AAT31XX_MAX_BACKLIGHT_LEVEL 16 +#endif +#ifdef CONF_BOARD_AAT3193 +#define AAT31XX_MIN_BACKLIGHT_LEVEL 1 +#define AAT31XX_AVG_BACKLIGHT_LEVEL 8 +#define AAT31XX_MAX_BACKLIGHT_LEVEL 16 +#endif +#ifdef CONF_BOARD_AAT3194 +#define AAT31XX_MIN_BACKLIGHT_LEVEL 1 +#define AAT31XX_AVG_BACKLIGHT_LEVEL 25 +#define AAT31XX_MAX_BACKLIGHT_LEVEL 32 +#endif + +/* No component found */ +#ifndef AAT31XX_MIN_BACKLIGHT_LEVEL +#warning Cannot configure AAT31XX. The component must be declared in conf_board.h first! +#define AAT31XX_MIN_BACKLIGHT_LEVEL 0 +#define AAT31XX_AVG_BACKLIGHT_LEVEL 0 +#define AAT31XX_MAX_BACKLIGHT_LEVEL 0 +#endif + +void aat31xx_set_backlight(uint32_t ul_level); +void aat31xx_disable_backlight(void); + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* AAT31XX_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili9325_regs.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili9325_regs.h new file mode 100644 index 000000000..6e0ac4fe0 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili9325_regs.h @@ -0,0 +1,646 @@ +/** + * \file + * + * \brief registers definition for ili9325 TFT display component. + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef ILI9325_REGS_H_INCLUDED +#define ILI9325_REGS_H_INCLUDED + +/** @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/** @endcond */ + +/** ili9325 LCD Registers */ + +/** Driver Code Read */ +#define ILI9325_DEVICE_CODE_REG (0x00u) + +/** ILI9325_START_OSC_CTRL : (Offset: 0x00) Start Oscillator Control*/ +#define ILI9325_START_OSC_CTRL (0x00u) +#define ILI9325_START_OSC_CTRL_EN (0x1u << 0) + +/** ILI9325_DRIVER_OUTPUT_CTRL1 : (Offset: 0x01) Driver Output Control 1*/ +#define ILI9325_DRIVER_OUTPUT_CTRL1 (0x01u) +#define ILI9325_DRIVER_OUTPUT_CTRL1_SS (0x1u << 8) +#define ILI9325_DRIVER_OUTPUT_CTRL1_SM (0x1u << 10) + +/** ILI9325_LCD_DRIVING_CTRL : (Offset: 0x02) LCD Driving Control */ +#define ILI9325_LCD_DRIVING_CTRL (0x02u) +#define ILI9325_LCD_DRIVING_CTRL_EOR (0x1u << 8) +#define ILI9325_LCD_DRIVING_CTRL_BC0 (0x1u << 9) +#define ILI9325_LCD_DRIVING_CTRL_BIT10 (0x1u << 10) + +/** ILI9325_ENTRY_MODE : (Offset: 0x03) Entry Mode*/ +#define ILI9325_ENTRY_MODE (0x03u) +#define ILI9325_ENTRY_MODE_AM (0x1u << 3) +#define ILI9325_ENTRY_MODE_ID_POS 4 +#define ILI9325_ENTRY_MODE_ID_MSK (0x3u << ILI9325_ENTRY_MODE_ID_POS) +#define ILI9325_ENTRY_MODE_ID(value) ((ILI9325_ENTRY_MODE_ID_MSK & \ + ((value) << ILI9325_ENTRY_MODE_ID_POS))) +#define ILI9325_ENTRY_MODE_ORG (0x1u << 7) +#define ILI9325_ENTRY_MODE_HWM (0x1u << 9) +#define ILI9325_ENTRY_MODE_BGR (0x1u << 12) +#define ILI9325_ENTRY_MODE_DFM (0x1u << 14) +#define ILI9325_ENTRY_MODE_TRI (0x1u << 15) + +/** ILI9325_RESIZE_CTRL : (Offset: 0x04) Resize Control */ +#define ILI9325_RESIZE_CTRL (0x04u) +#define ILI9325_RESIZE_CTRL_RSZ_POS 0 +#define ILI9325_RESIZE_CTRL_RSZ_MSK (0x3u << ILI9325_RESIZE_CTRL_RSZ_POS) +#define ILI9325_RESIZE_CTRL_RSZ(value) ((ILI9325_RESIZE_CTRL_RSZ_MSK & \ + ((value) << ILI9325_RESIZE_CTRL_RSZ_POS))) +#define ILI9325_RESIZE_CTRL_RCH_POS 4 +#define ILI9325_RESIZE_CTRL_RCH_MSK (0x3u << ILI9325_RESIZE_CTRL_RCH_POS) +#define ILI9325_RESIZE_CTRL_RCH(value) ((ILI9325_RESIZE_CTRL_RCH_MSK & \ + ((value) << ILI9325_RESIZE_CTRL_RCH_POS))) +#define ILI9325_RESIZE_CTRL_RCV_POS 8 +#define ILI9325_RESIZE_CTRL_RCV_MSK (0x3u << ILI9325_RESIZE_CTRL_RCV_POS) +#define ILI9325_RESIZE_CTRL_RCV(value) ((ILI9325_RESIZE_CTRL_RCV_MSK & \ + ((value) << ILI9325_RESIZE_CTRL_RCV_POS))) + +/** ILI9325_DISP_CTRL1 : (Offset: 0x07) Display Control 1 */ +#define ILI9325_DISP_CTRL1 (0x07u) +#define ILI9325_DISP_CTRL1_D_POS 0 +#define ILI9325_DISP_CTRL1_D_MSK (0x3u << ILI9325_DISP_CTRL1_D_POS) +#define ILI9325_DISP_CTRL1_D(value) ((ILI9325_DISP_CTRL1_D_MSK & \ + ((value) << ILI9325_DISP_CTRL1_D_POS))) +#define ILI9325_DISP_CTRL1_CL (0x1u << 3) +#define ILI9325_DISP_CTRL1_DTE (0x1u << 4) +#define ILI9325_DISP_CTRL1_GON (0x1u << 5) +#define ILI9325_DISP_CTRL1_BASEE (0x1u << 8) +#define ILI9325_DISP_CTRL1_PTDE_POS 12 +#define ILI9325_DISP_CTRL1_PTDE_MSK (0x3u << ILI9325_DISP_CTRL1_PTDE_POS) +#define ILI9325_DISP_CTRL1_PTDE(value) ((ILI9325_DISP_CTRL1_PTDE_MSK & \ + ((value) << ILI9325_DISP_CTRL1_PTDE_POS))) + +/** ILI9325_DISP_CTRL2 : (Offset: 0x08) Display Control 2 */ +#define ILI9325_DISP_CTRL2 (0x08u) +#define ILI9325_DISP_CTRL2_BP_POS 0 +#define ILI9325_DISP_CTRL2_BP_MSK (0xfu << ILI9325_DISP_CTRL2_BP_POS) +#define ILI9325_DISP_CTRL2_BP(value) ((ILI9325_DISP_CTRL2_BP_MSK & \ + ((value) << ILI9325_DISP_CTRL2_BP_POS))) +#define ILI9325_DISP_CTRL2_FP_POS 8 +#define ILI9325_DISP_CTRL2_FP_MSK (0xfu << ILI9325_DISP_CTRL2_FP_POS) +#define ILI9325_DISP_CTRL2_FP(value) ((ILI9325_DISP_CTRL2_FP_MSK & \ + ((value) << ILI9325_DISP_CTRL2_FP_POS))) + +/** ILI9325_DISP_CTRL3 : (Offset: 0x09) Display Control 3 */ +#define ILI9325_DISP_CTRL3 (0x09u) +#define ILI9325_DISP_CTRL3_ISC_POS 0 +#define ILI9325_DISP_CTRL3_ISC_MSK (0xfu << ILI9325_DISP_CTRL3_ISC_POS) +#define ILI9325_DISP_CTRL3_ISC(value) ((ILI9325_DISP_CTRL3_ISC_MSK & \ + ((value) << ILI9325_DISP_CTRL3_ISC_POS))) +#define ILI9325_DISP_CTRL3_PTG_POS 4 +#define ILI9325_DISP_CTRL3_PTG_MSK (0x3u << ILI9325_DISP_CTRL3_PTG_POS) +#define ILI9325_DISP_CTRL3_PTG(value) ((ILI9325_DISP_CTRL3_PTG_MSK & \ + ((value) << ILI9325_DISP_CTRL3_PTG_POS))) +#define ILI9325_DISP_CTRL3_PTS_POS 8 +#define ILI9325_DISP_CTRL3_PTS_MSK (0x7u << ILI9325_DISP_CTRL3_PTS_POS) +#define ILI9325_DISP_CTRL3_PTS(value) ((ILI9325_DISP_CTRL3_PTS_MSK & \ + ((value) << ILI9325_DISP_CTRL3_PTS_POS))) + +/** ILI9325_DISP_CTRL4 : (Offset: 0x0A) Display Control 4 */ +#define ILI9325_DISP_CTRL4 (0x0Au) +#define ILI9325_DISP_CTRL4_FMI_POS 0 +#define ILI9325_DISP_CTRL4_FMI_MSK (0x7u << ILI9325_DISP_CTRL4_FMI_POS) +#define ILI9325_DISP_CTRL4_FMI(value) ((ILI9325_DISP_CTRL4_FMI_MSK & \ + ((value) << ILI9325_DISP_CTRL4_FMI_POS))) +#define ILI9325_DISP_CTRL4_FMARKOE (0x1u << 3) + +/** ILI9325_RGB_DISP_INTERFACE_CTRL1 : (Offset: 0x0C) RGB Display + *Interface Control 1 */ +#define ILI9325_RGB_DISP_INTERFACE_CTRL1 (0x0Cu) +#define ILI9325_RGB_DISP_INTERFACE_CTRL1_RIM_POS 0 +#define ILI9325_RGB_DISP_INTERFACE_CTRL1_RIM_MSK (0x3u << \ + ILI9325_RGB_DISP_INTERFACE_CTRL1_RIM_POS) +#define ILI9325_RGB_DISP_INTERFACE_CTRL1_RIM(value) (( \ + ILI9325_RGB_DISP_INTERFACE_CTRL1_RIM_MSK & \ + ((value) << ILI9325_RGB_DISP_INTERFACE_CTRL1_RIM_POS))) +#define ILI9325_RGB_DISP_INTERFACE_CTRL1_DM0 (0x1u << 4) +#define ILI9325_RGB_DISP_INTERFACE_CTRL1_DM1 (0x1u << 5) +#define ILI9325_RGB_DISP_INTERFACE_CTRL1_DM_POS 4 +#define ILI9325_RGB_DISP_INTERFACE_CTRL1_DM_MSK (0x3u << \ + ILI9325_RGB_DISP_INTERFACE_CTRL1_DM_POS) +#define ILI9325_RGB_DISP_INTERFACE_CTRL1_DM(value) (( \ + ILI9325_RGB_DISP_INTERFACE_CTRL1_DM_MSK & \ + ((value) << ILI9325_RGB_DISP_INTERFACE_CTRL1_DM_POS))) +#define ILI9325_RGB_DISP_INTERFACE_CTRL1_RM (0x1u << 8) +#define ILI9325_RGB_DISP_INTERFACE_CTRL1_ENC_POS 12 +#define ILI9325_RGB_DISP_INTERFACE_CTRL1_ENC_MSK (0x7u << \ + ILI9325_RGB_DISP_INTERFACE_CTRL1_ENC_POS) +#define ILI9325_RGB_DISP_INTERFACE_CTRL1_ENC(value) (( \ + ILI9325_RGB_DISP_INTERFACE_CTRL1_ENC_MSK & \ + ((value) < ILI9325_RGB_DISP_INTERFACE_CTRL1_ENC_POS))) + +/** ILI9325_FRAME_MAKER_POS : (Offset: 0x0D) Frame Maker Position */ +#define ILI9325_FRAME_MAKER_POS (0x0Du) +#define ILI9325_FRAME_MAKER_POS_FMP_POS 0 +#define ILI9325_FRAME_MAKER_POS_FMP_MSK (0x1ffu << \ + ILI9325_FRAME_MAKER_POS_FMP_POS) +#define ILI9325_FRAME_MAKER_POS_FMP(value) ((ILI9325_FRAME_MAKER_POS_FMP_MSK & \ + ((value) << ILI9325_FRAME_MAKER_POS_FMP_POS))) + +/** ILI9325_RGB_DISP_INTERFACE_CTRL2 : (Offset: 0x0F) RGB Display + * Interface Control 2 */ +#define ILI9325_RGB_DISP_INTERFACE_CTRL2 (0x0Fu) +#define ILI9325_RGB_DISP_INTERFACE_CTRL2_EPL (0x1u << 0) +#define ILI9325_RGB_DISP_INTERFACE_CTRL2_DPL (0x1u << 1) +#define ILI9325_RGB_DISP_INTERFACE_CTRL2_HSPL (0x1u << 3) +#define ILI9325_RGB_DISP_INTERFACE_CTRL2_VSPL (0x1u << 4) + +/** ILI9325_POWER_CTRL1 : (Offset: 0x10) Power Control 1 */ +#define ILI9325_POWER_CTRL1 (0x10u) +#define ILI9325_POWER_CTRL1_STB (0x1u << 0) +#define ILI9325_POWER_CTRL1_SLP (0x1u << 1) +#define ILI9325_POWER_CTRL1_DSTB (0x1u << 2) +#define ILI9325_POWER_CTRL1_AP_POS 4 +#define ILI9325_POWER_CTRL1_AP_MSK (0x7u << ILI9325_POWER_CTRL1_AP_POS) +#define ILI9325_POWER_CTRL1_AP(value) ((ILI9325_POWER_CTRL1_AP_MSK & \ + ((value) << ILI9325_POWER_CTRL1_AP_POS))) +#define ILI9325_POWER_CTRL1_APE (0x1u << 7) +#define ILI9325_POWER_CTRL1_BT_POS 8 +#define ILI9325_POWER_CTRL1_BT_MSK (0x7u << ILI9325_POWER_CTRL1_BT_POS) +#define ILI9325_POWER_CTRL1_BT(value) ((ILI9325_POWER_CTRL1_BT_MSK & \ + ((value) << ILI9325_POWER_CTRL1_BT_POS))) +#define ILI9325_POWER_CTRL1_SAP (0x1u << 12) + +/** ILI9325_POWER_CTRL2 : (Offset: 0x11) Power Control 2 */ +#define ILI9325_POWER_CTRL2 (0x11u) +#define ILI9325_POWER_CTRL2_VC_POS 0 +#define ILI9325_POWER_CTRL2_VC_MSK (0x7u << ILI9325_POWER_CTRL2_VC_POS) +#define ILI9325_POWER_CTRL2_VC(value) ((ILI9325_POWER_CTRL2_VC_MSK & \ + ((value) << ILI9325_POWER_CTRL2_VC_POS))) +#define ILI9325_POWER_CTRL2_DC0_POS 4 +#define ILI9325_POWER_CTRL2_DC0_MSK (0x7u << ILI9325_POWER_CTRL2_DC0_POS) +#define ILI9325_POWER_CTRL2_DC0(value) ((ILI9325_POWER_CTRL2_DC0_MSK & \ + ((value) << ILI9325_POWER_CTRL2_DC0_POS))) +#define ILI9325_POWER_CTRL2_DC1_POS 8 +#define ILI9325_POWER_CTRL2_DC1_MSK (0x7u << ILI9325_POWER_CTRL2_DC1_POS) +#define ILI9325_POWER_CTRL2_DC1(value) ((ILI9325_POWER_CTRL2_DC1_MSK & \ + ((value) << ILI9325_POWER_CTRL2_DC1_POS))) + +/** ILI9325_POWER_CTRL3 : (Offset: 0x12) Power Control 3 */ +#define ILI9325_POWER_CTRL3 (0x12u) +#define ILI9325_POWER_CTRL3_VRH_POS 0 +#define ILI9325_POWER_CTRL3_VRH_MSK (0xfu << ILI9325_POWER_CTRL3_VRH_POS) +#define ILI9325_POWER_CTRL3_VRH(value) ((ILI9325_POWER_CTRL3_VRH_MSK & \ + ((value) << ILI9325_POWER_CTRL3_VRH_POS))) +#define ILI9325_POWER_CTRL3_PON (0x1u << 4) +#define ILI9325_POWER_CTRL3_VCIRE (0x1u << 7) + +/** ILI9325_POWER_CTRL4 : (Offset: 0x13) Power Control 4 */ +#define ILI9325_POWER_CTRL4 (0x13u) +#define ILI9325_POWER_CTRL4_VDV_POS 8 +#define ILI9325_POWER_CTRL4_VDV_MSK (0x1fu << ILI9325_POWER_CTRL4_VDV_POS) +#define ILI9325_POWER_CTRL4_VDV(value) ((ILI9325_POWER_CTRL4_VDV_MSK & \ + ((value) << ILI9325_POWER_CTRL4_VDV_POS))) + +/** ILI9325_HORIZONTAL_GRAM_ADDR_SET : (Offset: 0x20) Horizontal GRAM + * Address Set */ +#define ILI9325_HORIZONTAL_GRAM_ADDR_SET (0x20u) +#define ILI9325_HORIZONTAL_GRAM_ADDR_SET_AD_POS 0 +#define ILI9325_HORIZONTAL_GRAM_ADDR_SET_AD_MSK (0xffu << \ + ILI9325_HORIZONTAL_GRAM_ADDR_SET_AD_POS) +#define ILI9325_HORIZONTAL_GRAM_ADDR_SET_AD(value) (( \ + ILI9325_HORIZONTAL_GRAM_ADDR_SET_AD_MSK & \ + ((value) << ILI9325_HORIZONTAL_GRAM_ADDR_SET_AD_POS))) + +/** ILI9325_VERTICAL_GRAM_ADDR_SET : (Offset: 0x21) Vertical GRAM + * Address Set */ +#define ILI9325_VERTICAL_GRAM_ADDR_SET (0x21u) +#define ILI9325_VERTICAL_GRAM_ADDR_SET_AD_POS 0 +#define ILI9325_VERTICAL_GRAM_ADDR_SET_AD_MSK (0xffu << \ + ILI9325_VERTICAL_GRAM_ADDR_SET_AD_POS) +#define ILI9325_VERTICAL_GRAM_ADDR_SET_AD(value) (( \ + ILI9325_VERTICAL_GRAM_ADDR_SET_AD_MSK & \ + ((value) << ILI9325_VERTICAL_GRAM_ADDR_SET_AD_POS))) + +/** ILI9325_GRAM_DATA_REG : (Offset: 0x22) GRAM Data Register */ +#define ILI9325_GRAM_DATA_REG (0x22u) + +/** ILI9325_POWER_CTRL7 : (Offset: 0x29) Power Control 7 */ +#define ILI9325_POWER_CTRL7 (0x29u) +#define ILI9325_POWER_CTRL7_VCM_POS 0 +#define ILI9325_POWER_CTRL7_VCM_MSK (0x3fu << ILI9325_POWER_CTRL7_VCM_POS) +#define ILI9325_POWER_CTRL7_VCM(value) ((ILI9325_POWER_CTRL7_VCM_MSK & \ + ((value) << ILI9325_POWER_CTRL7_VCM_POS))) + +/** ILI9325_FRAME_RATE_AND_COLOR_CTRL : (Offset: 0x2B) Frame Rate and + * Color Control */ +#define ILI9325_FRAME_RATE_AND_COLOR_CTRL (0x2Bu) +#define ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS_POS 0 +#define ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS_MSK (0xfu << \ + ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS_POS) +#define ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS(value) (( \ + ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS_MSK & \ + ((value) << ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS_POS))) + +/** ILI9325_GAMMA_CTL1 : (Offset: 0x30) Gamma Control 1 */ +#define ILI9325_GAMMA_CTL1 (0x30u) +#define ILI9325_GAMMA_CTL1_KP0_POS 0 +#define ILI9325_GAMMA_CTL1_KP0_MSK (0x7u << ILI9325_GAMMA_CTL1_KP0_POS) +#define ILI9325_GAMMA_CTL1_KP0(value) ((ILI9325_GAMMA_CTL1_KP0_MSK & \ + ((value) << ILI9325_GAMMA_CTL1_KP0_POS))) +#define ILI9325_GAMMA_CTL1_KP1_POS 8 +#define ILI9325_GAMMA_CTL1_KP1_MSK (0x7u << ILI9325_GAMMA_CTL1_KP1_POS) +#define ILI9325_GAMMA_CTL1_KP1(value) ((ILI9325_GAMMA_CTL1_KP1_MSK & \ + ((value) << ILI9325_GAMMA_CTL1_KP1_POS))) + +/** ILI9325_GAMMA_CTL2 : (Offset: 0x31) Gamma Control 2 */ +#define ILI9325_GAMMA_CTL2 (0x31u) +#define ILI9325_GAMMA_CTL2_KP2_POS 0 +#define ILI9325_GAMMA_CTL2_KP2_MSK (0x7u << ILI9325_GAMMA_CTL2_KP2_POS) +#define ILI9325_GAMMA_CTL2_KP2(value) ((ILI9325_GAMMA_CTL2_KP2_MSK & \ + ((value) << ILI9325_GAMMA_CTL2_KP2_POS))) +#define ILI9325_GAMMA_CTL2_KP3_POS 8 +#define ILI9325_GAMMA_CTL2_KP3_MSK (0x7u << ILI9325_GAMMA_CTL2_KP3_POS) +#define ILI9325_GAMMA_CTL2_KP3(value) ((ILI9325_GAMMA_CTL2_KP3_MSK & \ + ((value) << ILI9325_GAMMA_CTL2_KP3_POS))) + +/** ILI9325_GAMMA_CTL3 : (Offset: 0x32) Gamma Control 3 */ +#define ILI9325_GAMMA_CTL3 (0x32u) +#define ILI9325_GAMMA_CTL3_KP4_POS 0 +#define ILI9325_GAMMA_CTL3_KP4_MSK (0x7u << ILI9325_GAMMA_CTL3_KP4_POS) +#define ILI9325_GAMMA_CTL3_KP4(value) ((ILI9325_GAMMA_CTL3_KP4_MSK & \ + ((value) << ILI9325_GAMMA_CTL3_KP4_POS))) +#define ILI9325_GAMMA_CTL3_KP5_POS 8 +#define ILI9325_GAMMA_CTL3_KP5_MSK (0x7u << ILI9325_GAMMA_CTL3_KP5_POS) +#define ILI9325_GAMMA_CTL3_KP5(value) ((ILI9325_GAMMA_CTL3_KP5_MSK & \ + ((value) << ILI9325_GAMMA_CTL3_KP5_POS))) + +/** ILI9325_GAMMA_CTL4 : (Offset: 0x35) Gamma Control 4 */ +#define ILI9325_GAMMA_CTL4 (0x35u) +#define ILI9325_GAMMA_CTL4_RP0_POS 0 +#define ILI9325_GAMMA_CTL4_RP0_MSK (0x7u << ILI9325_GAMMA_CTL4_RP0_POS) +#define ILI9325_GAMMA_CTL4_RP0(value) ((ILI9325_GAMMA_CTL4_RP0_MSK & \ + ((value) << ILI9325_GAMMA_CTL4_RP0_POS))) +#define ILI9325_GAMMA_CTL4_RP1_POS 8 +#define ILI9325_GAMMA_CTL4_RP1_MSK (0x7u << ILI9325_GAMMA_CTL4_RP1_POS) +#define ILI9325_GAMMA_CTL4_RP1(value) ((ILI9325_GAMMA_CTL4_RP1_MSK & \ + ((value) << ILI9325_GAMMA_CTL4_RP1_POS))) + +/** ILI9325_GAMMA_CTL5 : (Offset: 0x36) Gamma Control 5 */ +#define ILI9325_GAMMA_CTL5 (0x36u) +#define ILI9325_GAMMA_CTL5_VRP0_POS 0 +#define ILI9325_GAMMA_CTL5_VRP0_MSK (0xfu << ILI9325_GAMMA_CTL5_VRP0_POS) +#define ILI9325_GAMMA_CTL5_VRP0(value) ((ILI9325_GAMMA_CTL5_VRP0_MSK & \ + ((value) << ILI9325_GAMMA_CTL5_VRP0_POS))) +#define ILI9325_GAMMA_CTL5_VRP1_POS 8 +#define ILI9325_GAMMA_CTL5_VRP1_MSK (0x1fu << ILI9325_GAMMA_CTL5_VRP1_POS) +#define ILI9325_GAMMA_CTL5_VRP1(value) ((ILI9325_GAMMA_CTL5_VRP1_MSK & \ + ((value) << ILI9325_GAMMA_CTL5_VRP1_POS))) + +/** ILI9325_GAMMA_CTL6 : (Offset: 0x37) Gamma Control 6*/ +#define ILI9325_GAMMA_CTL6 (0x37u) +#define ILI9325_GAMMA_CTL6_KN0_POS 0 +#define ILI9325_GAMMA_CTL6_KN0_MSK (0x7u << ILI9325_GAMMA_CTL6_KN0_POS) +#define ILI9325_GAMMA_CTL6_KN0(value) ((ILI9325_GAMMA_CTL6_KN0_MSK & \ + ((value) << ILI9325_GAMMA_CTL6_KN0_POS))) +#define ILI9325_GAMMA_CTL6_KN1_POS 8 +#define ILI9325_GAMMA_CTL6_KN1_MSK (0x7u << ILI9325_GAMMA_CTL6_KN1_POS) +#define ILI9325_GAMMA_CTL6_KN1(value) ((ILI9325_GAMMA_CTL6_KN1_MSK \ + & ((value) << ILI9325_GAMMA_CTL6_KN1_POS))) + +/** ILI9325_GAMMA_CTL7 : (Offset: 0x38) Gamma Control 7*/ +#define ILI9325_GAMMA_CTL7 (0x38u) +#define ILI9325_GAMMA_CTL7_KN2_POS 0 +#define ILI9325_GAMMA_CTL7_KN2_MSK (0x7u << ILI9325_GAMMA_CTL7_KN2_POS) +#define ILI9325_GAMMA_CTL7_KN2(value) ((ILI9325_GAMMA_CTL7_KN2_MSK & \ + ((value) << ILI9325_GAMMA_CTL7_KN2_POS))) +#define ILI9325_GAMMA_CTL7_KN3_POS 8 +#define ILI9325_GAMMA_CTL7_KN3_MSK (0x7u << ILI9325_GAMMA_CTL7_KN3_POS) +#define ILI9325_GAMMA_CTL7_KN3(value) ((ILI9325_GAMMA_CTL7_KN3_MSK & \ + ((value) << ILI9325_GAMMA_CTL7_KN3_POS))) + +/** ILI9325_GAMMA_CTL8 : (Offset: 0x39) Gamma Control 8*/ +#define ILI9325_GAMMA_CTL8 (0x39u) +#define ILI9325_GAMMA_CTL8_KN4_POS 0 +#define ILI9325_GAMMA_CTL8_KN4_MSK (0x7u << ILI9325_GAMMA_CTL8_KN4_POS) +#define ILI9325_GAMMA_CTL8_KN4(value) ((ILI9325_GAMMA_CTL8_KN4_MSK & \ + ((value) << ILI9325_GAMMA_CTL8_KN4_POS))) +#define ILI9325_GAMMA_CTL8_KN5_POS 8 +#define ILI9325_GAMMA_CTL8_KN5_MSK (0x7u << ILI9325_GAMMA_CTL8_KN5_POS) +#define ILI9325_GAMMA_CTL8_KN5(value) ((ILI9325_GAMMA_CTL8_KN5_MSK & \ + ((value) << ILI9325_GAMMA_CTL8_KN5_POS))) + +/** ILI9325_GAMMA_CTL9 : (Offset: 0x3C) Gamma Control 9*/ +#define ILI9325_GAMMA_CTL9 (0x3Cu) +#define ILI9325_GAMMA_CTL9_RN0_POS 0 +#define ILI9325_GAMMA_CTL9_RN0_MSK (0x7u << ILI9325_GAMMA_CTL9_RN0_POS) +#define ILI9325_GAMMA_CTL9_RN0(value) ((ILI9325_GAMMA_CTL9_RN0_MSK & \ + ((value) << ILI9325_GAMMA_CTL9_RN0_POS))) +#define ILI9325_GAMMA_CTL9_RN1_POS 8 +#define ILI9325_GAMMA_CTL9_RN1_MSK (0x7u << ILI9325_GAMMA_CTL9_RN1_POS) +#define ILI9325_GAMMA_CTL9_RN1(value) ((ILI9325_GAMMA_CTL9_RN1_MSK & \ + ((value) << ILI9325_GAMMA_CTL9_RN1_POS))) + +/** ILI9325_GAMMA_CTL10 : (Offset: 0x3D) Gamma Control 10*/ +#define ILI9325_GAMMA_CTL10 (0x3Du) +#define ILI9325_GAMMA_CTL10_VRN0_POS 0 +#define ILI9325_GAMMA_CTL10_VRN0_MSK (0xfu << ILI9325_GAMMA_CTL10_VRN0_POS) +#define ILI9325_GAMMA_CTL10_VRN0(value) ((ILI9325_GAMMA_CTL10_VRN0_MSK & \ + ((value) << ILI9325_GAMMA_CTL10_VRN0_POS))) +#define ILI9325_GAMMA_CTL10_VRN1_POS 8 +#define ILI9325_GAMMA_CTL10_VRN1_MSK (0x1fu << \ + ILI9325_GAMMA_CTL10_VRN1_POS) +#define ILI9325_GAMMA_CTL10_VRN1(value) ((ILI9325_GAMMA_CTL10_VRN1_MSK & \ + ((value) << ILI9325_GAMMA_CTL10_VRN1_POS))) + +/** + * ILI9325_HORIZONTAL_ADDR_START : (Offset: 0x50) Horizontal Address + * Start Position + */ +#define ILI9325_HORIZONTAL_ADDR_START (0x50u) +#define ILI9325_HORIZONTAL_ADDR_START_HSA_POS 0 +#define ILI9325_HORIZONTAL_ADDR_START_HSA_MSK (0xffu << \ + ILI9325_HORIZONTAL_ADDR_START_HSA_POS) +#define ILI9325_HORIZONTAL_ADDR_START_HSA(value) (( \ + ILI9325_HORIZONTAL_ADDR_START_HSA_MSK & \ + ((value) << ILI9325_HORIZONTAL_ADDR_START_HSA_POS))) + +/** + * ILI9325_HORIZONTAL_ADDR_END : (Offset: 0x51) Horizontal Address End + * Position + */ +#define ILI9325_HORIZONTAL_ADDR_END (0x51u) +#define ILI9325_HORIZONTAL_ADDR_END_HEA_POS 0 +#define ILI9325_HORIZONTAL_ADDR_END_HEA_MSK (0xffu << \ + ILI9325_HORIZONTAL_ADDR_END_HEA_POS) +#define ILI9325_HORIZONTAL_ADDR_END_HEA(value) (( \ + ILI9325_HORIZONTAL_ADDR_END_HEA_MSK & \ + ((value) << ILI9325_HORIZONTAL_ADDR_END_HEA_POS))) + +/** + * ILI9325_VERTICAL_ADDR_START : (Offset: 0x52) Vertical Address Start + * Position + */ +#define ILI9325_VERTICAL_ADDR_START (0x52u) +#define ILI9325_VERTICAL_ADDR_START_VSA_POS 0 +#define ILI9325_VERTICAL_ADDR_START_VSA_MSK (0x1ffu << \ + ILI9325_VERTICAL_ADDR_START_VSA_POS) +#define ILI9325_VERTICAL_ADDR_START_VSA(value) (( \ + ILI9325_VERTICAL_ADDR_START_VSA_MSK & \ + ((value) << ILI9325_VERTICAL_ADDR_START_VSA_POS))) + +/** + * ILI9325_VERTICAL_ADDR_END : (Offset: 0x53) Vertical Address End + * Position + */ +#define ILI9325_VERTICAL_ADDR_END (0x53u) +#define ILI9325_VERTICAL_ADDR_END_VEA_POS 0 +#define ILI9325_VERTICAL_ADDR_END_VEA_MSK (0x1ffu << \ + ILI9325_VERTICAL_ADDR_END_VEA_POS) +#define ILI9325_VERTICAL_ADDR_END_VEA(value) ((ILI9325_VERTICAL_ADDR_END_VEA_MSK \ + & ((value) << ILI9325_VERTICAL_ADDR_END_VEA_POS))) + +/** + * ILI9325_DRIVER_OUTPUT_CTRL2 : (Offset: 0x60) Driver Output + * Control 2 + */ +#define ILI9325_DRIVER_OUTPUT_CTRL2 (0x60u) +#define ILI9325_DRIVER_OUTPUT_CTRL2_SCN_POS 0 +#define ILI9325_DRIVER_OUTPUT_CTRL2_SCN_MSK (0x3fu << \ + ILI9325_DRIVER_OUTPUT_CTRL2_SCN_POS) +#define ILI9325_DRIVER_OUTPUT_CTRL2_SCN(value) (( \ + ILI9325_DRIVER_OUTPUT_CTRL2_SCN_MSK & \ + ((value) << ILI9325_DRIVER_OUTPUT_CTRL2_SCN_POS))) +#define ILI9325_DRIVER_OUTPUT_CTRL2_NL_POS 8 +#define ILI9325_DRIVER_OUTPUT_CTRL2_NL_MSK (0x3fu << \ + ILI9325_DRIVER_OUTPUT_CTRL2_NL_POS) +#define ILI9325_DRIVER_OUTPUT_CTRL2_NL(value) (( \ + ILI9325_DRIVER_OUTPUT_CTRL2_NL_MSK & \ + ((value) << ILI9325_DRIVER_OUTPUT_CTRL2_NL_POS))) +#define ILI9325_DRIVER_OUTPUT_CTRL2_GS (0x1u << 15) + +/** + * ILI9325_BASE_IMG_DISP_CTRL : (Offset: 0x61) Base Image Display + * Control + */ +#define ILI9325_BASE_IMG_DISP_CTRL (0x61u) +#define ILI9325_BASE_IMG_DISP_CTRL_REV (0x1u << 0) +#define ILI9325_BASE_IMG_DISP_CTRL_VLE (0x1u << 1) +#define ILI9325_BASE_IMG_DISP_CTRL_NDL (0x1u << 2) + +/** + * ILI9325_VERTICAL_SCROLL_CTRL : (Offset: 0x6A) Vertical Scroll + * Control + */ +#define ILI9325_VERTICAL_SCROLL_CTRL (0x6Au) +#define ILI9325_VERTICAL_SCROLL_CTRL_VL_POS 0 +#define ILI9325_VERTICAL_SCROLL_CTRL_VL_MSK (0x1ffu << \ + ILI9325_VERTICAL_SCROLL_CTRL_VL_POS) +#define ILI9325_VERTICAL_SCROLL_CTRL_VL(value) (( \ + ILI9325_VERTICAL_SCROLL_CTRL_VL_MSK & \ + ((value) << ILI9325_VERTICAL_SCROLL_CTRL_VL_POS))) + +/** + * ILI9325_PARTIAL_IMG1_DISP_POS : (Offset: 0x80) Partial Image 1 + * Display Position + */ +#define ILI9325_PARTIAL_IMG1_DISP_POS (0x80u) +#define ILI9325_PARTIAL_IMG1_DISP_POS_PTDP0_POS 0 +#define ILI9325_PARTIAL_IMG1_DISP_POS_PTDP0_MSK (0x1ffu << \ + ILI9325_PARTIAL_IMG1_DISP_POS_PTDP0_POS) +#define ILI9325_PARTIAL_IMG1_DISP_POS_PTDP0(value) (( \ + ILI9325_PARTIAL_IMG1_DISP_POS_PTDP0_MSK & \ + ((value) << ILI9325_PARTIAL_IMG1_DISP_POS_PTDP0_POS))) + +/** + * ILI9325_PARTIAL_IMG1_AREA_START_LINE : (Offset: 0x81) Partial Image + * 1 Area (Start Line) + */ +#define ILI9325_PARTIAL_IMG1_AREA_START_LINE (0x81u) +#define ILI9325_PARTIAL_IMG1_AREA_START_LINE_PTSA0_POS 0 +#define ILI9325_PARTIAL_IMG1_AREA_START_LINE_PTSA0_MSK (0x1ffu << \ + ILI9325_PARTIAL_IMG1_AREA_START_LINE_PTSA0_POS) +#define ILI9325_PARTIAL_IMG1_AREA_START_LINE_PTSA0(value) (( \ + ILI9325_PARTIAL_IMG1_AREA_START_LINE_PTSA0_MSK & \ + ((value) << \ + ILI9325_PARTIAL_IMG1_AREA_START_LINE_PTSA0_POS))) + +/** + * ILI9325_PARTIAL_IMG1_AREA_END_LINE : (Offset: 0x82) Partial Image 1 + * Area (End Line) + */ +#define ILI9325_PARTIAL_IMG1_AREA_END_LINE (0x82u) +#define ILI9325_PARTIAL_IMG1_AREA_END_LINE_PTEA0_POS 0 +#define ILI9325_PARTIAL_IMG1_AREA_END_LINE_PTEA0_MSK (0x1ffu << \ + ILI9325_PARTIAL_IMG1_AREA_END_LINE_PTEA0_POS) +#define ILI9325_PARTIAL_IMG1_AREA_END_LINE_PTEA0(value) (( \ + ILI9325_PARTIAL_IMG1_AREA_END_LINE_PTEA0_MSK & \ + ((value) << \ + ILI9325_PARTIAL_IMG1_AREA_END_LINE_PTEA0_POS))) + +/** + * ILI9325_PARTIAL_IMG2_DISP_POS : (Offset: 0x83) Partial Image 2 + * Display Position + */ +#define ILI9325_PARTIAL_IMG2_DISP_POS (0x83u) +#define ILI9325_PARTIAL_IMG2_DISP_POS_PTDP1_POS 0 +#define ILI9325_PARTIAL_IMG2_DISP_POS_PTDP1_MSK (0x1ffu << \ + ILI9325_PARTIAL_IMG2_DISP_POS_PTDP1_POS) +#define ILI9325_PARTIAL_IMG2_DISP_POS_PTDP1(value) (( \ + ILI9325_PARTIAL_IMG2_DISP_POS_PTDP1_MSK & \ + ((value) << ILI9325_PARTIAL_IMG2_DISP_POS_PTDP1_POS))) + +/** + * ILI9325_PARTIAL_IMG2_AREA_START_LINE : (Offset: 0x84) Partial Image + * 2 Area (Start Line) + */ +#define ILI9325_PARTIAL_IMG2_AREA_START_LINE (0x84u) +#define ILI9325_PARTIAL_IMG2_AREA_START_LINE_PTSA1_POS 0 +#define ILI9325_PARTIAL_IMG2_AREA_START_LINE_PTSA1_MSK (0x1ffu << \ + ILI9325_PARTIAL_IMG2_AREA_START_LINE_PTSA1_POS) +#define ILI9325_PARTIAL_IMG2_AREA_START_LINE_PTSA1(value) (( \ + ILI9325_PARTIAL_IMG2_AREA_START_LINE_PTSA1_MSK & \ + ((value) << \ + ILI9325_PARTIAL_IMG2_AREA_START_LINE_PTSA1_POS))) + +/** + * ILI9325_PARTIAL_IMG2_AREA_END_LINE : (Offset: 0x85) Partial Image 2 + * Area (End Line) + */ +#define ILI9325_PARTIAL_IMG2_AREA_END_LINE (0x85u) +#define ILI9325_PARTIAL_IMG2_AREA_END_LINE_PTEA1_POS 0 +#define ILI9325_PARTIAL_IMG2_AREA_END_LINE_PTEA1_MSK (0x1ffu << \ + ILI9325_PARTIAL_IMG2_AREA_END_LINE_PTEA1_POS) +#define ILI9325_PARTIAL_IMG2_AREA_END_LINE_PTEA1(value) (( \ + ILI9325_PARTIAL_IMG2_AREA_END_LINE_PTEA1_MSK & \ + ((value) << \ + ILI9325_PARTIAL_IMG2_AREA_END_LINE_PTEA1_POS))) + +/** + * ILI9325_PANEL_INTERFACE_CTRL1 : (Offset: 0x90) Panel Interface + * Control 1 + */ +#define ILI9325_PANEL_INTERFACE_CTRL1 (0x90u) +#define ILI9325_PANEL_INTERFACE_CTRL1_RTNI_POS 0 +#define ILI9325_PANEL_INTERFACE_CTRL1_RTNI_MSK (0x1fu << \ + ILI9325_PANEL_INTERFACE_CTRL1_RTNI_POS) +#define ILI9325_PANEL_INTERFACE_CTRL1_RTNI(value) (( \ + ILI9325_PANEL_INTERFACE_CTRL1_RTNI_MSK & \ + ((value) << ILI9325_PANEL_INTERFACE_CTRL1_RTNI_POS))) +#define ILI9325_PANEL_INTERFACE_CTRL1_DIVI_POS 8 +#define ILI9325_PANEL_INTERFACE_CTRL1_DIVI_MSK (0x3u << \ + ILI9325_PANEL_INTERFACE_CTRL1_DIVI_POS) +#define ILI9325_PANEL_INTERFACE_CTRL1_DIVI(value) (( \ + ILI9325_PANEL_INTERFACE_CTRL1_DIVI_MSK & \ + ((value) << ILI9325_PANEL_INTERFACE_CTRL1_DIVI_POS))) + +/** + * ILI9325_PANEL_INTERFACE_CTRL2 : (Offset: 0x92) Panel Interface + * Control 2 + */ +#define ILI9325_PANEL_INTERFACE_CTRL2 (0x92u) +#define ILI9325_PANEL_INTERFACE_CTRL2_NOWI_POS 8 +#define ILI9325_PANEL_INTERFACE_CTRL2_NOWI_MSK (0x7u << \ + ILI9325_PANEL_INTERFACE_CTRL2_NOWI_POS) +#define ILI9325_PANEL_INTERFACE_CTRL2_NOWI(value) (( \ + ILI9325_PANEL_INTERFACE_CTRL2_NOWI_MSK & \ + ((value) << ILI9325_PANEL_INTERFACE_CTRL2_NOWI_POS))) + +/** + * ILI9325_PANEL_INTERFACE_CTRL4 : (Offset: 0x95) Panel Interface + * Control 4 + */ +#define ILI9325_PANEL_INTERFACE_CTRL4 (0x95u) +#define ILI9325_PANEL_INTERFACE_CTRL4_RTNE_POS 0 +#define ILI9325_PANEL_INTERFACE_CTRL4_RTNE_MSK (0x3fu << \ + ILI9325_PANEL_INTERFACE_CTRL4_RTNE_POS) +#define ILI9325_PANEL_INTERFACE_CTRL4_RTNE(value) (( \ + ILI9325_PANEL_INTERFACE_CTRL4_RTNE_MSK & \ + ((value) << ILI9325_PANEL_INTERFACE_CTRL4_RTNE_POS))) +#define ILI9325_PANEL_INTERFACE_CTRL4_DIVE_POS 8 +#define ILI9325_PANEL_INTERFACE_CTRL4_DIVE_MSK (0x3u << \ + ILI9325_PANEL_INTERFACE_CTRL4_DIVE_POS) +#define ILI9325_PANEL_INTERFACE_CTRL4_DIVE(value) (( \ + ILI9325_PANEL_INTERFACE_CTRL4_DIVE_MSK & \ + ((value) << ILI9325_PANEL_INTERFACE_CTRL4_DIVE_POS))) + +/** ILI9325_OTP_VCM_PROG_CTRL : (Offset: 0xA1) OTP VCM Programming Control */ +#define ILI9325_OTP_VCM_PROG_CTRL (0xA1u) +#define ILI9325_OTP_VCM_PROG_CTRL_VCM_OTP_POS 0 +#define ILI9325_OTP_VCM_PROG_CTRL_VCM_OTP_MSK (0x3fu << \ + ILI9325_OTP_VCM_PROG_CTRL_VCM_OTP_POS) +#define ILI9325_OTP_VCM_PROG_CTRL_VCM_OTP(value) (( \ + ILI9325_OTP_VCM_PROG_CTRL_VCM_OTP_MSK & \ + ((value) << ILI9325_OTP_VCM_PROG_CTRL_VCM_OTP_POS))) +#define ILI9325_OTP_VCM_PROG_CTRL_OTP_PGM_EN (0x1u << 11) + +/** ILI9325_OTP_VCM_STATUS_AND_ENABLE : (Offset: 0xA2) OTP VCM Status + * and Enable */ +#define ILI9325_OTP_VCM_STATUS_AND_ENABLE (0xA2u) +#define ILI9325_OTP_VCM_STATUS_AND_ENABLE_VCM_EN (0x1u << 0) +#define ILI9325_OTP_VCM_STATUS_AND_ENABLE_VCM_D_POS 8 +#define ILI9325_OTP_VCM_STATUS_AND_ENABLE_VCM_D_MSK (0x3fu << \ + ILI9325_OTP_VCM_STATUS_AND_ENABLE_VCM_D_POS) +#define ILI9325_OTP_VCM_STATUS_AND_ENABLE_VCM_D(value) (( \ + ILI9325_OTP_VCM_STATUS_AND_ENABLE_VCM_D_MSK & ((value) << \ + ILI9325_OTP_VCM_STATUS_AND_ENABLE_VCM_D_POS))) +#define ILI9325_OTP_VCM_STATUS_AND_ENABLE_PGM_CNT_POS 14 +#define ILI9325_OTP_VCM_STATUS_AND_ENABLE_PGM_CNT_MSK (0x3u << \ + ILI9325_OTP_VCM_STATUS_AND_ENABLE_PGM_CNT_POS) +#define ILI9325_OTP_VCM_STATUS_AND_ENABLE_PGM_CNT(value) (( \ + ILI9325_OTP_VCM_STATUS_AND_ENABLE_PGM_CNT_MSK & \ + ((value) << \ + IILI9325_OTP_VCM_STATUS_AND_ENABLE_PGM_CNT_POS))) + +/** ILI9325_OTP_PROG_ID_KEY : (Offset: 0xA5) OTP Programming ID Key */ +#define ILI9325_OTP_PROG_ID_KEY (0xA5u) +#define ILI9325_OTP_PROG_ID_KEY_KEY_POS 0 +#define ILI9325_OTP_PROG_ID_KEY_KEY_MSK (0xffffu << \ + ILI9325_OTP_PROG_ID_KEY_KEY_POS) +#define ILI9325_OTP_PROG_ID_KEY_KEY(value) ((ILI9325_OTP_PROG_ID_KEY_KEY_MSK & \ + ((value) << ILI9325_OTP_PROG_ID_KEY_KEY_POS))) + +/** @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/** @endcond */ + +#endif /* ILI9325_REGS_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili9341_regs.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili9341_regs.h new file mode 100644 index 000000000..ccbff8088 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili9341_regs.h @@ -0,0 +1,245 @@ +/** + * \file + * + * \brief registers definition for ili9341 TFT display component. + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef ILI9341_REGS_H_INCLUDED +#define ILI9341_REGS_H_INCLUDED + +/** @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/** @endcond */ + +/** ili9341 LCD Registers */ + +/** Level 1 Commands (from the display Datasheet) */ +/** Nop operation*/ +#define ILI9341_CMD_NOP 0x00 +/** Software reset*/ +#define ILI9341_CMD_SOFTWARE_RESET 0x01 +/** Read Display Identification information*/ +#define ILI9341_CMD_READ_DISP_ID 0x04 +/** Read display status*/ +#define ILI9341_CMD_READ_DISP_STATUS 0x09 +/** Read display power mode*/ +#define ILI9341_CMD_READ_DISP_POWER_MODE 0x0A +/** Read display MADCTL*/ +#define ILI9341_CMD_READ_DISP_MADCTRL 0x0B +/** Read display pixel format*/ +#define ILI9341_CMD_READ_DISP_PIXEL_FORMAT 0x0C +/** Read display image format*/ +#define ILI9341_CMD_READ_DISP_IMAGE_FORMAT 0x0D +/** Read display signal mode*/ +#define ILI9341_CMD_READ_DISP_SIGNAL_MODE 0x0E +/** read display self-diagnostic resutl*/ +#define ILI9341_CMD_READ_DISP_SELF_DIAGNOSTIC 0x0F +/** Enter sleep mode*/ +#define ILI9341_CMD_ENTER_SLEEP_MODE 0x10 +/** Sleep out*/ +#define ILI9341_CMD_SLEEP_OUT 0x11 +/** Partial mode on*/ +#define ILI9341_CMD_PARTIAL_MODE_ON 0x12 +/** Normal display mode on*/ +#define ILI9341_CMD_NORMAL_DISP_MODE_ON 0x13 +/** Display inversion off*/ +#define ILI9341_CMD_DISP_INVERSION_OFF 0x20 +/** Display inversion on*/ +#define ILI9341_CMD_DISP_INVERSION_ON 0x21 +/** Gamma set*/ +#define ILI9341_CMD_GAMMA_SET 0x26 +/** Display off*/ +#define ILI9341_CMD_DISPLAY_OFF 0x28 +/** Display on*/ +#define ILI9341_CMD_DISPLAY_ON 0x29 +/** Column address set*/ +#define ILI9341_CMD_COLUMN_ADDRESS_SET 0x2A +/** Page address set*/ +#define ILI9341_CMD_PAGE_ADDRESS_SET 0x2B +/** Memory write*/ +#define ILI9341_CMD_MEMORY_WRITE 0x2C +/** Color set*/ +#define ILI9341_CMD_COLOR_SET 0x2D +/** Memory read*/ +#define ILI9341_CMD_MEMORY_READ 0x2E +/** Partial area*/ +#define ILI9341_CMD_PARTIAL_AREA 0x30 +/** Vertical scrolling definition*/ +#define ILI9341_CMD_VERT_SCROLL_DEFINITION 0x33 +/** Tearing effect line off*/ +#define ILI9341_CMD_TEARING_EFFECT_LINE_OFF 0x34 +/** Tearing effect line on*/ +#define ILI9341_CMD_TEARING_EFFECT_LINE_ON 0x35 + +/** Memory Access control*/ +#define ILI9341_CMD_MEMORY_ACCESS_CONTROL 0x36 +#define ILI9341_CMD_MEMORY_ACCESS_CONTROL_MY (0x1u << 7) +#define ILI9341_CMD_MEMORY_ACCESS_CONTROL_MX (0x1u << 6) +#define ILI9341_CMD_MEMORY_ACCESS_CONTROL_MV (0x1u << 5) +#define ILI9341_CMD_MEMORY_ACCESS_CONTROL_ML (0x1u << 4) +#define ILI9341_CMD_MEMORY_ACCESS_CONTROL_BGR (0x1u << 3) +#define ILI9341_CMD_MEMORY_ACCESS_CONTROL_MH (0x1u << 2) + +/** Vetical scrolling start address*/ +#define ILI9341_CMD_VERT_SCROLL_START_ADDRESS 0x37 +/** Idle mode off*/ +#define ILI9341_CMD_IDLE_MODE_OFF 0x38 +/** Idle mode on*/ +#define ILI9341_CMD_IDLE_MODE_ON 0x39 +/** Pixel Format set*/ +#define ILI9341_CMD_PIXEL_FORMAT_SET 0x3A +/** write memory continue*/ +#define ILI9341_CMD_WRITE_MEMORY_CONTINUE 0x3C +/** Read memory continue*/ +#define ILI9341_CMD_READ_MEMORY_CONTINUE 0x3E +/** set tear scanline*/ +#define ILI9341_CMD_SET_TEAR_SCANLINE 0x44 +/** get scanline*/ +#define ILI9341_CMD_GET_SCANLINE 0x45 +/** write display brightness*/ +#define ILI9341_CMD_WRITE_DISPLAY_BRIGHTNESS 0x51 +/** read display brightness*/ +#define ILI9341_CMD_READ_DISPLAY_BRIGHTNESS 0x52 +/** write control display*/ +#define ILI9341_CMD_WRITE_CTRL_DISPLAY 0x53 +/** read control display*/ +#define ILI9341_CMD_READ_CTRL_DISPLAY 0x54 +/** write content adaptive brightness control*/ +#define ILI9341_CMD_WRITE_CONTENT_ADAPT_BRIGHTNESS 0x55 +/** read content adaptive brightness control*/ +#define ILI9341_CMD_READ_CONTENT_ADAPT_BRIGHTNESS 0x56 +/** write CABC minimum brightness*/ +#define ILI9341_CMD_WRITE_MIN_CAB_LEVEL 0x5E +/** read CABC minimum brightness*/ +#define ILI9341_CMD_READ_MIN_CAB_LEVEL 0x5F +/** Read ID1*/ +#define ILI9341_CMD_READ_ID1 0xDA +/** Read ID2*/ +#define ILI9341_CMD_READ_ID2 0xDB +/** Read ID3*/ +#define ILI9341_CMD_READ_ID3 0xDC + +/** Level 2 Commands (from the display Datasheet) */ +/** RGB interface signal control*/ +#define ILI9341_CMD_RGB_SIGNAL_CONTROL 0xB0 +/** frame control*/ +#define ILI9341_CMD_FRAME_RATE_CONTROL_NORMAL 0xB1 +/** frame control in idle mode*/ +#define ILI9341_CMD_FRAME_RATE_CONTROL_IDLE_8COLOR 0xB2 +/** frame control in partial mode*/ +#define ILI9341_CMD_FRAME_RATE_CONTROL_PARTIAL 0xB3 +/** display inversion control*/ +#define ILI9341_CMD_DISPLAY_INVERSION_CONTROL 0xB4 +/** blanking porch control*/ +#define ILI9341_CMD_BLANKING_PORCH_CONTROL 0xB5 +/** display function control*/ +#define ILI9341_CMD_DISPLAY_FUNCTION_CTL 0xB6 +#define ILI9341_DISP_FUNC_CTL_REV (0x1u << 7) +#define ILI9341_DISP_FUNC_CTL_GS (0x1u << 6) +#define ILI9341_DISP_FUNC_CTL_SS (0x1u << 5) +#define ILI9341_DISP_FUNC_CTL_SM (0x1u << 4) +#define ILI9341_DISP_FUNC_CTL_ISC_POS 0 +#define ILI9341_DISP_FUNC_CTL_ISC_MSK (0x0F << 0) +#define ILI9341_DISP_FUNC_CTL_ISC(value) \ + (ILI9341_DISP_FUNC_CTL_ISC_MSK & \ + (value << ILI9341_DISP_FUNC_CTL_ISC_POS)) + +/** entry mode set*/ +#define ILI9341_CMD_ENTRY_MODE_SET 0xB7 +/** backlight control1*/ +#define ILI9341_CMD_BACKLIGHT_CONTROL_1 0xB8 +/** backlight control2*/ +#define ILI9341_CMD_BACKLIGHT_CONTROL_2 0xB9 +/** backlight control3*/ +#define ILI9341_CMD_BACKLIGHT_CONTROL_3 0xBA +/** backlight control 4*/ +#define ILI9341_CMD_BACKLIGHT_CONTROL_4 0xBB +/** backlight control 5*/ +#define ILI9341_CMD_BACKLIGHT_CONTROL_5 0xBC +/** backlight control 7*/ +#define ILI9341_CMD_BACKLIGHT_CONTROL_7 0xBE +/** backlight control 8*/ +#define ILI9341_CMD_BACKLIGHT_CONTROL_8 0xBF +/** power control 1*/ +#define ILI9341_CMD_POWER_CONTROL_1 0xC0 +/** power control 2*/ +#define ILI9341_CMD_POWER_CONTROL_2 0xC1 +/** VCOM control 1*/ +#define ILI9341_CMD_VCOM_CONTROL_1 0xC5 +/** VCOM control 2*/ +#define ILI9341_CMD_VCOM_CONTROL_2 0xC7 +/** Power control A*/ +#define ILI9341_CMD_POWER_CONTROL_A 0xCB +/** Power control B*/ +#define ILI9341_CMD_POWER_CONTROL_B 0xCF +/** NV memory write*/ +#define ILI9341_CMD_NVMEM_WRITE 0xD0 +/** NV memory protection key*/ +#define ILI9341_CMD_NVMEM_PROTECTION_KEY 0xD1 +/** NV memory status read*/ +#define ILI9341_CMD_NVMEM_STATUS_READ 0xD2 +/** Read ID4*/ +#define ILI9341_CMD_READ_ID4 0xD3 +/** positive gamma correction*/ +#define ILI9341_CMD_POSITIVE_GAMMA_CORRECTION 0xE0 +/** negative gamma correction*/ +#define ILI9341_CMD_NEGATIVE_GAMMA_CORRECTION 0xE1 +/** digital gamma control 1*/ +#define ILI9341_CMD_DIGITAL_GAMMA_CONTROL_1 0xE2 +/** digital gamma control 2*/ +#define ILI9341_CMD_DIGITAL_GAMMA_CONTROL_2 0xE3 +/** driver timing control A*/ +#define ILI9341_CMD_DRIVER_TIMING_CTL_A 0xE8 +/** driver timing control B*/ +#define ILI9341_CMD_DRIVER_TIMING_CTL_B 0xEA +/** power-on sequence control*/ +#define ILI9341_CMD_POWER_ON_SEQUENCE_CONTROL 0xED +/** enable 3g gamma control*/ +#define ILI9341_CMD_ENABLE_3_GAMMA_CONTROL 0xF2 +/** Interface control*/ +#define ILI9341_CMD_INTERFACE_CONTROL 0xF6 +/** pump ration control*/ +#define ILI9341_CMD_PUMP_RATIO_CONTROL 0xF7 + +#endif /* ILI9341_REGS_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili93xx.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili93xx.c new file mode 100644 index 000000000..fb529482c --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili93xx.c @@ -0,0 +1,1851 @@ +/** + * \file + * + * \brief API driver for ILI93XX TFT display component. + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +/** + * \defgroup ili93xx_display_group Display - ILI93XX Controller + * + * Low-level driver for the ILI93XX LCD controller. This driver provides access + * to the main features of the ILI93XX controller. + * Now ILI9325 and ILI9341 are supported. + * + * \{ + */ + +#include +#include +#include +#include +#include "ili93xx.h" +#include "ili9341_regs.h" +#include "ili9325_regs.h" + +/** Device type*/ +static uint8_t g_uc_device_type = 0; + +/** Pixel cache used to speed up communication */ +#define LCD_DATA_CACHE_SIZE ILI93XX_LCD_WIDTH + +/** LCD X-axis and Y-axis length */ +static uint32_t g_ul_lcd_x_length = ILI93XX_LCD_WIDTH; +static uint32_t g_ul_lcd_y_length = ILI93XX_LCD_HEIGHT; + +static ili93xx_color_t g_ul_pixel_cache[LCD_DATA_CACHE_SIZE]; + +static volatile ili93xx_coord_t limit_start_x, limit_start_y; +static volatile ili93xx_coord_t limit_end_x, limit_end_y; + +/** Global variable describing the font size used by the driver */ +const struct ili93xx_font gfont = {10, 14}; + +/** + * Character set table for font 10x14 + * Coding format: + * Char height is 14 bits, which is coded using 2 bytes per column + * (2 unused bits). + * Char width is 10 bits. + */ +const uint8_t p_uc_charset10x14[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xCC, + 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0C, 0xC0, 0x0C, 0xC0, 0xFF, 0xFC, 0xFF, 0xFC, 0x0C, 0xC0, + 0x0C, 0xC0, 0xFF, 0xFC, 0xFF, 0xFC, 0x0C, 0xC0, 0x0C, 0xC0, + 0x0C, 0x60, 0x1E, 0x70, 0x3F, 0x30, 0x33, 0x30, 0xFF, 0xFC, + 0xFF, 0xFC, 0x33, 0x30, 0x33, 0xF0, 0x39, 0xE0, 0x18, 0xC0, + 0x60, 0x00, 0xF0, 0x0C, 0xF0, 0x3C, 0x60, 0xF0, 0x03, 0xC0, + 0x0F, 0x00, 0x3C, 0x18, 0xF0, 0x3C, 0xC0, 0x3C, 0x00, 0x18, + 0x3C, 0xF0, 0x7F, 0xF8, 0xC3, 0x1C, 0xC7, 0x8C, 0xCF, 0xCC, + 0xDC, 0xEC, 0x78, 0x78, 0x30, 0x30, 0x00, 0xFC, 0x00, 0xCC, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xEC, 0x00, + 0xF8, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x3F, 0xF0, 0x78, 0x78, + 0x60, 0x18, 0xC0, 0x0C, 0xC0, 0x0C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0C, 0xC0, 0x0C, 0x60, 0x18, + 0x78, 0x78, 0x3F, 0xF0, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x0C, 0x60, 0x0E, 0xE0, 0x07, 0xC0, 0x03, 0x80, 0x3F, 0xF8, + 0x3F, 0xF8, 0x03, 0x80, 0x07, 0xC0, 0x0E, 0xE0, 0x0C, 0x60, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x3F, 0xF0, + 0x3F, 0xF0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x44, 0x00, 0xEC, 0x00, 0xF8, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x18, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0C, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, + 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x00, 0xC0, 0x00, 0x00, 0x00, + 0x3F, 0xF0, 0x7F, 0xF8, 0xE0, 0xFC, 0xC1, 0xCC, 0xC3, 0x8C, + 0xC7, 0x0C, 0xCE, 0x0C, 0xFC, 0x1C, 0x7F, 0xF8, 0x3F, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x0C, 0x70, 0x0C, 0xFF, 0xFC, + 0xFF, 0xFC, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x0C, 0x70, 0x1C, 0xE0, 0x3C, 0xC0, 0x7C, 0xC0, 0xEC, + 0xC1, 0xCC, 0xC3, 0x8C, 0xE7, 0x0C, 0x7E, 0x0C, 0x3C, 0x0C, + 0x30, 0x30, 0x70, 0x38, 0xE0, 0x1C, 0xC0, 0x0C, 0xC0, 0x0C, + 0xC3, 0x0C, 0xC3, 0x0C, 0xE3, 0x1C, 0x7F, 0xF8, 0x3C, 0xF0, + 0x03, 0xC0, 0x07, 0xC0, 0x0E, 0xC0, 0x1C, 0xC0, 0x38, 0xC0, + 0x70, 0xC0, 0xFF, 0xFC, 0xFF, 0xFC, 0x00, 0xC0, 0x00, 0xC0, + 0xFC, 0x30, 0xFC, 0x38, 0xCC, 0x1C, 0xCC, 0x0C, 0xCC, 0x0C, + 0xCC, 0x0C, 0xCC, 0x0C, 0xCE, 0x1C, 0xC7, 0xF8, 0xC3, 0xF0, + 0x3F, 0xF0, 0x7F, 0xF8, 0xE3, 0x1C, 0xC3, 0x0C, 0xC3, 0x0C, + 0xC3, 0x0C, 0xC3, 0x0C, 0xE3, 0x9C, 0x71, 0xF8, 0x30, 0xF0, + 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC3, 0xFC, + 0xC7, 0xFC, 0xCE, 0x00, 0xDC, 0x00, 0xF8, 0x00, 0xF0, 0x00, + 0x3C, 0xF0, 0x7F, 0xF8, 0xE7, 0x9C, 0xC3, 0x0C, 0xC3, 0x0C, + 0xC3, 0x0C, 0xC3, 0x0C, 0xE7, 0x9C, 0x7F, 0xF8, 0x3C, 0xF0, + 0x3C, 0x00, 0x7E, 0x00, 0xE7, 0x0C, 0xC3, 0x0C, 0xC3, 0x1C, + 0xC3, 0x38, 0xC3, 0x70, 0xE7, 0xE0, 0x7F, 0xC0, 0x3F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x60, 0x3C, 0xF0, + 0x3C, 0xF0, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x44, 0x3C, 0xEC, + 0x3C, 0xF8, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x07, 0x80, 0x0F, 0xC0, 0x1C, 0xE0, + 0x38, 0x70, 0x70, 0x38, 0xE0, 0x1C, 0xC0, 0x0C, 0x00, 0x00, + 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, + 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, + 0x00, 0x00, 0xC0, 0x0C, 0xE0, 0x1C, 0x70, 0x38, 0x38, 0x70, + 0x1C, 0xE0, 0x0F, 0xC0, 0x07, 0x80, 0x03, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0xC1, 0xEC, + 0xC3, 0xEC, 0xC3, 0x00, 0xE6, 0x00, 0x7E, 0x00, 0x3C, 0x00, + 0x30, 0xF0, 0x71, 0xF8, 0xE3, 0x9C, 0xC3, 0x0C, 0xC3, 0xFC, + 0xC3, 0xFC, 0xC0, 0x0C, 0xE0, 0x1C, 0x7F, 0xF8, 0x3F, 0xF0, + 0x3F, 0xFC, 0x7F, 0xFC, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xC0, 0x7F, 0xFC, 0x3F, 0xFC, + 0xFF, 0xFC, 0xFF, 0xFC, 0xC3, 0x0C, 0xC3, 0x0C, 0xC3, 0x0C, + 0xC3, 0x0C, 0xC3, 0x0C, 0xE7, 0x9C, 0x7F, 0xF8, 0x3C, 0xF0, + 0x3F, 0xF0, 0x7F, 0xF8, 0xE0, 0x1C, 0xC0, 0x0C, 0xC0, 0x0C, + 0xC0, 0x0C, 0xC0, 0x0C, 0xE0, 0x1C, 0x70, 0x38, 0x30, 0x30, + 0xFF, 0xFC, 0xFF, 0xFC, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, + 0xC0, 0x0C, 0xC0, 0x0C, 0xE0, 0x1C, 0x7F, 0xF8, 0x3F, 0xF0, + 0xFF, 0xFC, 0xFF, 0xFC, 0xC3, 0x0C, 0xC3, 0x0C, 0xC3, 0x0C, + 0xC3, 0x0C, 0xC3, 0x0C, 0xC3, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, + 0xFF, 0xFC, 0xFF, 0xFC, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, + 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC0, 0x00, 0xC0, 0x00, + 0x3F, 0xF0, 0x7F, 0xF8, 0xE0, 0x1C, 0xC0, 0x0C, 0xC0, 0x0C, + 0xC3, 0x0C, 0xC3, 0x0C, 0xE3, 0x1C, 0x73, 0xF8, 0x33, 0xF0, + 0xFF, 0xFC, 0xFF, 0xFC, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0xFF, 0xFC, 0xFF, 0xFC, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0C, 0xC0, 0x0C, 0xFF, 0xFC, + 0xFF, 0xFC, 0xC0, 0x0C, 0xC0, 0x0C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x38, 0xC0, 0x1C, 0xC0, 0x0C, 0xC0, 0x0C, + 0xC0, 0x1C, 0xFF, 0xF8, 0xFF, 0xF0, 0xC0, 0x00, 0xC0, 0x00, + 0xFF, 0xFC, 0xFF, 0xFC, 0x07, 0x80, 0x07, 0x80, 0x0F, 0xC0, + 0x1C, 0xE0, 0x38, 0x70, 0x70, 0x38, 0xE0, 0x1C, 0xC0, 0x0C, + 0xFF, 0xFC, 0xFF, 0xFC, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, + 0xFF, 0xFC, 0xFF, 0xFC, 0x70, 0x00, 0x38, 0x00, 0x1F, 0x00, + 0x1F, 0x00, 0x38, 0x00, 0x70, 0x00, 0xFF, 0xFC, 0xFF, 0xFC, + 0xFF, 0xFC, 0xFF, 0xFC, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0xFF, 0xFC, 0xFF, 0xFC, + 0x3F, 0xF0, 0x7F, 0xF8, 0xE0, 0x1C, 0xC0, 0x0C, 0xC0, 0x0C, + 0xC0, 0x0C, 0xC0, 0x0C, 0xE0, 0x1C, 0x7F, 0xF8, 0x3F, 0xF0, + 0xFF, 0xFC, 0xFF, 0xFC, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, + 0xC3, 0x00, 0xC3, 0x00, 0xE7, 0x00, 0x7E, 0x00, 0x3C, 0x00, + 0x3F, 0xF0, 0x7F, 0xF8, 0xE0, 0x1C, 0xC0, 0x0C, 0xC0, 0xCC, + 0xC0, 0xEC, 0xC0, 0x7C, 0xE0, 0x38, 0x7F, 0xFC, 0x3F, 0xEC, + 0xFF, 0xFC, 0xFF, 0xFC, 0xC3, 0x00, 0xC3, 0x80, 0xC3, 0x80, + 0xC3, 0xC0, 0xC3, 0xC0, 0xE7, 0x70, 0x7E, 0x3C, 0x3C, 0x1C, + 0x3C, 0x18, 0x7E, 0x1C, 0xE7, 0x0C, 0xC3, 0x0C, 0xC3, 0x0C, + 0xC3, 0x0C, 0xC3, 0x0C, 0xC3, 0x9C, 0xE1, 0xF8, 0x60, 0xF0, + 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xFF, 0xFC, + 0xFF, 0xFC, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, + 0xFF, 0xF0, 0xFF, 0xF8, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0C, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 0xFF, 0xF8, 0xFF, 0xF0, + 0xFF, 0xC0, 0xFF, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0xFF, 0xE0, 0xFF, 0xC0, + 0xFF, 0xF0, 0xFF, 0xF8, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0xF8, + 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1C, 0xFF, 0xF8, 0xFF, 0xF0, + 0xF0, 0x3C, 0xF8, 0x7C, 0x1C, 0xE0, 0x0F, 0xC0, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0xC0, 0x1C, 0xE0, 0xF8, 0x7C, 0xF0, 0x3C, + 0xFC, 0x00, 0xFE, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xFC, + 0x01, 0xFC, 0x03, 0x80, 0x07, 0x00, 0xFE, 0x00, 0xFC, 0x00, + 0xC0, 0x3C, 0xC0, 0x7C, 0xC0, 0xEC, 0xC1, 0xCC, 0xC3, 0x8C, + 0xC7, 0x0C, 0xCE, 0x0C, 0xDC, 0x0C, 0xF8, 0x0C, 0xF0, 0x0C, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFC, 0xC0, 0x0C, + 0xC0, 0x0C, 0xC0, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, + 0xFF, 0xFC, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x06, 0x78, 0x0E, 0xFC, 0x0C, 0xCC, 0x0C, 0xCC, + 0x0C, 0xCC, 0x0C, 0xCC, 0x0E, 0xCC, 0x07, 0xFC, 0x03, 0xF8, + 0xFF, 0xFC, 0xFF, 0xFC, 0x03, 0x0C, 0x03, 0x0C, 0x03, 0x0C, + 0x03, 0x0C, 0x03, 0x0C, 0x03, 0x9C, 0x01, 0xF8, 0x00, 0xF0, + 0x03, 0xF0, 0x07, 0xF8, 0x0E, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0x30, + 0x00, 0xF0, 0x01, 0xF8, 0x03, 0x9C, 0x03, 0x0C, 0x03, 0x0C, + 0x03, 0x0C, 0x03, 0x0C, 0x03, 0x0C, 0xFF, 0xFC, 0xFF, 0xFC, + 0x03, 0xF0, 0x07, 0xF8, 0x0E, 0xDC, 0x0C, 0xCC, 0x0C, 0xCC, + 0x0C, 0xCC, 0x0C, 0xCC, 0x0E, 0xDC, 0x07, 0xD8, 0x03, 0x90, + 0x00, 0x00, 0x03, 0x00, 0x3F, 0xFC, 0x7F, 0xFC, 0xE3, 0x00, + 0xE3, 0x00, 0x70, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x18, 0x07, 0x9C, 0x0F, 0xCC, 0x0C, 0xCC, 0x0C, 0xCC, + 0x0C, 0xCC, 0x0C, 0xCC, 0x0C, 0xDC, 0x0F, 0xF8, 0x07, 0xF0, + 0xFF, 0xFC, 0xFF, 0xFC, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x80, 0x01, 0xFC, 0x00, 0xFC, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xFC, + 0x1B, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x30, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, + 0x00, 0x0C, 0x00, 0x1C, 0xCF, 0xF8, 0xCF, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFC, 0x00, 0xE0, 0x01, 0xE0, + 0x03, 0xF0, 0x07, 0x38, 0x0E, 0x1C, 0x0C, 0x0C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0C, 0xC0, 0x0C, 0xFF, 0xFC, + 0xFF, 0xFC, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, + 0x0F, 0xFC, 0x0F, 0xFC, 0x0E, 0x00, 0x07, 0x00, 0x03, 0xC0, + 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x0F, 0xFC, 0x0F, 0xFC, + 0x0F, 0xFC, 0x0F, 0xFC, 0x03, 0x00, 0x07, 0x00, 0x0E, 0x00, + 0x0C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x07, 0xFC, 0x03, 0xFC, + 0x03, 0xF0, 0x07, 0xF8, 0x0E, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x1C, 0x07, 0xF8, 0x03, 0xF0, + 0x0F, 0xFC, 0x0F, 0xFC, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, + 0x0C, 0xC0, 0x0C, 0xC0, 0x0F, 0xC0, 0x07, 0x80, 0x03, 0x00, + 0x03, 0x00, 0x07, 0x80, 0x0F, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, + 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0F, 0xFC, 0x0F, 0xFC, + 0x0F, 0xFC, 0x0F, 0xFC, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, + 0x0C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x00, + 0x03, 0x18, 0x07, 0x9C, 0x0F, 0xCC, 0x0C, 0xCC, 0x0C, 0xCC, + 0x0C, 0xCC, 0x0C, 0xCC, 0x0C, 0xFC, 0x0E, 0x78, 0x06, 0x30, + 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0xF0, 0xFF, 0xF8, + 0x0C, 0x1C, 0x0C, 0x1C, 0x0C, 0x38, 0x0C, 0x30, 0x00, 0x00, + 0x0F, 0xF0, 0x0F, 0xF8, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0C, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 0x0F, 0xF8, 0x0F, 0xF0, + 0x0F, 0xC0, 0x0F, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x0F, 0xE0, 0x0F, 0xC0, + 0x0F, 0xF0, 0x0F, 0xF8, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0xF8, + 0x00, 0xF8, 0x00, 0x1C, 0x00, 0x1C, 0x0F, 0xF8, 0x0F, 0xF0, + 0x0C, 0x0C, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0xF0, 0x01, 0xE0, + 0x01, 0xE0, 0x03, 0xF0, 0x07, 0x38, 0x0E, 0x1C, 0x0C, 0x0C, + 0x0C, 0x00, 0x0E, 0x00, 0x07, 0x0C, 0x03, 0x9C, 0x01, 0xF8, + 0x01, 0xF0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0C, 0x00, + 0x0C, 0x0C, 0x0C, 0x1C, 0x0C, 0x3C, 0x0C, 0x7C, 0x0C, 0xEC, + 0x0D, 0xCC, 0x0F, 0x8C, 0x0F, 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, + 0x00, 0x00, 0x03, 0x00, 0x07, 0x80, 0x3F, 0xF0, 0x7C, 0xF8, + 0xE0, 0x1C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0x00, 0x00, + 0x03, 0x0C, 0x03, 0x0C, 0x3F, 0xFC, 0x7F, 0xFC, 0xE3, 0x0C, + 0xC3, 0x0C, 0xC0, 0x0C, 0xE0, 0x0C, 0x70, 0x0C, 0x30, 0x0C, + 0x00, 0x00, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xE0, 0x1C, + 0x7C, 0xF8, 0x3F, 0xF0, 0x07, 0x80, 0x03, 0x00, 0x00, 0x00, + 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, + 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, + 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, + 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC +}; + +/** + * \brief Prepare to write GRAM data for ili93xx. + */ +static void ili93xx_write_ram_prepare(void) +{ + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + /** Write Data to GRAM (R22h) */ + LCD_IR(0); + LCD_IR(ILI9325_GRAM_DATA_REG); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + /** memory write command (R2Ch)*/ + LCD_IR(ILI9341_CMD_MEMORY_WRITE); + LCD_IR(0); + LCD_IR(ILI9341_CMD_WRITE_MEMORY_CONTINUE); + } +} + +/** + * \brief Write data to LCD GRAM. + * + * \param ul_color 24-bits RGB color. + */ +static void ili93xx_write_ram(ili93xx_color_t ul_color) +{ + LCD_WD((ul_color >> 16) & 0xFF); + LCD_WD((ul_color >> 8) & 0xFF); + LCD_WD(ul_color & 0xFF); +} + +/** + * \brief Write multiple data in buffer to LCD controller for ili93xx. + * + * \param p_ul_buf data buffer. + * \param ul_size size in pixels. + */ +static void ili93xx_write_ram_buffer(const ili93xx_color_t *p_ul_buf, + uint32_t ul_size) +{ + uint32_t ul_addr; + for (ul_addr = 0; ul_addr < (ul_size - ul_size % 8); ul_addr += 8) { + ili93xx_write_ram(p_ul_buf[ul_addr]); + ili93xx_write_ram(p_ul_buf[ul_addr + 1]); + ili93xx_write_ram(p_ul_buf[ul_addr + 2]); + ili93xx_write_ram(p_ul_buf[ul_addr + 3]); + ili93xx_write_ram(p_ul_buf[ul_addr + 4]); + ili93xx_write_ram(p_ul_buf[ul_addr + 5]); + ili93xx_write_ram(p_ul_buf[ul_addr + 6]); + ili93xx_write_ram(p_ul_buf[ul_addr + 7]); + } + for (; ul_addr < ul_size; ul_addr++) { + ili93xx_write_ram(p_ul_buf[ul_addr]); + } +} + +/** + * \brief Write a word (16bits)to LCD Register. + * + * \param uc_reg register address. + * \param us_data data to be written. + */ +static void ili93xx_write_register_word(uint8_t uc_reg, uint16_t us_data) +{ + LCD_IR(0); + LCD_IR(uc_reg); + LCD_WD((us_data >> 8) & 0xFF); + LCD_WD(us_data & 0xFF); +} + +/** + * \brief Write data to LCD Register for ili93xx. + * + * \param uc_reg register address. + * \param us_data data to be written. + */ +static void ili93xx_write_register(uint8_t uc_reg, uint8_t *p_data, + uint8_t uc_datacnt) +{ +uint8_t i; + + LCD_IR(0); + LCD_IR(uc_reg); + for (i = 0; i < uc_datacnt; i++) { + LCD_WD(p_data[i]); + } +} + +/** + * \brief Prepare to read GRAM data for ili93xx. + */ +static void ili93xx_read_ram_prepare(void) +{ + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + LCD_IR(0); + /** Write Data to GRAM (R22h) */ + LCD_IR(ILI9325_GRAM_DATA_REG); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + LCD_IR(0); + /** Write Data to GRAM (R2Eh) */ + LCD_IR(ILI9341_CMD_MEMORY_READ); + } +} + +/** + * \brief Read data to LCD GRAM for ili93xx. + * + * \note For ili9325, because pixel data LCD GRAM is 18-bits, so convertion + * to RGB 24-bits will cause low color bit lose. + * + * \return color 24-bits RGB color. + */ +static uint32_t ili93xx_read_ram(void) +{ + uint8_t value[3]; + uint32_t color; + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + /** dummy read*/ + value[0] = LCD_RD(); + value[1] = LCD_RD(); + /** data upper byte*/ + value[0] = LCD_RD(); + /** data lower byte */ + value[1] = LCD_RD(); + + /** Convert RGB565 to RGB888 */ + /** For BGR format */ + color = ((value[0] & 0xF8)) | ((value[0] & 0x07) << 13) | + ((value[1] & 0xE0) << 5) | + ((value[1] & 0x1F) << 19); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + /** dummy read */ + value[0] = LCD_RD(); + /** the highest byte - R byte*/ + value[0] = LCD_RD(); + /** the middle byte - G byte*/ + value[1] = LCD_RD(); + /** the lowest byte - B byte*/ + value[2] = LCD_RD(); + /** combine R, G, B byte to a color value */ + color = (value[0] << 16) | (value[1] << 8) | value[2]; + } + + return color; +} + +/** + * \brief Read data from LCD Register. + * + * \param uc_reg register address. + * \param p_data the pointer to the read data. + * \param uc_datacnt the number of the read data + */ +static void ili93xx_read_register(uint8_t uc_reg, uint8_t *p_data, + uint8_t uc_datacnt) +{ +uint8_t i; + + LCD_IR(0); + LCD_IR(uc_reg); + + for (i = 0; i < uc_datacnt; i++) { + p_data[i] = LCD_RD(); + } +} + +/** + * \brief Delay function. + */ +static void ili93xx_delay(uint32_t ul_ms) +{ + volatile uint32_t i; + + for (i = 0; i < ul_ms; i++) { + for (i = 0; i < 100000; i++) { + } + } +} + +/** + * \brief Check box coordinates. + * + * \param p_ul_x1 X coordinate of upper-left corner on LCD. + * \param p_ul_y1 Y coordinate of upper-left corner on LCD. + * \param p_ul_x2 X coordinate of lower-right corner on LCD. + * \param p_ul_y2 Y coordinate of lower-right corner on LCD. + */ +static void ili93xx_check_box_coordinates(uint32_t *p_ul_x1, uint32_t *p_ul_y1, + uint32_t *p_ul_x2, uint32_t *p_ul_y2) +{ + uint32_t dw; + + if (*p_ul_x1 >= g_ul_lcd_x_length) { + *p_ul_x1 = g_ul_lcd_x_length - 1; + } + + if (*p_ul_x2 >= g_ul_lcd_x_length) { + *p_ul_x2 = g_ul_lcd_x_length - 1; + } + + if (*p_ul_y1 >= g_ul_lcd_y_length) { + *p_ul_y1 = g_ul_lcd_y_length - 1; + } + + if (*p_ul_y2 >= g_ul_lcd_y_length) { + *p_ul_y2 = g_ul_lcd_y_length - 1; + } + + if (*p_ul_x1 > *p_ul_x2) { + dw = *p_ul_x1; + *p_ul_x1 = *p_ul_x2; + *p_ul_x2 = dw; + } + + if (*p_ul_y1 > *p_ul_y2) { + dw = *p_ul_y1; + *p_ul_y1 = *p_ul_y2; + *p_ul_y2 = dw; + } +} + +/** + * \brief Read device ID to idenfity the device + * ILI9325 device ID locates in Device Code Read (R00h) register. + * ILI9341 device ID locates in Read ID4 (RD3h) register. + * + * \return 0 if secceed in identifying device; otherwise fails. + */ +uint8_t ili93xx_device_type_identify(void) +{ + uint8_t paratable[6]; + uint16_t chipid; + + /** Read ID4 (RD4h) register to get device code for ILI9341*/ + ili93xx_read_register(ILI9341_CMD_READ_ID4, paratable, 4); + chipid = ((uint16_t)paratable[2] << 8) + paratable[3]; + + if (chipid == ILI9341_DEVICE_CODE) { + g_uc_device_type = DEVICE_TYPE_ILI9341; + return 0; + } + + /** Driver Code Read (R00h) for ILI9325*/ + ili93xx_read_register(ILI9325_DEVICE_CODE_REG, paratable, 2); + chipid = ((uint16_t)paratable[0] << 8) + paratable[1]; + if (chipid == ILI9325_DEVICE_CODE) { + g_uc_device_type = DEVICE_TYPE_ILI9325; + return 0; + } + + return 1; +} + +/** + * \brief Initialize the ILI93XX lcd driver. + * + * \note Make sure below works have been done before calling ili93xx_init() + * 1. ILI93xx related Pins have been initialized correctly. + * 2. SMC has been configured correctly for access ILI93xx (8-bit system + * interface for now). + * + * \param p_opt pointer to ILI93xx option structure. + * + * \return 0 if initialization succeeds, otherwise fails. + */ +uint32_t ili93xx_init(struct ili93xx_opt_t *p_opt) +{ + uint8_t paratable[15]; + + /** Identify the LCD driver device*/ + if (ili93xx_device_type_identify() != 0) { + return 1; + } + + g_ul_lcd_x_length = ILI93XX_LCD_WIDTH; + g_ul_lcd_y_length = ILI93XX_LCD_HEIGHT; + + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + /** Turn off LCD */ + ili93xx_write_register_word(ILI9325_DISP_CTRL1, ILI9325_DISP_CTRL1_GON | + ILI9325_DISP_CTRL1_DTE | ILI9325_DISP_CTRL1_D(0x03)); + + /** Start initial sequence */ + /** Disable sleep and standby mode*/ + ili93xx_write_register_word(ILI9325_POWER_CTRL1, 0x0000); + /** Start internal OSC */ + ili93xx_write_register_word(ILI9325_START_OSC_CTRL, + ILI9325_START_OSC_CTRL_EN); + /** Set SS bit and direction output from S720 to S1 */ + ili93xx_write_register_word(ILI9325_DRIVER_OUTPUT_CTRL1, + ILI9325_DRIVER_OUTPUT_CTRL1_SS); + /** Set 1 line inversion */ + ili93xx_write_register_word(ILI9325_LCD_DRIVING_CTRL, + ILI9325_LCD_DRIVING_CTRL_BIT10 | ILI9325_LCD_DRIVING_CTRL_EOR + | ILI9325_LCD_DRIVING_CTRL_BC0); + /** Disable resizing feature */ + ili93xx_write_register_word(ILI9325_RESIZE_CTRL, 0x0000); + /** Set the back porch and front porch */ + ili93xx_write_register_word(ILI9325_DISP_CTRL2, + ILI9325_DISP_CTRL2_BP( + 0x07) | ILI9325_DISP_CTRL2_FP(0x02)); + /** Set non-display area refresh cycle ISC[3:0] */ + ili93xx_write_register_word(ILI9325_DISP_CTRL3, 0x0000); + /** Disable FMARK function */ + ili93xx_write_register_word(ILI9325_DISP_CTRL4, 0x0000); + /** 18-bit RGB interface and writing display data by system + *interface */ + ili93xx_write_register_word(ILI9325_RGB_DISP_INTERFACE_CTRL1, + 0x0000); + /** Set the output position of frame cycle */ + ili93xx_write_register_word(ILI9325_FRAME_MAKER_POS, 0x0000); + /** RGB interface polarity */ + ili93xx_write_register_word(ILI9325_RGB_DISP_INTERFACE_CTRL2, + 0x0000); + + /** Power on sequence */ + /** Disable sleep and standby mode */ + ili93xx_write_register_word(ILI9325_POWER_CTRL1, 0x0000); + + /** + * Selects the operating frequency of the step-up circuit 1,2 + * and Sets the ratio factor of Vci. + */ + ili93xx_write_register_word(ILI9325_POWER_CTRL2, 0x0000); + /** Set VREG1OUT voltage */ + ili93xx_write_register_word(ILI9325_POWER_CTRL3, 0x0000); + /** Set VCOM amplitude */ + ili93xx_write_register_word(ILI9325_POWER_CTRL4, 0x0000); + ili93xx_delay(200); + + /** Enable power supply and source driver */ + + /** + * Adjusts the constant current and Sets the factor used + * in the step-up circuits. + */ + ili93xx_write_register_word(ILI9325_POWER_CTRL1, + ILI9325_POWER_CTRL1_SAP | ILI9325_POWER_CTRL1_BT(0x02) | + ILI9325_POWER_CTRL1_APE | + ILI9325_POWER_CTRL1_AP(0x01)); + + /** + * Select the operating frequency of the step-up circuit 1,2 and + * Sets the ratio factor of Vci + */ + ili93xx_write_register_word(ILI9325_POWER_CTRL2, + ILI9325_POWER_CTRL2_DC1(0x02) | + ILI9325_POWER_CTRL2_DC0(0x02) | ILI9325_POWER_CTRL2_VC(0x07)); + ili93xx_delay(50); + /** Internal reference voltage= Vci */ + ili93xx_write_register_word(ILI9325_POWER_CTRL3, + ILI9325_POWER_CTRL3_PON | ILI9325_POWER_CTRL3_VRH(0x0B)); + ili93xx_delay(50); + /** Set VDV[4:0] for VCOM amplitude */ + ili93xx_write_register_word(ILI9325_POWER_CTRL4, + ILI9325_POWER_CTRL4_VDV(0x11)); + /** Set VCM[5:0] for VCOMH */ + ili93xx_write_register_word(ILI9325_POWER_CTRL7, + ILI9325_POWER_CTRL7_VCM(0x19)); + /** Set Frame Rate */ + ili93xx_write_register_word(ILI9325_FRAME_RATE_AND_COLOR_CTRL, + ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS(0x0D)); + ili93xx_delay(50); + + /** Adjust the Gamma Curve */ + ili93xx_write_register_word(ILI9325_GAMMA_CTL1, 0x0000); + ili93xx_write_register_word(ILI9325_GAMMA_CTL2, + ILI9325_GAMMA_CTL2_KP3(0x02) | + ILI9325_GAMMA_CTL2_KP2(0x04)); + ili93xx_write_register_word(ILI9325_GAMMA_CTL3, + ILI9325_GAMMA_CTL3_KP5(0x02) | + ILI9325_GAMMA_CTL3_KP4(0x00)); + ili93xx_write_register_word(ILI9325_GAMMA_CTL4, + ILI9325_GAMMA_CTL4_RP1(0x00) | + ILI9325_GAMMA_CTL4_RP0(0x07)); + ili93xx_write_register_word(ILI9325_GAMMA_CTL5, + ILI9325_GAMMA_CTL5_VRP1(0x14) | + ILI9325_GAMMA_CTL5_VRP0(0x04)); + ili93xx_write_register_word(ILI9325_GAMMA_CTL6, + ILI9325_GAMMA_CTL6_KN1(0x07) | + ILI9325_GAMMA_CTL6_KN0(0x05)); + ili93xx_write_register_word(ILI9325_GAMMA_CTL7, + ILI9325_GAMMA_CTL7_KN3(0x03) | + ILI9325_GAMMA_CTL7_KN2(0x05)); + ili93xx_write_register_word(ILI9325_GAMMA_CTL8, + ILI9325_GAMMA_CTL8_KN5(0x07) | + ILI9325_GAMMA_CTL8_KN4(0x07)); + ili93xx_write_register_word(ILI9325_GAMMA_CTL9, + ILI9325_GAMMA_CTL9_RN1(0x07) | + ILI9325_GAMMA_CTL9_RN0(0x01)); + ili93xx_write_register_word(ILI9325_GAMMA_CTL10, + ILI9325_GAMMA_CTL10_VRN1(0x00) | + ILI9325_GAMMA_CTL10_VRN0(0x0E)); + /** + * Use the high speed write mode (HWM=1) + * When TRI = 1, data are transferred to the internal RAM in + * 8-bit x 3 transfers mode via the 8-bit interface. + * DFM Set the mode of transferring data to the internal RAM + * when TRI = 1. + * I/D[1:0] = 11 Horizontal : increment Vertical : increment, + * AM=0:Horizontal + */ + ili93xx_write_register_word(ILI9325_ENTRY_MODE, + ILI9325_ENTRY_MODE_TRI | ILI9325_ENTRY_MODE_DFM | + ILI9325_ENTRY_MODE_ID(0x01) | ILI9325_ENTRY_MODE_BGR); + /** + * Sets the number of lines to drive the LCD at an interval of 8 + * lines. The scan direction is from G320 to G1 + */ + ili93xx_write_register_word(ILI9325_DRIVER_OUTPUT_CTRL2, + ILI9325_DRIVER_OUTPUT_CTRL2_GS | + ILI9325_DRIVER_OUTPUT_CTRL2_NL(0x27)); + + /** Vertical Scrolling */ + /** Disable scrolling and enable the grayscale inversion */ + ili93xx_write_register_word(ILI9325_BASE_IMG_DISP_CTRL, + ILI9325_BASE_IMG_DISP_CTRL_REV); + ili93xx_write_register_word(ILI9325_VERTICAL_SCROLL_CTRL, + 0x0000); + + /** Disable Partial Display */ + ili93xx_write_register_word(ILI9325_PARTIAL_IMG1_DISP_POS, + 0x0000); + ili93xx_write_register_word( + ILI9325_PARTIAL_IMG1_AREA_START_LINE, + 0x0000); + ili93xx_write_register_word(ILI9325_PARTIAL_IMG1_AREA_END_LINE, + 0x0000); + ili93xx_write_register_word(ILI9325_PARTIAL_IMG2_DISP_POS, + 0x0000); + ili93xx_write_register_word( + ILI9325_PARTIAL_IMG2_AREA_START_LINE, + 0x0000); + ili93xx_write_register_word(ILI9325_PARTIAL_IMG2_AREA_END_LINE, + 0x0000); + + /** Panel Control */ + ili93xx_write_register_word(ILI9325_PANEL_INTERFACE_CTRL1, + ILI9325_PANEL_INTERFACE_CTRL1_RTNI(0x10)); + ili93xx_write_register_word(ILI9325_PANEL_INTERFACE_CTRL2, + ILI9325_PANEL_INTERFACE_CTRL2_NOWI(0x06)); + ili93xx_write_register_word(ILI9325_PANEL_INTERFACE_CTRL4, + ILI9325_PANEL_INTERFACE_CTRL4_DIVE(0x01) | + ILI9325_PANEL_INTERFACE_CTRL4_RTNE(0x10)); + + ili93xx_set_window(0, 0, p_opt->ul_width, p_opt->ul_height); + ili93xx_set_foreground_color(p_opt->foreground_color); + ili93xx_set_cursor_position(0, 0); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + /** init for ILI9341 **/ + /** power control A configuration*/ + paratable[0] = 0x39; + paratable[1] = 0x2C; + paratable[2] = 0x00; + paratable[3] = 0x34; + paratable[4] = 0x02; + ili93xx_write_register(ILI9341_CMD_POWER_CONTROL_A, paratable, 5); + + /** power control B configuration */ + paratable[0] = 0; + paratable[1] = 0xAA; + paratable[2] = 0xB0; + ili93xx_write_register(ILI9341_CMD_POWER_CONTROL_B, paratable, 3); + + /** Pump Ratio Control configuration */ + paratable[0] = 0x30; + ili93xx_write_register(ILI9341_CMD_PUMP_RATIO_CONTROL, + paratable, 1); + + /** Power Control 1 configuration*/ + paratable[0] = 0x25; + ili93xx_write_register(ILI9341_CMD_POWER_CONTROL_1, paratable, 1); + + /** Power Control 2 configuration*/ + paratable[0] = 0x11; + ili93xx_write_register(ILI9341_CMD_POWER_CONTROL_2, paratable, 1); + + /** VOM Control 1 configuration*/ + paratable[0] = 0x5C; + paratable[1] = 0x4C; + ili93xx_write_register(ILI9341_CMD_VCOM_CONTROL_1, paratable, 2); + + /** VOM control 2 configuration*/ + paratable[0] = 0x94; + ili93xx_write_register(ILI9341_CMD_VCOM_CONTROL_2, paratable, 1); + + /** Driver Timing Control A configuration*/ + paratable[0] = 0x85; + paratable[1] = 0x01; + paratable[2] = 0x78; + ili93xx_write_register(ILI9341_CMD_DRIVER_TIMING_CTL_A, paratable, 3); + + /** Driver Timing Control B configuration*/ + paratable[0] = 0x00; + paratable[1] = 0x00; + ili93xx_write_register(ILI9341_CMD_DRIVER_TIMING_CTL_B, paratable, 2); + + /** Memory Access Control configuration*/ + paratable[0] = ILI9341_CMD_MEMORY_ACCESS_CONTROL_MX | + ILI9341_CMD_MEMORY_ACCESS_CONTROL_BGR; + ili93xx_write_register(ILI9341_CMD_MEMORY_ACCESS_CONTROL, + paratable, 1); + + /** Colmod Pixel Format Set configuation*/ + paratable[0] = 0x06; + ili93xx_write_register(ILI9341_CMD_PIXEL_FORMAT_SET, paratable, 1); + + /** Display Function Control */ + paratable[0] = 0x02; + paratable[1] = 0x82; + paratable[2] = 0x27; + paratable[3] = 0x00; + ili93xx_write_register(ILI9341_CMD_DISPLAY_FUNCTION_CTL, + paratable, 4); + + paratable[0] = 0x00; + ili93xx_write_register(ILI9341_CMD_ENABLE_3_GAMMA_CONTROL, + paratable,1); + + paratable[0] = 0x01; + ili93xx_write_register(ILI9341_CMD_GAMMA_SET, paratable,1); + + /** set gamma curve parameters*/ + paratable[0]=0x0F; + paratable[1]=0x31; + paratable[2]=0x2B; + paratable[3]=0x0C; + paratable[4]=0x0E; + paratable[5]=0x08; + paratable[6]=0x4E; + paratable[7]=0xF1; + paratable[8]=0x37; + paratable[9]=0x07; + paratable[10]=0x10; + paratable[11]=0x03; + paratable[12]=0x0E; + paratable[13]=0x09; + paratable[14]=0x00; + ili93xx_write_register(ILI9341_CMD_POSITIVE_GAMMA_CORRECTION, + paratable, 15); + paratable[0]=0x00; + paratable[1]=0x0E; + paratable[2]=0x14; + paratable[3]=0x03; + paratable[4]=0x11; + paratable[5]=0x07; + paratable[6]=0x31; + paratable[7]=0xC1; + paratable[8]=0x48; + paratable[9]=0x08; + paratable[10]=0x0F; + paratable[11]=0x0C; + paratable[12]=0x31; + paratable[13]=0x36; + paratable[14]=0x0F; + ili93xx_write_register(ILI9341_CMD_NEGATIVE_GAMMA_CORRECTION, + paratable, 15); + + /** set window area*/ + ili93xx_set_window(0, 0, p_opt->ul_width, p_opt->ul_height); + ili93xx_set_foreground_color(p_opt->foreground_color); + /** Leave sleep mode*/ + ili93xx_write_register(ILI9341_CMD_SLEEP_OUT, paratable, 0); + ili93xx_delay(10); + /** Display on*/ + ili93xx_write_register(ILI9341_CMD_DISPLAY_ON, paratable, 0); + } else { + /** exit with return value 1 if device type is not supported.*/ + return 1; + } + + return 0; +} + +/** + * \brief get the device type. + */ +uint8_t ili93xx_device_type(void) +{ + return g_uc_device_type; +} + +/** + * \brief Turn on the LCD. + */ +void ili93xx_display_on(void) +{ + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + ili93xx_write_register_word(ILI9325_DISP_CTRL1, + ILI9325_DISP_CTRL1_BASEE | + ILI9325_DISP_CTRL1_GON | + ILI9325_DISP_CTRL1_DTE | + ILI9325_DISP_CTRL1_D(0x03)); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + ili93xx_write_register(ILI9341_CMD_DISPLAY_ON, NULL, 0); + } +} + +/** + * \brief Turn off the LCD. + */ +void ili93xx_display_off(void) +{ + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + ili93xx_write_register_word(ILI9325_DISP_CTRL1, 0x00); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + ili93xx_write_register(ILI9341_CMD_DISPLAY_OFF, NULL, 0); + } +} + +/** + * \brief Set foreground color. + * + * \param ul_color foreground color. + */ +void ili93xx_set_foreground_color(ili93xx_color_t ul_color) +{ + uint32_t i; + + /** Fill the cache with selected color */ + for (i = 0; i < LCD_DATA_CACHE_SIZE; ++i) { + g_ul_pixel_cache[i] = ul_color; + } +} + +/** + * \brief Fill the LCD buffer with the specified color. + * + * \param ul_color fill color. + */ +void ili93xx_fill(ili93xx_color_t ul_color) +{ + uint32_t dw; + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + ili93xx_set_cursor_position(0, 0); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + ili93xx_set_window(0, 0, g_ul_lcd_x_length, g_ul_lcd_y_length); + } + + ili93xx_write_ram_prepare(); + + for (dw = ILI93XX_LCD_WIDTH * ILI93XX_LCD_HEIGHT; dw > 0; dw--) { + ili93xx_write_ram(ul_color); + } +} + +/** + * \brief Set display window. + * + * \param ul_x Horizontal address start position + * \param ul_y Vertical address start position + * \param ul_width The width of the window. + * \param ul_height The height of the window. + */ +void ili93xx_set_window(uint32_t ul_x, uint32_t ul_y, uint32_t ul_width, + uint32_t ul_height) +{ + Assert(ul_x <= (g_ul_lcd_x_length - 1)); + Assert(ul_y <= (g_ul_lcd_y_length - 1)); + Assert(ul_width <= (g_ul_lcd_x_length - ul_x)); + Assert(ul_height <= (g_ul_lcd_y_length - ul_y)); + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + /** Set Horizontal Address Start Position */ + ili93xx_write_register_word(ILI9325_HORIZONTAL_ADDR_START, + (uint16_t)ul_x); + + /** Set Horizontal Address End Position */ + ili93xx_write_register_word(ILI9325_HORIZONTAL_ADDR_END, + (uint16_t)(ul_x + ul_width - 1)); + + /** Set Vertical Address Start Position */ + ili93xx_write_register_word(ILI9325_VERTICAL_ADDR_START, + (uint16_t)ul_y); + + /** Set Vertical Address End Position */ + ili93xx_write_register_word(ILI9325_VERTICAL_ADDR_END, + (uint16_t)(ul_y + ul_height - 1)); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + uint8_t paratable[4]; + + /** Set Column Address Position */ + paratable[0] = (ul_x >> 8) & 0xFF; + paratable[1] = ul_x & 0xFF; + paratable[2] = ((ul_x + ul_width - 1) >> 8) & 0xFF; + paratable[3] = (ul_x + ul_width - 1) & 0xFF; + ili93xx_write_register(ILI9341_CMD_COLUMN_ADDRESS_SET, + paratable, 4); + + /** Set Page Address Position */ + paratable[0] = (ul_y >> 8) & 0xFF; + paratable[1] = ul_y & 0xFF; + paratable[2] = ((ul_y + ul_height - 1) >> 8) & 0xFF; + paratable[3] = (ul_y + ul_height - 1) & 0xFF; + ili93xx_write_register(ILI9341_CMD_PAGE_ADDRESS_SET, + paratable, 4); + } +} + +/** + * \brief Set cursor of LCD screen. + * + * \param us_x X coordinate of upper-left corner on LCD. + * \param us_y Y coordinate of upper-left corner on LCD. + */ +void ili93xx_set_cursor_position(uint16_t us_x, uint16_t us_y) +{ + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + /** GRAM Horizontal/Vertical Address Set (R20h, R21h) */ + ili93xx_write_register_word(ILI9325_HORIZONTAL_GRAM_ADDR_SET, us_x); + ili93xx_write_register_word(ILI9325_VERTICAL_GRAM_ADDR_SET, us_y); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + /** There is no corresponding operation for ILI9341. */ + } +} + +/** + * \brief Scroll up/down for the number of specified lines. + * + * \param ul_lines number of lines to scroll. + */ +void ili93xx_scroll(int32_t ul_lines) +{ + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + ili93xx_write_register_word(ILI9325_VERTICAL_SCROLL_CTRL, ul_lines); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + uint8_t paratable[2]; + + paratable[0] = (ul_lines >> 8) & 0xFF; + paratable[1] = ul_lines & 0xFF; + ili93xx_write_register(ILI9341_CMD_VERT_SCROLL_START_ADDRESS, + paratable, 2); + } +} + +/** + * \brief Vertical Scroll area definition for ili9341. + * + * \param us_tfa the top fixed area (the No. of lines) + * \param us_vsa the height of the vetical scrolling area + * \param us_bfa the bottom fixed area (the No. of lines) + */ +void ili93xx_vscroll_area_define(uint16_t us_tfa, uint16_t us_vsa, + uint16_t us_bfa) +{ + if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + uint8_t paratable[6]; + + paratable[0] = (us_tfa >> 8) & 0xFF; + paratable[1] = us_tfa & 0xFF; + paratable[2] = (us_vsa >> 8) & 0xFF; + paratable[3] = us_vsa & 0xFF; + paratable[4] = (us_bfa >> 8) & 0xFF; + paratable[5] = us_bfa & 0xFF; + ili93xx_write_register(ILI9341_CMD_VERT_SCROLL_DEFINITION, + paratable, 6); + } +} + +/** + * \brief Enable the scrolling feature. + */ +void ili93xx_enable_scroll(void) +{ + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + ili93xx_write_register_word(ILI9325_BASE_IMG_DISP_CTRL, + ILI9325_BASE_IMG_DISP_CTRL_REV | + ILI9325_BASE_IMG_DISP_CTRL_VLE); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + /** no operation needed for ILI9341*/ + } +} + +/** + * \brief Disable the scrolling feature. + */ +void ili93xx_disable_scroll(void) +{ + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + ili93xx_write_register_word(ILI9325_BASE_IMG_DISP_CTRL, + ILI9325_BASE_IMG_DISP_CTRL_REV); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + ili93xx_display_off(); + ili93xx_write_register(ILI9341_CMD_NORMAL_DISP_MODE_ON, NULL, 0); + ili93xx_display_on(); + } +} + +/** + * \brief Set display direction. + * + * \param e_dd 0: horizontal direction, 1: vertical direction + * \param e_shd: horizontal increase(0) or decrease(1) + * \param e_scd: vertical increase(1) or decrease(0) + */ +void ili93xx_set_display_direction(enum ili93xx_display_direction e_dd, + enum ili93xx_shift_direction e_shd, + enum ili93xx_scan_direction e_scd) +{ + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + if (e_dd == LANDSCAPE) { + ili93xx_write_register_word(ILI9325_ENTRY_MODE, + ILI9325_ENTRY_MODE_BGR | ILI9325_ENTRY_MODE_TRI | + ILI9325_ENTRY_MODE_DFM | ILI9325_ENTRY_MODE_ID(0x00)| + ILI9325_ENTRY_MODE_AM); + g_ul_lcd_x_length = ILI93XX_LCD_HEIGHT; + g_ul_lcd_y_length = ILI93XX_LCD_WIDTH; + } else { + ili93xx_write_register_word(ILI9325_ENTRY_MODE, + ILI9325_ENTRY_MODE_BGR | ILI9325_ENTRY_MODE_TRI | + ILI9325_ENTRY_MODE_DFM | ILI9325_ENTRY_MODE_ID(0x01)); + g_ul_lcd_x_length = ILI93XX_LCD_WIDTH; + g_ul_lcd_y_length = ILI93XX_LCD_HEIGHT; + } + + if (e_shd == H_INCREASE) { + ili93xx_write_register_word(ILI9325_DRIVER_OUTPUT_CTRL1, 0x0000); + } else { + ili93xx_write_register_word(ILI9325_DRIVER_OUTPUT_CTRL1, + ILI9325_DRIVER_OUTPUT_CTRL1_SS); + } + + if (e_scd == V_INCREASE) { + ili93xx_write_register_word(ILI9325_DRIVER_OUTPUT_CTRL2, + ILI9325_DRIVER_OUTPUT_CTRL2_NL(0x27)); + } else { + ili93xx_write_register_word(ILI9325_DRIVER_OUTPUT_CTRL2, + ILI9325_DRIVER_OUTPUT_CTRL2_GS | + ILI9325_DRIVER_OUTPUT_CTRL2_NL(0x27)); + } + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + if (e_dd == LANDSCAPE) { + uint8_t paratable[1]; + paratable[0] = ILI9341_CMD_MEMORY_ACCESS_CONTROL_MV | + ILI9341_CMD_MEMORY_ACCESS_CONTROL_BGR; + ili93xx_write_register( + ILI9341_CMD_MEMORY_ACCESS_CONTROL, + paratable, 1); + g_ul_lcd_x_length = ILI93XX_LCD_HEIGHT; + g_ul_lcd_y_length = ILI93XX_LCD_WIDTH; + } else { + uint8_t paratable[1]; + paratable[0] = ILI9341_CMD_MEMORY_ACCESS_CONTROL_BGR | + ILI9341_CMD_MEMORY_ACCESS_CONTROL_MX; + ili93xx_write_register( + ILI9341_CMD_MEMORY_ACCESS_CONTROL, + paratable, 1); + g_ul_lcd_x_length = ILI93XX_LCD_WIDTH; + g_ul_lcd_y_length = ILI93XX_LCD_HEIGHT; + } + } +} + +/** + * \brief Draw a pixel on LCD. + * + * \param ul_x X coordinate of pixel. + * \param ul_y Y coordinate of pixel. + * + * \return 0 if succeeds, otherwise fails. + */ +uint32_t ili93xx_draw_pixel(uint32_t ul_x, uint32_t ul_y) +{ + if ((ul_x >= g_ul_lcd_x_length) || (ul_y >= g_ul_lcd_y_length)) { + return 1; + } + + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + /** Set cursor */ + ili93xx_set_cursor_position(ul_x, ul_y); + /** Prepare to write in GRAM */ + ili93xx_write_ram_prepare(); + ili93xx_write_ram(*g_ul_pixel_cache); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + ili93xx_set_window(ul_x, ul_y, 0, 0); + /** Prepare to write in GRAM */ + ili93xx_write_ram_prepare(); + ili93xx_write_ram(*g_ul_pixel_cache); + } + + return 0; +} + +/** + * \brief Get a pixel from LCD. + * + * \param ul_x X coordinate of pixel. + * \param ul_y Y coordinate of pixel. + * + * \return the pixel color. + */ +ili93xx_color_t ili93xx_get_pixel(uint32_t ul_x, uint32_t ul_y) +{ + Assert(ul_x <= g_ul_lcd_x_length); + Assert(ul_y <= g_ul_lcd_y_length); + + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + /** Set cursor */ + ili93xx_set_cursor_position(ul_x, ul_y); + /** Prepare to write in GRAM */ + ili93xx_read_ram_prepare(); + return ili93xx_read_ram(); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + ili93xx_set_window(ul_x, ul_y, 0, 0); + /** Prepare to write in GRAM */ + ili93xx_read_ram_prepare(); + return ili93xx_read_ram(); + } + + return 0; +} + +/** + * \brief Draw a line on LCD, which is not horizontal or vertical. + * + * \param ul_x1 X coordinate of line start. + * \param ul_y1 Y coordinate of line start. + * \param ul_x2 X coordinate of line end. + * \param ul_y2 Y coordinate of line endl. + */ +static void ili93xx_draw_line_bresenham(uint32_t ul_x1, uint32_t ul_y1, + uint32_t ul_x2, uint32_t ul_y2) +{ + int dx, dy; + int i; + int xinc, yinc, cumul; + int x, y; + + x = ul_x1; + y = ul_y1; + dx = ul_x2 - ul_x1; + dy = ul_y2 - ul_y1; + xinc = (dx > 0) ? 1 : -1; + yinc = (dy > 0) ? 1 : -1; + dx = abs(ul_x2 - ul_x1); + dy = abs(ul_y2 - ul_y1); + + ili93xx_draw_pixel(x, y); + + if (dx > dy) { + cumul = dx >> 1; + + for (i = 1; i <= dx; i++) { + x += xinc; + cumul += dy; + + if (cumul >= dx) { + cumul -= dx; + y += yinc; + } + + ili93xx_draw_pixel(x, y); + } + } else { + cumul = dy >> 1; + + for (i = 1; i <= dy; i++) { + y += yinc; + cumul += dx; + + if (cumul >= dy) { + cumul -= dy; + x += xinc; + } + + ili93xx_draw_pixel(x, y); + } + } +} + +/** + * \brief Draw a line on LCD. + * + * \param ul_x1 X coordinate of line start. + * \param ul_y1 Y coordinate of line start. + * \param ul_x2 X coordinate of line end. + * \param ul_y2 Y coordinate of line end. + */ +void ili93xx_draw_line(uint32_t ul_x1, uint32_t ul_y1, + uint32_t ul_x2, uint32_t ul_y2) +{ + if ((ul_y1 == ul_y2) || (ul_x1 == ul_x2)) { + ili93xx_draw_filled_rectangle(ul_x1, ul_y1, ul_x2, ul_y2); + } else { + ili93xx_draw_line_bresenham(ul_x1, ul_y1, ul_x2, ul_y2); + } +} + +/** + * \brief Draw a rectangle on LCD. + * + * \param ul_x1 X coordinate of upper-left corner on LCD. + * \param ul_y1 Y coordinate of upper-left corner on LCD. + * \param ul_x2 X coordinate of lower-right corner on LCD. + * \param ul_y2 Y coordinate of lower-right corner on LCD. + */ +void ili93xx_draw_rectangle(uint32_t ul_x1, uint32_t ul_y1, + uint32_t ul_x2, uint32_t ul_y2) +{ + ili93xx_check_box_coordinates(&ul_x1, &ul_y1, &ul_x2, &ul_y2); + + ili93xx_draw_filled_rectangle(ul_x1, ul_y1, ul_x2, ul_y1); + ili93xx_draw_filled_rectangle(ul_x1, ul_y2, ul_x2, ul_y2); + + ili93xx_draw_filled_rectangle(ul_x1, ul_y1, ul_x1, ul_y2); + ili93xx_draw_filled_rectangle(ul_x2, ul_y1, ul_x2, ul_y2); +} + +/** + * \brief Draw a filled rectangle on LCD. + * + * \param ul_x1 X coordinate of upper-left corner on LCD. + * \param ul_y1 Y coordinate of upper-left corner on LCD. + * \param ul_x2 X coordinate of lower-right corner on LCD. + * \param ul_y2 Y coordinate of lower-right corner on LCD. + */ +void ili93xx_draw_filled_rectangle(uint32_t ul_x1, uint32_t ul_y1, + uint32_t ul_x2, uint32_t ul_y2) +{ + uint32_t size, blocks; + + /** Swap coordinates if necessary */ + ili93xx_check_box_coordinates(&ul_x1, &ul_y1, &ul_x2, &ul_y2); + + /** Determine the refresh window area */ + ili93xx_set_window(ul_x1, ul_y1, (ul_x2 - ul_x1) + 1, + (ul_y2 - ul_y1) + 1); + + /** Set cursor */ + ili93xx_set_cursor_position(ul_x1, ul_y1); + + /** Prepare to write in Graphic RAM */ + ili93xx_write_ram_prepare(); + + size = (ul_x2 - ul_x1 + 1) * (ul_y2 - ul_y1 + 1); + + /** Send pixels blocks => one SPI IT / block */ + blocks = size / LCD_DATA_CACHE_SIZE; + while (blocks--) { + ili93xx_write_ram_buffer(g_ul_pixel_cache, + LCD_DATA_CACHE_SIZE); + } + + /** Send remaining pixels */ + ili93xx_write_ram_buffer(g_ul_pixel_cache, + size % LCD_DATA_CACHE_SIZE); + + /** Reset the refresh window area */ + ili93xx_set_window(0, 0, g_ul_lcd_x_length, g_ul_lcd_y_length); +} + +/** + * \brief Draw a circle on LCD. + * + * \param ul_x X coordinate of circle center. + * \param ul_y Y coordinate of circle center. + * \param ul_r circle radius. + * + * \return 0 if succeeds, otherwise fails. + */ +uint32_t ili93xx_draw_circle(uint32_t ul_x, uint32_t ul_y, uint32_t ul_r) +{ + int32_t d; + uint32_t curX; + uint32_t curY; + + if (ul_r == 0) { + return 1; + } + + d = 3 - (ul_r << 1); + curX = 0; + curY = ul_r; + + while (curX <= curY) { + ili93xx_draw_pixel(ul_x + curX, ul_y + curY); + ili93xx_draw_pixel(ul_x + curX, ul_y - curY); + ili93xx_draw_pixel(ul_x - curX, ul_y + curY); + ili93xx_draw_pixel(ul_x - curX, ul_y - curY); + ili93xx_draw_pixel(ul_x + curY, ul_y + curX); + ili93xx_draw_pixel(ul_x + curY, ul_y - curX); + ili93xx_draw_pixel(ul_x - curY, ul_y + curX); + ili93xx_draw_pixel(ul_x - curY, ul_y - curX); + + if (d < 0) { + d += (curX << 2) + 6; + } else { + d += ((curX - curY) << 2) + 10; + curY--; + } + + curX++; + } + + return 0; +} + +/** + * \brief Draw a filled circle on LCD. + * + * \param ul_x X coordinate of circle center. + * \param ul_y Y coordinate of circle center. + * \param ul_r circle radius. + * + * \return 0 if succeeds, otherwise fails. + */ +uint32_t ili93xx_draw_filled_circle(uint32_t ul_x, uint32_t ul_y, uint32_t ul_r) +{ + signed int d; /* Decision Variable */ + uint32_t dwCurX; /* Current X Value */ + uint32_t dwCurY; /* Current Y Value */ + uint32_t dwXmin, dwYmin; + + if (ul_r == 0) { + return 1; + } + + d = 3 - (ul_r << 1); + dwCurX = 0; + dwCurY = ul_r; + + while (dwCurX <= dwCurY) { + dwXmin = (dwCurX > ul_x) ? 0 : ul_x - dwCurX; + dwYmin = (dwCurY > ul_y) ? 0 : ul_y - dwCurY; + ili93xx_draw_filled_rectangle(dwXmin, dwYmin, ul_x + dwCurX, + dwYmin); + ili93xx_draw_filled_rectangle(dwXmin, ul_y + dwCurY, + ul_x + dwCurX, ul_y + dwCurY); + dwXmin = (dwCurY > ul_x) ? 0 : ul_x - dwCurY; + dwYmin = (dwCurX > ul_y) ? 0 : ul_y - dwCurX; + ili93xx_draw_filled_rectangle(dwXmin, dwYmin, ul_x + dwCurY, + dwYmin); + ili93xx_draw_filled_rectangle(dwXmin, ul_y + dwCurX, + ul_x + dwCurY, ul_y + dwCurX); + + if (d < 0) { + d += (dwCurX << 2) + 6; + } else { + d += ((dwCurX - dwCurY) << 2) + 10; + dwCurY--; + } + + dwCurX++; + } + + return 0; +} + +/** + * \brief Draw an ASCII character on LCD. + * + * \param ul_x X coordinate of character upper-left corner. + * \param ul_y Y coordinate of character upper-left corner. + * \param uc_c character to print. + */ +static void ili93xx_draw_char(uint32_t ul_x, uint32_t ul_y, uint8_t uc_c) +{ + uint32_t row, col; + uint32_t offset, offset0, offset1; + + /** + * Compute offset according of the specified ASCII character + * Note: the first 32 characters of the ASCII table are not handled + */ + offset = ((uint32_t)uc_c - 0x20) * 20; + + for (col = 0; col < 10; col++) { + /** Compute the first and second byte offset of a column */ + offset0 = offset + col * 2; + offset1 = offset0 + 1; + + /** + * Draw pixel on screen depending on the corresponding bit value + * from the charset + */ + for (row = 0; row < 8; row++) { + if ((p_uc_charset10x14[offset0] >> (7 - row)) & 0x1) { + ili93xx_draw_pixel(ul_x + col, ul_y + row); + } + } + + for (row = 0; row < 6; row++) { + if ((p_uc_charset10x14[offset1] >> (7 - row)) & 0x1) { + ili93xx_draw_pixel(ul_x + col, ul_y + row + 8); + } + } + } +} + +/** + * \brief Draw a string on LCD. + * + * \param ul_x X coordinate of string top-left corner. + * \param ul_y Y coordinate of string top-left corner. + * \param p_str String to display. + */ +void ili93xx_draw_string(uint32_t ul_x, uint32_t ul_y, const uint8_t *p_str) +{ + uint32_t xorg = ul_x; + + while (*p_str != 0) { + /** If newline, jump to the next line (font height + 2) */ + if (*p_str == '\n') { + ul_y += gfont.height + 2; + ul_x = xorg; + } else { + /** + * Draw the character and place cursor right after (font + * width + 2) + */ + ili93xx_draw_char(ul_x, ul_y, *p_str); + ul_x += gfont.width + 2; + } + + p_str++; + } +} + +/** + * \brief Draw a pixmap on LCD. + * + * \param ul_x X coordinate of upper-left corner on LCD. + * \param ul_y Y coordinate of upper-left corner on LCD. + * \param ul_width width of the picture. + * \param ul_height height of the picture. + * \param p_ul_pixmap pixmap of the image. + */ +void ili93xx_draw_pixmap(uint32_t ul_x, uint32_t ul_y, uint32_t ul_width, + uint32_t ul_height, const ili93xx_color_t *p_ul_pixmap) +{ + uint32_t size; + uint32_t dwX1, dwY1, dwX2, dwY2; + dwX1 = ul_x; + dwY1 = ul_y; + dwX2 = ul_x + ul_width; + dwY2 = ul_y + ul_height; + + /** Swap coordinates if necessary */ + ili93xx_check_box_coordinates(&dwX1, &dwY1, &dwX2, &dwY2); + + /** Determine the refresh window area */ + ili93xx_set_window(dwX1, dwY1, (dwX2 - dwX1 + 1), (dwY2 - dwY1 + 1)); + + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + /** Set cursor */ + ili93xx_set_cursor_position(dwX1, dwY1); + /** Prepare to write in GRAM */ + ili93xx_write_ram_prepare(); + + size = (dwX2 - dwX1) * (dwY2 - dwY1); + + ili93xx_write_ram_buffer(p_ul_pixmap, size); + + /** Reset the refresh window area */ + ili93xx_set_window(0, 0, g_ul_lcd_x_length, g_ul_lcd_y_length); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + /** Prepare to write in GRAM */ + ili93xx_write_ram_prepare(); + + size = (dwX2 - dwX1) * (dwY2 - dwY1); + + ili93xx_write_ram_buffer(p_ul_pixmap, size); + + /** Reset the refresh window area */ + ili93xx_set_window(0, 0, g_ul_lcd_x_length, g_ul_lcd_y_length); + } +} + +/** + * \internal + * \brief Helper function to send the drawing limits (boundaries) to the display + * + * This function is used to send the currently set upper-left and lower-right + * drawing limits to the display, as set through the various limit functions. + * + * \param send_end_limits True to also send the lower-right drawing limits + */ +static inline void ili93xx_send_draw_limits(const bool send_end_limits) +{ + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + /** Set Horizontal Address Start Position */ + ili93xx_write_register_word(ILI9325_HORIZONTAL_ADDR_START, + (uint16_t)limit_start_x); + + if (send_end_limits) { + /** Set Horizontal Address End Position */ + ili93xx_write_register_word(ILI9325_HORIZONTAL_ADDR_END, + (uint16_t)(limit_end_x)); + } + + /** Set Vertical Address Start Position */ + ili93xx_write_register_word(ILI9325_VERTICAL_ADDR_START, + (uint16_t)limit_start_y); + if (send_end_limits) { + /** Set Vertical Address End Position */ + ili93xx_write_register_word(ILI9325_VERTICAL_ADDR_END, + (uint16_t)(limit_end_y)); + } + + /** GRAM Horizontal/Vertical Address Set (R20h, R21h) */ + ili93xx_write_register_word(ILI9325_HORIZONTAL_GRAM_ADDR_SET, + limit_start_x); + ili93xx_write_register_word(ILI9325_VERTICAL_GRAM_ADDR_SET, + limit_start_y); + + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + /** Set Horizontal Address Start Position */ + ili93xx_write_register_word(ILI9341_CMD_COLUMN_ADDRESS_SET, + (uint16_t)limit_start_x); + + if (send_end_limits) { + /** Set Horizontal Address End Position */ + ili93xx_write_register_word( + ILI9341_CMD_COLUMN_ADDRESS_SET, + (uint16_t)(limit_end_x)); + } + + ili93xx_write_register(0, NULL, 0); + + /** Set Vertical Address Start Position */ + ili93xx_write_register_word(ILI9341_CMD_PAGE_ADDRESS_SET, + (uint16_t)limit_start_y); + if (send_end_limits) { + /** Set Vertical Address End Position */ + ili93xx_write_register_word( + ILI9341_CMD_PAGE_ADDRESS_SET, + (uint16_t)(limit_end_y)); + } + + ili93xx_write_register(0, NULL, 0); + } +} + +/** + * \brief Set the display top left drawing limit + * + * Use this function to set the top left limit of the drawing limit box. + * + * \param x The x coordinate of the top left corner + * \param y The y coordinate of the top left corner + */ +void ili93xx_set_top_left_limit(ili93xx_coord_t x, ili93xx_coord_t y) +{ + limit_start_x = x; + limit_start_y = y; + + ili93xx_send_draw_limits(false); +} + +/** + * \brief Set the display bottom right drawing limit + * + * Use this function to set the bottom right corner of the drawing limit box. + * + * \param x The x coordinate of the bottom right corner + * \param y The y coordinate of the bottom right corner + */ +void ili93xx_set_bottom_right_limit(ili93xx_coord_t x, ili93xx_coord_t y) +{ + limit_end_x = x; + limit_end_y = y; + + ili93xx_send_draw_limits(true); +} + +/** + * \brief Set the full display drawing limits + * + * Use this function to set the full drawing limit box. + * + * \param start_x The x coordinate of the top left corner + * \param start_y The y coordinate of the top left corner + * \param end_x The x coordinate of the bottom right corner + * \param end_y The y coordinate of the bottom right corner + */ +void ili93xx_set_limits(ili93xx_coord_t start_x, ili93xx_coord_t start_y, + ili93xx_coord_t end_x, ili93xx_coord_t end_y) +{ + limit_start_x = start_x; + limit_start_y = start_y; + limit_end_x = end_x; + limit_end_y = end_y; + + ili93xx_send_draw_limits(true); +} + +/** + * \brief Read a single color from the graphical memory + * + * Use this function to read a color from the graphical memory of the + * controller. + * + * \retval ili93xx_color_t The read color pixel + */ +ili93xx_color_t ili93xx_read_gram(void) +{ + uint8_t value[3]; + ili93xx_color_t color; + + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + LCD_IR(0); + /** Write Data to GRAM (R22h) */ + LCD_IR(ILI9325_GRAM_DATA_REG); + /** two dummy read */ + value[0] = LCD_RD(); + value[1] = LCD_RD(); + /** data upper byte */ + value[0] = LCD_RD(); + /** data lower byte */ + value[1] = LCD_RD(); + + /** Convert RGB565 to RGB888 */ + /** For BGR format */ + color = ((value[0] & 0xF8)) | + ((value[0] & 0x07) << 13) | ((value[1] & 0xE0) << 5) | + ((value[1] & 0x1F) << 19); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + LCD_IR(0); + /** Write Data to GRAM (R2Eh) */ + LCD_IR(ILI9341_CMD_MEMORY_READ); + /** dummy read */ + value[0] = LCD_RD(); + /** the highest byte - R byte*/ + value[0] = LCD_RD(); + /** the middle byte - G byte*/ + value[1] = LCD_RD(); + /** the lowest byte - B byte*/ + value[2] = LCD_RD(); + /** combine R, G, B byte to a color value */ + color = (value[0] << 16) | (value[1] << 8) | value[2]; + } + return color; +} + +/** + * \brief Write the graphical memory with a single color pixel + * + * Use this function to write a single color pixel to the controller memory. + * + * \param color The color pixel to write to the screen + */ +void ili93xx_write_gram(ili93xx_color_t color) +{ + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + LCD_IR(0); + /** Write Data to GRAM (R22h) */ + LCD_IR(ILI9325_GRAM_DATA_REG); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + /** memory write command (R2Ch)*/ + LCD_IR(ILI9341_CMD_MEMORY_WRITE); + LCD_IR(0); + LCD_IR(ILI9341_CMD_WRITE_MEMORY_CONTINUE); + } + LCD_WD((color >> 16) & 0xFF); + LCD_WD((color >> 8) & 0xFF); + LCD_WD(color & 0xFF); +} + +/** + * \brief Copy pixels from SRAM to the screen + * + * Used to copy a large quantitative of data to the screen in one go. + * + * \param pixels Pointer to the pixel data + * \param count Number of pixels to copy to the screen + */ +void ili93xx_copy_pixels_to_screen(const ili93xx_color_t *pixels, + uint32_t count) +{ + /** Sanity check to make sure that the pixel count is not zero */ + Assert(count > 0); + + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + LCD_IR(0); + LCD_IR(ILI9325_GRAM_DATA_REG); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + LCD_IR(ILI9341_CMD_MEMORY_WRITE); + LCD_IR(0); + LCD_IR(ILI9341_CMD_WRITE_MEMORY_CONTINUE); + } + + while (count--) { + LCD_WD((*pixels >> 16) & 0xFF); + LCD_WD((*pixels >> 8) & 0xFF); + LCD_WD(*pixels & 0xFF); + pixels++; + } +} + +/** + * \brief Copy pixels from SRAM to the screen + * + * Used to copy a large quantitative of data to the screen in one go. + * + * \param pixels Pointer to the pixel data + * \param count Number of pixels to copy to the screen + */ +void ili93xx_copy_raw_pixel_24bits_to_screen(const uint8_t *raw_pixels, + uint32_t count) +{ + ili93xx_color_t pixels; + + /** Sanity check to make sure that the pixel count is not zero */ + Assert(count > 0); + + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + LCD_IR(0); + LCD_IR(ILI9325_GRAM_DATA_REG); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + LCD_IR(ILI9341_CMD_MEMORY_WRITE); + LCD_IR(0); + LCD_IR(ILI9341_CMD_WRITE_MEMORY_CONTINUE); + } + while (count--) { + pixels = (*raw_pixels) | + (*(raw_pixels +1)) << 8 | + (*(raw_pixels + 2)) << 16; + LCD_WD((pixels >> 16) & 0xFF); + LCD_WD((pixels >> 8) & 0xFF); + LCD_WD(pixels & 0xFF); + raw_pixels += 3; + } +} + +/** + * \brief Set a given number of pixels to the same color + * + * Use this function to write a certain number of pixels to the same color + * within a set limit. + * + * \param color The color to write to the display + * \param count The number of pixels to write with this color + */ +void ili93xx_duplicate_pixel(const ili93xx_color_t color, uint32_t count) +{ + /** Sanity check to make sure that the pixel count is not zero */ + Assert(count > 0); + + if (g_uc_device_type == DEVICE_TYPE_ILI9325) { + /** Write Data to GRAM (R22h) */ + LCD_IR(0); + LCD_IR(ILI9325_GRAM_DATA_REG); + } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { + LCD_IR(ILI9341_CMD_MEMORY_WRITE); + LCD_IR(0); + LCD_IR(ILI9341_CMD_WRITE_MEMORY_CONTINUE); + } + + while (count--) { + LCD_WD((color >> 16) & 0xFF); + LCD_WD((color >> 8) & 0xFF); + LCD_WD(color & 0xFF); + } +} + +/** + * \brief Copy pixels from the screen to a pixel buffer + * + * Use this function to copy pixels from the display to an internal SRAM buffer. + * + * \param pixels Pointer to the pixel buffer to read to + * \param count Number of pixels to read + */ +void ili93xx_copy_pixels_from_screen(ili93xx_color_t *pixels, uint32_t count) +{ + /** Remove warnings */ + UNUSED(pixels); + UNUSED(count); +} + +/** + * \} + */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili93xx.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili93xx.h new file mode 100644 index 000000000..61ba2140d --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili93xx.h @@ -0,0 +1,349 @@ +/** + * \file + * + * \brief API driver for ili93xx TFT display component. + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef ILI93XX_H_INCLUDED +#define ILI93XX_H_INCLUDED + +/** + * \defgroup ili93xx_display_group - LCD with ili93xx component driver + * + * This is a driver for LCD with ili93xx. Now this driver supports ili9325 and + * ili9341.This component is custom LCD used for SAM4E-EK. + * The driver provides functions for initializtion and control of the LCD. + * + * See \ref sam_component_ili93xx_quickstart. + * + * \{ + */ + +#include "compiler.h" +#include "board.h" +#include "conf_ili93xx.h" + +/** @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/** @endcond */ + +/** Type define for an integer type large enough to store a pixel color. */ +typedef uint32_t ili93xx_color_t; + +/** Type define for an integer type large enough to store a pixel coordinate. + */ +typedef int16_t ili93xx_coord_t; + +/** This macro generates a 16-bit native color for the display from a + * 24-bit RGB value. + */ +#define ili93xx_COLOR(r, g, b) ((r << 16) | (g << 8) | b) + +typedef ili93xx_color_t gfx_color_t; +typedef int16_t gfx_coord_t; + +/** ili93xx screen size */ +#define ILI93XX_LCD_WIDTH 240 +#define ILI93XX_LCD_HEIGHT 320 + +/** ili93xx ID code */ +#define ILI9325_DEVICE_CODE (0x9325u) +#define ILI9341_DEVICE_CODE (0x9341u) +#define DEVICE_TYPE_ILI9325 1 +#define DEVICE_TYPE_ILI9341 2 +/** Define EBI access for ILI93xx 8-bit System Interface.*/ +#if defined(BOARD_ILI93XX_ADDR) && defined (BOARD_ILI93XX_RS) +static inline void LCD_IR(uint8_t lcd_index) +{ + /** ILI9325 index register address */ + *((volatile uint8_t *)(BOARD_ILI93XX_ADDR)) = lcd_index; +} + +static inline void LCD_WD(uint8_t lcd_data) +{ + *((volatile uint8_t *)((BOARD_ILI93XX_ADDR) | (BOARD_ILI93XX_RS))) = + lcd_data; +} + +static inline uint8_t LCD_RD(void) +{ + return *((volatile uint8_t *)((BOARD_ILI93XX_ADDR) |(BOARD_ILI93XX_RS))); +} + +#else + #error "Missing module configuration for ILI93xx!" +#endif + +/** RGB 24-bits color table definition (RGB888). */ +#define COLOR_BLACK (0x000000u) +#define COLOR_WHITE (0xFFFFFFu) +#define COLOR_BLUE (0x0000FFu) +#define COLOR_GREEN (0x00FF00u) +#define COLOR_RED (0xFF0000u) +#define COLOR_NAVY (0x000080u) +#define COLOR_DARKBLUE (0x00008Bu) +#define COLOR_DARKGREEN (0x006400u) +#define COLOR_DARKCYAN (0x008B8Bu) +#define COLOR_CYAN (0x00FFFFu) +#define COLOR_TURQUOISE (0x40E0D0u) +#define COLOR_INDIGO (0x4B0082u) +#define COLOR_DARKRED (0x800000u) +#define COLOR_OLIVE (0x808000u) +#define COLOR_GRAY (0x808080u) +#define COLOR_SKYBLUE (0x87CEEBu) +#define COLOR_BLUEVIOLET (0x8A2BE2u) +#define COLOR_LIGHTGREEN (0x90EE90u) +#define COLOR_DARKVIOLET (0x9400D3u) +#define COLOR_YELLOWGREEN (0x9ACD32u) +#define COLOR_BROWN (0xA52A2Au) +#define COLOR_DARKGRAY (0xA9A9A9u) +#define COLOR_SIENNA (0xA0522Du) +#define COLOR_LIGHTBLUE (0xADD8E6u) +#define COLOR_GREENYELLOW (0xADFF2Fu) +#define COLOR_SILVER (0xC0C0C0u) +#define COLOR_LIGHTGREY (0xD3D3D3u) +#define COLOR_LIGHTCYAN (0xE0FFFFu) +#define COLOR_VIOLET (0xEE82EEu) +#define COLOR_AZUR (0xF0FFFFu) +#define COLOR_BEIGE (0xF5F5DCu) +#define COLOR_MAGENTA (0xFF00FFu) +#define COLOR_TOMATO (0xFF6347u) +#define COLOR_GOLD (0xFFD700u) +#define COLOR_ORANGE (0xFFA500u) +#define COLOR_SNOW (0xFFFAFAu) +#define COLOR_YELLOW (0xFFFF00u) + +/** + * Input parameters when initializing ili9325 driver. + */ +struct ili93xx_opt_t { + /** LCD width in pixel*/ + uint32_t ul_width; + /** LCD height in pixel*/ + uint32_t ul_height; + /** LCD foreground color*/ + uint32_t foreground_color; + /** LCD background color*/ + uint32_t background_color; +}; + +/** + * Font structure + */ +struct ili93xx_font { + /** Font width in pixels. */ + uint8_t width; + /** Font height in pixels. */ + uint8_t height; +}; + +/** + * Display direction option + */ +enum ili93xx_display_direction { + LANDSCAPE = 0, + PORTRAIT = 1 +}; + +/** + * Shift direction option + */ +enum ili93xx_shift_direction { + H_INCREASE = 0, + H_DECREASE = 1 +}; + +/** + * Scan direction option + */ +enum ili93xx_scan_direction { + V_INCREASE = 0, + V_DEREASE = 1 +}; + +uint32_t ili93xx_init(struct ili93xx_opt_t *p_opt); +void ili93xx_display_on(void); +void ili93xx_display_off(void); +void ili93xx_set_foreground_color(ili93xx_color_t ul_color); +void ili93xx_fill(ili93xx_color_t ul_color); +void ili93xx_set_window(uint32_t ul_x, uint32_t ul_y, + uint32_t ul_width, uint32_t ul_height); +void ili93xx_set_cursor_position(uint16_t us_x, uint16_t us_y); +void ili93xx_scroll(int32_t ul_lines); +void ili93xx_enable_scroll(void); +void ili93xx_disable_scroll(void); +void ili93xx_set_display_direction(enum ili93xx_display_direction e_dd, + enum ili93xx_shift_direction e_shd, + enum ili93xx_scan_direction e_scd); +uint32_t ili93xx_draw_pixel(uint32_t ul_x, uint32_t ul_y); +ili93xx_color_t ili93xx_get_pixel(uint32_t ul_x, uint32_t ul_y); +void ili93xx_draw_line(uint32_t ul_x1, uint32_t ul_y1, + uint32_t ul_x2, uint32_t ul_y2); +void ili93xx_draw_rectangle(uint32_t ul_x1, uint32_t ul_y1, + uint32_t ul_x2, uint32_t ul_y2); +void ili93xx_draw_filled_rectangle(uint32_t ul_x1, uint32_t ul_y1, + uint32_t ul_x2, uint32_t ul_y2); +uint32_t ili93xx_draw_circle(uint32_t ul_x, uint32_t ul_y, uint32_t ul_r); +uint32_t ili93xx_draw_filled_circle(uint32_t ul_x, uint32_t ul_y, + uint32_t ul_r); +void ili93xx_draw_string(uint32_t ul_x, uint32_t ul_y, const uint8_t *p_str); +void ili93xx_draw_pixmap(uint32_t ul_x, uint32_t ul_y, uint32_t ul_width, + uint32_t ul_height, const ili93xx_color_t *p_ul_pixmap); +void ili93xx_set_top_left_limit(ili93xx_coord_t x, ili93xx_coord_t y); +void ili93xx_set_bottom_right_limit(ili93xx_coord_t x, ili93xx_coord_t y); +void ili93xx_set_limits(ili93xx_coord_t start_x, ili93xx_coord_t start_y, + ili93xx_coord_t end_x, ili93xx_coord_t end_y); +ili93xx_color_t ili93xx_read_gram(void); +void ili93xx_write_gram(ili93xx_color_t color); +void ili93xx_copy_pixels_to_screen(const ili93xx_color_t *pixels, + uint32_t count); +void ili93xx_copy_raw_pixel_24bits_to_screen(const uint8_t *raw_pixels, + uint32_t count); +void ili93xx_duplicate_pixel(const ili93xx_color_t color, uint32_t count); +void ili93xx_copy_pixels_from_screen(ili93xx_color_t *pixels, uint32_t count); +uint8_t ili93xx_device_type(void); +void ili93xx_vscroll_area_define(uint16_t us_tfa, uint16_t us_vsa, + uint16_t us_bfa); +uint8_t ili93xx_device_type_identify(void); + +/** @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/** @endcond */ + +/** + * \} + */ + +/** + * \page sam_component_ili93xx_quickstart Quick Start Guide for the ILI93XX + * LCD Glass component. + * + * This is the quick start guide for the \ref ili93xx_display_group, with + * step-by-step instructions on how to configure and use the driver for + * a specific use case.The code examples can be copied into e.g the main + * application loop or any other function that will need to control the + * ili93xx LCD Glass component module. Now ili9325 and ili9341 are supported. + * + * \section ili93xx_qs_use_cases Use cases + * - \ref ili93xx_basic + * + * \section ili93xx_basic ili93xx LCD Glass basic usage + * + * This use case will demonstrate how to initialize the ili93xx LCD Glass + * module. + * + * + * \section ili93xx_basic_setup Setup steps + * + * \subsection ili93xx_basic_prereq Prerequisites + * + * This module requires the following driver + * - \ref smc_group + * + * \subsection ili93xx_basic_setup_code + * + * Add this to the main loop or a setup function: + * \code + * struct ili93xx_opt_t g_ili93xx_display_opt; + * g_ili93xx_display_opt.ul_width = ILI93XX_LCD_WIDTH; + * g_ili93xx_display_opt.ul_height = ILI93XX_LCD_HEIGHT; + * g_ili93xx_display_opt.foreground_color = COLOR_BLACK; + * g_ili93xx_display_opt.background_color = COLOR_WHITE; + * ili93xx_init(&g_ili93xx_display_opt); + * \endcode + * + * \subsection ili93xx_basic_setup_workflow + * -\ref ili93xx_basic_setup_code + * + * \section ili93xx_basic_usage Usage steps + * + * \subsection ili93xx_basic_usage_code + * + * -# Set display on + * \code + * ili93xx_display_on(); + * \endcode + * + * -# Turn display off + * \code + * ili93xx_display_off(); + * \endcode + * + * -# Draw a pixel + * \code + * ili93xx_set_foreground_color(COLOR_RED); + * ili93xx_draw_pixel(60, 60); + * \endcode + * + * -# Draw a line and circle + * \code + * ili93xx_set_foreground_color(COLOR_BLUE); + * ili93xx_draw_circle(180, 160, 40); + * ili93xx_set_foreground_color(COLOR_VIOLET); + * ili93xx_draw_line(0, 0, 240, 320); + * \endcode + * + * -# Draw a string of text + * \code + * ili93xx_set_foreground_color(COLOR_BLACK); + * ili93xx_draw_string(10, 20, (uint8_t *)"ili93xx_lcd example"); + * \endcode + * + * -# Fill a rectangle with one certain color + * \code + * ili93xx_set_foreground_color(COLOR_BLUE); + * ili93xx_draw_filled_rectangle(0, 0, ILI93XX_LCD_WIDTH, ILI93XX_LCD_HEIGHT); + * \endcode + * + * -# Get device type + * \code + * ili93xx_device_type(); + * \endcode + */ + +#endif /* ILI93XX_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/documentation.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/documentation.h new file mode 100644 index 000000000..63837b095 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/documentation.h @@ -0,0 +1,72 @@ +/** + * \file + * + * \brief Ethernet Phy management + * + * Copyright (c) 2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +/** + * + * \defgroup ethernet_phy_group Ethernet Phy + * + * This is the common API for Ethernet Phy on ARMs. Additional features are available + * in the documentation of the specific modules. + * + * \section ethernet_phy_group_platform Platform Dependencies + * + * The ethernet_phy API is partially chip- or platform-specific. While all + * platforms provide mostly the same functionality, there are some + * variations around how different bus types and clock tree structures + * are handled. + * + * The following functions are available on all platforms, but there may + * be variations in the function signature (i.e. parameters) and + * behaviour. These functions are typically called by platform-specific + * parts of drivers, and applications that aren't intended to be + * portable: + * - ethernet_phy_init() + * - ethernet_phy_set_link() + * - ethernet_phy_auto_negotiate() + * - ethernet_phy_reset() + * + * @{ + */ + +//! @} + diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/ksz8051mnl/ethernet_phy.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/ksz8051mnl/ethernet_phy.c new file mode 100644 index 000000000..790f9dfb9 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/ksz8051mnl/ethernet_phy.c @@ -0,0 +1,428 @@ + /** + * \file + * + * \brief API driver for KSZ8051MNL PHY component. + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#include "ethernet_phy.h" +#include "gmac.h" +#include "conf_eth.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \defgroup ksz8051mnl_ethernet_phy_group PHY component (KSZ8051MNL) + * + * Driver for the ksz8051mnl component. This driver provides access to the main + * features of the PHY. + * + * \section dependencies Dependencies + * This driver depends on the following modules: + * - \ref gmac_group Ethernet Media Access Controller (GMAC) module. + * + * @{ + */ + +/* Max PHY number */ +#define ETH_PHY_MAX_ADDR 31 + +/* Ethernet PHY operation max retry count */ +#define ETH_PHY_RETRY_MAX 1000000 + +/* Ethernet PHY operation timeout */ +#define ETH_PHY_TIMEOUT 10 + +/** + * \brief Find a valid PHY Address ( from addrStart to 31 ). + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_phy_addr PHY address. + * \param uc_start_addr Start address of the PHY to be searched. + * + * \return 0xFF when no valid PHY address is found. + */ +static uint8_t ethernet_phy_find_valid(Gmac *p_gmac, uint8_t uc_phy_addr, + uint8_t uc_start_addr) +{ + uint32_t ul_value = 0; + uint8_t uc_rc = 0; + uint8_t uc_cnt; + uint8_t uc_phy_address = uc_phy_addr; + + gmac_enable_management(p_gmac, true); + + /* Check the current PHY address */ + gmac_phy_read(p_gmac, uc_phy_addr, GMII_PHYID1, &ul_value); + + /* Find another one */ + if (ul_value != GMII_OUI_LSB) { + uc_rc = 0xFF; + for (uc_cnt = uc_start_addr; uc_cnt <= ETH_PHY_MAX_ADDR; uc_cnt++) { + uc_phy_address = (uc_phy_address + 1) & 0x1F; + gmac_phy_read(p_gmac, uc_phy_address, GMII_PHYID1, &ul_value); + if (ul_value == GMII_OUI_MSB) { + uc_rc = uc_phy_address; + break; + } + } + } + + gmac_enable_management(p_gmac, false); + + if (uc_rc != 0xFF) { + gmac_phy_read(p_gmac, uc_phy_address, GMII_BMSR, &ul_value); + } + return uc_rc; +} + + +/** + * \brief Perform a HW initialization to the PHY and set up clocks. + * + * This should be called only once to initialize the PHY pre-settings. + * The PHY address is the reset status of CRS, RXD[3:0] (the emacPins' pullups). + * The COL pin is used to select MII mode on reset (pulled up for Reduced MII). + * The RXDV pin is used to select test mode on reset (pulled up for test mode). + * The above pins should be predefined for corresponding settings in resetPins. + * The GMAC peripheral pins are configured after the reset is done. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_phy_addr PHY address. + * \param ul_mck GMAC MCK. + * + * Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. + */ +uint8_t ethernet_phy_init(Gmac *p_gmac, uint8_t uc_phy_addr, uint32_t mck) +{ + uint8_t uc_rc = GMAC_TIMEOUT; + uint8_t uc_phy; + + ethernet_phy_reset(GMAC,uc_phy_addr); + + /* Configure GMAC runtime clock */ + uc_rc = gmac_set_mdc_clock(p_gmac, mck); + if (uc_rc != GMAC_OK) { + return 0; + } + + /* Check PHY Address */ + uc_phy = ethernet_phy_find_valid(p_gmac, uc_phy_addr, 0); + if (uc_phy == 0xFF) { + return 0; + } + if (uc_phy != uc_phy_addr) { + ethernet_phy_reset(p_gmac, uc_phy_addr); + } + + return uc_rc; +} + + +/** + * \brief Get the Link & speed settings, and automatically set up the GMAC with the + * settings. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_phy_addr PHY address. + * \param uc_apply_setting_flag Set to 0 to not apply the PHY configurations, else to apply. + * + * Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. + */ +uint8_t ethernet_phy_set_link(Gmac *p_gmac, uint8_t uc_phy_addr, + uint8_t uc_apply_setting_flag) +{ + uint32_t ul_stat1; + uint32_t ul_stat2; + uint8_t uc_phy_address, uc_speed, uc_fd; + uint8_t uc_rc = GMAC_TIMEOUT; + + gmac_enable_management(p_gmac, true); + + uc_phy_address = uc_phy_addr; + + uc_rc = gmac_phy_read(p_gmac, uc_phy_address, GMII_BMSR, &ul_stat1); + if (uc_rc != GMAC_OK) { + /* Disable PHY management and start the GMAC transfer */ + gmac_enable_management(p_gmac, false); + + return uc_rc; + } + + if ((ul_stat1 & GMII_LINK_STATUS) == 0) { + /* Disable PHY management and start the GMAC transfer */ + gmac_enable_management(p_gmac, false); + + return GMAC_INVALID; + } + + if (uc_apply_setting_flag == 0) { + /* Disable PHY management and start the GMAC transfer */ + gmac_enable_management(p_gmac, false); + + return uc_rc; + } + + /* Read advertisement */ + uc_rc = gmac_phy_read(p_gmac, uc_phy_address, GMII_ANAR, &ul_stat2); + if (uc_rc != GMAC_OK) { + /* Disable PHY management and start the GMAC transfer */ + gmac_enable_management(p_gmac, false); + + return uc_rc; + } + + if ((ul_stat1 & GMII_100BASE_TX_FD) && (ul_stat2 & GMII_100TX_FDX)) { + /* Set GMAC for 100BaseTX and Full Duplex */ + uc_speed = true; + uc_fd = true; + } + + if ((ul_stat1 & GMII_10BASE_T_FD) && (ul_stat2 & GMII_10_FDX)) { + /* Set MII for 10BaseT and Full Duplex */ + uc_speed = false; + uc_fd = true; + } + + if ((ul_stat1 & GMII_100BASE_T4_HD) && (ul_stat2 & GMII_100TX_HDX)) { + /* Set MII for 100BaseTX and Half Duplex */ + uc_speed = true; + uc_fd = false; + } + + if ((ul_stat1 & GMII_10BASE_T_HD) && (ul_stat2 & GMII_10_HDX)) { + /* Set MII for 10BaseT and Half Duplex */ + uc_speed = false; + uc_fd = false; + } + + gmac_set_speed(p_gmac, uc_speed); + gmac_enable_full_duplex(p_gmac, uc_fd); + + /* Start the GMAC transfers */ + gmac_enable_management(p_gmac, false); + return uc_rc; +} + + +/** + * \brief Issue an auto negotiation of the PHY. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_phy_addr PHY address. + * + * Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. + */ +uint8_t ethernet_phy_auto_negotiate(Gmac *p_gmac, uint8_t uc_phy_addr) +{ + uint32_t ul_retry_max = ETH_PHY_RETRY_MAX; + uint32_t ul_value; + uint32_t ul_phy_anar; + uint32_t ul_phy_analpar; + uint32_t ul_retry_count = 0; + uint8_t uc_speed = 0; + uint8_t uc_fd=0; + uint8_t uc_rc = GMAC_TIMEOUT; + + gmac_enable_management(p_gmac, true); + + /* Set up control register */ + uc_rc = gmac_phy_read(p_gmac, uc_phy_addr, GMII_BMCR, &ul_value); + if (uc_rc != GMAC_OK) { + gmac_enable_management(p_gmac, false); + return uc_rc; + } + + ul_value &= ~(uint32_t)GMII_AUTONEG; /* Remove auto-negotiation enable */ + ul_value &= ~(uint32_t)(GMII_LOOPBACK | GMII_POWER_DOWN); + ul_value |= (uint32_t)GMII_ISOLATE; /* Electrically isolate PHY */ + uc_rc = gmac_phy_write(p_gmac, uc_phy_addr, GMII_BMCR, ul_value); + if (uc_rc != GMAC_OK) { + gmac_enable_management(p_gmac, false); + return uc_rc; + } + + /* + * Set the Auto_negotiation Advertisement Register. + * MII advertising for Next page. + * 100BaseTxFD and HD, 10BaseTFD and HD, IEEE 802.3. + */ + ul_phy_anar = GMII_100TX_FDX | GMII_100TX_HDX | GMII_10_FDX | GMII_10_HDX | + GMII_AN_IEEE_802_3; + uc_rc = gmac_phy_write(p_gmac, uc_phy_addr, GMII_ANAR, ul_phy_anar); + if (uc_rc != GMAC_OK) { + gmac_enable_management(p_gmac, false); + return uc_rc; + } + + /* Read & modify control register */ + uc_rc = gmac_phy_read(p_gmac, uc_phy_addr, GMII_BMCR, &ul_value); + if (uc_rc != GMAC_OK) { + gmac_enable_management(p_gmac, false); + return uc_rc; + } + + ul_value |= GMII_SPEED_SELECT | GMII_AUTONEG | GMII_DUPLEX_MODE; + uc_rc = gmac_phy_write(p_gmac, uc_phy_addr, GMII_BMCR, ul_value); + if (uc_rc != GMAC_OK) { + gmac_enable_management(p_gmac, false); + return uc_rc; + } + + /* Restart auto negotiation */ + ul_value |= (uint32_t)GMII_RESTART_AUTONEG; + ul_value &= ~(uint32_t)GMII_ISOLATE; + uc_rc = gmac_phy_write(p_gmac, uc_phy_addr, GMII_BMCR, ul_value); + if (uc_rc != GMAC_OK) { + gmac_enable_management(p_gmac, false); + return uc_rc; + } + + /* Check if auto negotiation is completed */ + while (1) { + uc_rc = gmac_phy_read(p_gmac, uc_phy_addr, GMII_BMSR, &ul_value); + if (uc_rc != GMAC_OK) { + gmac_enable_management(p_gmac, false); + return uc_rc; + } + /* Done successfully */ + if (ul_value & GMII_AUTONEG_COMP) { + break; + } + + /* Timeout check */ + if (ul_retry_max) { + if (++ul_retry_count >= ul_retry_max) { + gmac_enable_management(p_gmac, false); + return GMAC_TIMEOUT; + } + } + } + + /* Get the auto negotiate link partner base page */ + uc_rc = gmac_phy_read(p_gmac, uc_phy_addr, GMII_PCR1, &ul_phy_analpar); + if (uc_rc != GMAC_OK) { + gmac_enable_management(p_gmac, false); + return uc_rc; + } + + + /* Set up the GMAC link speed */ + if ((ul_phy_anar & ul_phy_analpar) & GMII_100TX_FDX) { + /* Set MII for 100BaseTX and Full Duplex */ + uc_speed = true; + uc_fd = true; + } else if ((ul_phy_anar & ul_phy_analpar) & GMII_10_FDX) { + /* Set MII for 10BaseT and Full Duplex */ + uc_speed = false; + uc_fd = true; + } else if ((ul_phy_anar & ul_phy_analpar) & GMII_100TX_HDX) { + /* Set MII for 100BaseTX and half Duplex */ + uc_speed = true; + uc_fd = false; + } else if ((ul_phy_anar & ul_phy_analpar) & GMII_10_HDX) { + /* Set MII for 10BaseT and half Duplex */ + uc_speed = false; + uc_fd = false; + } + + gmac_set_speed(p_gmac, uc_speed); + gmac_enable_full_duplex(p_gmac, uc_fd); + + /* Select Media Independent Interface type */ + gmac_select_mii_mode(p_gmac, ETH_PHY_MODE); + + gmac_enable_transmit(GMAC, true); + gmac_enable_receive(GMAC, true); + + gmac_enable_management(p_gmac, false); + return uc_rc; +} + +/** + * \brief Issue a SW reset to reset all registers of the PHY. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_phy_addr PHY address. + * + * \Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. + */ +uint8_t ethernet_phy_reset(Gmac *p_gmac, uint8_t uc_phy_addr) +{ + uint32_t ul_bmcr = GMII_RESET; + uint8_t uc_phy_address = uc_phy_addr; + uint32_t ul_timeout = ETH_PHY_TIMEOUT; + uint8_t uc_rc = GMAC_TIMEOUT; + + gmac_enable_management(p_gmac, true); + + ul_bmcr = GMII_RESET; + gmac_phy_write(p_gmac, uc_phy_address, GMII_BMCR, ul_bmcr); + + do { + gmac_phy_read(p_gmac, uc_phy_address, GMII_BMCR, &ul_bmcr); + ul_timeout--; + } while ((ul_bmcr & GMII_RESET) && ul_timeout); + + gmac_enable_management(p_gmac, false); + + if (!ul_timeout) { + uc_rc = GMAC_OK; + } + + return (uc_rc); +} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \} + */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/ksz8051mnl/ethernet_phy.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/ksz8051mnl/ethernet_phy.h new file mode 100644 index 000000000..bb6c1bffa --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/ksz8051mnl/ethernet_phy.h @@ -0,0 +1,211 @@ +/** + * \file + * + * \brief KSZ8051MNL (Ethernet PHY) driver for SAM. + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef ETHERNET_PHY_H_INCLUDED +#define ETHERNET_PHY_H_INCLUDED + +#include "compiler.h" + +// IEEE defined Registers +#define GMII_BMCR 0x00 // Basic Control +#define GMII_BMSR 0x01 // Basic Status +#define GMII_PHYID1 0x02 // PHY Idendifier 1 +#define GMII_PHYID2 0x03 // PHY Idendifier 2 +#define GMII_ANAR 0x04 // Auto_Negotiation Advertisement +#define GMII_ANLPAR 0x05 // Auto_negotiation Link Partner Ability +#define GMII_ANER 0x06 // Auto-negotiation Expansion +#define GMII_ANNPR 0x07 // Auto-negotiation Next Page +#define GMII_ANLPNPAR 0x08 // Link Partner Next Page Ability +//#define GMII_1000BTCR 9 // 1000Base-T Control // Reserved +//#define GMII_1000BTSR 10 // 1000Base-T Status // Reserved +#define GMII_AFECR1 0x11 // AFE Control 1 +//#define GMII_ERDWR 12 // Extend Register - Data Write Register +//#define GMII_ERDRR 13 // Extend Register - Data Read Register +//14 reserved +#define GMII_RXERCR 0x15 // RXER Counter + +#define GMII_OMSOR 0x16 // Operation Mode Strap Override +#define GMII_OMSSR 0x17 // Operation Mode Strap Status +#define GMII_ECR 0x18 // Expanded Control +//#define GMII_DPPSR 19 // Digital PMA/PCS Status +//20 reserved +//#define GMII_RXERCR 21 // RXER Counter Register +//22-26 reserved +#define GMII_ICSR 0x1B // Interrupt Control/Status +//#define GMII_DDC1R 28 // Digital Debug Control 1 Register +#define GMII_LCSR 0x1D // LinkMD Control/Status + +//29-30 reserved +#define GMII_PCR1 0x1E // PHY Control 1 +#define GMII_PCR2 0x1F // PHY Control 2 + +/* +//Extend Registers +#define GMII_CCR 256 // Common Control Register +#define GMII_SSR 257 // Strap Status Register +#define GMII_OMSOR 258 // Operation Mode Strap Override Register +#define GMII_OMSSR 259 // Operation Mode Strap Status Register +#define GMII_RCCPSR 260 // RGMII Clock and Control Pad Skew Register +#define GMII_RRDPSR 261 // RGMII RX Data Pad Skew Register +#define GMII_ATR 263 // Analog Test Register +*/ + + +// Bit definitions: GMII_BMCR 0x00 Basic Control +#define GMII_RESET (1 << 15) // 1= Software Reset; 0=Normal Operation +#define GMII_LOOPBACK (1 << 14) // 1=loopback Enabled; 0=Normal Operation +#define GMII_SPEED_SELECT (1 << 13) // 1=100Mbps; 0=10Mbps +#define GMII_AUTONEG (1 << 12) // Auto-negotiation Enable +#define GMII_POWER_DOWN (1 << 11) // 1=Power down 0=Normal operation +#define GMII_ISOLATE (1 << 10) // 1 = Isolates 0 = Normal operation +#define GMII_RESTART_AUTONEG (1 << 9) // 1 = Restart auto-negotiation 0 = Normal operation +#define GMII_DUPLEX_MODE (1 << 8) // 1 = Full duplex operation 0 = Normal operation +#define GMII_COLLISION_TEST (1 << 7) // 1 = Enable COL test; 0 = Disable COL test +//#define GMII_SPEED_SELECT_MSB (1 << 6) // Reserved +// Reserved 6 to 0 // Read as 0, ignore on write + +// Bit definitions: GMII_BMSR 0x01 Basic Status +#define GMII_100BASE_T4 (1 << 15) // 100BASE-T4 Capable +#define GMII_100BASE_TX_FD (1 << 14) // 100BASE-TX Full Duplex Capable +#define GMII_100BASE_T4_HD (1 << 13) // 100BASE-TX Half Duplex Capable +#define GMII_10BASE_T_FD (1 << 12) // 10BASE-T Full Duplex Capable +#define GMII_10BASE_T_HD (1 << 11) // 10BASE-T Half Duplex Capable +// Reserved 10 to79 // Read as 0, ignore on write +//#define GMII_EXTEND_STATUS (1 << 8) // 1 = Extend Status Information In Reg 15 +// Reserved 7 +#define GMII_MF_PREAMB_SUPPR (1 << 6) // MII Frame Preamble Suppression +#define GMII_AUTONEG_COMP (1 << 5) // Auto-negotiation Complete +#define GMII_REMOTE_FAULT (1 << 4) // Remote Fault +#define GMII_AUTONEG_ABILITY (1 << 3) // Auto Configuration Ability +#define GMII_LINK_STATUS (1 << 2) // Link Status +#define GMII_JABBER_DETECT (1 << 1) // Jabber Detect +#define GMII_EXTEND_CAPAB (1 << 0) // Extended Capability + + +// Bit definitions: GMII_PHYID1 0x02 PHY Idendifier 1 +// Bit definitions: GMII_PHYID2 0x03 PHY Idendifier 2 +#define GMII_LSB_MASK 0x3F +#define GMII_OUI_MSB 0x0022 +#define GMII_OUI_LSB 0x05 + + +// Bit definitions: GMII_ANAR 0x04 Auto_Negotiation Advertisement +// Bit definitions: GMII_ANLPAR 0x05 Auto_negotiation Link Partner Ability +#define GMII_NP (1 << 15) // Next page Indication +// Reserved 7 +#define GMII_RF (1 << 13) // Remote Fault +// Reserved 12 // Write as 0, ignore on read +#define GMII_PAUSE_MASK (3 << 11) // 0,0 = No Pause 1,0 = Asymmetric Pause(link partner) + // 0,1 = Symmetric Pause 1,1 = Symmetric&Asymmetric Pause(local device) +#define GMII_100T4 (1 << 9) // 100BASE-T4 Support +#define GMII_100TX_FDX (1 << 8) // 100BASE-TX Full Duplex Support +#define GMII_100TX_HDX (1 << 7) // 100BASE-TX Support +#define GMII_10_FDX (1 << 6) // 10BASE-T Full Duplex Support +#define GMII_10_HDX (1 << 5) // 10BASE-T Support +// Selector 4 to 0 // Protocol Selection Bits +#define GMII_AN_IEEE_802_3 0x0001 // [00001] = IEEE 802.3 + + +// Bit definitions: GMII_ANER 0x06 Auto-negotiation Expansion +// Reserved 15 to 5 // Read as 0, ignore on write +#define GMII_PDF (1 << 4) // Local Device Parallel Detection Fault +#define GMII_LP_NP_ABLE (1 << 3) // Link Partner Next Page Able +#define GMII_NP_ABLE (1 << 2) // Local Device Next Page Able +#define GMII_PAGE_RX (1 << 1) // New Page Received +#define GMII_LP_AN_ABLE (1 << 0) // Link Partner Auto-negotiation Able + +/** + * \brief Perform a HW initialization to the PHY and set up clocks. + * + * This should be called only once to initialize the PHY pre-settings. + * The PHY address is the reset status of CRS, RXD[3:0] (the GmacPins' pullups). + * The COL pin is used to select MII mode on reset (pulled up for Reduced MII). + * The RXDV pin is used to select test mode on reset (pulled up for test mode). + * The above pins should be predefined for corresponding settings in resetPins. + * The GMAC peripheral pins are configured after the reset is done. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_phy_addr PHY address. + * \param ul_mck GMAC MCK. + * + * Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. + */ +uint8_t ethernet_phy_init(Gmac *p_gmac, uint8_t uc_phy_addr, uint32_t ul_mck); + + +/** + * \brief Get the Link & speed settings, and automatically set up the GMAC with the + * settings. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_phy_addr PHY address. + * \param uc_apply_setting_flag Set to 0 to not apply the PHY configurations, else to apply. + * + * Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. + */ +uint8_t ethernet_phy_set_link(Gmac *p_gmac, uint8_t uc_phy_addr, + uint8_t uc_apply_setting_flag); + + +/** + * \brief Issue an auto negotiation of the PHY. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_phy_addr PHY address. + * + * Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. + */ +uint8_t ethernet_phy_auto_negotiate(Gmac *p_gmac, uint8_t uc_phy_addr); + +/** + * \brief Issue a SW reset to reset all registers of the PHY. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_phy_addr PHY address. + * + * \Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. + */ +uint8_t ethernet_phy_reset(Gmac *p_gmac, uint8_t uc_phy_addr); + +#endif /* #ifndef ETHERNET_PHY_H_INCLUDED */ + diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/ebi/smc/smc.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/ebi/smc/smc.c new file mode 100644 index 000000000..4e18e6f16 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/ebi/smc/smc.c @@ -0,0 +1,429 @@ +/** + * \file + * + * \brief Static Memory Controller (SMC) driver for SAM. + * + * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#include "smc.h" +#include "board.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \defgroup sam_drivers_smc_group Static Memory Controller (SMC) + * + * Driver for the Static Memory Controller. It provides functions for configuring + * and using the on-chip SMC. + * + * @{ + */ + +#if ((SAM3S) || (SAM3U) || (SAM3XA) || (SAM4S) || (SAM4E)) +#define SMC_WPKEY_VALUE (0x534D43) +/** + * \brief Configure the SMC Setup timing for the specified Chip Select. + * + * \param p_smc Pointer to an SMC instance. + * \param ul_cs Chip Select number to be set. + * \param ul_setup_timing Setup timing for NWE, NCS, NRD. + */ +void smc_set_setup_timing(Smc *p_smc, uint32_t ul_cs, + uint32_t ul_setup_timing) +{ + p_smc->SMC_CS_NUMBER[ul_cs].SMC_SETUP = ul_setup_timing; +} + +/** + * \brief Configure the SMC pulse timing for the specified Chip Select. + * + * \param p_smc Pointer to an SMC instance. + * \param ul_cs Chip Select number to be set. + * \param ul_pulse_timing Pulse timing for NWE,NCS,NRD. + */ +void smc_set_pulse_timing(Smc *p_smc, uint32_t ul_cs, + uint32_t ul_pulse_timing) +{ + p_smc->SMC_CS_NUMBER[ul_cs].SMC_PULSE = ul_pulse_timing; +} + +/** + * \brief Configure the SMC cycle timing for the specified Chip Select. + * + * \param p_smc Pointer to an SMC instance. + * \param ul_cs Chip Select number to be set. + * \param ul_cycle_timing Cycle timing for NWE and NRD. + */ +void smc_set_cycle_timing(Smc *p_smc, uint32_t ul_cs, + uint32_t ul_cycle_timing) +{ + p_smc->SMC_CS_NUMBER[ul_cs].SMC_CYCLE = ul_cycle_timing; +} + +/** + * \brief Configure the SMC mode for the specified Chip Select. + * + * \param p_smc Pointer to an SMC instance. + * \param ul_cs Chip select number to be set. + * \param ul_mode SMC mode. + */ +void smc_set_mode(Smc *p_smc, uint32_t ul_cs, uint32_t ul_mode) +{ + p_smc->SMC_CS_NUMBER[ul_cs].SMC_MODE = ul_mode; +} + +/** + * \brief Get the SMC mode of the specified Chip Select. + * + * \param p_smc Pointer to an SMC instance. + * \param ul_cs Chip select number to be set. + * + * \return SMC mode. + */ +uint32_t smc_get_mode(Smc *p_smc, uint32_t ul_cs) +{ + return p_smc->SMC_CS_NUMBER[ul_cs].SMC_MODE; +} + +/** + * \brief Set write protection of SMC registers. + * + * \param p_smc Pointer to an SMC instance. + * \param ul_enable 1 to enable, 0 to disable. + */ +void smc_enable_writeprotect(Smc *p_smc, uint32_t ul_enable) +{ +#if (SAM3S || SAM4S || SAM4E) + if (ul_enable) + p_smc->SMC_WPMR = + SMC_WPMR_WPKEY(SMC_WPKEY_VALUE) | SMC_WPMR_WPEN; + else + p_smc->SMC_WPMR = SMC_WPMR_WPKEY(SMC_WPKEY_VALUE); +#else + if (ul_enable) + p_smc->SMC_WPCR = + SMC_WPCR_WP_KEY(SMC_WPKEY_VALUE) | + SMC_WPCR_WP_EN; + else + p_smc->SMC_WPCR = SMC_WPCR_WP_KEY(SMC_WPKEY_VALUE); +#endif +} + +/** + * \brief Get the status of SMC write protection register. + * + * \param p_smc Pointer to an SMC instance. + * + * \return Write protect status. + */ +uint32_t smc_get_writeprotect_status(Smc *p_smc) +{ + return p_smc->SMC_WPSR; +} +#endif /* ((SAM3S) || (SAM3U) || (SAM3XA)) */ + +#if ((SAM3U) || (SAM3XA)) +/** + * \brief Configure the SMC nand timing for the specified Chip Select. + * \param p_smc Pointer to an SMC instance. + * \param ul_cs Chip Select number to be set. + * \param ul_nand_timing nand timing for related signal. + */ +void smc_set_nand_timing(Smc *p_smc, uint32_t ul_cs, + uint32_t ul_nand_timing) +{ + p_smc->SMC_CS_NUMBER[ul_cs].SMC_TIMINGS= ul_nand_timing; +} + +/** + * \brief Initialize NFC configuration. + * \param p_smc Pointer to an SMC instance. + * \param ul_config SMC NFC Configuration. + */ +void smc_nfc_init(Smc *p_smc, uint32_t ul_config) +{ + p_smc->SMC_CFG = ul_config; +} + +/** + * \brief Set NFC page size. + * + * \param p_smc Pointer to an SMC instance. + * \param ul_page_size Use pattern defined in the device header file. + */ +void smc_nfc_set_page_size(Smc *p_smc, uint32_t ul_page_size) +{ + p_smc->SMC_CFG &= (~SMC_CFG_PAGESIZE_Msk); + p_smc->SMC_CFG |= ul_page_size; +} + +/** + * \brief Enable NFC controller to read both main and spare area in read mode. + * + * \param p_smc Pointer to an SMC instance. + */ +void smc_nfc_enable_spare_read(Smc *p_smc) +{ + p_smc->SMC_CFG |= SMC_CFG_RSPARE; +} + +/** + * \brief Prevent NFC controller from reading the spare area in read mode. + * + * \param p_smc Pointer to an SMC instance. + */ +void smc_nfc_disable_spare_read(Smc *p_smc) +{ + p_smc->SMC_CFG &= (~SMC_CFG_RSPARE); +} + +/** + * \brief Enable NFC controller to write both main and spare area in write mode. + * + * \param p_smc Pointer to an SMC instance. + */ +void smc_nfc_enable_spare_write(Smc *p_smc) +{ + p_smc->SMC_CFG |= SMC_CFG_WSPARE; +} + +/** + * \brief Prevent NFC controller from writing the spare area in read mode. + * + * \param p_smc Pointer to an SMC instance. + */ +void smc_nfc_disable_spare_write(Smc *p_smc) +{ + p_smc->SMC_CFG &= (~SMC_CFG_WSPARE); +} + +/** + * \brief Enable NFC controller. + * + * \param p_smc Pointer to an SMC instance. + */ +void smc_nfc_enable(Smc *p_smc) +{ + p_smc->SMC_CTRL = SMC_CTRL_NFCEN; +} + +/** + * \brief Disable NFC controller. + * + * \param p_smc Pointer to an SMC instance. + */ +void smc_nfc_disable(Smc *p_smc) +{ + p_smc->SMC_CTRL = SMC_CTRL_NFCDIS; +} + +/** + * \brief Get the NFC Status. + * + * \param p_smc Pointer to an SMC instance. + * + * \return Returns the current status register of SMC NFC Status Register. + * This resets the internal value of the status register, so further + * read may yield different values. + */ +uint32_t smc_nfc_get_status(Smc *p_smc) +{ + return p_smc->SMC_SR; +} + +/** + * \brief Enable SMC interrupts. + * + * \param p_smc Pointer to an SMC instance. + * \param ul_sources Interrupt source bitmap. + */ +void smc_nfc_enable_interrupt(Smc *p_smc, uint32_t ul_sources) +{ + p_smc->SMC_IER = ul_sources; +} + +/** + * \brief Disable SMC interrupts. + * + * \param p_smc Pointer to an SMC instance. + * \param ul_sources Interrupt source bitmap. + */ +void smc_nfc_disable_interrupt(Smc *p_smc, uint32_t ul_sources) +{ + p_smc->SMC_IDR = ul_sources; +} + +/** + * \brief Get the interrupt mask. + * + * \param p_smc Pointer to an SMC instance. + * + * \return Interrupt mask bitmap. + */ +uint32_t smc_nfc_get_interrupt_mask(Smc *p_smc) +{ + return p_smc->SMC_IMR; +} + +/** + * \brief Set flash cycle 0 address. + * + * \param p_smc Pointer to an SMC instance. + * \param uc_address0 Address cycle 0 in 5 address cycles. + */ +void smc_nfc_set_address0(Smc *p_smc, uint8_t uc_address0) +{ + p_smc->SMC_ADDR = uc_address0; +} + +/** + * \brief Set NFC sram bank. + * + * \param p_smc Pointer to an SMC instance. + * \param ul_bank NFC sram bank. + */ +void smc_nfc_set_bank(Smc *p_smc, uint32_t ul_bank) +{ + p_smc->SMC_BANK = SMC_BANK_BANK(ul_bank); +} + +/** + * \brief Use the HOST nandflash controller to send a command. + * + * \param p_smc Pointer to an SMC instance. + * \param ul_cmd Command to send. + * \param ul_address_cycle Address cycle when command access is decoded. + * \param ul_cycle0 Address at first cycle. + */ +void smc_nfc_send_command(Smc *p_smc, uint32_t ul_cmd, + uint32_t ul_address_cycle, uint32_t ul_cycle0) +{ + volatile uint32_t *p_command_address; + + /* Wait until host controller is not busy. */ + while (((*((volatile uint32_t *)(BOARD_NF_DATA_ADDR + NFCADDR_CMD_NFCCMD))) + & NFC_BUSY_FLAG) == NFC_BUSY_FLAG) { + } + /* Send the command plus the ADDR_CYCLE. */ + p_command_address = (volatile uint32_t *)(ul_cmd + BOARD_NF_DATA_ADDR); + p_smc->SMC_ADDR = ul_cycle0; + *p_command_address = ul_address_cycle; + while (!((p_smc->SMC_SR & SMC_SR_CMDDONE) == SMC_SR_CMDDONE)) { + } +} + +/** + * \brief Initialize ECC mode. + * + * \param p_smc Pointer to an SMC instance. + * \param ul_type Type of correction, use pattern defined in the device header file. + * \param ul_pagesize Page size of NAND Flash device, use pattern defined in + * the device header file. + */ +void smc_ecc_init(Smc *p_smc, uint32_t ul_type, uint32_t ul_pagesize) +{ + /* Software Reset ECC. */ + p_smc->SMC_ECC_CTRL = SMC_ECC_CTRL_SWRST; + p_smc->SMC_ECC_MD = ul_type | ul_pagesize; +} + +/** + * \brief Get ECC status by giving ecc number. + * + * \param p_smc Pointer to an SMC instance. + * \param ul_parity_number ECC parity number from 0 to 15. + * + * \return ECC status by giving ECC number. + */ +uint32_t smc_ecc_get_status(Smc *p_smc, uint32_t ul_parity_number) +{ + uint32_t status; + + if (ul_parity_number < 8) { + status = p_smc->SMC_ECC_SR1; + } else { + status = p_smc->SMC_ECC_SR2; + ul_parity_number -= 8; + } + + return ((status >> (ul_parity_number * 4)) & ECC_STATUS_MASK); +} + +/** + * \brief Get all ECC parity registers value. + * + * \param p_smc Pointer to an SMC instance. + * \param p_ecc Pointer to a parity buffer. + */ +void smc_ecc_get_value(Smc *p_smc, uint32_t *p_ecc) +{ + p_ecc[0] = p_smc->SMC_ECC_PR0; + p_ecc[1] = p_smc->SMC_ECC_PR1; + p_ecc[2] = p_smc->SMC_ECC_PR2; + p_ecc[3] = p_smc->SMC_ECC_PR3; + p_ecc[4] = p_smc->SMC_ECC_PR4; + p_ecc[5] = p_smc->SMC_ECC_PR5; + p_ecc[6] = p_smc->SMC_ECC_PR6; + p_ecc[7] = p_smc->SMC_ECC_PR7; + p_ecc[8] = p_smc->SMC_ECC_PR8; + p_ecc[9] = p_smc->SMC_ECC_PR9; + p_ecc[10] = p_smc->SMC_ECC_PR10; + p_ecc[11] = p_smc->SMC_ECC_PR11; + p_ecc[12] = p_smc->SMC_ECC_PR12; + p_ecc[13] = p_smc->SMC_ECC_PR13; + p_ecc[14] = p_smc->SMC_ECC_PR14; + p_ecc[15] = p_smc->SMC_ECC_PR15; +} +#endif /* ((SAM3U) || (SAM3XA)) */ + +//@} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/ebi/smc/smc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/ebi/smc/smc.h new file mode 100644 index 000000000..5ba786ba5 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/ebi/smc/smc.h @@ -0,0 +1,120 @@ +/** + * \file + * + * \brief Static Memory Controller (SMC) driver for SAM. + * + * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef SMC_H_INCLUDED +#define SMC_H_INCLUDED + +#include "compiler.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +#if ((SAM3S) || (SAM3U) || (SAM3XA) || (SAM4S) || (SAM4E)) +void smc_set_setup_timing(Smc *p_smc, uint32_t ul_cs, uint32_t ul_setup_timing); +void smc_set_pulse_timing(Smc *p_smc, uint32_t ul_cs, uint32_t ul_pulse_timing); +void smc_set_cycle_timing(Smc *p_smc, uint32_t ul_cs, uint32_t ul_cycle_timing); +void smc_set_mode(Smc *p_smc, uint32_t ul_cs, uint32_t ul_mode); +uint32_t smc_get_mode(Smc *p_smc, uint32_t ul_cs); +void smc_enable_writeprotect(Smc *p_smc, uint32_t ul_enable); +uint32_t smc_get_writeprotect_status(Smc *p_smc); +#endif /* ((SAM3S) || (SAM3U) || (SAM3XA)) */ + +#if ((SAM3U) || (SAM3XA)) +/* NFCADDR_CMD : NFC Address Command */ +#define NFCADDR_CMD_CMD1 (0xFFu << 2) /* Command Register Value for Cycle 1 */ +#define NFCADDR_CMD_CMD2 (0xFFu << 10) /* Command Register Value for Cycle 2 */ +#define NFCADDR_CMD_VCMD2 (0x1u << 18) /* Valid Cycle 2 Command */ +#define NFCADDR_CMD_ACYCLE (0x7u << 19) /* Number of Address required for the current command */ +#define NFCADDR_CMD_ACYCLE_NONE (0x0u << 19) /* No address cycle */ +#define NFCADDR_CMD_ACYCLE_ONE (0x1u << 19) /* One address cycle */ +#define NFCADDR_CMD_ACYCLE_TWO (0x2u << 19) /* Two address cycles */ +#define NFCADDR_CMD_ACYCLE_THREE (0x3u << 19) /* Three address cycles */ +#define NFCADDR_CMD_ACYCLE_FOUR (0x4u << 19) /* Four address cycles */ +#define NFCADDR_CMD_ACYCLE_FIVE (0x5u << 19) /* Five address cycles */ +#define NFCADDR_CMD_CSID_Pos 22 +#define NFCADDR_CMD_CSID_Msk (0x7u << NFCADDR_CMD_CSID_Pos) /* Chip Select Identifier */ +#define NFCADDR_CMD_CSID(value) ((NFCADDR_CMD_CSID_Msk & ((value) << NFCADDR_CMD_CSID_Pos))) +#define NFCADDR_CMD_NFCEN (0x1u << 25) /* NFC Enable */ +#define NFCADDR_CMD_NFC_READ (0x0u << 26) /* NFC Write Enable */ +#define NFCADDR_CMD_NFC_WIRTE (0x1u << 26) /* NFC Write Enable */ +#define NFCADDR_CMD_NFCCMD (0x1u << 27) /* NFC Command Enable */ + +#define NFC_BUSY_FLAG 0x8000000 +#define ECC_STATUS_MASK 0x07 + +void smc_set_nand_timing(Smc * p_smc, uint32_t ul_cs, + uint32_t ul_nand_timing); +void smc_nfc_init(Smc *p_smc, uint32_t ul_config); +void smc_nfc_set_page_size(Smc *p_smc, uint32_t ul_page_size); +void smc_nfc_enable_spare_read(Smc *p_smc); +void smc_nfc_disable_spare_read(Smc *p_smc); +void smc_nfc_enable_spare_write(Smc *p_smc); +void smc_nfc_disable_spare_write(Smc *p_smc); +void smc_nfc_enable(Smc *p_smc); +void smc_nfc_disable(Smc *p_smc); +uint32_t smc_nfc_get_status(Smc * p_smc); +void smc_nfc_enable_interrupt(Smc *p_smc, uint32_t ul_sources); +void smc_nfc_disable_interrupt(Smc *p_smc, uint32_t ul_sources); +uint32_t smc_nfc_get_interrupt_mask(Smc *p_smc); +void smc_nfc_set_address0(Smc *p_smc, uint8_t uc_address0); +void smc_nfc_set_bank(Smc *p_smc, uint32_t ul_bank); +void smc_nfc_send_command(Smc *p_smc, uint32_t ul_cmd, uint32_t ul_address_cycle, uint32_t ul_cycle0); +void smc_ecc_init(Smc *p_smc, uint32_t ul_type, uint32_t ul_pagesize); +uint32_t smc_ecc_get_status(Smc *p_smc, uint32_t ul_parity_number); +void smc_ecc_get_value(Smc *p_smc, uint32_t *p_ecc); +#endif /* ((SAM3U) || (SAM3XA)) */ + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* SMC_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/gmac/gmac.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/gmac/gmac.c new file mode 100644 index 000000000..07e1c5a97 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/gmac/gmac.c @@ -0,0 +1,783 @@ + /** + * \file + * + * \brief GMAC (Ethernet MAC) driver for SAM. + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#include "compiler.h" +#include "gmac.h" +#include +#include "conf_eth.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \defgroup gmac_group Ethernet Media Access Controller + * + * See \ref gmac_quickstart. + * + * Driver for the GMAC (Ethernet Media Access Controller). + * This file contains basic functions for the GMAC, with support for all modes, settings + * and clock speeds. + * + * \section dependencies Dependencies + * This driver does not depend on other modules. + * + * @{ + */ + +/** TX descriptor lists */ +COMPILER_ALIGNED(8) +static gmac_tx_descriptor_t gs_tx_desc[GMAC_TX_BUFFERS]; +/** TX callback lists */ +static gmac_dev_tx_cb_t gs_tx_callback[GMAC_TX_BUFFERS]; +/** RX descriptors lists */ +COMPILER_ALIGNED(8) +static gmac_rx_descriptor_t gs_rx_desc[GMAC_RX_BUFFERS]; +/** Send Buffer. Section 3.6 of AMBA 2.0 spec states that burst should not cross the + * 1K Boundaries. Receive buffer manager write operations are burst of 2 words => 3 lsb bits + * of the address shall be set to 0. + */ +COMPILER_ALIGNED(8) +static uint8_t gs_uc_tx_buffer[GMAC_TX_BUFFERS * GMAC_TX_UNITSIZE]; + +/** Receive Buffer */ +COMPILER_ALIGNED(8) +static uint8_t gs_uc_rx_buffer[GMAC_RX_BUFFERS * GMAC_RX_UNITSIZE]; + +/** + * GMAC device memory management struct. + */ +typedef struct gmac_dev_mem { + /* Pointer to allocated buffer for RX. The address should be 8-byte aligned + and the size should be GMAC_RX_UNITSIZE * wRxSize. */ + uint8_t *p_rx_buffer; + /* Pointer to allocated RX descriptor list. */ + gmac_rx_descriptor_t *p_rx_dscr; + /* RX size, in number of registered units (RX descriptors). */ + uint16_t us_rx_size; + /* Pointer to allocated buffer for TX. The address should be 8-byte aligned + and the size should be GMAC_TX_UNITSIZE * wTxSize. */ + uint8_t *p_tx_buffer; + /* Pointer to allocated TX descriptor list. */ + gmac_tx_descriptor_t *p_tx_dscr; + /* TX size, in number of registered units (TX descriptors). */ + uint16_t us_tx_size; +} gmac_dev_mem_t; + +/** Return count in buffer */ +#define CIRC_CNT(head,tail,size) (((head) - (tail)) % (size)) + +/* + * Return space available, from 0 to size-1. + * Always leave one free char as a completely full buffer that has (head == tail), + * which is the same as empty. + */ +#define CIRC_SPACE(head,tail,size) CIRC_CNT((tail),((head)+1),(size)) + +/** Circular buffer is empty ? */ +#define CIRC_EMPTY(head, tail) (head == tail) +/** Clear circular buffer */ +#define CIRC_CLEAR(head, tail) (head = tail = 0) + +/** Increment head or tail */ +static void circ_inc(uint16_t *headortail, uint32_t size) +{ + (*headortail)++; + if((*headortail) >= size) { + (*headortail) = 0; + } +} + +/** + * \brief Wait PHY operation to be completed. + * + * \param p_gmac HW controller address. + * \param ul_retry The retry times, 0 to wait forever until completeness. + * + * Return GMAC_OK if the operation is completed successfully. + */ +static uint8_t gmac_wait_phy(Gmac* p_gmac, const uint32_t ul_retry) +{ + volatile uint32_t ul_retry_count = 0; + + while (!gmac_is_phy_idle(p_gmac)) { + if (ul_retry == 0) { + continue; + } + + ul_retry_count++; + + if (ul_retry_count >= ul_retry) { + return GMAC_TIMEOUT; + } + } + return GMAC_OK; +} + +/** + * \brief Disable transfer, reset registers and descriptor lists. + * + * \param p_dev Pointer to GMAC driver instance. + * + */ +static void gmac_reset_tx_mem(gmac_device_t* p_dev) +{ + Gmac *p_hw = p_dev->p_hw; + uint8_t *p_tx_buff = p_dev->p_tx_buffer; + gmac_tx_descriptor_t *p_td = p_dev->p_tx_dscr; + + uint32_t ul_index; + uint32_t ul_address; + + /* Disable TX */ + gmac_enable_transmit(p_hw, 0); + + /* Set up the TX descriptors */ + CIRC_CLEAR(p_dev->us_tx_head, p_dev->us_tx_tail); + for (ul_index = 0; ul_index < p_dev->us_tx_list_size; ul_index++) { + ul_address = (uint32_t) (&(p_tx_buff[ul_index * GMAC_TX_UNITSIZE])); + p_td[ul_index].addr = ul_address; + p_td[ul_index].status.val = GMAC_TXD_USED; + } + p_td[p_dev->us_tx_list_size - 1].status.val = + GMAC_TXD_USED | GMAC_TXD_WRAP; + + /* Set transmit buffer queue */ + gmac_set_tx_queue(p_hw, (uint32_t) p_td); +} + +/** + * \brief Disable receiver, reset registers and descriptor list. + * + * \param p_drv Pointer to GMAC Driver instance. + */ +static void gmac_reset_rx_mem(gmac_device_t* p_dev) +{ + Gmac *p_hw = p_dev->p_hw; + uint8_t *p_rx_buff = p_dev->p_rx_buffer; + gmac_rx_descriptor_t *pRd = p_dev->p_rx_dscr; + + uint32_t ul_index; + uint32_t ul_address; + + /* Disable RX */ + gmac_enable_receive(p_hw, 0); + + /* Set up the RX descriptors */ + p_dev->us_rx_idx = 0; + for (ul_index = 0; ul_index < p_dev->us_rx_list_size; ul_index++) { + ul_address = (uint32_t) (&(p_rx_buff[ul_index * GMAC_RX_UNITSIZE])); + pRd[ul_index].addr.val = ul_address & GMAC_RXD_ADDR_MASK; + pRd[ul_index].status.val = 0; + } + pRd[p_dev->us_rx_list_size - 1].addr.val |= GMAC_RXD_WRAP; + + /* Set receive buffer queue */ + gmac_set_rx_queue(p_hw, (uint32_t) pRd); +} + + +/** + * \brief Initialize the allocated buffer lists for GMAC driver to transfer data. + * Must be invoked after gmac_dev_init() but before RX/TX starts. + * + * \note If input address is not 8-byte aligned, the address is automatically + * adjusted and the list size is reduced by one. + * + * \param p_gmac Pointer to GMAC instance. + * \param p_gmac_dev Pointer to GMAC device instance. + * \param p_dev_mm Pointer to the GMAC memory management control block. + * \param p_tx_cb Pointer to allocated TX callback list. + * + * \return GMAC_OK or GMAC_PARAM. + */ +static uint8_t gmac_init_mem(Gmac* p_gmac, gmac_device_t* p_gmac_dev, + gmac_dev_mem_t* p_dev_mm, + gmac_dev_tx_cb_t* p_tx_cb) +{ + if (p_dev_mm->us_rx_size <= 1 || p_dev_mm->us_tx_size <= 1 || p_tx_cb == NULL) { + return GMAC_PARAM; + } + + /* Assign RX buffers */ + if (((uint32_t) p_dev_mm->p_rx_buffer & 0x7) + || ((uint32_t) p_dev_mm->p_rx_dscr & 0x7)) { + p_dev_mm->us_rx_size--; + } + p_gmac_dev->p_rx_buffer = + (uint8_t *) ((uint32_t) p_dev_mm->p_rx_buffer & 0xFFFFFFF8); + p_gmac_dev->p_rx_dscr = + (gmac_rx_descriptor_t *) ((uint32_t) p_dev_mm->p_rx_dscr + & 0xFFFFFFF8); + p_gmac_dev->us_rx_list_size = p_dev_mm->us_rx_size; + + /* Assign TX buffers */ + if (((uint32_t) p_dev_mm->p_tx_buffer & 0x7) + || ((uint32_t) p_dev_mm->p_tx_dscr & 0x7)) { + p_dev_mm->us_tx_size--; + } + p_gmac_dev->p_tx_buffer = + (uint8_t *) ((uint32_t) p_dev_mm->p_tx_buffer & 0xFFFFFFF8); + p_gmac_dev->p_tx_dscr = + (gmac_tx_descriptor_t *) ((uint32_t) p_dev_mm->p_tx_dscr + & 0xFFFFFFF8); + p_gmac_dev->us_tx_list_size = p_dev_mm->us_tx_size; + p_gmac_dev->func_tx_cb_list = p_tx_cb; + + /* Reset TX & RX */ + gmac_reset_rx_mem(p_gmac_dev); + gmac_reset_tx_mem(p_gmac_dev); + + /* Enable Rx and Tx, plus the statistics register */ + gmac_enable_transmit(p_gmac, true); + gmac_enable_receive(p_gmac, true); + gmac_enable_statistics_write(p_gmac, true); + + /* Set up the interrupts for transmission and errors */ + gmac_enable_interrupt(p_gmac, + GMAC_IER_RXUBR | /* Enable receive used bit read interrupt. */ + GMAC_IER_TUR | /* Enable transmit underrun interrupt. */ + GMAC_IER_RLEX | /* Enable retry limit exceeded interrupt. */ + GMAC_IER_TFC | /* Enable transmit buffers exhausted in mid-frame interrupt. */ + GMAC_IER_TCOMP | /* Enable transmit complete interrupt. */ + GMAC_IER_ROVR | /* Enable receive overrun interrupt. */ + GMAC_IER_HRESP | /* Enable Hresp not OK interrupt. */ + GMAC_IER_PFNZ | /* Enable pause frame received interrupt. */ + GMAC_IER_PTZ); /* Enable pause time zero interrupt. */ + + return GMAC_OK; +} + +/** + * \brief Read the PHY register. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_phy_address PHY address. + * \param uc_address Register address. + * \param p_value Pointer to a 32-bit location to store read data. + * + * \Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. + */ +uint8_t gmac_phy_read(Gmac* p_gmac, uint8_t uc_phy_address, uint8_t uc_address, + uint32_t* p_value) +{ + gmac_maintain_phy(p_gmac, uc_phy_address, uc_address, 1, 0); + + if (gmac_wait_phy(p_gmac, MAC_PHY_RETRY_MAX) == GMAC_TIMEOUT) { + return GMAC_TIMEOUT; + } + *p_value = gmac_get_phy_data(p_gmac); + return GMAC_OK; +} + +/** + * \brief Write the PHY register. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_phy_address PHY Address. + * \param uc_address Register Address. + * \param ul_value Data to write, actually 16-bit data. + * + * \Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. + */ +uint8_t gmac_phy_write(Gmac* p_gmac, uint8_t uc_phy_address, + uint8_t uc_address, uint32_t ul_value) +{ + gmac_maintain_phy(p_gmac, uc_phy_address, uc_address, 0, ul_value); + + if (gmac_wait_phy(p_gmac, MAC_PHY_RETRY_MAX) == GMAC_TIMEOUT) { + return GMAC_TIMEOUT; + } + return GMAC_OK; +} + +/** + * \brief Initialize the GMAC driver. + * + * \param p_gmac Pointer to the GMAC instance. + * \param p_gmac_dev Pointer to the GMAC device instance. + * \param p_opt GMAC configure options. + */ +void gmac_dev_init(Gmac* p_gmac, gmac_device_t* p_gmac_dev, + gmac_options_t* p_opt) +{ + gmac_dev_mem_t gmac_dev_mm; + + /* Disable TX & RX and more */ + gmac_network_control(p_gmac, 0); + gmac_disable_interrupt(p_gmac, ~0u); + + + gmac_clear_statistics(p_gmac); + + /* Clear all status bits in the receive status register. */ + gmac_clear_rx_status(p_gmac, GMAC_RSR_RXOVR | GMAC_RSR_REC | GMAC_RSR_BNA); + + /* Clear all status bits in the transmit status register */ + gmac_clear_tx_status(p_gmac, GMAC_TSR_UBR | GMAC_TSR_COL | GMAC_TSR_RLE + | GMAC_TSR_TFC | GMAC_TSR_TXCOMP | GMAC_TSR_UND); + + /* Clear interrupts */ + gmac_get_interrupt_status(p_gmac); + + /* Enable the copy of data into the buffers + ignore broadcasts, and not copy FCS. */ + gmac_set_configure(p_gmac, + gmac_get_configure(p_gmac) | GMAC_NCFGR_IRXFCS| GMAC_NCFGR_PEN); + + gmac_enable_copy_all(p_gmac, p_opt->uc_copy_all_frame); + gmac_disable_broadcast(p_gmac, p_opt->uc_no_boardcast); + + /* Fill in GMAC device memory management */ + gmac_dev_mm.p_rx_buffer = gs_uc_rx_buffer; + gmac_dev_mm.p_rx_dscr = gs_rx_desc; + gmac_dev_mm.us_rx_size = GMAC_RX_BUFFERS; + + gmac_dev_mm.p_tx_buffer = gs_uc_tx_buffer; + gmac_dev_mm.p_tx_dscr = gs_tx_desc; + gmac_dev_mm.us_tx_size = GMAC_TX_BUFFERS; + + gmac_init_mem(p_gmac, p_gmac_dev, &gmac_dev_mm, gs_tx_callback); + + gmac_set_address(p_gmac, 0, p_opt->uc_mac_addr); + +} + +/** + * \brief Frames can be read from the GMAC in multiple sections. + * Read ul_frame_size bytes from the GMAC receive buffers to pcTo. + * p_rcv_size is the size of the entire frame. Generally gmac_read + * will be repeatedly called until the sum of all the ul_frame_size equals + * the value of p_rcv_size. + * + * \param p_gmac_dev Pointer to the GMAC device instance. + * \param p_frame Address of the frame buffer. + * \param ul_frame_size Length of the frame. + * \param p_rcv_size Received frame size. + * + * \return GMAC_OK if receiving frame successfully, otherwise failed. + */ +uint32_t gmac_dev_read(gmac_device_t* p_gmac_dev, uint8_t* p_frame, + uint32_t ul_frame_size, uint32_t* p_rcv_size) +{ + uint16_t us_buffer_length; + uint32_t tmp_ul_frame_size = 0; + uint8_t *p_tmp_frame = 0; + uint16_t us_tmp_idx = p_gmac_dev->us_rx_idx; + gmac_rx_descriptor_t *p_rx_td = + &p_gmac_dev->p_rx_dscr[p_gmac_dev->us_rx_idx]; + int8_t c_is_frame = 0; + + if (p_frame == NULL) + return GMAC_PARAM; + + /* Set the default return value */ + *p_rcv_size = 0; + + /* Process received RX descriptor */ + while ((p_rx_td->addr.val & GMAC_RXD_OWNERSHIP) == GMAC_RXD_OWNERSHIP) { + /* A start of frame has been received, discard previous fragments */ + if ((p_rx_td->status.val & GMAC_RXD_SOF) == GMAC_RXD_SOF) { + /* Skip previous fragment */ + while (us_tmp_idx != p_gmac_dev->us_rx_idx) { + p_rx_td = &p_gmac_dev->p_rx_dscr[p_gmac_dev->us_rx_idx]; + p_rx_td->addr.val &= ~(GMAC_RXD_OWNERSHIP); + + circ_inc(&p_gmac_dev->us_rx_idx, p_gmac_dev->us_rx_list_size); + } + /* Reset the temporary frame pointer */ + p_tmp_frame = p_frame; + tmp_ul_frame_size = 0; + /* Start to gather buffers in a frame */ + c_is_frame = 1; + } + + /* Increment the pointer */ + circ_inc(&us_tmp_idx, p_gmac_dev->us_rx_list_size); + + /* Copy data in the frame buffer */ + if (c_is_frame) { + if (us_tmp_idx == p_gmac_dev->us_rx_idx) { + do { + p_rx_td = &p_gmac_dev->p_rx_dscr[p_gmac_dev->us_rx_idx]; + p_rx_td->addr.val &= ~(GMAC_RXD_OWNERSHIP); + circ_inc(&p_gmac_dev->us_rx_idx, p_gmac_dev->us_rx_list_size); + + } while (us_tmp_idx != p_gmac_dev->us_rx_idx); + + return GMAC_RX_NULL; + } + /* Copy the buffer into the application frame */ + us_buffer_length = GMAC_RX_UNITSIZE; + if ((tmp_ul_frame_size + us_buffer_length) > ul_frame_size) { + us_buffer_length = ul_frame_size - tmp_ul_frame_size; + } + + memcpy(p_tmp_frame, + (void *)(p_rx_td->addr.val & GMAC_RXD_ADDR_MASK), + us_buffer_length); + p_tmp_frame += us_buffer_length; + tmp_ul_frame_size += us_buffer_length; + + /* An end of frame has been received, return the data */ + if ((p_rx_td->status.val & GMAC_RXD_EOF) == GMAC_RXD_EOF) { + /* Frame size from the GMAC */ + *p_rcv_size = (p_rx_td->status.val & GMAC_RXD_LEN_MASK); + + /* All data have been copied in the application frame buffer => release TD */ + while (p_gmac_dev->us_rx_idx != us_tmp_idx) { + p_rx_td = &p_gmac_dev->p_rx_dscr[p_gmac_dev->us_rx_idx]; + p_rx_td->addr.val &= ~(GMAC_RXD_OWNERSHIP); + circ_inc(&p_gmac_dev->us_rx_idx, p_gmac_dev->us_rx_list_size); + } + + /* Application frame buffer is too small so that all data have not been copied */ + if (tmp_ul_frame_size < *p_rcv_size) { + return GMAC_SIZE_TOO_SMALL; + } + + return GMAC_OK; + } + } + /* SOF has not been detected, skip the fragment */ + else { + p_rx_td->addr.val &= ~(GMAC_RXD_OWNERSHIP); + p_gmac_dev->us_rx_idx = us_tmp_idx; + } + + /* Process the next buffer */ + p_rx_td = &p_gmac_dev->p_rx_dscr[us_tmp_idx]; + } + + return GMAC_RX_NULL; +} + +/** + * \brief Send ulLength bytes from pcFrom. This copies the buffer to one of the + * GMAC Tx buffers, and then indicates to the GMAC that the buffer is ready. + * If lEndOfFrame is true then the data being copied is the end of the frame + * and the frame can be transmitted. + * + * \param p_gmac_dev Pointer to the GMAC device instance. + * \param p_buffer Pointer to the data buffer. + * \param ul_size Length of the frame. + * \param func_tx_cb Transmit callback function. + * + * \return Length sent. + */ +uint32_t gmac_dev_write(gmac_device_t* p_gmac_dev, void *p_buffer, + uint32_t ul_size, gmac_dev_tx_cb_t func_tx_cb) +{ + + volatile gmac_tx_descriptor_t *p_tx_td; + volatile gmac_dev_tx_cb_t *p_func_tx_cb; + + Gmac *p_hw = p_gmac_dev->p_hw; + + + /* Check parameter */ + if (ul_size > GMAC_TX_UNITSIZE) { + return GMAC_PARAM; + } + + /* Pointers to the current transmit descriptor */ + p_tx_td = &p_gmac_dev->p_tx_dscr[p_gmac_dev->us_tx_head]; + + /* If no free TxTd, buffer can't be sent, schedule the wakeup callback */ + if (CIRC_SPACE(p_gmac_dev->us_tx_head, p_gmac_dev->us_tx_tail, + p_gmac_dev->us_tx_list_size) == 0) { + if (p_tx_td[p_gmac_dev->us_tx_head].status.val & GMAC_TXD_USED) + return GMAC_TX_BUSY; + } + + /* Pointers to the current Tx callback */ + p_func_tx_cb = &p_gmac_dev->func_tx_cb_list[p_gmac_dev->us_tx_head]; + + /* Set up/copy data to transmission buffer */ + if (p_buffer && ul_size) { + /* Driver manages the ring buffer */ + memcpy((void *)p_tx_td->addr, p_buffer, ul_size); + } + + /* Tx callback */ + *p_func_tx_cb = func_tx_cb; + + /* Update transmit descriptor status */ + + /* The buffer size defined is the length of ethernet frame, + so it's always the last buffer of the frame. */ + if (p_gmac_dev->us_tx_head == p_gmac_dev->us_tx_list_size - 1) { + p_tx_td->status.val = + (ul_size & GMAC_TXD_LEN_MASK) | GMAC_TXD_LAST + | GMAC_TXD_WRAP; + } else { + p_tx_td->status.val = + (ul_size & GMAC_TXD_LEN_MASK) | GMAC_TXD_LAST; + } + + circ_inc(&p_gmac_dev->us_tx_head, p_gmac_dev->us_tx_list_size); + + /* Now start to transmit if it is still not done */ + gmac_start_transmission(p_hw); + + return GMAC_OK; +} + +/** + * \brief Get current load of transmit. + * + * \param p_gmac_dev Pointer to the GMAC device instance. + * + * \return Current load of transmit. + */ +uint32_t gmac_dev_get_tx_load(gmac_device_t* p_gmac_dev) +{ + uint16_t us_head = p_gmac_dev->us_tx_head; + uint16_t us_tail = p_gmac_dev->us_tx_tail; + return CIRC_CNT(us_head, us_tail, p_gmac_dev->us_tx_list_size); +} + +/** + * \brief Register/Clear RX callback. Callback will be invoked after the next received + * frame. + * + * When gmac_dev_read() returns GMAC_RX_NULL, the application task calls + * gmac_dev_set_rx_callback() to register func_rx_cb() callback and enters suspend state. + * The callback is in charge to resume the task once a new frame has been + * received. The next time gmac_dev_read() is called, it will be successful. + * + * This function is usually invoked from the RX callback itself with NULL + * callback, to unregister. Once the callback has resumed the application task, + * there is no need to invoke the callback again. + * + * \param p_gmac_dev Pointer to the GMAC device instance. + * \param func_tx_cb Receive callback function. + */ +void gmac_dev_set_rx_callback(gmac_device_t* p_gmac_dev, + gmac_dev_tx_cb_t func_rx_cb) +{ + Gmac *p_hw = p_gmac_dev->p_hw; + + if (func_rx_cb == NULL) { + gmac_disable_interrupt(p_hw, GMAC_IDR_RCOMP); + p_gmac_dev->func_rx_cb = NULL; + } else { + p_gmac_dev->func_rx_cb = func_rx_cb; + gmac_enable_interrupt(p_hw, GMAC_IER_RCOMP); + } +} + +/** + * \brief Register/Clear TX wakeup callback. + * + * When gmac_dev_write() returns GMAC_TX_BUSY (all transmit descriptor busy), the application + * task calls gmac_dev_set_tx_wakeup_callback() to register func_wakeup() callback and + * enters suspend state. The callback is in charge to resume the task once + * several transmit descriptors have been released. The next time gmac_dev_write() will be called, + * it shall be successful. + * + * This function is usually invoked with NULL callback from the TX wakeup + * callback itself, to unregister. Once the callback has resumed the + * application task, there is no need to invoke the callback again. + * + * \param p_gmac_dev Pointer to GMAC device instance. + * \param func_wakeup Pointer to wakeup callback function. + * \param uc_threshold Number of free transmit descriptor before wakeup callback invoked. + * + * \return GMAC_OK, GMAC_PARAM on parameter error. + */ +uint8_t gmac_dev_set_tx_wakeup_callback(gmac_device_t* p_gmac_dev, + gmac_dev_wakeup_cb_t func_wakeup_cb, uint8_t uc_threshold) +{ + if (func_wakeup_cb == NULL) { + p_gmac_dev->func_wakeup_cb = NULL; + } else { + if (uc_threshold <= p_gmac_dev->us_tx_list_size) { + p_gmac_dev->func_wakeup_cb = func_wakeup_cb; + p_gmac_dev->uc_wakeup_threshold = uc_threshold; + } else { + return GMAC_PARAM; + } + } + + return GMAC_OK; +} + + +/** + * \brief Reset TX & RX queue & statistics. + * + * \param p_gmac_dev Pointer to GMAC device instance. + */ +void gmac_dev_reset(gmac_device_t* p_gmac_dev) +{ + Gmac *p_hw = p_gmac_dev->p_hw; + + gmac_reset_rx_mem(p_gmac_dev); + gmac_reset_tx_mem(p_gmac_dev); + gmac_network_control(p_hw, GMAC_NCR_TXEN | GMAC_NCR_RXEN + | GMAC_NCR_WESTAT | GMAC_NCR_CLRSTAT); +} + + +/** + * \brief GMAC Interrupt handler. + * + * \param p_gmac_dev Pointer to GMAC device instance. + */ +void gmac_handler(gmac_device_t* p_gmac_dev) +{ + Gmac *p_hw = p_gmac_dev->p_hw; + + gmac_tx_descriptor_t *p_tx_td; + gmac_dev_tx_cb_t *p_tx_cb; + volatile uint32_t ul_isr; + volatile uint32_t ul_rsr; + volatile uint32_t ul_tsr; + uint32_t ul_rx_status_flag; + uint32_t ul_tx_status_flag; + + ul_isr = gmac_get_interrupt_status(p_hw); + ul_rsr = gmac_get_rx_status(p_hw); + ul_tsr = gmac_get_tx_status(p_hw); + + ul_isr &= ~(gmac_get_interrupt_mask(p_hw) | 0xF8030300); + + /* RX packet */ + if ((ul_isr & GMAC_ISR_RCOMP) || (ul_rsr & GMAC_RSR_REC)) { + ul_rx_status_flag = GMAC_RSR_REC; + + /* Check OVR */ + if (ul_rsr & GMAC_RSR_RXOVR) { + ul_rx_status_flag |= GMAC_RSR_RXOVR; + } + /* Check BNA */ + if (ul_rsr & GMAC_RSR_BNA) { + ul_rx_status_flag |= GMAC_RSR_BNA; + } + /* Clear status */ + gmac_clear_rx_status(p_hw, ul_rx_status_flag); + + /* Invoke callbacks */ + if (p_gmac_dev->func_rx_cb) { + p_gmac_dev->func_rx_cb(ul_rx_status_flag); + } + } + + /* TX packet */ + if ((ul_isr & GMAC_ISR_TCOMP) || (ul_tsr & GMAC_TSR_TXCOMP)) { + + ul_tx_status_flag = GMAC_TSR_TXCOMP; + + /* A frame transmitted */ + + /* Check RLE */ + if (ul_tsr & GMAC_TSR_RLE) { + /* Status RLE & Number of discarded buffers */ + ul_tx_status_flag = GMAC_TSR_RLE | CIRC_CNT(p_gmac_dev->us_tx_head, + p_gmac_dev->us_tx_tail, p_gmac_dev->us_tx_list_size); + p_tx_cb = &p_gmac_dev->func_tx_cb_list[p_gmac_dev->us_tx_tail]; + gmac_reset_tx_mem(p_gmac_dev); + gmac_enable_transmit(p_hw, 1); + } + /* Check COL */ + if (ul_tsr & GMAC_TSR_COL) { + ul_tx_status_flag |= GMAC_TSR_COL; + } + /* Check UND */ + if (ul_tsr & GMAC_TSR_UND) { + ul_tx_status_flag |= GMAC_TSR_UND; + } + /* Clear status */ + gmac_clear_tx_status(p_hw, ul_tx_status_flag); + + if (!CIRC_EMPTY(p_gmac_dev->us_tx_head, p_gmac_dev->us_tx_tail)) { + /* Check the buffers */ + do { + p_tx_td = &p_gmac_dev->p_tx_dscr[p_gmac_dev->us_tx_tail]; + p_tx_cb = &p_gmac_dev->func_tx_cb_list[p_gmac_dev->us_tx_tail]; + /* Any error? Exit if buffer has not been sent yet */ + if ((p_tx_td->status.val & GMAC_TXD_USED) == 0) { + break; + } + + /* Notify upper layer that a packet has been sent */ + if (*p_tx_cb) { + (*p_tx_cb) (ul_tx_status_flag); + } + + circ_inc(&p_gmac_dev->us_tx_tail, p_gmac_dev->us_tx_list_size); + } while (CIRC_CNT(p_gmac_dev->us_tx_head, p_gmac_dev->us_tx_tail, + p_gmac_dev->us_tx_list_size)); + } + + if (ul_tsr & GMAC_TSR_RLE) { + /* Notify upper layer RLE */ + if (*p_tx_cb) { + (*p_tx_cb) (ul_tx_status_flag); + } + } + + /* If a wakeup has been scheduled, notify upper layer that it can + send other packets, and the sending will be successful. */ + if ((CIRC_SPACE(p_gmac_dev->us_tx_head, p_gmac_dev->us_tx_tail, + p_gmac_dev->us_tx_list_size) >= p_gmac_dev->uc_wakeup_threshold) + && p_gmac_dev->func_wakeup_cb) { + p_gmac_dev->func_wakeup_cb(); + } + } +} + +//@} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/gmac/gmac.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/gmac/gmac.h new file mode 100644 index 000000000..2e1504d52 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/gmac/gmac.h @@ -0,0 +1,1252 @@ + /** + * \file + * + * \brief GMAC (Ethernet MAC) driver for SAM. + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef GMAC_H_INCLUDED +#define GMAC_H_INCLUDED + +#include "compiler.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** The buffer addresses written into the descriptors must be aligned, so the + last few bits are zero. These bits have special meaning for the GMAC + peripheral and cannot be used as part of the address. */ +#define GMAC_RXD_ADDR_MASK 0xFFFFFFFC +#define GMAC_RXD_WRAP (1ul << 1) /**< Wrap bit */ +#define GMAC_RXD_OWNERSHIP (1ul << 0) /**< Ownership bit */ + +#define GMAC_RXD_BROADCAST (1ul << 31) /**< Broadcast detected */ +#define GMAC_RXD_MULTIHASH (1ul << 30) /**< Multicast hash match */ +#define GMAC_RXD_UNIHASH (1ul << 29) /**< Unicast hash match */ +#define GMAC_RXD_ADDR_FOUND (1ul << 27) /**< Specific address match found */ +#define GMAC_RXD_ADDR (3ul << 25) /**< Address match */ +#define GMAC_RXD_RXCOEN (1ul << 24) /**< RXCOEN related function */ +#define GMAC_RXD_TYPE (3ul << 22) /**< Type ID match */ +#define GMAC_RXD_VLAN (1ul << 21) /**< VLAN tag detected */ +#define GMAC_RXD_PRIORITY (1ul << 20) /**< Priority tag detected */ +#define GMAC_RXD_PRIORITY_MASK (3ul << 17) /**< VLAN priority */ +#define GMAC_RXD_CFI (1ul << 16) /**< Concatenation Format Indicator only if bit 21 is set */ +#define GMAC_RXD_EOF (1ul << 15) /**< End of frame */ +#define GMAC_RXD_SOF (1ul << 14) /**< Start of frame */ +#define GMAC_RXD_FCS (1ul << 13) /**< Frame check sequence */ +#define GMAC_RXD_OFFSET_MASK /**< Receive buffer offset */ +#define GMAC_RXD_LEN_MASK (0xFFF) /**< Length of frame including FCS (if selected) */ +#define GMAC_RXD_LENJUMBO_MASK (0x3FFF) /**< Jumbo frame length */ + +#define GMAC_TXD_USED (1ul << 31) /**< Frame is transmitted */ +#define GMAC_TXD_WRAP (1ul << 30) /**< Last descriptor */ +#define GMAC_TXD_ERROR (1ul << 29) /**< Retry limit exceeded, error */ +#define GMAC_TXD_UNDERRUN (1ul << 28) /**< Transmit underrun */ +#define GMAC_TXD_EXHAUSTED (1ul << 27) /**< Buffer exhausted */ +#define GMAC_TXD_LATE (1ul << 26) /**< Late collision,transmit error */ +#define GMAC_TXD_CHECKSUM_ERROR (7ul << 20) /**< Checksum error */ +#define GMAC_TXD_NOCRC (1ul << 16) /**< No CRC */ +#define GMAC_TXD_LAST (1ul << 15) /**< Last buffer in frame */ +#define GMAC_TXD_LEN_MASK (0x1FFF) /**< Length of buffer */ + +/** The MAC can support frame lengths up to 1536 bytes */ +#define GMAC_FRAME_LENTGH_MAX 1536 + +#define GMAC_RX_UNITSIZE 128 /**< Fixed size for RX buffer */ +#define GMAC_TX_UNITSIZE 1518 /**< Size for ETH frame length */ + +/** GMAC clock speed */ +#define GMAC_MCK_SPEED_240MHZ (240*1000*1000) +#define GMAC_MCK_SPEED_160MHZ (160*1000*1000) +#define GMAC_MCK_SPEED_120MHZ (120*1000*1000) +#define GMAC_MCK_SPEED_80MHZ (80*1000*1000) +#define GMAC_MCK_SPEED_40MHZ (40*1000*1000) +#define GMAC_MCK_SPEED_20MHZ (20*1000*1000) + +/** GMAC maintain code default value*/ +#define GMAC_MAN_CODE_VALUE (10) + +/** GMAC maintain start of frame default value*/ +#define GMAC_MAN_SOF_VALUE (1) + +/** GMAC maintain read/write*/ +#define GMAC_MAN_RW_TYPE (2) + +/** GMAC maintain read only*/ +#define GMAC_MAN_READ_ONLY (1) + +/** GMAC address length */ +#define GMAC_ADDR_LENGTH (6) + + +#define GMAC_DUPLEX_HALF 0 +#define GMAC_DUPLEX_FULL 1 + +#define GMAC_SPEED_10M 0 +#define GMAC_SPEED_100M 1 + +/** + * \brief Return codes for GMAC APIs. + */ +typedef enum { + GMAC_OK = 0, /** Operation OK */ + GMAC_TIMEOUT = 1, /** GMAC operation timeout */ + GMAC_TX_BUSY, /** TX in progress */ + GMAC_RX_NULL, /** No data received */ + GMAC_SIZE_TOO_SMALL, /** Buffer size not enough */ + GMAC_PARAM, /** Parameter error, TX packet invalid or RX size too small */ + GMAC_INVALID = 0xFF, /* Invalid */ +} gmac_status_t; + +/** + * \brief Media Independent Interface (MII) type. + */ +typedef enum { + GMAC_PHY_MII = 0, /** MII mode */ + GMAC_PHY_RMII = 1, /** Reduced MII mode */ + GMAC_PHY_INVALID = 0xFF, /* Invalid mode*/ +} gmac_mii_mode_t; + +/** Receive buffer descriptor struct */ +COMPILER_PACK_SET(8) +typedef struct gmac_rx_descriptor { + union gmac_rx_addr { + uint32_t val; + struct gmac_rx_addr_bm { + uint32_t b_ownership:1, /**< User clear, GMAC sets this to 1 once it has successfully written a frame to memory */ + b_wrap:1, /**< Marks last descriptor in receive buffer */ + addr_dw:30; /**< Address in number of DW */ + } bm; + } addr; /**< Address, Wrap & Ownership */ + union gmac_rx_status { + uint32_t val; + struct gmac_rx_status_bm { + uint32_t len:13, /** Length of frame including FCS */ + b_fcs:1, /** Receive buffer offset, bits 13:12 of frame length for jumbo frame */ + b_sof:1, /** Start of frame */ + b_eof:1, /** End of frame */ + b_cfi:1, /** Concatenation Format Indicator */ + vlan_priority:3, /** VLAN priority (if VLAN detected) */ + b_priority_detected:1, /** Priority tag detected */ + b_vlan_detected:1, /**< VLAN tag detected */ + b_type_id_match:2, /**< Type ID match */ + b_checksumoffload:1, /**< Checksum offload specific function */ + b_addrmatch:2, /**< Address register match */ + b_ext_addr_match:1, /**< External address match found */ + reserved:1, + b_uni_hash_match:1, /**< Unicast hash match */ + b_multi_hash_match:1, /**< Multicast hash match */ + b_boardcast_detect:1; /**< Global broadcast address detected */ + } bm; + } status; +} gmac_rx_descriptor_t; + +/** Transmit buffer descriptor struct */ +COMPILER_PACK_SET(8) +typedef struct gmac_tx_descriptor { + uint32_t addr; + union gmac_tx_status { + uint32_t val; + struct gmac_tx_status_bm { + uint32_t len:14, /**< Length of buffer */ + reserved:1, + b_last_buffer:1, /**< Last buffer (in the current frame) */ + b_no_crc:1, /**< No CRC */ + reserved1:3, + b_checksumoffload:3, /**< Transmit checksum generation offload errors */ + reserved2:3, + b_lco:1, /**< Late collision, transmit error detected */ + b_exhausted:1, /**< Buffer exhausted in mid frame */ + b_underrun:1, /**< Transmit underrun */ + b_error:1, /**< Retry limit exceeded, error detected */ + b_wrap:1, /**< Marks last descriptor in TD list */ + b_used:1; /**< User clear, GMAC sets this to 1 once a frame has been successfully transmitted */ + } bm; + } status; +} gmac_tx_descriptor_t; + +COMPILER_PACK_RESET() + +/** + * \brief Input parameters when initializing the gmac module mode. + */ +typedef struct gmac_options { + /* Enable/Disable CopyAllFrame */ + uint8_t uc_copy_all_frame; + /* Enable/Disable NoBroadCast */ + uint8_t uc_no_boardcast; + /* MAC address */ + uint8_t uc_mac_addr[GMAC_ADDR_LENGTH]; +} gmac_options_t; + +/** RX callback */ +typedef void (*gmac_dev_tx_cb_t) (uint32_t ul_status); +/** Wakeup callback */ +typedef void (*gmac_dev_wakeup_cb_t) (void); + +/** + * GMAC driver structure. + */ +typedef struct gmac_device { + + /** Pointer to HW register base */ + Gmac *p_hw; + /** + * Pointer to allocated TX buffer. + * Section 3.6 of AMBA 2.0 spec states that burst should not cross + * 1K Boundaries. + * Receive buffer manager writes are burst of 2 words => 3 lsb bits + * of the address shall be set to 0. + */ + uint8_t *p_tx_buffer; + /** Pointer to allocated RX buffer */ + uint8_t *p_rx_buffer; + /** Pointer to Rx TDs (must be 8-byte aligned) */ + gmac_rx_descriptor_t *p_rx_dscr; + /** Pointer to Tx TDs (must be 8-byte aligned) */ + gmac_tx_descriptor_t *p_tx_dscr; + /** Optional callback to be invoked once a frame has been received */ + gmac_dev_tx_cb_t func_rx_cb; + /** Optional callback to be invoked once several TDs have been released */ + gmac_dev_wakeup_cb_t func_wakeup_cb; + /** Optional callback list to be invoked once TD has been processed */ + gmac_dev_tx_cb_t *func_tx_cb_list; + /** RX TD list size */ + uint16_t us_rx_list_size; + /** RX index for current processing TD */ + uint16_t us_rx_idx; + /** TX TD list size */ + uint16_t us_tx_list_size; + /** Circular buffer head pointer by upper layer (buffer to be sent) */ + uint16_t us_tx_head; + /** Circular buffer tail pointer incremented by handlers (buffer sent) */ + uint16_t us_tx_tail; + + /** Number of free TD before wakeup callback is invoked */ + uint8_t uc_wakeup_threshold; +} gmac_device_t; + +/** + * \brief Write network control value. + * + * \param p_gmac Pointer to the GMAC instance. + * \param ul_ncr Network control value. + */ +static inline void gmac_network_control(Gmac* p_gmac, uint32_t ul_ncr) +{ + p_gmac->GMAC_NCR = ul_ncr; +} + +/** + * \brief Get network control value. + * + * \param p_gmac Pointer to the GMAC instance. + */ + +static inline uint32_t gmac_get_network_control(Gmac* p_gmac) +{ + return p_gmac->GMAC_NCR; +} + +/** + * \brief Enable/Disable GMAC receive. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable GMAC receiver, else to enable it. + */ +static inline void gmac_enable_receive(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCR |= GMAC_NCR_RXEN; + } else { + p_gmac->GMAC_NCR &= ~GMAC_NCR_RXEN; + } +} + +/** + * \brief Enable/Disable GMAC transmit. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable GMAC transmit, else to enable it. + */ +static inline void gmac_enable_transmit(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCR |= GMAC_NCR_TXEN; + } else { + p_gmac->GMAC_NCR &= ~GMAC_NCR_TXEN; + } +} + +/** + * \brief Enable/Disable GMAC management. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable GMAC management, else to enable it. + */ +static inline void gmac_enable_management(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCR |= GMAC_NCR_MPE; + } else { + p_gmac->GMAC_NCR &= ~GMAC_NCR_MPE; + } +} + +/** + * \brief Clear all statistics registers. + * + * \param p_gmac Pointer to the GMAC instance. + */ +static inline void gmac_clear_statistics(Gmac* p_gmac) +{ + p_gmac->GMAC_NCR |= GMAC_NCR_CLRSTAT; +} + +/** + * \brief Increase all statistics registers. + * + * \param p_gmac Pointer to the GMAC instance. + */ +static inline void gmac_increase_statistics(Gmac* p_gmac) +{ + p_gmac->GMAC_NCR |= GMAC_NCR_INCSTAT; +} + +/** + * \brief Enable/Disable statistics registers writing. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable the statistics registers writing, else to enable it. + */ +static inline void gmac_enable_statistics_write(Gmac* p_gmac, + uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCR |= GMAC_NCR_WESTAT; + } else { + p_gmac->GMAC_NCR &= ~GMAC_NCR_WESTAT; + } +} + +/** + * \brief In half-duplex mode, forces collisions on all received frames. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable the back pressure, else to enable it. + */ +static inline void gmac_enable_back_pressure(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCR |= GMAC_NCR_BP; + } else { + p_gmac->GMAC_NCR &= ~GMAC_NCR_BP; + } +} + +/** + * \brief Start transmission. + * + * \param p_gmac Pointer to the GMAC instance. + */ +static inline void gmac_start_transmission(Gmac* p_gmac) +{ + p_gmac->GMAC_NCR |= GMAC_NCR_TSTART; +} + +/** + * \brief Halt transmission. + * + * \param p_gmac Pointer to the GMAC instance. + */ +static inline void gmac_halt_transmission(Gmac* p_gmac) +{ + p_gmac->GMAC_NCR |= GMAC_NCR_THALT; +} + +/** + * \brief Transmit pause frame. + * + * \param p_gmac Pointer to the GMAC instance. + */ +static inline void gmac_tx_pause_frame(Gmac* p_gmac) +{ + p_gmac->GMAC_NCR |= GMAC_NCR_TXPF; +} + +/** + * \brief Transmit zero quantum pause frame. + * + * \param p_gmac Pointer to the GMAC instance. + */ +static inline void gmac_tx_pause_zero_quantum_frame(Gmac* p_gmac) +{ + p_gmac->GMAC_NCR |= GMAC_NCR_TXZQPF; +} + +/** + * \brief Read snapshot. + * + * \param p_gmac Pointer to the GMAC instance. + */ +static inline void gmac_read_snapshot(Gmac* p_gmac) +{ + p_gmac->GMAC_NCR |= GMAC_NCR_RDS; +} + +/** + * \brief Store receivetime stamp to memory. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to normal operation, else to enable the store. + */ +static inline void gmac_store_rx_time_stamp(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCR |= GMAC_NCR_SRTSM; + } else { + p_gmac->GMAC_NCR &= ~GMAC_NCR_SRTSM; + } +} + +/** + * \brief Enable PFC priority-based pause reception. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 1 to set the reception, 0 to disable. + */ +static inline void gmac_enable_pfc_pause_frame(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCR |= GMAC_NCR_ENPBPR; + } else { + p_gmac->GMAC_NCR &= ~GMAC_NCR_ENPBPR; + } +} + +/** + * \brief Transmit PFC priority-based pause reception. + * + * \param p_gmac Pointer to the GMAC instance. + */ +static inline void gmac_transmit_pfc_pause_frame(Gmac* p_gmac) +{ + p_gmac->GMAC_NCR |= GMAC_NCR_TXPBPF; +} + +/** + * \brief Flush next packet. + * + * \param p_gmac Pointer to the GMAC instance. + */ +static inline void gmac_flush_next_packet(Gmac* p_gmac) +{ + p_gmac->GMAC_NCR |= GMAC_NCR_FNP; +} + +/** + * \brief Set up network configuration register. + * + * \param p_gmac Pointer to the GMAC instance. + * \param ul_cfg Network configuration value. + */ +static inline void gmac_set_configure(Gmac* p_gmac, uint32_t ul_cfg) +{ + p_gmac->GMAC_NCFGR = ul_cfg; +} + +/** + * \brief Get network configuration. + * + * \param p_gmac Pointer to the GMAC instance. + * + * \return Network configuration. + */ +static inline uint32_t gmac_get_configure(Gmac* p_gmac) +{ + return p_gmac->GMAC_NCFGR; +} + +/** + * \brief Set speed. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_speed 1 to indicate 100Mbps, 0 to 10Mbps. + */ +static inline void gmac_set_speed(Gmac* p_gmac, uint8_t uc_speed) +{ + if (uc_speed) { + p_gmac->GMAC_NCFGR |= GMAC_NCFGR_SPD; + } else { + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_SPD; + } +} + +/** + * \brief Enable/Disable Full-Duplex mode. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable the Full-Duplex mode, else to enable it. + */ +static inline void gmac_enable_full_duplex(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCFGR |= GMAC_NCFGR_FD; + } else { + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_FD; + } +} + +/** + * \brief Enable/Disable Copy(Receive) All Valid Frames. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable copying all valid frames, else to enable it. + */ +static inline void gmac_enable_copy_all(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCFGR |= GMAC_NCFGR_CAF; + } else { + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_CAF; + } +} + +/** + * \brief Enable/Disable jumbo frames (up to 10240 bytes). + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable the jumbo frames, else to enable it. + */ +static inline void gmac_enable_jumbo_frames(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCFGR |= GMAC_NCFGR_JFRAME; + } else { + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_JFRAME; + } +} + +/** + * \brief Disable/Enable broadcast receiving. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 1 to disable the broadcast, else to enable it. + */ +static inline void gmac_disable_broadcast(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCFGR |= GMAC_NCFGR_NBC; + } else { + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_NBC; + } +} + +/** + * \brief Enable/Disable multicast hash. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable the multicast hash, else to enable it. + */ +static inline void gmac_enable_multicast_hash(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCFGR |= GMAC_NCFGR_UNIHEN; + } else { + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_UNIHEN; + } +} + +/** + * \brief Enable/Disable big frames (over 1518, up to 1536). + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable big frames else to enable it. + */ +static inline void gmac_enable_big_frame(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCFGR |= GMAC_NCFGR_MAXFS; + } else { + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_MAXFS; + } +} + +/** + * \brief Set MDC clock divider. + * + * \param p_gmac Pointer to the GMAC instance. + * \param ul_mck GMAC MCK. + * + * \return GMAC_OK if successfully. + */ +static inline uint8_t gmac_set_mdc_clock(Gmac* p_gmac, uint32_t ul_mck) +{ + uint32_t ul_clk; + + if (ul_mck > GMAC_MCK_SPEED_240MHZ) { + return GMAC_INVALID; + } else if (ul_mck > GMAC_MCK_SPEED_160MHZ) { + ul_clk = GMAC_NCFGR_CLK_MCK_96; + } else if (ul_mck > GMAC_MCK_SPEED_120MHZ) { + ul_clk = GMAC_NCFGR_CLK_MCK_64; + } else if (ul_mck > GMAC_MCK_SPEED_80MHZ) { + ul_clk = GMAC_NCFGR_CLK_MCK_48; + } else if (ul_mck > GMAC_MCK_SPEED_40MHZ) { + ul_clk = GMAC_NCFGR_CLK_MCK_32; + } else if (ul_mck > GMAC_MCK_SPEED_20MHZ) { + ul_clk = GMAC_NCFGR_CLK_MCK_16; + } else { + ul_clk = GMAC_NCFGR_CLK_MCK_8; + } + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_CLK_Msk; + p_gmac->GMAC_NCFGR |= ul_clk; + return GMAC_OK; +} + +/** + * \brief Enable/Disable retry test. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable the GMAC receiver, else to enable it. + */ +static inline void gmac_enable_retry_test(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCFGR |= GMAC_NCFGR_RTY; + } else { + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_RTY; + } +} + +/** + * \brief Enable/Disable pause (when a valid pause frame is received). + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable pause frame, else to enable it. + */ +static inline void gmac_enable_pause_frame(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCFGR |= GMAC_NCFGR_PEN; + } else { + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_PEN; + } +} + +/** + * \brief Set receive buffer offset to 0 ~ 3. + * + * \param p_gmac Pointer to the GMAC instance. + */ +static inline void gmac_set_rx_buffer_offset(Gmac* p_gmac, uint8_t uc_offset) +{ + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_RXBUFO_Msk; + p_gmac->GMAC_NCFGR |= GMAC_NCFGR_RXBUFO(uc_offset); +} + +/** + * \brief Enable/Disable receive length field checking. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable receive length field checking, else to enable it. + */ +static inline void gmac_enable_rx_length_check(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCFGR |= GMAC_NCFGR_LFERD; + } else { + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_LFERD; + } +} + +/** + * \brief Enable/Disable discarding FCS field of received frames. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable discarding FCS field of received frames, else to enable it. + */ +static inline void gmac_enable_discard_fcs(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCFGR |= GMAC_NCFGR_RFCS; + } else { + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_RFCS; + } +} + + +/** + * \brief Enable/Disable frames to be received in half-duplex mode + * while transmitting. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable the received in half-duplex mode, else to enable it. + */ +static inline void gmac_enable_efrhd(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCFGR |= GMAC_NCFGR_EFRHD; + } else { + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_EFRHD; + } +} + +/** + * \brief Enable/Disable ignore RX FCS. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_enable 0 to disable ignore RX FCS, else to enable it. + */ +static inline void gmac_enable_ignore_rx_fcs(Gmac* p_gmac, uint8_t uc_enable) +{ + if (uc_enable) { + p_gmac->GMAC_NCFGR |= GMAC_NCFGR_IRXFCS; + } else { + p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_IRXFCS; + } +} + +/** + * \brief Get Network Status. + * + * \param p_gmac Pointer to the GMAC instance. + * + * \return Network status. + */ +static inline uint32_t gmac_get_status(Gmac* p_gmac) +{ + return p_gmac->GMAC_NSR; +} + +/** + * \brief Get MDIO IN pin status. + * + * \param p_gmac Pointer to the GMAC instance. + * + * \return MDIO IN pin status. + */ +static inline uint8_t gmac_get_MDIO(Gmac* p_gmac) +{ + return ((p_gmac->GMAC_NSR & GMAC_NSR_MDIO) > 0); +} + +/** + * \brief Check if PHY is idle. + * + * \param p_gmac Pointer to the GMAC instance. + * + * \return 1 if PHY is idle. + */ +static inline uint8_t gmac_is_phy_idle(Gmac* p_gmac) +{ + return ((p_gmac->GMAC_NSR & GMAC_NSR_IDLE) > 0); +} + +/** + * \brief Return transmit status. + * + * \param p_gmac Pointer to the GMAC instance. + * + * \return Transmit status. + */ +static inline uint32_t gmac_get_tx_status(Gmac* p_gmac) +{ + return p_gmac->GMAC_TSR; +} + +/** + * \brief Clear transmit status. + * + * \param p_gmac Pointer to the GMAC instance. + * \param ul_status Transmit status. + */ +static inline void gmac_clear_tx_status(Gmac* p_gmac, uint32_t ul_status) +{ + p_gmac->GMAC_TSR = ul_status; +} + +/** + * \brief Return receive status. + * + * \param p_gmac Pointer to the GMAC instance. + */ +static inline uint32_t gmac_get_rx_status(Gmac* p_gmac) +{ + return p_gmac->GMAC_RSR; +} + +/** + * \brief Clear receive status. + * + * \param p_gmac Pointer to the GMAC instance. + * \param ul_status Receive status. + */ +static inline void gmac_clear_rx_status(Gmac* p_gmac, uint32_t ul_status) +{ + p_gmac->GMAC_RSR = ul_status; +} + +/** + * \brief Set Rx Queue. + * + * \param p_gmac Pointer to the GMAC instance. + * \param ul_addr Rx queue address. + */ +static inline void gmac_set_rx_queue(Gmac* p_gmac, uint32_t ul_addr) +{ + p_gmac->GMAC_RBQB = GMAC_RBQB_ADDR_Msk & ul_addr; +} + +/** + * \brief Get Rx Queue Address. + * + * \param p_gmac Pointer to the GMAC instance. + * + * \return Rx queue address. + */ +static inline uint32_t gmac_get_rx_queue(Gmac* p_gmac) +{ + return p_gmac->GMAC_RBQB; +} + +/** + * \brief Set Tx Queue. + * + * \param p_gmac Pointer to the GMAC instance. + * \param ul_addr Tx queue address. + */ +static inline void gmac_set_tx_queue(Gmac* p_gmac, uint32_t ul_addr) +{ + p_gmac->GMAC_TBQB = GMAC_TBQB_ADDR_Msk & ul_addr; +} + +/** + * \brief Get Tx Queue. + * + * \param p_gmac Pointer to the GMAC instance. + * + * \return Rx queue address. + */ +static inline uint32_t gmac_get_tx_queue(Gmac* p_gmac) +{ + return p_gmac->GMAC_TBQB; +} + +/** + * \brief Enable interrupt(s). + * + * \param p_gmac Pointer to the GMAC instance. + * \param ul_source Interrupt source(s) to be enabled. + */ +static inline void gmac_enable_interrupt(Gmac* p_gmac, uint32_t ul_source) +{ + p_gmac->GMAC_IER = ul_source; +} + +/** + * \brief Disable interrupt(s). + * + * \param p_gmac Pointer to the GMAC instance. + * \param ul_source Interrupt source(s) to be disabled. + */ +static inline void gmac_disable_interrupt(Gmac* p_gmac, uint32_t ul_source) +{ + p_gmac->GMAC_IDR = ul_source; +} + +/** + * \brief Return interrupt status. + * + * \param p_gmac Pointer to the GMAC instance. + * + * \return Interrupt status. + */ +static inline uint32_t gmac_get_interrupt_status(Gmac* p_gmac) +{ + return p_gmac->GMAC_ISR; +} + +/** + * \brief Return interrupt mask. + * + * \param p_gmac Pointer to the GMAC instance. + * + * \return Interrupt mask. + */ +static inline uint32_t gmac_get_interrupt_mask(Gmac* p_gmac) +{ + return p_gmac->GMAC_IMR; +} + +/** + * \brief Execute PHY maintenance command. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_phy_addr PHY address. + * \param uc_reg_addr Register address. + * \param uc_rw 1 to Read, 0 to write. + * \param us_data Data to be performed, write only. + */ +static inline void gmac_maintain_phy(Gmac* p_gmac, + uint8_t uc_phy_addr, uint8_t uc_reg_addr, uint8_t uc_rw, + uint16_t us_data) +{ + /* Wait until bus idle */ + while ((p_gmac->GMAC_NSR & GMAC_NSR_IDLE) == 0); + /* Write maintain register */ + p_gmac->GMAC_MAN = GMAC_MAN_WTN(GMAC_MAN_CODE_VALUE) + | GMAC_MAN_CLTTO + | GMAC_MAN_PHYA(uc_phy_addr) + | GMAC_MAN_REGA(uc_reg_addr) + | GMAC_MAN_OP((uc_rw ? GMAC_MAN_RW_TYPE : GMAC_MAN_READ_ONLY)) + | GMAC_MAN_DATA(us_data); +} + +/** + * \brief Get PHY maintenance data returned. + * + * \param p_gmac Pointer to the GMAC instance. + * + * \return Get PHY data. + */ +static inline uint16_t gmac_get_phy_data(Gmac* p_gmac) +{ + /* Wait until bus idle */ + while ((p_gmac->GMAC_NSR & GMAC_NSR_IDLE) == 0); + /* Return data */ + return (uint16_t) (p_gmac->GMAC_MAN & GMAC_MAN_DATA_Msk); +} + +/** + * \brief Set Hash. + * + * \param p_gmac Pointer to the GMAC instance. + * \param ul_hash_top Hash top. + * \param ul_hash_bottom Hash bottom. + */ +static inline void gmac_set_hash(Gmac* p_gmac, uint32_t ul_hash_top, + uint32_t ul_hash_bottom) +{ + p_gmac->GMAC_HRB = ul_hash_bottom; + p_gmac->GMAC_HRT = ul_hash_top; +} + +/** + * \brief Set 64 bits Hash. + * + * \param p_gmac Pointer to the GMAC instance. + * \param ull_hash 64 bits hash value. + */ +static inline void gmac_set_hash64(Gmac* p_gmac, uint64_t ull_hash) +{ + p_gmac->GMAC_HRB = (uint32_t) ull_hash; + p_gmac->GMAC_HRT = (uint32_t) (ull_hash >> 32); +} + +/** + * \brief Set MAC Address. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_index GMAC specific address register index. + * \param p_mac_addr GMAC address. + */ +static inline void gmac_set_address(Gmac* p_gmac, uint8_t uc_index, + uint8_t* p_mac_addr) +{ + p_gmac->GMAC_SA[uc_index].GMAC_SAB = (p_mac_addr[3] << 24) + | (p_mac_addr[2] << 16) + | (p_mac_addr[1] << 8) + | (p_mac_addr[0]); + p_gmac->GMAC_SA[uc_index].GMAC_SAT = (p_mac_addr[5] << 8) + | (p_mac_addr[4]); +} + +/** + * \brief Set MAC Address via 2 dword. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_index GMAC specific address register index. + * \param ul_mac_top GMAC top address. + * \param ul_mac_bottom GMAC bottom address. + */ +static inline void gmac_set_address32(Gmac* p_gmac, uint8_t uc_index, + uint32_t ul_mac_top, uint32_t ul_mac_bottom) +{ + p_gmac->GMAC_SA[uc_index].GMAC_SAB = ul_mac_bottom; + p_gmac->GMAC_SA[uc_index].GMAC_SAT = ul_mac_top; +} + +/** + * \brief Set MAC Address via int64. + * + * \param p_gmac Pointer to the GMAC instance. + * \param uc_index GMAC specific address register index. + * \param ull_mac 64-bit GMAC address. + */ +static inline void gmac_set_address64(Gmac* p_gmac, uint8_t uc_index, + uint64_t ull_mac) +{ + p_gmac->GMAC_SA[uc_index].GMAC_SAB = (uint32_t) ull_mac; + p_gmac->GMAC_SA[uc_index].GMAC_SAT = (uint32_t) (ull_mac >> 32); +} + +/** + * \brief Select media independent interface mode. + * + * \param p_gmac Pointer to the GMAC instance. + * \param mode Media independent interface mode. + */ +static inline void gmac_select_mii_mode(Gmac* p_gmac, gmac_mii_mode_t mode) +{ + switch (mode) { + case GMAC_PHY_MII: + case GMAC_PHY_RMII: + p_gmac->GMAC_UR |= GMAC_UR_RMIIMII; + break; + + default: + p_gmac->GMAC_UR &= ~GMAC_UR_RMIIMII; + break; + } +} + +uint8_t gmac_phy_read(Gmac* p_gmac, uint8_t uc_phy_address, uint8_t uc_address, + uint32_t* p_value); +uint8_t gmac_phy_write(Gmac* p_gmac, uint8_t uc_phy_address, + uint8_t uc_address, uint32_t ul_value); +void gmac_dev_init(Gmac* p_gmac, gmac_device_t* p_gmac_dev, + gmac_options_t* p_opt); +uint32_t gmac_dev_read(gmac_device_t* p_gmac_dev, uint8_t* p_frame, + uint32_t ul_frame_size, uint32_t* p_rcv_size); +uint32_t gmac_dev_write(gmac_device_t* p_gmac_dev, void *p_buffer, + uint32_t ul_size, gmac_dev_tx_cb_t func_tx_cb); +uint32_t gmac_dev_get_tx_load(gmac_device_t* p_gmac_dev); +void gmac_dev_set_rx_callback(gmac_device_t* p_gmac_dev, + gmac_dev_tx_cb_t func_rx_cb); +uint8_t gmac_dev_set_tx_wakeup_callback(gmac_device_t* p_gmac_dev, + gmac_dev_wakeup_cb_t func_wakeup, uint8_t uc_threshold); +void gmac_dev_reset(gmac_device_t* p_gmac_dev); +void gmac_handler(gmac_device_t* p_gmac_dev); + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \page gmac_quickstart Quickstart guide for GMAC driver. + * + * This is the quickstart guide for the \ref gmac_group "Ethernet MAC", + * with step-by-step instructions on how to configure and use the driver in a + * selection of use cases. + * + * The use cases contain several code fragments. The code fragments in the + * steps for setup can be copied into a custom initialization function, while + * the steps for usage can be copied into, e.g., the main application function. + * + * \section gmac_basic_use_case Basic use case + * In the basic use case, the GMAC driver are configured for: + * - PHY component KSZ8051MNL is used + * - GMAC uses MII mode + * - The number of receive buffer is 16 + * - The number of transfer buffer is 8 + * - MAC address is set to 00-04-25-1c-a0-02 + * - IP address is set to 192.168.0.2 + * - IP address is set to 192.168.0.2 + * - Gateway is set to 192.168.0.1 + * - Network mask is 255.255.255.0 + * - PHY operation max retry count is 1000000 + * - GMAC is configured to not support copy all frame and support broadcast + * - The data will be read from the ethernet + * + * \section gmac_basic_use_case_setup Setup steps + * + * \subsection gmac_basic_use_case_setup_prereq Prerequisites + * -# \ref sysclk_group "System Clock Management (sysclock)" + * -# \ref pmc_group "Power Management Controller (pmc)" + * -# \ref ksz8051mnl_ethernet_phy_group "PHY component (KSZ8051MNL)" + * + * \subsection gmac_basic_use_case_setup_code Example code + * Content of conf_eth.h + * \code + * #define GMAC_RX_BUFFERS 16 + * #define GMAC_TX_BUFFERS 8 + * #define MAC_PHY_RETRY_MAX 1000000 + * #define ETHERNET_CONF_ETHADDR0 0x00 + * #define ETHERNET_CONF_ETHADDR0 0x00 + * #define ETHERNET_CONF_ETHADDR1 0x04 + * #define ETHERNET_CONF_ETHADDR2 0x25 + * #define ETHERNET_CONF_ETHADDR3 0x1C + * #define ETHERNET_CONF_ETHADDR4 0xA0 + * #define ETHERNET_CONF_ETHADDR5 0x02 + * #define ETHERNET_CONF_IPADDR0 192 + * #define ETHERNET_CONF_IPADDR1 168 + * #define ETHERNET_CONF_IPADDR2 0 + * #define ETHERNET_CONF_IPADDR3 2 + * #define ETHERNET_CONF_GATEWAY_ADDR0 192 + * #define ETHERNET_CONF_GATEWAY_ADDR1 168 + * #define ETHERNET_CONF_GATEWAY_ADDR2 0 + * #define ETHERNET_CONF_GATEWAY_ADDR3 1 + * #define ETHERNET_CONF_NET_MASK0 255 + * #define ETHERNET_CONF_NET_MASK1 255 + * #define ETHERNET_CONF_NET_MASK2 255 + * #define ETHERNET_CONF_NET_MASK3 0 + * #define ETH_PHY_MODE ETH_PHY_MODE + * \endcode + * + * A specific gmac device and the receive data buffer must be defined; another ul_frm_size should be defined + * to trace the actual size of the data received. + * \code + * static gmac_device_t gs_gmac_dev; + * static volatile uint8_t gs_uc_eth_buffer[GMAC_FRAME_LENTGH_MAX]; + * + * uint32_t ul_frm_size; + * \endcode + * + * Add to application C-file: + * \code + * void gmac_init(void) + * { + * sysclk_init(); + * + * board_init(); + * + * pmc_enable_periph_clk(ID_GMAC); + * + * gmac_option.uc_copy_all_frame = 0; + * gmac_option.uc_no_boardcast = 0; + * memcpy(gmac_option.uc_mac_addr, gs_uc_mac_address, sizeof(gs_uc_mac_address)); + * gs_gmac_dev.p_hw = GMAC; + * + * gmac_dev_init(GMAC, &gs_gmac_dev, &gmac_option); + * + * NVIC_EnableIRQ(GMAC_IRQn); + * + * ethernet_phy_init(GMAC, BOARD_GMAC_PHY_ADDR, sysclk_get_cpu_hz()); + * + * ethernet_phy_auto_negotiate(GMAC, BOARD_GMAC_PHY_ADDR); + * + * ethernet_phy_set_link(GMAC, BOARD_GMAC_PHY_ADDR, 1); + * \endcode + * + * \subsection gmac_basic_use_case_setup_flow Workflow + * -# Ensure that conf_eth.h is present and contains the + * following configuration symbol. This configuration file is used + * by the driver and should not be included by the user. + * - \code + * #define GMAC_RX_BUFFERS 16 + * #define GMAC_TX_BUFFERS 8 + * #define MAC_PHY_RETRY_MAX 1000000 + * #define ETHERNET_CONF_ETHADDR0 0x00 + * #define ETHERNET_CONF_ETHADDR0 0x00 + * #define ETHERNET_CONF_ETHADDR1 0x04 + * #define ETHERNET_CONF_ETHADDR2 0x25 + * #define ETHERNET_CONF_ETHADDR3 0x1C + * #define ETHERNET_CONF_ETHADDR4 0xA0 + * #define ETHERNET_CONF_ETHADDR5 0x02 + * #define ETHERNET_CONF_IPADDR0 192 + * #define ETHERNET_CONF_IPADDR1 168 + * #define ETHERNET_CONF_IPADDR2 0 + * #define ETHERNET_CONF_IPADDR3 2 + * #define ETHERNET_CONF_GATEWAY_ADDR0 192 + * #define ETHERNET_CONF_GATEWAY_ADDR1 168 + * #define ETHERNET_CONF_GATEWAY_ADDR2 0 + * #define ETHERNET_CONF_GATEWAY_ADDR3 1 + * #define ETHERNET_CONF_NET_MASK0 255 + * #define ETHERNET_CONF_NET_MASK1 255 + * #define ETHERNET_CONF_NET_MASK2 255 + * #define ETHERNET_CONF_NET_MASK3 0 + * #define ETH_PHY_MODE GMAC_PHY_MII + * \endcode + * -# Enable the system clock: + * - \code sysclk_init(); \endcode + * -# Enable PIO configurations for GMAC: + * - \code board_init(); \endcode + * -# Enable PMC clock for GMAC: + * - \code pmc_enable_periph_clk(ID_GMAC); \endcode + * -# Set the GMAC options; it's set to copy all frame and support broadcast: + * - \code + * gmac_option.uc_copy_all_frame = 0; + * gmac_option.uc_no_boardcast = 0; + * memcpy(gmac_option.uc_mac_addr, gs_uc_mac_address, sizeof(gs_uc_mac_address)); + * gs_gmac_dev.p_hw = GMAC; + * \endcode + * -# Initialize GMAC device with the filled option: + * - \code + * gmac_dev_init(GMAC, &gs_gmac_dev, &gmac_option); + * \endcode + * -# Enable the interrupt service for GMAC: + * - \code + * NVIC_EnableIRQ(GMAC_IRQn); + * \endcode + * -# Initialize the PHY component: + * - \code + * ethernet_phy_init(GMAC, BOARD_GMAC_PHY_ADDR, sysclk_get_cpu_hz()); + * \endcode + * -# The link will be established based on auto negotiation. + * - \code + * ethernet_phy_auto_negotiate(GMAC, BOARD_GMAC_PHY_ADDR); + * \endcode + * -# Establish the ethernet link; the network can be worked from now on: + * - \code + * ethernet_phy_set_link(GMAC, BOARD_GMAC_PHY_ADDR, 1); + * \endcode + * + * \section gmac_basic_use_case_usage Usage steps + * \subsection gmac_basic_use_case_usage_code Example code + * Add to, e.g., main loop in application C-file: + * \code + * gmac_dev_read(&gs_gmac_dev, (uint8_t *) gs_uc_eth_buffer, sizeof(gs_uc_eth_buffer), &ul_frm_size)); + * \endcode + * + * \subsection gmac_basic_use_case_usage_flow Workflow + * -# Start reading the data from the ethernet: + * - \code gmac_dev_read(&gs_gmac_dev, (uint8_t *) gs_uc_eth_buffer, sizeof(gs_uc_eth_buffer), &ul_frm_size)); \endcode + */ + +#endif /* GMAC_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/pmc.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/pmc.c new file mode 100644 index 000000000..28565bbbe --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/pmc.c @@ -0,0 +1,1294 @@ +/** + * \file + * + * \brief Power Management Controller (PMC) driver for SAM. + * + * Copyright (c) 2011 - 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#include "pmc.h" + +#if (SAM3N) +# define MAX_PERIPH_ID 31 +#elif (SAM3XA) +# define MAX_PERIPH_ID 44 +#elif (SAM3U) +# define MAX_PERIPH_ID 29 +#elif (SAM3S || SAM4S) +# define MAX_PERIPH_ID 34 +#elif (SAM4E) +# define MAX_PERIPH_ID 47 +#elif (SAM4N) +# define MAX_PERIPH_ID 31 +#endif + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \defgroup sam_drivers_pmc_group Power Management Controller (PMC) + * + * \par Purpose + * + * The Power Management Controller (PMC) optimizes power consumption by + * controlling all system and user peripheral clocks. The PMC enables/disables + * the clock inputs to many of the peripherals and the Cortex-M Processor. + * + * @{ + */ + +/** + * \brief Set the prescaler of the MCK. + * + * \param ul_pres Prescaler value. + */ +void pmc_mck_set_prescaler(uint32_t ul_pres) +{ + PMC->PMC_MCKR = + (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); +} + +/** + * \brief Set the source of the MCK. + * + * \param ul_source Source selection value. + */ +void pmc_mck_set_source(uint32_t ul_source) +{ + PMC->PMC_MCKR = + (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | ul_source; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); +} + +/** + * \brief Switch master clock source selection to slow clock. + * + * \param ul_pres Processor clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_mck_to_sclk(uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | + PMC_MCKR_CSS_SLOW_CLK; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} + +/** + * \brief Switch master clock source selection to main clock. + * + * \param ul_pres Processor clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_mck_to_mainck(uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | + PMC_MCKR_CSS_MAIN_CLK; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} + +/** + * \brief Switch master clock source selection to PLLA clock. + * + * \param ul_pres Processor clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_mck_to_pllack(uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | + PMC_MCKR_CSS_PLLA_CLK; + + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} + +#if (SAM3S || SAM4S) +/** + * \brief Switch master clock source selection to PLLB clock. + * + * \param ul_pres Processor clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_mck_to_pllbck(uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | + PMC_MCKR_CSS_PLLB_CLK; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} +#endif + +#if (SAM3XA || SAM3U) +/** + * \brief Switch master clock source selection to UPLL clock. + * + * \param ul_pres Processor clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_mck_to_upllck(uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | + PMC_MCKR_CSS_UPLL_CLK; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} +#endif + +/** + * \brief Switch slow clock source selection to external 32k (Xtal or Bypass). + * + * \note This function disables the PLLs. + * + * \note Switching SCLK back to 32krc is only possible by shutting down the + * VDDIO power supply. + * + * \param ul_bypass 0 for Xtal, 1 for bypass. + */ +void pmc_switch_sclk_to_32kxtal(uint32_t ul_bypass) +{ + /* Set Bypass mode if required */ + if (ul_bypass == 1) { + SUPC->SUPC_MR |= SUPC_MR_KEY(SUPC_KEY_VALUE) | + SUPC_MR_OSCBYPASS; + } + + SUPC->SUPC_CR = SUPC_CR_KEY(SUPC_KEY_VALUE) | SUPC_CR_XTALSEL; +} + +/** + * \brief Check if the external 32k Xtal is ready. + * + * \retval 1 External 32k Xtal is ready. + * \retval 0 External 32k Xtal is not ready. + */ +uint32_t pmc_osc_is_ready_32kxtal(void) +{ + return ((SUPC->SUPC_SR & SUPC_SR_OSCSEL) + && (PMC->PMC_SR & PMC_SR_OSCSELS)); +} + +/** + * \brief Switch main clock source selection to internal fast RC. + * + * \param ul_moscrcf Fast RC oscillator(4/8/12Mhz). + * + * \retval 0 Success. + * \retval 1 Timeout error. + * \retval 2 Invalid frequency. + */ +void pmc_switch_mainck_to_fastrc(uint32_t ul_moscrcf) +{ + uint32_t ul_needXTEN = 0; + + /* Enable Fast RC oscillator but DO NOT switch to RC now */ + if (PMC->CKGR_MOR & CKGR_MOR_MOSCXTEN) { + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCRCF_Msk) | + PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCRCEN | + ul_moscrcf; + } else { + ul_needXTEN = 1; + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCRCF_Msk) | + PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCRCEN | + CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCXTST_Msk | + ul_moscrcf; + } + + /* Wait the Fast RC to stabilize */ + while (!(PMC->PMC_SR & PMC_SR_MOSCRCS)); + + /* Switch to Fast RC */ + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCSEL) | + PMC_CKGR_MOR_KEY_VALUE; + + /* Disable xtal oscillator */ + if (ul_needXTEN) { + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTEN) | + PMC_CKGR_MOR_KEY_VALUE; + } +} + +/** + * \brief Enable fast RC oscillator. + * + * \param ul_rc Fast RC oscillator(4/8/12Mhz). + */ +void pmc_osc_enable_fastrc(uint32_t ul_rc) +{ + /* Enable Fast RC oscillator but DO NOT switch to RC now. + * Keep MOSCSEL to 1 */ + PMC->CKGR_MOR = PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCSEL | + CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCRCEN | ul_rc; + /* Wait the Fast RC to stabilize */ + while (!(PMC->PMC_SR & PMC_SR_MOSCRCS)); +} + +/** + * \brief Disable the internal fast RC. + */ +void pmc_osc_disable_fastrc(void) +{ + /* Disable Fast RC oscillator */ + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCRCEN & + ~CKGR_MOR_MOSCRCF_Msk) + | PMC_CKGR_MOR_KEY_VALUE; +} + +/** + * \brief Check if the main fastrc is ready. + * + * \retval 0 Xtal is not ready, otherwise ready. + */ +uint32_t pmc_osc_is_ready_fastrc(void) +{ + return (PMC->PMC_SR & PMC_SR_MOSCRCS); +} + +/** + * \brief Enable main XTAL oscillator. + * + * \param ul_xtal_startup_time Xtal start-up time, in number of slow clocks. + */ +void pmc_osc_enable_main_xtal(uint32_t ul_xtal_startup_time) +{ + uint32_t mor = PMC->CKGR_MOR; + mor &= ~(CKGR_MOR_MOSCXTBY|CKGR_MOR_MOSCXTEN); + mor |= PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCXTEN | + CKGR_MOR_MOSCXTST(ul_xtal_startup_time); + PMC->CKGR_MOR = mor; + /* Wait the main Xtal to stabilize */ + while (!(PMC->PMC_SR & PMC_SR_MOSCXTS)); +} + +/** + * \brief Bypass main XTAL. + */ +void pmc_osc_bypass_main_xtal(void) +{ + uint32_t mor = PMC->CKGR_MOR; + mor &= ~(CKGR_MOR_MOSCXTBY|CKGR_MOR_MOSCXTEN); + mor |= PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCXTBY; + /* Enable Crystal oscillator but DO NOT switch now. Keep MOSCSEL to 0 */ + PMC->CKGR_MOR = mor; + /* The MOSCXTS in PMC_SR is automatically set */ +} + +/** + * \brief Disable the main Xtal. + */ +void pmc_osc_disable_main_xtal(void) +{ + uint32_t mor = PMC->CKGR_MOR; + mor &= ~(CKGR_MOR_MOSCXTBY|CKGR_MOR_MOSCXTEN); + PMC->CKGR_MOR = PMC_CKGR_MOR_KEY_VALUE | mor; +} + +/** + * \brief Check if the main crystal is bypassed. + * + * \retval 0 Xtal is bypassed, otherwise not. + */ +uint32_t pmc_osc_is_bypassed_main_xtal(void) +{ + return (PMC->CKGR_MOR & CKGR_MOR_MOSCXTBY); +} + +/** + * \brief Check if the main crystal is ready. + * + * \note If main crystal is bypassed, it's always ready. + * + * \retval 0 main crystal is not ready, otherwise ready. + */ +uint32_t pmc_osc_is_ready_main_xtal(void) +{ + return (PMC->PMC_SR & PMC_SR_MOSCXTS); +} + +/** + * \brief Switch main clock source selection to external Xtal/Bypass. + * + * \note The function may switch MCK to SCLK if MCK source is MAINCK to avoid + * any system crash. + * + * \note If used in Xtal mode, the Xtal is automatically enabled. + * + * \param ul_bypass 0 for Xtal, 1 for bypass. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +void pmc_switch_mainck_to_xtal(uint32_t ul_bypass, + uint32_t ul_xtal_startup_time) +{ + /* Enable Main Xtal oscillator */ + if (ul_bypass) { + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTEN) | + PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCXTBY | + CKGR_MOR_MOSCSEL; + } else { + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTBY) | + PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCXTEN | + CKGR_MOR_MOSCXTST(ul_xtal_startup_time); + /* Wait the Xtal to stabilize */ + while (!(PMC->PMC_SR & PMC_SR_MOSCXTS)); + + PMC->CKGR_MOR |= PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCSEL; + } +} + +/** + * \brief Disable the external Xtal. + * + * \param ul_bypass 0 for Xtal, 1 for bypass. + */ +void pmc_osc_disable_xtal(uint32_t ul_bypass) +{ + /* Disable xtal oscillator */ + if (ul_bypass) { + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTBY) | + PMC_CKGR_MOR_KEY_VALUE; + } else { + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTEN) | + PMC_CKGR_MOR_KEY_VALUE; + } +} + +/** + * \brief Check if the MAINCK is ready. Depending on MOSCEL, MAINCK can be one + * of Xtal, bypass or internal RC. + * + * \retval 1 Xtal is ready. + * \retval 0 Xtal is not ready. + */ +uint32_t pmc_osc_is_ready_mainck(void) +{ + return PMC->PMC_SR & PMC_SR_MOSCSELS; +} + +/** + * \brief Select Main Crystal or internal RC as main clock source. + * + * \note This function will not enable/disable RC or Main Crystal. + * + * \param ul_xtal_rc 0 internal RC is selected, otherwise Main Crystal. + */ +void pmc_mainck_osc_select(uint32_t ul_xtal_rc) +{ + uint32_t mor = PMC->CKGR_MOR; + if (ul_xtal_rc) { + mor |= CKGR_MOR_MOSCSEL; + } else { + mor &= ~CKGR_MOR_MOSCSEL; + } + PMC->CKGR_MOR = PMC_CKGR_MOR_KEY_VALUE | mor; +} + +/** + * \brief Enable PLLA clock. + * + * \param mula PLLA multiplier. + * \param pllacount PLLA counter. + * \param diva Divider. + */ +void pmc_enable_pllack(uint32_t mula, uint32_t pllacount, uint32_t diva) +{ + /* first disable the PLL to unlock the lock */ + pmc_disable_pllack(); + + PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | CKGR_PLLAR_DIVA(diva) | + CKGR_PLLAR_PLLACOUNT(pllacount) | CKGR_PLLAR_MULA(mula); + while ((PMC->PMC_SR & PMC_SR_LOCKA) == 0); +} + +/** + * \brief Disable PLLA clock. + */ +void pmc_disable_pllack(void) +{ + PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | CKGR_PLLAR_MULA(0); +} + +/** + * \brief Is PLLA locked? + * + * \retval 0 Not locked. + * \retval 1 Locked. + */ +uint32_t pmc_is_locked_pllack(void) +{ + return (PMC->PMC_SR & PMC_SR_LOCKA); +} + +#if (SAM3S || SAM4S) +/** + * \brief Enable PLLB clock. + * + * \param mulb PLLB multiplier. + * \param pllbcount PLLB counter. + * \param divb Divider. + */ +void pmc_enable_pllbck(uint32_t mulb, uint32_t pllbcount, uint32_t divb) +{ + /* first disable the PLL to unlock the lock */ + pmc_disable_pllbck(); + + PMC->CKGR_PLLBR = + CKGR_PLLBR_DIVB(divb) | CKGR_PLLBR_PLLBCOUNT(pllbcount) + | CKGR_PLLBR_MULB(mulb); + while ((PMC->PMC_SR & PMC_SR_LOCKB) == 0); +} + +/** + * \brief Disable PLLB clock. + */ +void pmc_disable_pllbck(void) +{ + PMC->CKGR_PLLBR = CKGR_PLLBR_MULB(0); +} + +/** + * \brief Is PLLB locked? + * + * \retval 0 Not locked. + * \retval 1 Locked. + */ +uint32_t pmc_is_locked_pllbck(void) +{ + return (PMC->PMC_SR & PMC_SR_LOCKB); +} +#endif + +#if (SAM3XA || SAM3U) +/** + * \brief Enable UPLL clock. + */ +void pmc_enable_upll_clock(void) +{ + PMC->CKGR_UCKR = CKGR_UCKR_UPLLCOUNT(3) | CKGR_UCKR_UPLLEN; + + /* Wait UTMI PLL Lock Status */ + while (!(PMC->PMC_SR & PMC_SR_LOCKU)); +} + +/** + * \brief Disable UPLL clock. + */ +void pmc_disable_upll_clock(void) +{ + PMC->CKGR_UCKR &= ~CKGR_UCKR_UPLLEN; +} + +/** + * \brief Is UPLL locked? + * + * \retval 0 Not locked. + * \retval 1 Locked. + */ +uint32_t pmc_is_locked_upll(void) +{ + return (PMC->PMC_SR & PMC_SR_LOCKU); +} +#endif + +/** + * \brief Enable the specified peripheral clock. + * + * \note The ID must NOT be shifted (i.e., 1 << ID_xxx). + * + * \param ul_id Peripheral ID (ID_xxx). + * + * \retval 0 Success. + * \retval 1 Invalid parameter. + */ +uint32_t pmc_enable_periph_clk(uint32_t ul_id) +{ + if (ul_id > MAX_PERIPH_ID) { + return 1; + } + + if (ul_id < 32) { + if ((PMC->PMC_PCSR0 & (1u << ul_id)) != (1u << ul_id)) { + PMC->PMC_PCER0 = 1 << ul_id; + } +#if (SAM3S || SAM3XA || SAM4S || SAM4E) + } else { + ul_id -= 32; + if ((PMC->PMC_PCSR1 & (1u << ul_id)) != (1u << ul_id)) { + PMC->PMC_PCER1 = 1 << ul_id; + } +#endif + } + + return 0; +} + +/** + * \brief Disable the specified peripheral clock. + * + * \note The ID must NOT be shifted (i.e., 1 << ID_xxx). + * + * \param ul_id Peripheral ID (ID_xxx). + * + * \retval 0 Success. + * \retval 1 Invalid parameter. + */ +uint32_t pmc_disable_periph_clk(uint32_t ul_id) +{ + if (ul_id > MAX_PERIPH_ID) { + return 1; + } + + if (ul_id < 32) { + if ((PMC->PMC_PCSR0 & (1u << ul_id)) == (1u << ul_id)) { + PMC->PMC_PCDR0 = 1 << ul_id; + } +#if (SAM3S || SAM3XA || SAM4S || SAM4E) + } else { + ul_id -= 32; + if ((PMC->PMC_PCSR1 & (1u << ul_id)) == (1u << ul_id)) { + PMC->PMC_PCDR1 = 1 << ul_id; + } +#endif + } + return 0; +} + +/** + * \brief Enable all peripheral clocks. + */ +void pmc_enable_all_periph_clk(void) +{ + PMC->PMC_PCER0 = PMC_MASK_STATUS0; + while ((PMC->PMC_PCSR0 & PMC_MASK_STATUS0) != PMC_MASK_STATUS0); + +#if (SAM3S || SAM3XA || SAM4S || SAM4E) + PMC->PMC_PCER1 = PMC_MASK_STATUS1; + while ((PMC->PMC_PCSR1 & PMC_MASK_STATUS1) != PMC_MASK_STATUS1); +#endif +} + +/** + * \brief Disable all peripheral clocks. + */ +void pmc_disable_all_periph_clk(void) +{ + PMC->PMC_PCDR0 = PMC_MASK_STATUS0; + while ((PMC->PMC_PCSR0 & PMC_MASK_STATUS0) != 0); + +#if (SAM3S || SAM3XA || SAM4S || SAM4E) + PMC->PMC_PCDR1 = PMC_MASK_STATUS1; + while ((PMC->PMC_PCSR1 & PMC_MASK_STATUS1) != 0); +#endif +} + +/** + * \brief Check if the specified peripheral clock is enabled. + * + * \note The ID must NOT be shifted (i.e., 1 << ID_xxx). + * + * \param ul_id Peripheral ID (ID_xxx). + * + * \retval 0 Peripheral clock is disabled or unknown. + * \retval 1 Peripheral clock is enabled. + */ +uint32_t pmc_is_periph_clk_enabled(uint32_t ul_id) +{ + if (ul_id > MAX_PERIPH_ID) { + return 0; + } + +#if (SAM3S || SAM3XA || SAM4S || SAM4E) + if (ul_id < 32) { +#endif + if ((PMC->PMC_PCSR0 & (1u << ul_id))) { + return 1; + } else { + return 0; + } +#if (SAM3S || SAM3XA || SAM4S || SAM4E) + } else { + ul_id -= 32; + if ((PMC->PMC_PCSR1 & (1u << ul_id))) { + return 1; + } else { + return 0; + } + } +#endif +} + +/** + * \brief Set the prescaler for the specified programmable clock. + * + * \param ul_id Peripheral ID. + * \param ul_pres Prescaler value. + */ +void pmc_pck_set_prescaler(uint32_t ul_id, uint32_t ul_pres) +{ + PMC->PMC_PCK[ul_id] = + (PMC->PMC_PCK[ul_id] & ~PMC_PCK_PRES_Msk) | ul_pres; + while ((PMC->PMC_SCER & (PMC_SCER_PCK0 << ul_id)) + && !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id))); +} + +/** + * \brief Set the source oscillator for the specified programmable clock. + * + * \param ul_id Peripheral ID. + * \param ul_source Source selection value. + */ +void pmc_pck_set_source(uint32_t ul_id, uint32_t ul_source) +{ + PMC->PMC_PCK[ul_id] = + (PMC->PMC_PCK[ul_id] & ~PMC_PCK_CSS_Msk) | ul_source; + while ((PMC->PMC_SCER & (PMC_SCER_PCK0 << ul_id)) + && !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id))); +} + +/** + * \brief Switch programmable clock source selection to slow clock. + * + * \param ul_id Id of the programmable clock. + * \param ul_pres Programmable clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_pck_to_sclk(uint32_t ul_id, uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_SLOW_CLK | ul_pres; + for (ul_timeout = PMC_TIMEOUT; + !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} + +/** + * \brief Switch programmable clock source selection to main clock. + * + * \param ul_id Id of the programmable clock. + * \param ul_pres Programmable clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_pck_to_mainck(uint32_t ul_id, uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_MAIN_CLK | ul_pres; + for (ul_timeout = PMC_TIMEOUT; + !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} + +/** + * \brief Switch programmable clock source selection to PLLA clock. + * + * \param ul_id Id of the programmable clock. + * \param ul_pres Programmable clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_pck_to_pllack(uint32_t ul_id, uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_PLLA_CLK | ul_pres; + for (ul_timeout = PMC_TIMEOUT; + !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} + +#if (SAM3S || SAM4S) +/** + * \brief Switch programmable clock source selection to PLLB clock. + * + * \param ul_id Id of the programmable clock. + * \param ul_pres Programmable clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_pck_to_pllbck(uint32_t ul_id, uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_PLLB_CLK | ul_pres; + for (ul_timeout = PMC_TIMEOUT; + !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} +#endif + +#if (SAM3XA || SAM3U) +/** + * \brief Switch programmable clock source selection to UPLL clock. + * + * \param ul_id Id of the programmable clock. + * \param ul_pres Programmable clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_pck_to_upllck(uint32_t ul_id, uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_UPLL_CLK | ul_pres; + for (ul_timeout = PMC_TIMEOUT; + !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} +#endif + +/** + * \brief Enable the specified programmable clock. + * + * \param ul_id Id of the programmable clock. + */ +void pmc_enable_pck(uint32_t ul_id) +{ + PMC->PMC_SCER = PMC_SCER_PCK0 << ul_id; +} + +/** + * \brief Disable the specified programmable clock. + * + * \param ul_id Id of the programmable clock. + */ +void pmc_disable_pck(uint32_t ul_id) +{ + PMC->PMC_SCDR = PMC_SCER_PCK0 << ul_id; +} + +/** + * \brief Enable all programmable clocks. + */ +void pmc_enable_all_pck(void) +{ + PMC->PMC_SCER = PMC_SCER_PCK0 | PMC_SCER_PCK1 | PMC_SCER_PCK2; +} + +/** + * \brief Disable all programmable clocks. + */ +void pmc_disable_all_pck(void) +{ + PMC->PMC_SCDR = PMC_SCDR_PCK0 | PMC_SCDR_PCK1 | PMC_SCDR_PCK2; +} + +/** + * \brief Check if the specified programmable clock is enabled. + * + * \param ul_id Id of the programmable clock. + * + * \retval 0 Programmable clock is disabled or unknown. + * \retval 1 Programmable clock is enabled. + */ +uint32_t pmc_is_pck_enabled(uint32_t ul_id) +{ + if (ul_id > 2) { + return 0; + } + + return (PMC->PMC_SCSR & (PMC_SCSR_PCK0 << ul_id)); +} + +#if (SAM3S || SAM3XA || SAM4S || SAM4E) +/** + * \brief Switch UDP (USB) clock source selection to PLLA clock. + * + * \param ul_usbdiv Clock divisor. + */ +void pmc_switch_udpck_to_pllack(uint32_t ul_usbdiv) +{ + PMC->PMC_USB = PMC_USB_USBDIV(ul_usbdiv); +} +#endif + +#if (SAM3S || SAM4S) +/** + * \brief Switch UDP (USB) clock source selection to PLLB clock. + * + * \param ul_usbdiv Clock divisor. + */ +void pmc_switch_udpck_to_pllbck(uint32_t ul_usbdiv) +{ + PMC->PMC_USB = PMC_USB_USBDIV(ul_usbdiv) | PMC_USB_USBS; +} +#endif + +#if (SAM3XA) +/** + * \brief Switch UDP (USB) clock source selection to UPLL clock. + * + * \param dw_usbdiv Clock divisor. + */ +void pmc_switch_udpck_to_upllck(uint32_t ul_usbdiv) +{ + PMC->PMC_USB = PMC_USB_USBS | PMC_USB_USBDIV(ul_usbdiv); +} +#endif + +#if (SAM3S || SAM3XA || SAM4S || SAM4E) +/** + * \brief Enable UDP (USB) clock. + */ +void pmc_enable_udpck(void) +{ +# if (SAM3S || SAM4S || SAM4E) + PMC->PMC_SCER = PMC_SCER_UDP; +# else + PMC->PMC_SCER = PMC_SCER_UOTGCLK; +# endif +} + +/** + * \brief Disable UDP (USB) clock. + */ +void pmc_disable_udpck(void) +{ +# if (SAM3S || SAM4S || SAM4E) + PMC->PMC_SCDR = PMC_SCDR_UDP; +# else + PMC->PMC_SCDR = PMC_SCDR_UOTGCLK; +# endif +} +#endif + +/** + * \brief Enable PMC interrupts. + * + * \param ul_sources Interrupt sources bit map. + */ +void pmc_enable_interrupt(uint32_t ul_sources) +{ + PMC->PMC_IER = ul_sources; +} + +/** + * \brief Disable PMC interrupts. + * + * \param ul_sources Interrupt sources bit map. + */ +void pmc_disable_interrupt(uint32_t ul_sources) +{ + PMC->PMC_IDR = ul_sources; +} + +/** + * \brief Get PMC interrupt mask. + * + * \return The interrupt mask value. + */ +uint32_t pmc_get_interrupt_mask(void) +{ + return PMC->PMC_IMR; +} + +/** + * \brief Get current status. + * + * \return The current PMC status. + */ +uint32_t pmc_get_status(void) +{ + return PMC->PMC_SR; +} + +/** + * \brief Set the wake-up inputs for fast startup mode registers + * (event generation). + * + * \param ul_inputs Wake up inputs to enable. + */ +void pmc_set_fast_startup_input(uint32_t ul_inputs) +{ + ul_inputs &= PMC_FAST_STARTUP_Msk; + PMC->PMC_FSMR |= ul_inputs; +} + +/** + * \brief Clear the wake-up inputs for fast startup mode registers + * (remove event generation). + * + * \param ul_inputs Wake up inputs to disable. + */ +void pmc_clr_fast_startup_input(uint32_t ul_inputs) +{ + ul_inputs &= PMC_FAST_STARTUP_Msk; + PMC->PMC_FSMR &= ~ul_inputs; +} + +/** + * \brief Enable Sleep Mode. + * Enter condition: (WFE or WFI) + (SLEEPDEEP bit = 0) + (LPM bit = 0) + * + * \param uc_type 0 for wait for interrupt, 1 for wait for event. + * \note For SAM4S and SAM4E series, since only WFI is effective, uc_type = 1 + * will be treated as uc_type = 0. + */ +void pmc_enable_sleepmode(uint8_t uc_type) +{ +#if !defined(SAM4S) || !defined(SAM4E) || !defined(SAM4N) + PMC->PMC_FSMR &= (uint32_t) ~ PMC_FSMR_LPM; // Enter Sleep mode +#endif + SCB->SCR &= (uint32_t) ~ SCB_SCR_SLEEPDEEP_Msk; // Deep sleep + +#if (SAM4S || SAM4E || SAM4N) + UNUSED(uc_type); + __WFI(); +#else + if (uc_type == 0) { + __WFI(); + } else { + __WFE(); + } +#endif +} + +#if (SAM4S || SAM4E || SAM4N) +static uint32_t ul_flash_in_wait_mode = PMC_WAIT_MODE_FLASH_DEEP_POWERDOWN; +/** + * \brief Set the embedded flash state in wait mode + * + * \param ul_flash_state PMC_WAIT_MODE_FLASH_STANDBY flash in standby mode, + * PMC_WAIT_MODE_FLASH_DEEP_POWERDOWN flash in deep power down mode. + */ +void pmc_set_flash_in_wait_mode(uint32_t ul_flash_state) +{ + ul_flash_in_wait_mode = ul_flash_state; +} + +/** + * \brief Enable Wait Mode. Enter condition: (WAITMODE bit = 1) + + * (SLEEPDEEP bit = 0) + FLPM + */ +void pmc_enable_waitmode(void) +{ + uint32_t i; + + /* Flash in Deep Power Down mode */ + i = PMC->PMC_FSMR; + i &= ~PMC_FSMR_FLPM_Msk; + i |= ul_flash_in_wait_mode; + PMC->PMC_FSMR = i; + + /* Clear SLEEPDEEP bit */ + SCB->SCR &= (uint32_t) ~ SCB_SCR_SLEEPDEEP_Msk; + + /* Backup FWS setting and set Flash Wait State at 0 */ +#if defined(ID_EFC) + uint32_t fmr_backup; + fmr_backup = EFC->EEFC_FMR; + EFC->EEFC_FMR &= (uint32_t) ~ EEFC_FMR_FWS_Msk; +#endif +#if defined(ID_EFC0) + uint32_t fmr0_backup; + fmr0_backup = EFC0->EEFC_FMR; + EFC0->EEFC_FMR &= (uint32_t) ~ EEFC_FMR_FWS_Msk; +#endif +#if defined(ID_EFC1) + uint32_t fmr1_backup; + fmr1_backup = EFC1->EEFC_FMR; + EFC1->EEFC_FMR &= (uint32_t) ~ EEFC_FMR_FWS_Msk; +#endif + + /* Set the WAITMODE bit = 1 */ + PMC->CKGR_MOR |= CKGR_MOR_KEY(0x37u) | CKGR_MOR_WAITMODE; + + /* Waiting for Master Clock Ready MCKRDY = 1 */ + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); + + /* Waiting for MOSCRCEN bit cleared is strongly recommended + * to ensure that the core will not execute undesired instructions + */ + for (i = 0; i < 500; i++) { + __NOP(); + } + while (!(PMC->CKGR_MOR & CKGR_MOR_MOSCRCEN)); + + /* Restore EFC FMR setting */ +#if defined(ID_EFC) + EFC->EEFC_FMR = fmr_backup; +#endif +#if defined(ID_EFC0) + EFC0->EEFC_FMR = fmr0_backup; +#endif +#if defined(ID_EFC1) + EFC1->EEFC_FMR = fmr1_backup; +#endif +} +#else +/** + * \brief Enable Wait Mode. Enter condition: WFE + (SLEEPDEEP bit = 0) + + * (LPM bit = 1) + */ +void pmc_enable_waitmode(void) +{ + uint32_t i; + + PMC->PMC_FSMR |= PMC_FSMR_LPM; /* Enter Wait mode */ + SCB->SCR &= (uint32_t) ~ SCB_SCR_SLEEPDEEP_Msk; /* Deep sleep */ + __WFE(); + + /* Waiting for MOSCRCEN bit cleared is strongly recommended + * to ensure that the core will not execute undesired instructions + */ + for (i = 0; i < 500; i++) { + __NOP(); + } + while (!(PMC->CKGR_MOR & CKGR_MOR_MOSCRCEN)); +} +#endif + +/** + * \brief Enable Backup Mode. Enter condition: WFE/(VROFF bit = 1) + + * (SLEEPDEEP bit = 1) + */ +void pmc_enable_backupmode(void) +{ + SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; +#if (SAM4S || SAM4E || SAM4N) + SUPC->SUPC_CR = SUPC_CR_KEY(SUPC_KEY_VALUE) | SUPC_CR_VROFF_STOP_VREG; +#else + __WFE(); +#endif +} + +/** + * \brief Enable Clock Failure Detector. + */ +void pmc_enable_clock_failure_detector(void) +{ + uint32_t ul_reg = PMC->CKGR_MOR; + + PMC->CKGR_MOR = PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_CFDEN | ul_reg; +} + +/** + * \brief Disable Clock Failure Detector. + */ +void pmc_disable_clock_failure_detector(void) +{ + uint32_t ul_reg = PMC->CKGR_MOR & (~CKGR_MOR_CFDEN); + + PMC->CKGR_MOR = PMC_CKGR_MOR_KEY_VALUE | ul_reg; +} + +#if SAM4N +/** + * \brief Enable Slow Crystal Oscillator Frequency Monitoring. + */ +void pmc_enable_sclk_osc_freq_monitor(void) +{ + uint32_t ul_reg = PMC->CKGR_MOR; + + PMC->CKGR_MOR = PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_XT32KFME | ul_reg; +} + +/** + * \brief Disable Slow Crystal Oscillator Frequency Monitoring. + */ +void pmc_disable_sclk_osc_freq_monitor(void) +{ + uint32_t ul_reg = PMC->CKGR_MOR & (~CKGR_MOR_XT32KFME); + + PMC->CKGR_MOR = PMC_CKGR_MOR_KEY_VALUE | ul_reg; +} +#endif + +/** + * \brief Enable or disable write protect of PMC registers. + * + * \param ul_enable 1 to enable, 0 to disable. + */ +void pmc_set_writeprotect(uint32_t ul_enable) +{ + if (ul_enable) { + PMC->PMC_WPMR = PMC_WPMR_WPKEY_VALUE | PMC_WPMR_WPEN; + } else { + PMC->PMC_WPMR = PMC_WPMR_WPKEY_VALUE; + } +} + +/** + * \brief Return write protect status. + * + * \retval 0 Protection disabled. + * \retval 1 Protection enabled. + */ +uint32_t pmc_get_writeprotect_status(void) +{ + return PMC->PMC_WPMR & PMC_WPMR_WPEN; +} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/pmc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/pmc.h new file mode 100644 index 000000000..2d2c34a9e --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/pmc.h @@ -0,0 +1,484 @@ +/** + * \file + * + * \brief Power Management Controller (PMC) driver for SAM. + * + * Copyright (c) 2011 - 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef PMC_H_INCLUDED +#define PMC_H_INCLUDED + +#include "compiler.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** Bit mask for peripheral clocks (PCER0) */ +#define PMC_MASK_STATUS0 (0xFFFFFFFC) + +/** Bit mask for peripheral clocks (PCER1) */ +#define PMC_MASK_STATUS1 (0xFFFFFFFF) + +/** Loop counter timeout value */ +#define PMC_TIMEOUT (2048) + +/** Key to unlock CKGR_MOR register */ +#define PMC_CKGR_MOR_KEY_VALUE CKGR_MOR_KEY(0x37) + +/** Key used to write SUPC registers */ +#define SUPC_KEY_VALUE ((uint32_t) 0xA5) + +/** Mask to access fast startup input */ +#define PMC_FAST_STARTUP_Msk (0x7FFFFu) + +/** PMC_WPMR Write Protect KEY, unlock it */ +#define PMC_WPMR_WPKEY_VALUE PMC_WPMR_WPKEY((uint32_t) 0x504D43) + +/** Using external oscillator */ +#define PMC_OSC_XTAL 0 + +/** Oscillator in bypass mode */ +#define PMC_OSC_BYPASS 1 + +#define PMC_PCK_0 0 /* PCK0 ID */ +#define PMC_PCK_1 1 /* PCK1 ID */ +#define PMC_PCK_2 2 /* PCK2 ID */ + +#if SAM4S || SAM4E || SAM4N +/** Flash state in Wait Mode */ +#define PMC_WAIT_MODE_FLASH_STANDBY PMC_FSMR_FLPM_FLASH_STANDBY +#define PMC_WAIT_MODE_FLASH_DEEP_POWERDOWN PMC_FSMR_FLPM_FLASH_DEEP_POWERDOWN +#define PMC_WAIT_MODE_FLASH_IDLE PMC_FSMR_FLPM_FLASH_IDLE +#endif + +/** Convert startup time from us to MOSCXTST */ +#define pmc_us_to_moscxtst(startup_us, slowck_freq) \ + ((startup_us * slowck_freq / 8 / 1000000) < 0x100 ? \ + (startup_us * slowck_freq / 8 / 1000000) : 0xFF) + +/** + * \name Master clock (MCK) Source and Prescaler configuration + * + * \note The following functions may be used to select the clock source and + * prescaler for the master clock. + */ +//@{ + +void pmc_mck_set_prescaler(uint32_t ul_pres); +void pmc_mck_set_source(uint32_t ul_source); +uint32_t pmc_switch_mck_to_sclk(uint32_t ul_pres); +uint32_t pmc_switch_mck_to_mainck(uint32_t ul_pres); +uint32_t pmc_switch_mck_to_pllack(uint32_t ul_pres); +#if (SAM3S || SAM4S) +uint32_t pmc_switch_mck_to_pllbck(uint32_t ul_pres); +#endif +#if (SAM3XA || SAM3U) +uint32_t pmc_switch_mck_to_upllck(uint32_t ul_pres); +#endif +#if (SAM4S || SAM4E || SAM4N) +void pmc_set_flash_in_wait_mode(uint32_t ul_flash_state); +#endif + + +//@} + +/** + * \name Slow clock (SLCK) oscillator and configuration + * + */ +//@{ + +void pmc_switch_sclk_to_32kxtal(uint32_t ul_bypass); +uint32_t pmc_osc_is_ready_32kxtal(void); + +//@} + +/** + * \name Main Clock (MAINCK) oscillator and configuration + * + */ +//@{ + +void pmc_switch_mainck_to_fastrc(uint32_t ul_moscrcf); +void pmc_osc_enable_fastrc(uint32_t ul_rc); +void pmc_osc_disable_fastrc(void); +uint32_t pmc_osc_is_ready_fastrc(void); +void pmc_osc_enable_main_xtal(uint32_t ul_xtal_startup_time); +void pmc_osc_bypass_main_xtal(void); +void pmc_osc_disable_main_xtal(void); +uint32_t pmc_osc_is_bypassed_main_xtal(void); +uint32_t pmc_osc_is_ready_main_xtal(void); +void pmc_switch_mainck_to_xtal(uint32_t ul_bypass, + uint32_t ul_xtal_startup_time); +void pmc_osc_disable_xtal(uint32_t ul_bypass); +uint32_t pmc_osc_is_ready_mainck(void); +void pmc_mainck_osc_select(uint32_t ul_xtal_rc); + +//@} + +/** + * \name PLL oscillator and configuration + * + */ +//@{ + +void pmc_enable_pllack(uint32_t mula, uint32_t pllacount, uint32_t diva); +void pmc_disable_pllack(void); +uint32_t pmc_is_locked_pllack(void); + +#if (SAM3S || SAM4S) +void pmc_enable_pllbck(uint32_t mulb, uint32_t pllbcount, uint32_t divb); +void pmc_disable_pllbck(void); +uint32_t pmc_is_locked_pllbck(void); +#endif + +#if (SAM3XA || SAM3U) +void pmc_enable_upll_clock(void); +void pmc_disable_upll_clock(void); +uint32_t pmc_is_locked_upll(void); +#endif + +//@} + +/** + * \name Peripherals clock configuration + * + */ +//@{ + +uint32_t pmc_enable_periph_clk(uint32_t ul_id); +uint32_t pmc_disable_periph_clk(uint32_t ul_id); +void pmc_enable_all_periph_clk(void); +void pmc_disable_all_periph_clk(void); +uint32_t pmc_is_periph_clk_enabled(uint32_t ul_id); + +//@} + +/** + * \name Programmable clock Source and Prescaler configuration + * + * The following functions may be used to select the clock source and + * prescaler for the specified programmable clock. + */ +//@{ + +void pmc_pck_set_prescaler(uint32_t ul_id, uint32_t ul_pres); +void pmc_pck_set_source(uint32_t ul_id, uint32_t ul_source); +uint32_t pmc_switch_pck_to_sclk(uint32_t ul_id, uint32_t ul_pres); +uint32_t pmc_switch_pck_to_mainck(uint32_t ul_id, uint32_t ul_pres); +uint32_t pmc_switch_pck_to_pllack(uint32_t ul_id, uint32_t ul_pres); +#if (SAM3S || SAM4S) +uint32_t pmc_switch_pck_to_pllbck(uint32_t ul_id, uint32_t ul_pres); +#endif +#if (SAM3XA || SAM3U) +uint32_t pmc_switch_pck_to_upllck(uint32_t ul_id, uint32_t ul_pres); +#endif +void pmc_enable_pck(uint32_t ul_id); +void pmc_disable_pck(uint32_t ul_id); +void pmc_enable_all_pck(void); +void pmc_disable_all_pck(void); +uint32_t pmc_is_pck_enabled(uint32_t ul_id); + +//@} + +/** + * \name USB clock configuration + * + */ +//@{ + +#if (SAM3S || SAM3XA || SAM4S || SAM4E) +void pmc_switch_udpck_to_pllack(uint32_t ul_usbdiv); +#endif +#if (SAM3S || SAM4S) +void pmc_switch_udpck_to_pllbck(uint32_t ul_usbdiv); +#endif +#if (SAM3XA) +void pmc_switch_udpck_to_upllck(uint32_t ul_usbdiv); +#endif +#if (SAM3S || SAM3XA || SAM4S || SAM4E) +void pmc_enable_udpck(void); +void pmc_disable_udpck(void); +#endif + +//@} + +/** + * \name Interrupt and status management + * + */ +//@{ + +void pmc_enable_interrupt(uint32_t ul_sources); +void pmc_disable_interrupt(uint32_t ul_sources); +uint32_t pmc_get_interrupt_mask(void); +uint32_t pmc_get_status(void); + +//@} + +/** + * \name Power management + * + * The following functions are used to configure sleep mode and additional + * wake up inputs. + */ +//@{ + +void pmc_set_fast_startup_input(uint32_t ul_inputs); +void pmc_clr_fast_startup_input(uint32_t ul_inputs); +void pmc_enable_sleepmode(uint8_t uc_type); +void pmc_enable_waitmode(void); +void pmc_enable_backupmode(void); + +//@} + +/** + * \name Failure detector + * + */ +//@{ + +void pmc_enable_clock_failure_detector(void); +void pmc_disable_clock_failure_detector(void); + +//@} + +#if SAM4N +/** + * \name Slow Crystal Oscillator Frequency Monitoring + * + */ +//@{ + +void pmc_enable_sclk_osc_freq_monitor(void); +void pmc_disable_sclk_osc_freq_monitor(void); + +//@} +#endif + +/** + * \name Write protection + * + */ +//@{ + +void pmc_set_writeprotect(uint32_t ul_enable); +uint32_t pmc_get_writeprotect_status(void); + +//@} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +//! @} + +/** + * \page sam_pmc_quickstart Quick start guide for the SAM PMC module + * + * This is the quick start guide for the \ref pmc_group "PMC module", with + * step-by-step instructions on how to configure and use the driver in a + * selection of use cases. + * + * The use cases contain several code fragments. The code fragments in the + * steps for setup can be copied into a custom initialization function, while + * the steps for usage can be copied into, e.g., the main application function. + * + * \section pmc_use_cases PMC use cases + * - \ref pmc_basic_use_case Basic use case - Switch Main Clock sources + * - \ref pmc_use_case_2 Advanced use case - Configure Programmable Clocks + * + * \section pmc_basic_use_case Basic use case - Switch Main Clock sources + * In this use case, the PMC module is configured for a variety of system clock + * sources and speeds. A LED is used to visually indicate the current clock + * speed as the source is switched. + * + * \section pmc_basic_use_case_setup Setup + * + * \subsection pmc_basic_use_case_setup_prereq Prerequisites + * -# \ref gpio_group "General Purpose I/O Management (gpio)" + * + * \subsection pmc_basic_use_case_setup_code Code + * The following function needs to be added to the user application, to flash a + * board LED a variable number of times at a rate given in CPU ticks. + * + * \code + * #define FLASH_TICK_COUNT 0x00012345 + * + * void flash_led(uint32_t tick_count, uint8_t flash_count) + * { + * SysTick->CTRL = SysTick_CTRL_ENABLE_Msk; + * SysTick->LOAD = tick_count; + * + * while (flash_count--) + * { + * gpio_toggle_pin(LED0_GPIO); + * while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk)); + * gpio_toggle_pin(LED0_GPIO); + * while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk)); + * } + * } + * \endcode + * + * \section pmc_basic_use_case_usage Use case + * + * \subsection pmc_basic_use_case_usage_code Example code + * Add to application C-file: + * \code + * for (;;) + * { + * pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_12_MHz); + * flash_led(FLASH_TICK_COUNT, 5); + * pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_8_MHz); + * flash_led(FLASH_TICK_COUNT, 5); + * pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_4_MHz); + * flash_led(FLASH_TICK_COUNT, 5); + * pmc_switch_mainck_to_xtal(0); + * flash_led(FLASH_TICK_COUNT, 5); + * } + * \endcode + * + * \subsection pmc_basic_use_case_usage_flow Workflow + * -# Wrap the code in an infinite loop: + * \code + * for (;;) + * \endcode + * -# Switch the Master CPU frequency to the internal 12MHz RC oscillator, flash + * a LED on the board several times: + * \code + * pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_12_MHz); + * flash_led(FLASH_TICK_COUNT, 5); + * \endcode + * -# Switch the Master CPU frequency to the internal 8MHz RC oscillator, flash + * a LED on the board several times: + * \code + * pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_8_MHz); + * flash_led(FLASH_TICK_COUNT, 5); + * \endcode + * -# Switch the Master CPU frequency to the internal 4MHz RC oscillator, flash + * a LED on the board several times: + * \code + * pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_4_MHz); + * flash_led(FLASH_TICK_COUNT, 5); + * \endcode + * -# Switch the Master CPU frequency to the external crystal oscillator, flash + * a LED on the board several times: + * \code + * pmc_switch_mainck_to_xtal(0, BOARD_OSC_STARTUP_US); + * flash_led(FLASH_TICK_COUNT, 5); + * \endcode + */ + +/** + * \page pmc_use_case_2 Use case #2 - Configure Programmable Clocks + * In this use case, the PMC module is configured to start the Slow Clock from + * an attached 32KHz crystal, and start one of the Programmable Clock modules + * sourced from the Slow Clock divided down with a prescale factor of 64. + * + * \section pmc_use_case_2_setup Setup + * + * \subsection pmc_use_case_2_setup_prereq Prerequisites + * -# \ref pio_group "Parallel Input/Output Controller (pio)" + * + * \subsection pmc_use_case_2_setup_code Code + * The following code must be added to the user application: + * \code + * pio_set_peripheral(PIOA, PIO_PERIPH_B, PIO_PA17); + * \endcode + * + * \subsection pmc_use_case_2_setup_code_workflow Workflow + * -# Configure the PCK1 pin to output on a specific port pin (in this case, + * PIOA pin 17) of the microcontroller. + * \code + * pio_set_peripheral(PIOA, PIO_PERIPH_B, PIO_PA17); + * \endcode + * \note The peripheral selection and pin will vary according to your selected + * SAM device model. Refer to the "Peripheral Signal Multiplexing on I/O + * Lines" of your device's datasheet. + * + * \section pmc_use_case_2_usage Use case + * The generated PCK1 clock output can be viewed on an oscilloscope attached to + * the correct pin of the microcontroller. + * + * \subsection pmc_use_case_2_usage_code Example code + * Add to application C-file: + * \code + * pmc_switch_sclk_to_32kxtal(PMC_OSC_XTAL); + * pmc_switch_pck_to_sclk(PMC_PCK_1, PMC_PCK_PRES_CLK_64); + * pmc_enable_pck(PMC_PCK_1); + * + * for (;;) + * { + * // Do Nothing + * } + * \endcode + * + * \subsection pmc_use_case_2_usage_flow Workflow + * -# Switch the Slow Clock source input to an external 32KHz crystal: + * \code + * pmc_switch_sclk_to_32kxtal(PMC_OSC_XTAL); + * \endcode + * -# Switch the Programmable Clock module PCK1 source clock to the Slow Clock, + * with a prescaler of 64: + * \code + * pmc_switch_pck_to_sclk(PMC_PCK_1, PMC_PCK_PRES_CLK_64); + * \endcode + * -# Enable Programmable Clock module PCK1: + * \code + * pmc_enable_pck(PMC_PCK_1); + * \endcode + * -# Enter an infinite loop: + * \code + * for (;;) + * { + * // Do Nothing + * } + * \endcode + */ + +#endif /* PMC_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/sleep.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/sleep.c new file mode 100644 index 000000000..23985453c --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/sleep.c @@ -0,0 +1,251 @@ +/** + * \file + * + * \brief Sleep mode access + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#include +#include "sleep.h" + +/* SAM3 and SAM4 series */ +#if (SAM3S || SAM3N || SAM3XA || SAM3U || SAM4S || SAM4E || SAM4N) +# include "pmc.h" +# include "board.h" + +/* Checking board configuration of main clock xtal statup time */ +#if !defined(BOARD_OSC_STARTUP_US) +# warning The board main clock xtal statup time has not been defined. Using default settings. +# define BOARD_OSC_STARTUP_US (15625UL) +#endif + +/** + * Save clock settings and shutdown PLLs + */ +__always_inline static void pmc_save_clock_settings( + uint32_t *p_osc_setting, + uint32_t *p_pll0_setting, + uint32_t *p_pll1_setting, + uint32_t *p_mck_setting) +{ + if (p_osc_setting) { + *p_osc_setting = PMC->CKGR_MOR; + } + if (p_pll0_setting) { + *p_pll0_setting = PMC->CKGR_PLLAR; + } + if (p_pll1_setting) { +#if (SAM3S || SAM4S) + *p_pll1_setting = PMC->CKGR_PLLBR; +#elif (SAM3U || SAM3XA) + *p_pll1_setting = PMC->CKGR_UCKR; +#else + *p_pll1_setting = 0; +#endif + } + if (p_mck_setting) { + *p_mck_setting = PMC->PMC_MCKR; + } + + /* Switch MCK to internal 4/8/12M RC for fast wakeup + and disable unused clock for power saving. */ + pmc_switch_mck_to_sclk(PMC_MCKR_PRES_CLK_1); + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_4_MHz); + pmc_osc_disable_xtal(0); + pmc_disable_pllack(); +#if (SAM3S || SAM4S) + pmc_disable_pllbck(); +#elif (SAM3U || SAM3XA) + pmc_disable_upll_clock(); +#endif + pmc_switch_mck_to_mainck(PMC_MCKR_PRES_CLK_1); +} + +/** + * Restore clock settings + */ +__always_inline static void pmc_restore_clock_setting( + uint32_t osc_setting, + uint32_t pll0_setting, + uint32_t pll1_setting, + uint32_t mck_setting) +{ + uint32_t mckr; + uint32_t pll_sr = 0; + + /* Switch MCK to slow clock */ + pmc_switch_mck_to_sclk(PMC_MCKR_PRES_CLK_1); + /* Switch mainck to external xtal */ + if (CKGR_MOR_MOSCXTBY == (osc_setting & CKGR_MOR_MOSCXTBY)) { + /* Bypass mode */ + pmc_switch_mainck_to_xtal(PMC_OSC_BYPASS, + pmc_us_to_moscxtst(BOARD_OSC_STARTUP_US, + CHIP_FREQ_SLCK_RC)); + pmc_osc_disable_fastrc(); + } else if (CKGR_MOR_MOSCXTEN == (osc_setting & CKGR_MOR_MOSCXTEN)) { + /* External XTAL */ + pmc_switch_mainck_to_xtal(PMC_OSC_XTAL, + pmc_us_to_moscxtst(BOARD_OSC_STARTUP_US, + CHIP_FREQ_SLCK_RC)); + pmc_osc_disable_fastrc(); + } + + if (pll0_setting & CKGR_PLLAR_MULA_Msk) { + PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | pll0_setting; + pll_sr |= PMC_SR_LOCKA; + } +#if (SAM3S || SAM4S) + if (pll1_setting & CKGR_PLLBR_MULB_Msk) { + PMC->CKGR_PLLBR = pll1_setting; + pll_sr |= PMC_SR_LOCKB; + } +#elif (SAM3U || SAM3XA) + if (pll1_setting & CKGR_UCKR_UPLLEN) { + PMC->CKGR_UCKR = pll1_setting; + pll_sr |= PMC_SR_LOCKU; + } +#else + UNUSED(pll1_setting); +#endif + /* Wait MCK source ready */ + switch(mck_setting & PMC_MCKR_CSS_Msk) { + case PMC_MCKR_CSS_PLLA_CLK: + while (!(PMC->PMC_SR & PMC_SR_LOCKA)); + break; +#if (SAM3S || SAM4S) + case PMC_MCKR_CSS_PLLB_CLK: + while (!(PMC->PMC_SR & PMC_SR_LOCKB)); + break; +#elif (SAM3U || SAM3XA) + case PMC_MCKR_CSS_UPLL_CLK: + while (!(PMC->PMC_SR & PMC_SR_LOCKU)); + break; +#endif + } + + /* Switch to faster clock */ + mckr = PMC->PMC_MCKR; + /* Set PRES */ + PMC->PMC_MCKR = (mckr & ~PMC_MCKR_PRES_Msk) + | (mck_setting & PMC_MCKR_PRES_Msk); + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); + /* Set CSS and others */ + PMC->PMC_MCKR = mck_setting; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); + /* Waiting all restored PLLs ready */ + while (!(PMC->PMC_SR & pll_sr)); +} + +/** If clocks are switched to FASTRC for WAIT mode */ +static volatile bool b_is_fastrc_used = false; +/** Callback invoked once when clocks are restored */ +static pmc_callback_wakeup_clocks_restored_t callback_clocks_restored = NULL; + +void pmc_sleep(int sleep_mode) +{ + switch (sleep_mode) { + case SAM_PM_SMODE_SLEEP_WFI: + case SAM_PM_SMODE_SLEEP_WFE: +#if (SAM4S || SAM4E || SAM4N) + SCB->SCR &= (uint32_t)~SCR_SLEEPDEEP; + cpu_irq_enable(); + __WFI(); + break; +#else + PMC->PMC_FSMR &= (uint32_t)~PMC_FSMR_LPM; + SCB->SCR &= (uint32_t)~SCR_SLEEPDEEP; + cpu_irq_enable(); + if (sleep_mode == SAM_PM_SMODE_SLEEP_WFI) + __WFI(); + else + __WFE(); + break; +#endif + case SAM_PM_SMODE_WAIT: { + uint32_t mor, pllr0, pllr1, mckr; + cpu_irq_disable(); + b_is_fastrc_used = true; + pmc_save_clock_settings(&mor, &pllr0, &pllr1, &mckr); + + /* Enter wait mode */ + cpu_irq_enable(); + pmc_enable_waitmode(); + + cpu_irq_disable(); + pmc_restore_clock_setting(mor, pllr0, pllr1, mckr); + b_is_fastrc_used = false; + if (callback_clocks_restored) { + callback_clocks_restored(); + callback_clocks_restored = NULL; + } + cpu_irq_enable(); + break; + } + + case SAM_PM_SMODE_BACKUP: + SCB->SCR |= SCR_SLEEPDEEP; +#if (SAM4S || SAM4E || SAM4N) + SUPC->SUPC_CR = SUPC_CR_KEY(0xA5u) | SUPC_CR_VROFF_STOP_VREG; + cpu_irq_enable(); + __WFI() ; +#else + cpu_irq_enable(); + __WFE() ; +#endif + break; + } +} + +bool pmc_is_wakeup_clocks_restored(void) +{ + return !b_is_fastrc_used; +} + +void pmc_wait_wakeup_clocks_restore( + pmc_callback_wakeup_clocks_restored_t callback) +{ + if (b_is_fastrc_used) { + cpu_irq_disable(); + callback_clocks_restored = callback; + } else if (callback) { + callback(); + } +} + +#endif /* #if (SAM3S || SAM3N || SAM3XA || SAM3U || SAM4S || SAM4E || SAM4N) */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/sleep.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/sleep.h new file mode 100644 index 000000000..cbfad6bfe --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/sleep.h @@ -0,0 +1,122 @@ +/** + * \file + * + * \brief Sleep mode access + * + * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef SLEEP_H +#define SLEEP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/** + * \defgroup sleep_group Power Manager (PM) + * + * This is a stub on the SAM Power Manager Control (PMC) for the sleepmgr + * service. + * + * \note To minimize the code overhead, these functions do not feature + * interrupt-protected access since they are likely to be called inside + * interrupt handlers or in applications where such protection is not + * necessary. If such protection is needed, it must be ensured by the calling + * code. + * + * @{ + */ + +#if defined(__DOXYGEN__) +/** + * \brief Sets the MCU in the specified sleep mode + * \param sleep_mode Sleep mode to set. + */ +#endif +/* SAM3 and SAM4 series */ +#if (SAM3S || SAM3N || SAM3XA || SAM3U || SAM4S || SAM4E || SAM4N) + +# define SAM_PM_SMODE_ACTIVE 0 /**< Active */ +# define SAM_PM_SMODE_SLEEP_WFE 1 /**< Wait for Events */ +# define SAM_PM_SMODE_SLEEP_WFI 2 /**< Wait for Interrupts */ +# define SAM_PM_SMODE_WAIT 3 /**< Wait Mode */ +# define SAM_PM_SMODE_BACKUP 4 /**< Backup Mode */ + +/** (SCR) Sleep deep bit */ +#define SCR_SLEEPDEEP (0x1 << 2) + +/** + * Clocks restored callback function type. + * Registered by routine pmc_wait_wakeup_clocks_restore() + * Callback called when all clocks are restored. + */ +typedef void (*pmc_callback_wakeup_clocks_restored_t) (void); + +/** + * Enter sleep mode + * \param sleep_mode Sleep mode to enter + */ +void pmc_sleep(int sleep_mode); + +/** + * Check if clocks are restored after wakeup + * (For WAIT mode. In WAIT mode, clocks are switched to FASTRC. + * After wakeup clocks should be restored, before that some of the + * ISR should not be served, otherwise there may be timing or clock issue.) + */ +bool pmc_is_wakeup_clocks_restored(void); + +/** + * + * \return true if start waiting + */ +void pmc_wait_wakeup_clocks_restore( + pmc_callback_wakeup_clocks_restored_t callback); + +#endif + +//! @} + +#ifdef __cplusplus +} +#endif + +#endif /* SLEEP_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/tc/tc.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/tc/tc.c new file mode 100644 index 000000000..dd95a52ea --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/tc/tc.c @@ -0,0 +1,596 @@ +/** + * \file + * + * \brief Timer Counter (TC) driver for SAM. + * + * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#include +#include "tc.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +#define TC_WPMR_WPKEY_VALUE TC_WPMR_WPKEY((uint32_t)0x54494D) + +/** + * \defgroup sam_drivers_tc_group Timer Counter (TC) + * + * The Timer Counter (TC) includes three identical 32-bit Timer Counter + * channels. Each channel can be independently programmed to perform a wide + * range of functions including frequency measurement, event counting, + * interval measurement, pulse generation, delay timing and pulse width + * modulation. + * + * @{ + */ + +/** + * \brief Configure TC for timer, waveform generation or capture. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * \param ul_mode Control mode register value to set. + * + * \attention If the TC is configured for waveform generation, the external + * event selection (EEVT) should only be set to \c TC_CMR_EEVT_TIOB or the + * equivalent value \c 0 if it really is the intention to use TIOB as an + * external event trigger.\n + * This is because the setting forces TIOB to be an input even if the + * external event trigger has not been enabled with \c TC_CMR_ENETRG, and + * thus prevents normal operation of TIOB. + */ +void tc_init(Tc *p_tc, uint32_t ul_channel, uint32_t ul_mode) +{ + TcChannel *tc_channel; + + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + tc_channel = p_tc->TC_CHANNEL + ul_channel; + + /* Disable TC clock. */ + tc_channel->TC_CCR = TC_CCR_CLKDIS; + + /* Disable interrupts. */ + tc_channel->TC_IDR = 0xFFFFFFFF; + + /* Clear status register. */ + tc_channel->TC_SR; + + /* Set mode. */ + tc_channel->TC_CMR = ul_mode; +} + +/** + * \brief Asserts a SYNC signal to generate a software trigger to + * all channels. + * + * \param p_tc Pointer to a TC instance. + * + */ +void tc_sync_trigger(Tc *p_tc) +{ + p_tc->TC_BCR = TC_BCR_SYNC; +} + +/** + * \brief Configure TC Block mode. + * \note tc_init() must be called first. + * + * \param p_tc Pointer to a TC instance. + * \param ul_blockmode Block mode register value to set. + * + */ +void tc_set_block_mode(Tc *p_tc, uint32_t ul_blockmode) +{ + p_tc->TC_BMR = ul_blockmode; +} + +#if (!SAM3U) + +/** + * \brief Configure TC for 2-bit Gray Counter for Stepper Motor. + * \note tc_init() must be called first. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * \param ul_steppermode Stepper motor mode register value to set. + * + * \return 0 for OK. + */ +uint32_t tc_init_2bit_gray(Tc *p_tc, uint32_t ul_channel, + uint32_t ul_steppermode) +{ + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + + p_tc->TC_CHANNEL[ul_channel].TC_SMMR = ul_steppermode; + return 0; +} + +#endif + +/** + * \brief Start TC clock counter on the selected channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + */ +void tc_start(Tc *p_tc, uint32_t ul_channel) +{ + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + + p_tc->TC_CHANNEL[ul_channel].TC_CCR = TC_CCR_CLKEN | TC_CCR_SWTRG; +} + +/** + * \brief Stop TC clock counter on the selected channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + */ +void tc_stop(Tc *p_tc, uint32_t ul_channel) +{ + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + + p_tc->TC_CHANNEL[ul_channel].TC_CCR = TC_CCR_CLKDIS; +} + +/** + * \brief Read counter value on the selected channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * + * \return Counter value. + */ +uint32_t tc_read_cv(Tc *p_tc, uint32_t ul_channel) +{ + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + + return p_tc->TC_CHANNEL[ul_channel].TC_CV; +} + +/** + * \brief Read RA TC counter on the selected channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * + * \return RA value. + */ +uint32_t tc_read_ra(Tc *p_tc, uint32_t ul_channel) +{ + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + + return p_tc->TC_CHANNEL[ul_channel].TC_RA; +} + +/** + * \brief Read RB TC counter on the selected channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * + * \return RB value. + */ +uint32_t tc_read_rb(Tc *p_tc, uint32_t ul_channel) +{ + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + + return p_tc->TC_CHANNEL[ul_channel].TC_RB; +} + +/** + * \brief Read RC TC counter on the selected channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * + * \return RC value. + */ +uint32_t tc_read_rc(Tc *p_tc, uint32_t ul_channel) +{ + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + + return p_tc->TC_CHANNEL[ul_channel].TC_RC; +} + +/** + * \brief Write RA TC counter on the selected channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * \param ul_value Value to set in register. + */ +void tc_write_ra(Tc *p_tc, uint32_t ul_channel, + uint32_t ul_value) +{ + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + + p_tc->TC_CHANNEL[ul_channel].TC_RA = ul_value; +} + +/** + * \brief Write RB TC counter on the selected channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * \param ul_value Value to set in register. + */ +void tc_write_rb(Tc *p_tc, uint32_t ul_channel, + uint32_t ul_value) +{ + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + + p_tc->TC_CHANNEL[ul_channel].TC_RB = ul_value; +} + +/** + * \brief Write RC TC counter on the selected channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * \param ul_value Value to set in register. + */ +void tc_write_rc(Tc *p_tc, uint32_t ul_channel, + uint32_t ul_value) +{ + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + + p_tc->TC_CHANNEL[ul_channel].TC_RC = ul_value; +} + +/** + * \brief Enable TC interrupts on the selected channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * \param ul_sources Interrupt sources bit map. + */ +void tc_enable_interrupt(Tc *p_tc, uint32_t ul_channel, + uint32_t ul_sources) +{ + TcChannel *tc_channel; + + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + tc_channel = p_tc->TC_CHANNEL + ul_channel; + tc_channel->TC_IER = ul_sources; +} + +/** + * \brief Disable TC interrupts on the selected channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * \param ul_sources Interrupt sources bit map. + */ +void tc_disable_interrupt(Tc *p_tc, uint32_t ul_channel, + uint32_t ul_sources) +{ + TcChannel *tc_channel; + + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + tc_channel = p_tc->TC_CHANNEL + ul_channel; + tc_channel->TC_IDR = ul_sources; +} + +/** + * \brief Read TC interrupt mask on the selected channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * + * \return The interrupt mask value. + */ +uint32_t tc_get_interrupt_mask(Tc *p_tc, uint32_t ul_channel) +{ + TcChannel *tc_channel; + + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + tc_channel = p_tc->TC_CHANNEL + ul_channel; + return tc_channel->TC_IMR; +} + +/** + * \brief Get current status on the selected channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * + * \return The current TC status. + */ +uint32_t tc_get_status(Tc *p_tc, uint32_t ul_channel) +{ + TcChannel *tc_channel; + + Assert(ul_channel < + (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); + tc_channel = p_tc->TC_CHANNEL + ul_channel; + return tc_channel->TC_SR; +} + +/* TC divisor used to find the lowest acceptable timer frequency */ +#define TC_DIV_FACTOR 65536 + +#if (!SAM4L) + +#ifndef FREQ_SLOW_CLOCK_EXT +#define FREQ_SLOW_CLOCK_EXT 32768 /* External slow clock frequency (hz) */ +#endif + +/** + * \brief Find the best MCK divisor. + * + * Finds the best MCK divisor given the timer frequency and MCK. The result + * is guaranteed to satisfy the following equation: + * \code + * (MCK / (DIV * 65536)) <= freq <= (MCK / DIV) + * \endcode + * with DIV being the lowest possible value, + * to maximize timing adjust resolution. + * + * \param ul_freq Desired timer frequency. + * \param ul_mck Master clock frequency. + * \param p_uldiv Divisor value. + * \param p_ultcclks TCCLKS field value for divisor. + * \param ul_boardmck Board clock frequency. + * + * \return 1 if a proper divisor has been found, otherwise 0. + */ +uint32_t tc_find_mck_divisor(uint32_t ul_freq, uint32_t ul_mck, + uint32_t *p_uldiv, uint32_t *p_ultcclks, uint32_t ul_boardmck) +{ + const uint32_t divisors[5] = { 2, 8, 32, 128, + ul_boardmck / FREQ_SLOW_CLOCK_EXT }; + uint32_t ul_index; + uint32_t ul_high, ul_low; + + /* Satisfy frequency bound. */ + for (ul_index = 0; + ul_index < (sizeof(divisors) / sizeof(divisors[0])); + ul_index++) { + ul_high = ul_mck / divisors[ul_index]; + ul_low = ul_high / TC_DIV_FACTOR; + if (ul_freq > ul_high) { + return 0; + } else if (ul_freq >= ul_low) { + break; + } + } + if (ul_index >= (sizeof(divisors) / sizeof(divisors[0]))) { + return 0; + } + + /* Store results. */ + if (p_uldiv) { + *p_uldiv = divisors[ul_index]; + } + + if (p_ultcclks) { + *p_ultcclks = ul_index; + } + + return 1; +} + +#endif + +#if (SAM4L) +/** + * \brief Find the best PBA clock divisor. + * + * Finds the best divisor given the timer frequency and PBA clock. The result + * is guaranteed to satisfy the following equation: + * \code + * (ul_pbaclk / (2* DIV * 65536)) <= freq <= (ul_pbaclk / (2* DIV)) + * \endcode + * with DIV being the lowest possible value, + * to maximize timing adjust resolution. + * + * \param ul_freq Desired timer frequency. + * \param ul_mck PBA clock frequency. + * \param p_uldiv Divisor value. + * \param p_ultcclks TCCLKS field value for divisor. + * \param ul_boardmck useless here. + * + * \return 1 if a proper divisor has been found, otherwise 0. + */ +uint32_t tc_find_mck_divisor(uint32_t ul_freq, uint32_t ul_mck, + uint32_t *p_uldiv, uint32_t *p_ultcclks, uint32_t ul_boardmck) +{ + const uint32_t divisors[5] = { 0, 2, 8, 32, 128}; + uint32_t ul_index; + uint32_t ul_high, ul_low; + + UNUSED(ul_boardmck); + + /* Satisfy frequency bound. */ + for (ul_index = 1; + ul_index < (sizeof(divisors) / sizeof(divisors[0])); + ul_index++) { + ul_high = ul_mck / divisors[ul_index]; + ul_low = ul_high / TC_DIV_FACTOR; + if (ul_freq > ul_high) { + return 0; + } else if (ul_freq >= ul_low) { + break; + } + } + if (ul_index >= (sizeof(divisors) / sizeof(divisors[0]))) { + return 0; + } + + /* Store results. */ + if (p_uldiv) { + *p_uldiv = divisors[ul_index]; + } + + if (p_ultcclks) { + *p_ultcclks = ul_index; + } + + return 1; +} + +#endif + +#if (!SAM4L) + +/** + * \brief Enable TC QDEC interrupts. + * + * \param p_tc Pointer to a TC instance. + * \param ul_sources Interrupts to be enabled. + */ +void tc_enable_qdec_interrupt(Tc *p_tc, uint32_t ul_sources) +{ + p_tc->TC_QIER = ul_sources; +} + +/** + * \brief Disable TC QDEC interrupts. + * + * \param p_tc Pointer to a TC instance. + * \param ul_sources Interrupts to be disabled. + */ +void tc_disable_qdec_interrupt(Tc *p_tc, uint32_t ul_sources) +{ + p_tc->TC_QIDR = ul_sources; +} + +/** + * \brief Read TC QDEC interrupt mask. + * + * \param p_tc Pointer to a TC instance. + * + * \return The interrupt mask value. + */ +uint32_t tc_get_qdec_interrupt_mask(Tc *p_tc) +{ + return p_tc->TC_QIMR; +} + +/** + * \brief Get current QDEC status. + * + * \param p_tc Pointer to a TC instance. + * + * \return The current TC status. + */ +uint32_t tc_get_qdec_interrupt_status(Tc *p_tc) +{ + return p_tc->TC_QISR; +} + +#endif + +#if (!SAM3U) + +/** + * \brief Enable or disable write protection of TC registers. + * + * \param p_tc Pointer to a TC instance. + * \param ul_enable 1 to enable, 0 to disable. + */ +void tc_set_writeprotect(Tc *p_tc, uint32_t ul_enable) +{ + if (ul_enable) { + p_tc->TC_WPMR = TC_WPMR_WPKEY_VALUE | TC_WPMR_WPEN; + } else { + p_tc->TC_WPMR = TC_WPMR_WPKEY_VALUE; + } +} + +#endif + +#if SAM4L + +/** + * \brief Indicate features. + * + * \param p_tc Pointer to a TC instance. + * + * \return TC_FEATURES value. + */ +uint32_t tc_get_feature(Tc *p_tc) +{ + return p_tc->TC_FEATURES; +} + +/** + * \brief Indicate version. + * + * \param p_tc Pointer to a TC instance. + * + * \return TC_VERSION value. + */ +uint32_t tc_get_version(Tc *p_tc) +{ + return p_tc->TC_VERSION; +} + +#endif + +//@} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/tc/tc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/tc/tc.h new file mode 100644 index 000000000..5dd169019 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/tc/tc.h @@ -0,0 +1,114 @@ +/** + * \file + * + * \brief Timer Counter (TC) driver for SAM. + * + * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef TC_H_INCLUDED +#define TC_H_INCLUDED + +#include "compiler.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +void tc_init(Tc *p_tc, uint32_t ul_Channel, uint32_t ul_Mode); +void tc_sync_trigger(Tc *p_tc); +void tc_set_block_mode(Tc *p_tc, uint32_t ul_blockmode); + +#if (!SAM3U) +uint32_t tc_init_2bit_gray(Tc *p_tc, uint32_t ul_channel, + uint32_t ul_steppermode); +#endif + +void tc_start(Tc *p_tc, uint32_t ul_channel); +void tc_stop(Tc *p_tc, uint32_t ul_channel); + +uint32_t tc_read_cv(Tc *p_tc, uint32_t ul_channel); +uint32_t tc_read_ra(Tc *p_tc, uint32_t ul_channel); +uint32_t tc_read_rb(Tc *p_tc, uint32_t ul_channel); +uint32_t tc_read_rc(Tc *p_tc, uint32_t ul_channel); + +void tc_write_ra(Tc *p_tc, uint32_t ul_channel, + uint32_t ul_value); +void tc_write_rb(Tc *p_tc, uint32_t ul_channel, + uint32_t ul_value); +void tc_write_rc(Tc *p_tc, uint32_t ul_channel, + uint32_t ul_value); + +uint32_t tc_find_mck_divisor(uint32_t ul_freq, uint32_t ul_mck, + uint32_t *p_uldiv, uint32_t *ul_tcclks, uint32_t ul_boardmck); +void tc_enable_interrupt(Tc *p_tc, uint32_t ul_channel, + uint32_t ul_sources); +void tc_disable_interrupt(Tc *p_tc, uint32_t ul_channel, + uint32_t ul_sources); +uint32_t tc_get_interrupt_mask(Tc *p_tc, uint32_t ul_channel); +uint32_t tc_get_status(Tc *p_tc, uint32_t ul_channel); +#if (!SAM4L) +void tc_enable_qdec_interrupt(Tc *p_tc, uint32_t ul_sources); +void tc_disable_qdec_interrupt(Tc *p_tc, uint32_t ul_sources); +uint32_t tc_get_qdec_interrupt_mask(Tc *p_tc); +uint32_t tc_get_qdec_interrupt_status(Tc *p_tc); +#endif + +#if (!SAM3U) +void tc_set_writeprotect(Tc *p_tc, uint32_t ul_enable); +#endif + +#if SAM4L +uint32_t tc_get_feature(Tc *p_tc); +uint32_t tc_get_version(Tc *p_tc); + +#endif + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* TC_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/acc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/acc.h new file mode 100644 index 000000000..c6b3a47db --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/acc.h @@ -0,0 +1,136 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_ACC_COMPONENT_ +#define _SAM4E_ACC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Analog Comparator Controller */ +/* ============================================================================= */ +/** \addtogroup SAM4E_ACC Analog Comparator Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Acc hardware registers */ +typedef struct { + WoReg ACC_CR; /**< \brief (Acc Offset: 0x00) Control Register */ + RwReg ACC_MR; /**< \brief (Acc Offset: 0x04) Mode Register */ + RoReg Reserved1[7]; + WoReg ACC_IER; /**< \brief (Acc Offset: 0x24) Interrupt Enable Register */ + WoReg ACC_IDR; /**< \brief (Acc Offset: 0x28) Interrupt Disable Register */ + RoReg ACC_IMR; /**< \brief (Acc Offset: 0x2C) Interrupt Mask Register */ + RoReg ACC_ISR; /**< \brief (Acc Offset: 0x30) Interrupt Status Register */ + RoReg Reserved2[24]; + RwReg ACC_ACR; /**< \brief (Acc Offset: 0x94) Analog Control Register */ + RoReg Reserved3[19]; + RwReg ACC_WPMR; /**< \brief (Acc Offset: 0xE4) Write Protect Mode Register */ + RoReg ACC_WPSR; /**< \brief (Acc Offset: 0xE8) Write Protect Status Register */ +} Acc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- ACC_CR : (ACC Offset: 0x00) Control Register -------- */ +#define ACC_CR_SWRST (0x1u << 0) /**< \brief (ACC_CR) SoftWare ReSeT */ +/* -------- ACC_MR : (ACC Offset: 0x04) Mode Register -------- */ +#define ACC_MR_SELMINUS_Pos 0 +#define ACC_MR_SELMINUS_Msk (0x7u << ACC_MR_SELMINUS_Pos) /**< \brief (ACC_MR) SELection for MINUS comparator input */ +#define ACC_MR_SELMINUS_TS (0x0u << 0) /**< \brief (ACC_MR) SelectTS */ +#define ACC_MR_SELMINUS_ADVREF (0x1u << 0) /**< \brief (ACC_MR) Select ADVREF */ +#define ACC_MR_SELMINUS_DAC0 (0x2u << 0) /**< \brief (ACC_MR) Select DAC0 */ +#define ACC_MR_SELMINUS_DAC1 (0x3u << 0) /**< \brief (ACC_MR) Select DAC1 */ +#define ACC_MR_SELMINUS_AD0 (0x4u << 0) /**< \brief (ACC_MR) Select AD0 */ +#define ACC_MR_SELMINUS_AD1 (0x5u << 0) /**< \brief (ACC_MR) Select AD1 */ +#define ACC_MR_SELMINUS_AD2 (0x6u << 0) /**< \brief (ACC_MR) Select AD2 */ +#define ACC_MR_SELMINUS_AD3 (0x7u << 0) /**< \brief (ACC_MR) Select AD3 */ +#define ACC_MR_SELPLUS_Pos 4 +#define ACC_MR_SELPLUS_Msk (0x7u << ACC_MR_SELPLUS_Pos) /**< \brief (ACC_MR) SELection for PLUS comparator input */ +#define ACC_MR_SELPLUS_AD0 (0x0u << 4) /**< \brief (ACC_MR) Select AD0 */ +#define ACC_MR_SELPLUS_AD1 (0x1u << 4) /**< \brief (ACC_MR) Select AD1 */ +#define ACC_MR_SELPLUS_AD2 (0x2u << 4) /**< \brief (ACC_MR) Select AD2 */ +#define ACC_MR_SELPLUS_AD3 (0x3u << 4) /**< \brief (ACC_MR) Select AD3 */ +#define ACC_MR_SELPLUS_AD4 (0x4u << 4) /**< \brief (ACC_MR) Select AD4 */ +#define ACC_MR_SELPLUS_AD5 (0x5u << 4) /**< \brief (ACC_MR) Select AD5 */ +#define ACC_MR_SELPLUS_AD6 (0x6u << 4) /**< \brief (ACC_MR) Select AD6 */ +#define ACC_MR_SELPLUS_AD7 (0x7u << 4) /**< \brief (ACC_MR) Select AD7 */ +#define ACC_MR_ACEN (0x1u << 8) /**< \brief (ACC_MR) Analog Comparator ENable */ +#define ACC_MR_ACEN_DIS (0x0u << 8) /**< \brief (ACC_MR) Analog Comparator Disabled. */ +#define ACC_MR_ACEN_EN (0x1u << 8) /**< \brief (ACC_MR) Analog Comparator Enabled. */ +#define ACC_MR_EDGETYP_Pos 9 +#define ACC_MR_EDGETYP_Msk (0x3u << ACC_MR_EDGETYP_Pos) /**< \brief (ACC_MR) EDGE TYPe */ +#define ACC_MR_EDGETYP_RISING (0x0u << 9) /**< \brief (ACC_MR) only rising edge of comparator output */ +#define ACC_MR_EDGETYP_FALLING (0x1u << 9) /**< \brief (ACC_MR) falling edge of comparator output */ +#define ACC_MR_EDGETYP_ANY (0x2u << 9) /**< \brief (ACC_MR) any edge of comparator output */ +#define ACC_MR_INV (0x1u << 12) /**< \brief (ACC_MR) INVert comparator output */ +#define ACC_MR_INV_DIS (0x0u << 12) /**< \brief (ACC_MR) Analog Comparator output is directly processed. */ +#define ACC_MR_INV_EN (0x1u << 12) /**< \brief (ACC_MR) Analog Comparator output is inverted prior to being processed. */ +#define ACC_MR_SELFS (0x1u << 13) /**< \brief (ACC_MR) SELection of Fault Source */ +#define ACC_MR_SELFS_CF (0x0u << 13) /**< \brief (ACC_MR) the CF flag is used to drive the FAULT output. */ +#define ACC_MR_SELFS_OUTPUT (0x1u << 13) /**< \brief (ACC_MR) the output of the Analog Comparator flag is used to drive the FAULT output. */ +#define ACC_MR_FE (0x1u << 14) /**< \brief (ACC_MR) Fault Enable */ +#define ACC_MR_FE_DIS (0x0u << 14) /**< \brief (ACC_MR) the FAULT output is tied to 0. */ +#define ACC_MR_FE_EN (0x1u << 14) /**< \brief (ACC_MR) the FAULT output is driven by the signal defined by SELFS. */ +/* -------- ACC_IER : (ACC Offset: 0x24) Interrupt Enable Register -------- */ +#define ACC_IER_CE (0x1u << 0) /**< \brief (ACC_IER) Comparison Edge */ +/* -------- ACC_IDR : (ACC Offset: 0x28) Interrupt Disable Register -------- */ +#define ACC_IDR_CE (0x1u << 0) /**< \brief (ACC_IDR) Comparison Edge */ +/* -------- ACC_IMR : (ACC Offset: 0x2C) Interrupt Mask Register -------- */ +#define ACC_IMR_CE (0x1u << 0) /**< \brief (ACC_IMR) Comparison Edge */ +/* -------- ACC_ISR : (ACC Offset: 0x30) Interrupt Status Register -------- */ +#define ACC_ISR_CE (0x1u << 0) /**< \brief (ACC_ISR) Comparison Edge */ +#define ACC_ISR_SCO (0x1u << 1) /**< \brief (ACC_ISR) Synchronized Comparator Output */ +#define ACC_ISR_MASK (0x1u << 31) /**< \brief (ACC_ISR) */ +/* -------- ACC_ACR : (ACC Offset: 0x94) Analog Control Register -------- */ +#define ACC_ACR_ISEL (0x1u << 0) /**< \brief (ACC_ACR) Current SELection */ +#define ACC_ACR_ISEL_LOPW (0x0u << 0) /**< \brief (ACC_ACR) low power option. */ +#define ACC_ACR_ISEL_HISP (0x1u << 0) /**< \brief (ACC_ACR) high speed option. */ +#define ACC_ACR_HYST_Pos 1 +#define ACC_ACR_HYST_Msk (0x3u << ACC_ACR_HYST_Pos) /**< \brief (ACC_ACR) HYSTeresis selection */ +#define ACC_ACR_HYST(value) ((ACC_ACR_HYST_Msk & ((value) << ACC_ACR_HYST_Pos))) +/* -------- ACC_WPMR : (ACC Offset: 0xE4) Write Protect Mode Register -------- */ +#define ACC_WPMR_WPEN (0x1u << 0) /**< \brief (ACC_WPMR) Write Protect Enable */ +#define ACC_WPMR_WPKEY_Pos 8 +#define ACC_WPMR_WPKEY_Msk (0xffffffu << ACC_WPMR_WPKEY_Pos) /**< \brief (ACC_WPMR) Write Protect KEY */ +#define ACC_WPMR_WPKEY(value) ((ACC_WPMR_WPKEY_Msk & ((value) << ACC_WPMR_WPKEY_Pos))) +/* -------- ACC_WPSR : (ACC Offset: 0xE8) Write Protect Status Register -------- */ +#define ACC_WPSR_WPROTERR (0x1u << 0) /**< \brief (ACC_WPSR) Write PROTection ERRor */ + +/*@}*/ + + +#endif /* _SAM4E_ACC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/aes.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/aes.h new file mode 100644 index 000000000..7b7856374 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/aes.h @@ -0,0 +1,161 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_AES_COMPONENT_ +#define _SAM4E_AES_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Advanced Encryption Standard */ +/* ============================================================================= */ +/** \addtogroup SAM4E_AES Advanced Encryption Standard */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Aes hardware registers */ +typedef struct { + WoReg AES_CR; /**< \brief (Aes Offset: 0x00) Control Register */ + RwReg AES_MR; /**< \brief (Aes Offset: 0x04) Mode Register */ + RoReg Reserved1[2]; + WoReg AES_IER; /**< \brief (Aes Offset: 0x10) Interrupt Enable Register */ + WoReg AES_IDR; /**< \brief (Aes Offset: 0x14) Interrupt Disable Register */ + RoReg AES_IMR; /**< \brief (Aes Offset: 0x18) Interrupt Mask Register */ + RoReg AES_ISR; /**< \brief (Aes Offset: 0x1C) Interrupt Status Register */ + WoReg AES_KEYWR[8]; /**< \brief (Aes Offset: 0x20) Key Word Register */ + WoReg AES_IDATAR[4]; /**< \brief (Aes Offset: 0x40) Input Data Register */ + RoReg AES_ODATAR[4]; /**< \brief (Aes Offset: 0x50) Output Data Register */ + WoReg AES_IVR[4]; /**< \brief (Aes Offset: 0x60) Initialization Vector Register */ +} Aes; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- AES_CR : (AES Offset: 0x00) Control Register -------- */ +#define AES_CR_START (0x1u << 0) /**< \brief (AES_CR) Start Processing */ +#define AES_CR_SWRST (0x1u << 8) /**< \brief (AES_CR) Software Reset */ +/* -------- AES_MR : (AES Offset: 0x04) Mode Register -------- */ +#define AES_MR_CIPHER (0x1u << 0) /**< \brief (AES_MR) Processing Mode */ +#define AES_MR_DUALBUFF (0x1u << 3) /**< \brief (AES_MR) Dual Input BUFFer */ +#define AES_MR_DUALBUFF_INACTIVE (0x0u << 3) /**< \brief (AES_MR) AES_IDATARx cannot be written during processing of previous block. */ +#define AES_MR_DUALBUFF_ACTIVE (0x1u << 3) /**< \brief (AES_MR) AES_IDATARx can be written during processing of previous block when SMOD = 0x2. It speeds up the overall runtime of large files. */ +#define AES_MR_PROCDLY_Pos 4 +#define AES_MR_PROCDLY_Msk (0xfu << AES_MR_PROCDLY_Pos) /**< \brief (AES_MR) Processing Delay */ +#define AES_MR_PROCDLY(value) ((AES_MR_PROCDLY_Msk & ((value) << AES_MR_PROCDLY_Pos))) +#define AES_MR_SMOD_Pos 8 +#define AES_MR_SMOD_Msk (0x3u << AES_MR_SMOD_Pos) /**< \brief (AES_MR) Start Mode */ +#define AES_MR_SMOD_MANUAL_START (0x0u << 8) /**< \brief (AES_MR) Manual Mode */ +#define AES_MR_SMOD_AUTO_START (0x1u << 8) /**< \brief (AES_MR) Auto Mode */ +#define AES_MR_SMOD_IDATAR0_START (0x2u << 8) /**< \brief (AES_MR) AES_IDATAR0 access only Auto Mode */ +#define AES_MR_KEYSIZE_Pos 10 +#define AES_MR_KEYSIZE_Msk (0x3u << AES_MR_KEYSIZE_Pos) /**< \brief (AES_MR) Key Size */ +#define AES_MR_KEYSIZE_AES128 (0x0u << 10) /**< \brief (AES_MR) AES Key Size is 128 bits */ +#define AES_MR_KEYSIZE_AES192 (0x1u << 10) /**< \brief (AES_MR) AES Key Size is 192 bits */ +#define AES_MR_KEYSIZE_AES256 (0x2u << 10) /**< \brief (AES_MR) AES Key Size is 256 bits */ +#define AES_MR_OPMOD_Pos 12 +#define AES_MR_OPMOD_Msk (0x7u << AES_MR_OPMOD_Pos) /**< \brief (AES_MR) Operation Mode */ +#define AES_MR_OPMOD_ECB (0x0u << 12) /**< \brief (AES_MR) ECB: Electronic Code Book mode */ +#define AES_MR_OPMOD_CBC (0x1u << 12) /**< \brief (AES_MR) CBC: Cipher Block Chaining mode */ +#define AES_MR_OPMOD_OFB (0x2u << 12) /**< \brief (AES_MR) OFB: Output Feedback mode */ +#define AES_MR_OPMOD_CFB (0x3u << 12) /**< \brief (AES_MR) CFB: Cipher Feedback mode */ +#define AES_MR_OPMOD_CTR (0x4u << 12) /**< \brief (AES_MR) CTR: Counter mode (16-bit internal counter) */ +#define AES_MR_LOD (0x1u << 15) /**< \brief (AES_MR) Last Output Data Mode */ +#define AES_MR_CFBS_Pos 16 +#define AES_MR_CFBS_Msk (0x7u << AES_MR_CFBS_Pos) /**< \brief (AES_MR) Cipher Feedback Data Size */ +#define AES_MR_CFBS_SIZE_128BIT (0x0u << 16) /**< \brief (AES_MR) 128-bit */ +#define AES_MR_CFBS_SIZE_64BIT (0x1u << 16) /**< \brief (AES_MR) 64-bit */ +#define AES_MR_CFBS_SIZE_32BIT (0x2u << 16) /**< \brief (AES_MR) 32-bit */ +#define AES_MR_CFBS_SIZE_16BIT (0x3u << 16) /**< \brief (AES_MR) 16-bit */ +#define AES_MR_CFBS_SIZE_8BIT (0x4u << 16) /**< \brief (AES_MR) 8-bit */ +#define AES_MR_CKEY_Pos 20 +#define AES_MR_CKEY_Msk (0xfu << AES_MR_CKEY_Pos) /**< \brief (AES_MR) Key */ +#define AES_MR_CKEY(value) ((AES_MR_CKEY_Msk & ((value) << AES_MR_CKEY_Pos))) +/* -------- AES_IER : (AES Offset: 0x10) Interrupt Enable Register -------- */ +#define AES_IER_DATRDY (0x1u << 0) /**< \brief (AES_IER) Data Ready Interrupt Enable */ +#define AES_IER_ENDRX (0x1u << 1) /**< \brief (AES_IER) End of Receive Buffer Interrupt Enable */ +#define AES_IER_ENDTX (0x1u << 2) /**< \brief (AES_IER) End of Transmit Buffer Interrupt Enable */ +#define AES_IER_RXBUFF (0x1u << 3) /**< \brief (AES_IER) Receive Buffer Full Interrupt Enable */ +#define AES_IER_TXBUFE (0x1u << 4) /**< \brief (AES_IER) Transmit Buffer Empty Interrupt Enable */ +#define AES_IER_URAD (0x1u << 8) /**< \brief (AES_IER) Unspecified Register Access Detection Interrupt Enable */ +/* -------- AES_IDR : (AES Offset: 0x14) Interrupt Disable Register -------- */ +#define AES_IDR_DATRDY (0x1u << 0) /**< \brief (AES_IDR) Data Ready Interrupt Disable */ +#define AES_IDR_ENDRX (0x1u << 1) /**< \brief (AES_IDR) End of Receive Buffer Interrupt Disable */ +#define AES_IDR_ENDTX (0x1u << 2) /**< \brief (AES_IDR) End of Transmit Buffer Interrupt Disable */ +#define AES_IDR_RXBUFF (0x1u << 3) /**< \brief (AES_IDR) Receive Buffer Full Interrupt Disable */ +#define AES_IDR_TXBUFE (0x1u << 4) /**< \brief (AES_IDR) Transmit Buffer Empty Interrupt Disable */ +#define AES_IDR_URAD (0x1u << 8) /**< \brief (AES_IDR) Unspecified Register Access Detection Interrupt Disable */ +/* -------- AES_IMR : (AES Offset: 0x18) Interrupt Mask Register -------- */ +#define AES_IMR_DATRDY (0x1u << 0) /**< \brief (AES_IMR) Data Ready Interrupt Mask */ +#define AES_IMR_ENDRX (0x1u << 1) /**< \brief (AES_IMR) End of Receive Buffer Interrupt Mask */ +#define AES_IMR_ENDTX (0x1u << 2) /**< \brief (AES_IMR) End of Transmit Buffer Interrupt Mask */ +#define AES_IMR_RXBUFF (0x1u << 3) /**< \brief (AES_IMR) Receive Buffer Full Interrupt Mask */ +#define AES_IMR_TXBUFE (0x1u << 4) /**< \brief (AES_IMR) Transmit Buffer Empty Interrupt Mask */ +#define AES_IMR_URAD (0x1u << 8) /**< \brief (AES_IMR) Unspecified Register Access Detection Interrupt Mask */ +/* -------- AES_ISR : (AES Offset: 0x1C) Interrupt Status Register -------- */ +#define AES_ISR_DATRDY (0x1u << 0) /**< \brief (AES_ISR) Data Ready */ +#define AES_ISR_ENDRX (0x1u << 1) /**< \brief (AES_ISR) End of RX Buffer */ +#define AES_ISR_ENDTX (0x1u << 2) /**< \brief (AES_ISR) End of TX Buffer */ +#define AES_ISR_RXBUFF (0x1u << 3) /**< \brief (AES_ISR) RX Buffer Full */ +#define AES_ISR_TXBUFE (0x1u << 4) /**< \brief (AES_ISR) TX Buffer Empty */ +#define AES_ISR_URAD (0x1u << 8) /**< \brief (AES_ISR) Unspecified Register Access Detection Status */ +#define AES_ISR_URAT_Pos 12 +#define AES_ISR_URAT_Msk (0xfu << AES_ISR_URAT_Pos) /**< \brief (AES_ISR) Unspecified Register Access: */ +#define AES_ISR_URAT_IDR_WR_PROCESSING (0x0u << 12) /**< \brief (AES_ISR) Input Data Register written during the data processing when SMOD=0x2 mode. */ +#define AES_ISR_URAT_ODR_RD_PROCESSING (0x1u << 12) /**< \brief (AES_ISR) Output Data Register read during the data processing. */ +#define AES_ISR_URAT_MR_WR_PROCESSING (0x2u << 12) /**< \brief (AES_ISR) Mode Register written during the data processing. */ +#define AES_ISR_URAT_ODR_RD_SUBKGEN (0x3u << 12) /**< \brief (AES_ISR) Output Data Register read during the sub-keys generation. */ +#define AES_ISR_URAT_MR_WR_SUBKGEN (0x4u << 12) /**< \brief (AES_ISR) Mode Register written during the sub-keys generation. */ +#define AES_ISR_URAT_WOR_RD_ACCESS (0x5u << 12) /**< \brief (AES_ISR) Write-only register read access. */ +/* -------- AES_KEYWR[8] : (AES Offset: 0x20) Key Word Register -------- */ +#define AES_KEYWR_KEYW_Pos 0 +#define AES_KEYWR_KEYW_Msk (0xffffffffu << AES_KEYWR_KEYW_Pos) /**< \brief (AES_KEYWR[8]) Key Word */ +#define AES_KEYWR_KEYW(value) ((AES_KEYWR_KEYW_Msk & ((value) << AES_KEYWR_KEYW_Pos))) +/* -------- AES_IDATAR[4] : (AES Offset: 0x40) Input Data Register -------- */ +#define AES_IDATAR_IDATA_Pos 0 +#define AES_IDATAR_IDATA_Msk (0xffffffffu << AES_IDATAR_IDATA_Pos) /**< \brief (AES_IDATAR[4]) Input Data Word */ +#define AES_IDATAR_IDATA(value) ((AES_IDATAR_IDATA_Msk & ((value) << AES_IDATAR_IDATA_Pos))) +/* -------- AES_ODATAR[4] : (AES Offset: 0x50) Output Data Register -------- */ +#define AES_ODATAR_ODATA_Pos 0 +#define AES_ODATAR_ODATA_Msk (0xffffffffu << AES_ODATAR_ODATA_Pos) /**< \brief (AES_ODATAR[4]) Output Data */ +/* -------- AES_IVR[4] : (AES Offset: 0x60) Initialization Vector Register -------- */ +#define AES_IVR_IV_Pos 0 +#define AES_IVR_IV_Msk (0xffffffffu << AES_IVR_IV_Pos) /**< \brief (AES_IVR[4]) Initialization Vector */ +#define AES_IVR_IV(value) ((AES_IVR_IV_Msk & ((value) << AES_IVR_IV_Pos))) + +/*@}*/ + + +#endif /* _SAM4E_AES_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/afec.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/afec.h new file mode 100644 index 000000000..24e2a90ee --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/afec.h @@ -0,0 +1,559 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_AFEC_COMPONENT_ +#define _SAM4E_AFEC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Analog-Front-End Controller */ +/* ============================================================================= */ +/** \addtogroup SAM4E_AFEC Analog-Front-End Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Afec hardware registers */ +typedef struct { + WoReg AFEC_CR; /**< \brief (Afec Offset: 0x00) Control Register */ + RwReg AFEC_MR; /**< \brief (Afec Offset: 0x04) Mode Register */ + RwReg AFEC_EMR; /**< \brief (Afec Offset: 0x08) Extended Mode Register */ + RwReg AFEC_SEQ1R; /**< \brief (Afec Offset: 0x0C) Channel Sequence 1 Register */ + RwReg AFEC_SEQ2R; /**< \brief (Afec Offset: 0x10) Channel Sequence 2 Register */ + WoReg AFEC_CHER; /**< \brief (Afec Offset: 0x14) Channel Enable Register */ + WoReg AFEC_CHDR; /**< \brief (Afec Offset: 0x18) Channel Disable Register */ + RoReg AFEC_CHSR; /**< \brief (Afec Offset: 0x1C) Channel Status Register */ + RoReg AFEC_LCDR; /**< \brief (Afec Offset: 0x20) Last Converted Data Register */ + WoReg AFEC_IER; /**< \brief (Afec Offset: 0x24) Interrupt Enable Register */ + WoReg AFEC_IDR; /**< \brief (Afec Offset: 0x28) Interrupt Disable Register */ + RoReg AFEC_IMR; /**< \brief (Afec Offset: 0x2C) Interrupt Mask Register */ + RoReg AFEC_ISR; /**< \brief (Afec Offset: 0x30) Interrupt Status Register */ + RoReg Reserved1[6]; + RoReg AFEC_OVER; /**< \brief (Afec Offset: 0x4C) Overrun Status Register */ + RwReg AFEC_CWR; /**< \brief (Afec Offset: 0x50) Compare Window Register */ + RwReg AFEC_CGR; /**< \brief (Afec Offset: 0x54) Channel Gain Register */ + RoReg Reserved2[1]; + RwReg AFEC_CDOR; /**< \brief (Afec Offset: 0x5C) Channel Calibration DC Offset Register */ + RwReg AFEC_DIFFR; /**< \brief (Afec Offset: 0x60) Channel Differential Register */ + RwReg AFEC_CSELR; /**< \brief (Afec Offset: 0x64) Channel Register Selection */ + RoReg AFEC_CDR; /**< \brief (Afec Offset: 0x68) Channel Data Register */ + RwReg AFEC_COCR; /**< \brief (Afec Offset: 0x6C) Channel Offset Compensation Register */ + RwReg AFEC_TEMPMR; /**< \brief (Afec Offset: 0x70) Temperature Sensor Mode Register */ + RwReg AFEC_TEMPCWR; /**< \brief (Afec Offset: 0x74) Temperature Compare Window Register */ + RoReg Reserved3[7]; + RwReg AFEC_ACR; /**< \brief (Afec Offset: 0x94) Analog Control Register */ + RoReg Reserved4[19]; + RwReg AFEC_WPMR; /**< \brief (Afec Offset: 0xE4) Write Protect Mode Register */ + RoReg AFEC_WPSR; /**< \brief (Afec Offset: 0xE8) Write Protect Status Register */ + RoReg Reserved5[5]; + RwReg AFEC_RPR; /**< \brief (Afec Offset: 0x100) Receive Pointer Register */ + RwReg AFEC_RCR; /**< \brief (Afec Offset: 0x104) Receive Counter Register */ + RoReg Reserved6[2]; + RwReg AFEC_RNPR; /**< \brief (Afec Offset: 0x110) Receive Next Pointer Register */ + RwReg AFEC_RNCR; /**< \brief (Afec Offset: 0x114) Receive Next Counter Register */ + RoReg Reserved7[2]; + WoReg AFEC_PTCR; /**< \brief (Afec Offset: 0x120) Transfer Control Register */ + RoReg AFEC_PTSR; /**< \brief (Afec Offset: 0x124) Transfer Status Register */ +} Afec; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- AFEC_CR : (AFEC Offset: 0x00) Control Register -------- */ +#define AFEC_CR_SWRST (0x1u << 0) /**< \brief (AFEC_CR) Software Reset */ +#define AFEC_CR_START (0x1u << 1) /**< \brief (AFEC_CR) Start Conversion */ +#define AFEC_CR_AUTOCAL (0x1u << 3) /**< \brief (AFEC_CR) Automatic Calibration of AFEC */ +/* -------- AFEC_MR : (AFEC Offset: 0x04) Mode Register -------- */ +#define AFEC_MR_TRGEN (0x1u << 0) /**< \brief (AFEC_MR) Trigger Enable */ +#define AFEC_MR_TRGEN_DIS (0x0u << 0) /**< \brief (AFEC_MR) Hardware triggers are disabled. Starting a conversion is only possible by software. */ +#define AFEC_MR_TRGEN_EN (0x1u << 0) /**< \brief (AFEC_MR) Hardware trigger selected by TRGSEL field is enabled. */ +#define AFEC_MR_TRGSEL_Pos 1 +#define AFEC_MR_TRGSEL_Msk (0x7u << AFEC_MR_TRGSEL_Pos) /**< \brief (AFEC_MR) Trigger Selection */ +#define AFEC_MR_TRGSEL_AFEC_TRIG0 (0x0u << 1) /**< \brief (AFEC_MR) ADTRG pin */ +#define AFEC_MR_TRGSEL_AFEC_TRIG1 (0x1u << 1) /**< \brief (AFEC_MR) TIO Output of the Timer Counter Channel 0 */ +#define AFEC_MR_TRGSEL_AFEC_TRIG2 (0x2u << 1) /**< \brief (AFEC_MR) TIO Output of the Timer Counter Channel 1 */ +#define AFEC_MR_TRGSEL_AFEC_TRIG3 (0x3u << 1) /**< \brief (AFEC_MR) TIO Output of the Timer Counter Channel 2 */ +#define AFEC_MR_TRGSEL_AFEC_TRIG4 (0x4u << 1) /**< \brief (AFEC_MR) PWM Event Line 0 */ +#define AFEC_MR_TRGSEL_AFEC_TRIG5 (0x5u << 1) /**< \brief (AFEC_MR) PWM Event Line 1 */ +#define AFEC_MR_SLEEP (0x1u << 5) /**< \brief (AFEC_MR) Sleep Mode */ +#define AFEC_MR_SLEEP_NORMAL (0x0u << 5) /**< \brief (AFEC_MR) Normal Mode: The AFEC Core and reference voltage circuitry are kept ON between conversions */ +#define AFEC_MR_SLEEP_SLEEP (0x1u << 5) /**< \brief (AFEC_MR) Sleep Mode: The AFEC Core and reference voltage circuitry are OFF between conversions */ +#define AFEC_MR_FWUP (0x1u << 6) /**< \brief (AFEC_MR) Fast Wake Up */ +#define AFEC_MR_FWUP_OFF (0x0u << 6) /**< \brief (AFEC_MR) Normal Sleep Mode: The sleep mode is defined by the SLEEP bit */ +#define AFEC_MR_FWUP_ON (0x1u << 6) /**< \brief (AFEC_MR) Fast Wake Up Sleep Mode: The Voltage reference is ON between conversions and AFEC Core is OFF */ +#define AFEC_MR_FREERUN (0x1u << 7) /**< \brief (AFEC_MR) Free Run Mode */ +#define AFEC_MR_FREERUN_OFF (0x0u << 7) /**< \brief (AFEC_MR) Normal Mode */ +#define AFEC_MR_FREERUN_ON (0x1u << 7) /**< \brief (AFEC_MR) Free Run Mode: Never wait for any trigger. */ +#define AFEC_MR_PRESCAL_Pos 8 +#define AFEC_MR_PRESCAL_Msk (0xffu << AFEC_MR_PRESCAL_Pos) /**< \brief (AFEC_MR) Prescaler Rate Selection */ +#define AFEC_MR_PRESCAL(value) ((AFEC_MR_PRESCAL_Msk & ((value) << AFEC_MR_PRESCAL_Pos))) +#define AFEC_MR_STARTUP_Pos 16 +#define AFEC_MR_STARTUP_Msk (0xfu << AFEC_MR_STARTUP_Pos) /**< \brief (AFEC_MR) Start Up Time */ +#define AFEC_MR_STARTUP_SUT0 (0x0u << 16) /**< \brief (AFEC_MR) 0 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT8 (0x1u << 16) /**< \brief (AFEC_MR) 8 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT16 (0x2u << 16) /**< \brief (AFEC_MR) 16 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT24 (0x3u << 16) /**< \brief (AFEC_MR) 24 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT64 (0x4u << 16) /**< \brief (AFEC_MR) 64 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT80 (0x5u << 16) /**< \brief (AFEC_MR) 80 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT96 (0x6u << 16) /**< \brief (AFEC_MR) 96 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT112 (0x7u << 16) /**< \brief (AFEC_MR) 112 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT512 (0x8u << 16) /**< \brief (AFEC_MR) 512 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT576 (0x9u << 16) /**< \brief (AFEC_MR) 576 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT640 (0xAu << 16) /**< \brief (AFEC_MR) 640 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT704 (0xBu << 16) /**< \brief (AFEC_MR) 704 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT768 (0xCu << 16) /**< \brief (AFEC_MR) 768 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT832 (0xDu << 16) /**< \brief (AFEC_MR) 832 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT896 (0xEu << 16) /**< \brief (AFEC_MR) 896 periods of AFEClock */ +#define AFEC_MR_STARTUP_SUT960 (0xFu << 16) /**< \brief (AFEC_MR) 960 periods of AFEClock */ +#define AFEC_MR_SETTLING_Pos 20 +#define AFEC_MR_SETTLING_Msk (0x3u << AFEC_MR_SETTLING_Pos) /**< \brief (AFEC_MR) Analog Settling Time */ +#define AFEC_MR_SETTLING_AST3 (0x0u << 20) /**< \brief (AFEC_MR) 3 periods of AFEClock */ +#define AFEC_MR_SETTLING_AST5 (0x1u << 20) /**< \brief (AFEC_MR) 5 periods of AFEClock */ +#define AFEC_MR_SETTLING_AST9 (0x2u << 20) /**< \brief (AFEC_MR) 9 periods of AFEClock */ +#define AFEC_MR_SETTLING_AST17 (0x3u << 20) /**< \brief (AFEC_MR) 17 periods of AFEClock */ +#define AFEC_MR_ANACH (0x1u << 23) /**< \brief (AFEC_MR) Analog Change */ +#define AFEC_MR_ANACH_NONE (0x0u << 23) /**< \brief (AFEC_MR) No analog change on channel switching: DIFF0, GAIN0 are used for all channels */ +#define AFEC_MR_ANACH_ALLOWED (0x1u << 23) /**< \brief (AFEC_MR) Allows different analog settings for each channel. See AFEC_CGR Register. */ +#define AFEC_MR_TRACKTIM_Pos 24 +#define AFEC_MR_TRACKTIM_Msk (0xfu << AFEC_MR_TRACKTIM_Pos) /**< \brief (AFEC_MR) Tracking Time */ +#define AFEC_MR_TRACKTIM(value) ((AFEC_MR_TRACKTIM_Msk & ((value) << AFEC_MR_TRACKTIM_Pos))) +#define AFEC_MR_TRANSFER_Pos 28 +#define AFEC_MR_TRANSFER_Msk (0x3u << AFEC_MR_TRANSFER_Pos) /**< \brief (AFEC_MR) Transfer Period */ +#define AFEC_MR_TRANSFER(value) ((AFEC_MR_TRANSFER_Msk & ((value) << AFEC_MR_TRANSFER_Pos))) +#define AFEC_MR_USEQ (0x1u << 31) /**< \brief (AFEC_MR) Use Sequence Enable */ +#define AFEC_MR_USEQ_NUM_ORDER (0x0u << 31) /**< \brief (AFEC_MR) Normal Mode: The controller converts channels in a simple numeric order. */ +#define AFEC_MR_USEQ_REG_ORDER (0x1u << 31) /**< \brief (AFEC_MR) User Sequence Mode: The sequence respects what is defined in AFEC_SEQR1 and AFEC_SEQR2 registers. */ +/* -------- AFEC_EMR : (AFEC Offset: 0x08) Extended Mode Register -------- */ +#define AFEC_EMR_CMPMODE_Pos 0 +#define AFEC_EMR_CMPMODE_Msk (0x3u << AFEC_EMR_CMPMODE_Pos) /**< \brief (AFEC_EMR) Comparison Mode */ +#define AFEC_EMR_CMPMODE_LOW (0x0u << 0) /**< \brief (AFEC_EMR) Generates an event when the converted data is lower than the low threshold of the window. */ +#define AFEC_EMR_CMPMODE_HIGH (0x1u << 0) /**< \brief (AFEC_EMR) Generates an event when the converted data is higher than the high threshold of the window. */ +#define AFEC_EMR_CMPMODE_IN (0x2u << 0) /**< \brief (AFEC_EMR) Generates an event when the converted data is in the comparison window. */ +#define AFEC_EMR_CMPMODE_OUT (0x3u << 0) /**< \brief (AFEC_EMR) Generates an event when the converted data is out of the comparison window. */ +#define AFEC_EMR_CMPSEL_Pos 3 +#define AFEC_EMR_CMPSEL_Msk (0x1fu << AFEC_EMR_CMPSEL_Pos) /**< \brief (AFEC_EMR) Comparison Selected Channel */ +#define AFEC_EMR_CMPSEL(value) ((AFEC_EMR_CMPSEL_Msk & ((value) << AFEC_EMR_CMPSEL_Pos))) +#define AFEC_EMR_CMPALL (0x1u << 9) /**< \brief (AFEC_EMR) Compare All Channels */ +#define AFEC_EMR_CMPFILTER_Pos 12 +#define AFEC_EMR_CMPFILTER_Msk (0x3u << AFEC_EMR_CMPFILTER_Pos) /**< \brief (AFEC_EMR) Compare Event Filtering */ +#define AFEC_EMR_CMPFILTER(value) ((AFEC_EMR_CMPFILTER_Msk & ((value) << AFEC_EMR_CMPFILTER_Pos))) +#define AFEC_EMR_RES_Pos 16 +#define AFEC_EMR_RES_Msk (0x7u << AFEC_EMR_RES_Pos) /**< \brief (AFEC_EMR) Resolution */ +#define AFEC_EMR_RES_NO_AVERAGE (0x0u << 16) /**< \brief (AFEC_EMR) 12-bit resolution, AFEC sample rate is maximum (no averaging). */ +#define AFEC_EMR_RES_LOW_RES (0x1u << 16) /**< \brief (AFEC_EMR) 10-bit resolution, AFEC sample rate is maximum (no averaging). */ +#define AFEC_EMR_RES_OSR4 (0x2u << 16) /**< \brief (AFEC_EMR) 13-bit resolution, AFEC sample rate divided by 4 (averaging). */ +#define AFEC_EMR_RES_OSR16 (0x3u << 16) /**< \brief (AFEC_EMR) 14-bit resolution, AFEC sample rate divided by 16 (averaging). */ +#define AFEC_EMR_RES_OSR64 (0x4u << 16) /**< \brief (AFEC_EMR) 15-bit resolution, AFEC sample rate divided by 64 (averaging). */ +#define AFEC_EMR_RES_OSR256 (0x5u << 16) /**< \brief (AFEC_EMR) 16-bit resolution, AFEC sample rate divided by 256 (averaging). */ +#define AFEC_EMR_TAG (0x1u << 24) /**< \brief (AFEC_EMR) TAG of AFEC_LDCR register */ +#define AFEC_EMR_STM (0x1u << 25) /**< \brief (AFEC_EMR) Single Trigger Mode */ +/* -------- AFEC_SEQ1R : (AFEC Offset: 0x0C) Channel Sequence 1 Register -------- */ +#define AFEC_SEQ1R_USCH0_Pos 0 +#define AFEC_SEQ1R_USCH0_Msk (0xfu << AFEC_SEQ1R_USCH0_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 0 */ +#define AFEC_SEQ1R_USCH0(value) ((AFEC_SEQ1R_USCH0_Msk & ((value) << AFEC_SEQ1R_USCH0_Pos))) +#define AFEC_SEQ1R_USCH1_Pos 4 +#define AFEC_SEQ1R_USCH1_Msk (0xfu << AFEC_SEQ1R_USCH1_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 1 */ +#define AFEC_SEQ1R_USCH1(value) ((AFEC_SEQ1R_USCH1_Msk & ((value) << AFEC_SEQ1R_USCH1_Pos))) +#define AFEC_SEQ1R_USCH2_Pos 8 +#define AFEC_SEQ1R_USCH2_Msk (0xfu << AFEC_SEQ1R_USCH2_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 2 */ +#define AFEC_SEQ1R_USCH2(value) ((AFEC_SEQ1R_USCH2_Msk & ((value) << AFEC_SEQ1R_USCH2_Pos))) +#define AFEC_SEQ1R_USCH3_Pos 12 +#define AFEC_SEQ1R_USCH3_Msk (0xfu << AFEC_SEQ1R_USCH3_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 3 */ +#define AFEC_SEQ1R_USCH3(value) ((AFEC_SEQ1R_USCH3_Msk & ((value) << AFEC_SEQ1R_USCH3_Pos))) +#define AFEC_SEQ1R_USCH4_Pos 16 +#define AFEC_SEQ1R_USCH4_Msk (0xfu << AFEC_SEQ1R_USCH4_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 4 */ +#define AFEC_SEQ1R_USCH4(value) ((AFEC_SEQ1R_USCH4_Msk & ((value) << AFEC_SEQ1R_USCH4_Pos))) +#define AFEC_SEQ1R_USCH5_Pos 20 +#define AFEC_SEQ1R_USCH5_Msk (0xfu << AFEC_SEQ1R_USCH5_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 5 */ +#define AFEC_SEQ1R_USCH5(value) ((AFEC_SEQ1R_USCH5_Msk & ((value) << AFEC_SEQ1R_USCH5_Pos))) +#define AFEC_SEQ1R_USCH6_Pos 24 +#define AFEC_SEQ1R_USCH6_Msk (0xfu << AFEC_SEQ1R_USCH6_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 6 */ +#define AFEC_SEQ1R_USCH6(value) ((AFEC_SEQ1R_USCH6_Msk & ((value) << AFEC_SEQ1R_USCH6_Pos))) +#define AFEC_SEQ1R_USCH7_Pos 28 +#define AFEC_SEQ1R_USCH7_Msk (0xfu << AFEC_SEQ1R_USCH7_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 7 */ +#define AFEC_SEQ1R_USCH7(value) ((AFEC_SEQ1R_USCH7_Msk & ((value) << AFEC_SEQ1R_USCH7_Pos))) +/* -------- AFEC_SEQ2R : (AFEC Offset: 0x10) Channel Sequence 2 Register -------- */ +#define AFEC_SEQ2R_USCH8_Pos 0 +#define AFEC_SEQ2R_USCH8_Msk (0xfu << AFEC_SEQ2R_USCH8_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 8 */ +#define AFEC_SEQ2R_USCH8(value) ((AFEC_SEQ2R_USCH8_Msk & ((value) << AFEC_SEQ2R_USCH8_Pos))) +#define AFEC_SEQ2R_USCH9_Pos 4 +#define AFEC_SEQ2R_USCH9_Msk (0xfu << AFEC_SEQ2R_USCH9_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 9 */ +#define AFEC_SEQ2R_USCH9(value) ((AFEC_SEQ2R_USCH9_Msk & ((value) << AFEC_SEQ2R_USCH9_Pos))) +#define AFEC_SEQ2R_USCH10_Pos 8 +#define AFEC_SEQ2R_USCH10_Msk (0xfu << AFEC_SEQ2R_USCH10_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 10 */ +#define AFEC_SEQ2R_USCH10(value) ((AFEC_SEQ2R_USCH10_Msk & ((value) << AFEC_SEQ2R_USCH10_Pos))) +#define AFEC_SEQ2R_USCH11_Pos 12 +#define AFEC_SEQ2R_USCH11_Msk (0xfu << AFEC_SEQ2R_USCH11_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 11 */ +#define AFEC_SEQ2R_USCH11(value) ((AFEC_SEQ2R_USCH11_Msk & ((value) << AFEC_SEQ2R_USCH11_Pos))) +#define AFEC_SEQ2R_USCH12_Pos 16 +#define AFEC_SEQ2R_USCH12_Msk (0xfu << AFEC_SEQ2R_USCH12_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 12 */ +#define AFEC_SEQ2R_USCH12(value) ((AFEC_SEQ2R_USCH12_Msk & ((value) << AFEC_SEQ2R_USCH12_Pos))) +#define AFEC_SEQ2R_USCH13_Pos 20 +#define AFEC_SEQ2R_USCH13_Msk (0xfu << AFEC_SEQ2R_USCH13_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 13 */ +#define AFEC_SEQ2R_USCH13(value) ((AFEC_SEQ2R_USCH13_Msk & ((value) << AFEC_SEQ2R_USCH13_Pos))) +#define AFEC_SEQ2R_USCH14_Pos 24 +#define AFEC_SEQ2R_USCH14_Msk (0xfu << AFEC_SEQ2R_USCH14_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 14 */ +#define AFEC_SEQ2R_USCH14(value) ((AFEC_SEQ2R_USCH14_Msk & ((value) << AFEC_SEQ2R_USCH14_Pos))) +#define AFEC_SEQ2R_USCH15_Pos 28 +#define AFEC_SEQ2R_USCH15_Msk (0xfu << AFEC_SEQ2R_USCH15_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 15 */ +#define AFEC_SEQ2R_USCH15(value) ((AFEC_SEQ2R_USCH15_Msk & ((value) << AFEC_SEQ2R_USCH15_Pos))) +/* -------- AFEC_CHER : (AFEC Offset: 0x14) Channel Enable Register -------- */ +#define AFEC_CHER_CH0 (0x1u << 0) /**< \brief (AFEC_CHER) Channel 0 Enable */ +#define AFEC_CHER_CH1 (0x1u << 1) /**< \brief (AFEC_CHER) Channel 1 Enable */ +#define AFEC_CHER_CH2 (0x1u << 2) /**< \brief (AFEC_CHER) Channel 2 Enable */ +#define AFEC_CHER_CH3 (0x1u << 3) /**< \brief (AFEC_CHER) Channel 3 Enable */ +#define AFEC_CHER_CH4 (0x1u << 4) /**< \brief (AFEC_CHER) Channel 4 Enable */ +#define AFEC_CHER_CH5 (0x1u << 5) /**< \brief (AFEC_CHER) Channel 5 Enable */ +#define AFEC_CHER_CH6 (0x1u << 6) /**< \brief (AFEC_CHER) Channel 6 Enable */ +#define AFEC_CHER_CH7 (0x1u << 7) /**< \brief (AFEC_CHER) Channel 7 Enable */ +#define AFEC_CHER_CH8 (0x1u << 8) /**< \brief (AFEC_CHER) Channel 8 Enable */ +#define AFEC_CHER_CH9 (0x1u << 9) /**< \brief (AFEC_CHER) Channel 9 Enable */ +#define AFEC_CHER_CH10 (0x1u << 10) /**< \brief (AFEC_CHER) Channel 10 Enable */ +#define AFEC_CHER_CH11 (0x1u << 11) /**< \brief (AFEC_CHER) Channel 11 Enable */ +#define AFEC_CHER_CH12 (0x1u << 12) /**< \brief (AFEC_CHER) Channel 12 Enable */ +#define AFEC_CHER_CH13 (0x1u << 13) /**< \brief (AFEC_CHER) Channel 13 Enable */ +#define AFEC_CHER_CH14 (0x1u << 14) /**< \brief (AFEC_CHER) Channel 14 Enable */ +#define AFEC_CHER_CH15 (0x1u << 15) /**< \brief (AFEC_CHER) Channel 15 Enable */ +/* -------- AFEC_CHDR : (AFEC Offset: 0x18) Channel Disable Register -------- */ +#define AFEC_CHDR_CH0 (0x1u << 0) /**< \brief (AFEC_CHDR) Channel 0 Disable */ +#define AFEC_CHDR_CH1 (0x1u << 1) /**< \brief (AFEC_CHDR) Channel 1 Disable */ +#define AFEC_CHDR_CH2 (0x1u << 2) /**< \brief (AFEC_CHDR) Channel 2 Disable */ +#define AFEC_CHDR_CH3 (0x1u << 3) /**< \brief (AFEC_CHDR) Channel 3 Disable */ +#define AFEC_CHDR_CH4 (0x1u << 4) /**< \brief (AFEC_CHDR) Channel 4 Disable */ +#define AFEC_CHDR_CH5 (0x1u << 5) /**< \brief (AFEC_CHDR) Channel 5 Disable */ +#define AFEC_CHDR_CH6 (0x1u << 6) /**< \brief (AFEC_CHDR) Channel 6 Disable */ +#define AFEC_CHDR_CH7 (0x1u << 7) /**< \brief (AFEC_CHDR) Channel 7 Disable */ +#define AFEC_CHDR_CH8 (0x1u << 8) /**< \brief (AFEC_CHDR) Channel 8 Disable */ +#define AFEC_CHDR_CH9 (0x1u << 9) /**< \brief (AFEC_CHDR) Channel 9 Disable */ +#define AFEC_CHDR_CH10 (0x1u << 10) /**< \brief (AFEC_CHDR) Channel 10 Disable */ +#define AFEC_CHDR_CH11 (0x1u << 11) /**< \brief (AFEC_CHDR) Channel 11 Disable */ +#define AFEC_CHDR_CH12 (0x1u << 12) /**< \brief (AFEC_CHDR) Channel 12 Disable */ +#define AFEC_CHDR_CH13 (0x1u << 13) /**< \brief (AFEC_CHDR) Channel 13 Disable */ +#define AFEC_CHDR_CH14 (0x1u << 14) /**< \brief (AFEC_CHDR) Channel 14 Disable */ +#define AFEC_CHDR_CH15 (0x1u << 15) /**< \brief (AFEC_CHDR) Channel 15 Disable */ +/* -------- AFEC_CHSR : (AFEC Offset: 0x1C) Channel Status Register -------- */ +#define AFEC_CHSR_CH0 (0x1u << 0) /**< \brief (AFEC_CHSR) Channel 0 Status */ +#define AFEC_CHSR_CH1 (0x1u << 1) /**< \brief (AFEC_CHSR) Channel 1 Status */ +#define AFEC_CHSR_CH2 (0x1u << 2) /**< \brief (AFEC_CHSR) Channel 2 Status */ +#define AFEC_CHSR_CH3 (0x1u << 3) /**< \brief (AFEC_CHSR) Channel 3 Status */ +#define AFEC_CHSR_CH4 (0x1u << 4) /**< \brief (AFEC_CHSR) Channel 4 Status */ +#define AFEC_CHSR_CH5 (0x1u << 5) /**< \brief (AFEC_CHSR) Channel 5 Status */ +#define AFEC_CHSR_CH6 (0x1u << 6) /**< \brief (AFEC_CHSR) Channel 6 Status */ +#define AFEC_CHSR_CH7 (0x1u << 7) /**< \brief (AFEC_CHSR) Channel 7 Status */ +#define AFEC_CHSR_CH8 (0x1u << 8) /**< \brief (AFEC_CHSR) Channel 8 Status */ +#define AFEC_CHSR_CH9 (0x1u << 9) /**< \brief (AFEC_CHSR) Channel 9 Status */ +#define AFEC_CHSR_CH10 (0x1u << 10) /**< \brief (AFEC_CHSR) Channel 10 Status */ +#define AFEC_CHSR_CH11 (0x1u << 11) /**< \brief (AFEC_CHSR) Channel 11 Status */ +#define AFEC_CHSR_CH12 (0x1u << 12) /**< \brief (AFEC_CHSR) Channel 12 Status */ +#define AFEC_CHSR_CH13 (0x1u << 13) /**< \brief (AFEC_CHSR) Channel 13 Status */ +#define AFEC_CHSR_CH14 (0x1u << 14) /**< \brief (AFEC_CHSR) Channel 14 Status */ +#define AFEC_CHSR_CH15 (0x1u << 15) /**< \brief (AFEC_CHSR) Channel 15 Status */ +/* -------- AFEC_LCDR : (AFEC Offset: 0x20) Last Converted Data Register -------- */ +#define AFEC_LCDR_LDATA_Pos 0 +#define AFEC_LCDR_LDATA_Msk (0xffffu << AFEC_LCDR_LDATA_Pos) /**< \brief (AFEC_LCDR) Last Data Converted */ +#define AFEC_LCDR_CHNB_Pos 24 +#define AFEC_LCDR_CHNB_Msk (0xfu << AFEC_LCDR_CHNB_Pos) /**< \brief (AFEC_LCDR) Channel Number */ +/* -------- AFEC_IER : (AFEC Offset: 0x24) Interrupt Enable Register -------- */ +#define AFEC_IER_EOC0 (0x1u << 0) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 0 */ +#define AFEC_IER_EOC1 (0x1u << 1) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 1 */ +#define AFEC_IER_EOC2 (0x1u << 2) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 2 */ +#define AFEC_IER_EOC3 (0x1u << 3) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 3 */ +#define AFEC_IER_EOC4 (0x1u << 4) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 4 */ +#define AFEC_IER_EOC5 (0x1u << 5) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 5 */ +#define AFEC_IER_EOC6 (0x1u << 6) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 6 */ +#define AFEC_IER_EOC7 (0x1u << 7) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 7 */ +#define AFEC_IER_EOC8 (0x1u << 8) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 8 */ +#define AFEC_IER_EOC9 (0x1u << 9) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 9 */ +#define AFEC_IER_EOC10 (0x1u << 10) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 10 */ +#define AFEC_IER_EOC11 (0x1u << 11) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 11 */ +#define AFEC_IER_EOC12 (0x1u << 12) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 12 */ +#define AFEC_IER_EOC13 (0x1u << 13) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 13 */ +#define AFEC_IER_EOC14 (0x1u << 14) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 14 */ +#define AFEC_IER_EOC15 (0x1u << 15) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 15 */ +#define AFEC_IER_DRDY (0x1u << 24) /**< \brief (AFEC_IER) Data Ready Interrupt Enable */ +#define AFEC_IER_GOVRE (0x1u << 25) /**< \brief (AFEC_IER) General Overrun Error Interrupt Enable */ +#define AFEC_IER_COMPE (0x1u << 26) /**< \brief (AFEC_IER) Comparison Event Interrupt Enable+ */ +#define AFEC_IER_ENDRX (0x1u << 27) /**< \brief (AFEC_IER) End of Receive Buffer Interrupt Enable */ +#define AFEC_IER_RXBUFF (0x1u << 28) /**< \brief (AFEC_IER) Receive Buffer Full Interrupt Enable */ +#define AFEC_IER_TEMPCHG (0x1u << 30) /**< \brief (AFEC_IER) Temperature Change Interrupt Enable */ +#define AFEC_IER_EOCAL (0x1u << 31) /**< \brief (AFEC_IER) End of Calibration Sequence Interrupt Enable */ +/* -------- AFEC_IDR : (AFEC Offset: 0x28) Interrupt Disable Register -------- */ +#define AFEC_IDR_EOC0 (0x1u << 0) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 0 */ +#define AFEC_IDR_EOC1 (0x1u << 1) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 1 */ +#define AFEC_IDR_EOC2 (0x1u << 2) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 2 */ +#define AFEC_IDR_EOC3 (0x1u << 3) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 3 */ +#define AFEC_IDR_EOC4 (0x1u << 4) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 4 */ +#define AFEC_IDR_EOC5 (0x1u << 5) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 5 */ +#define AFEC_IDR_EOC6 (0x1u << 6) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 6 */ +#define AFEC_IDR_EOC7 (0x1u << 7) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 7 */ +#define AFEC_IDR_EOC8 (0x1u << 8) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 8 */ +#define AFEC_IDR_EOC9 (0x1u << 9) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 9 */ +#define AFEC_IDR_EOC10 (0x1u << 10) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 10 */ +#define AFEC_IDR_EOC11 (0x1u << 11) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 11 */ +#define AFEC_IDR_EOC12 (0x1u << 12) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 12 */ +#define AFEC_IDR_EOC13 (0x1u << 13) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 13 */ +#define AFEC_IDR_EOC14 (0x1u << 14) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 14 */ +#define AFEC_IDR_EOC15 (0x1u << 15) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 15 */ +#define AFEC_IDR_DRDY (0x1u << 24) /**< \brief (AFEC_IDR) Data Ready Interrupt Disable */ +#define AFEC_IDR_GOVRE (0x1u << 25) /**< \brief (AFEC_IDR) General Overrun Error Interrupt Disable */ +#define AFEC_IDR_COMPE (0x1u << 26) /**< \brief (AFEC_IDR) Comparison Event Interrupt Disable */ +#define AFEC_IDR_ENDRX (0x1u << 27) /**< \brief (AFEC_IDR) End of Receive Buffer Interrupt Disable */ +#define AFEC_IDR_RXBUFF (0x1u << 28) /**< \brief (AFEC_IDR) Receive Buffer Full Interrupt Disable */ +#define AFEC_IDR_TEMPCHG (0x1u << 30) /**< \brief (AFEC_IDR) Temperature Change Interrupt Disable */ +#define AFEC_IDR_EOCAL (0x1u << 31) /**< \brief (AFEC_IDR) End of Calibration Sequence Interrupt Disable */ +/* -------- AFEC_IMR : (AFEC Offset: 0x2C) Interrupt Mask Register -------- */ +#define AFEC_IMR_EOC0 (0x1u << 0) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 0 */ +#define AFEC_IMR_EOC1 (0x1u << 1) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 1 */ +#define AFEC_IMR_EOC2 (0x1u << 2) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 2 */ +#define AFEC_IMR_EOC3 (0x1u << 3) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 3 */ +#define AFEC_IMR_EOC4 (0x1u << 4) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 4 */ +#define AFEC_IMR_EOC5 (0x1u << 5) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 5 */ +#define AFEC_IMR_EOC6 (0x1u << 6) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 6 */ +#define AFEC_IMR_EOC7 (0x1u << 7) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 7 */ +#define AFEC_IMR_EOC8 (0x1u << 8) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 8 */ +#define AFEC_IMR_EOC9 (0x1u << 9) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 9 */ +#define AFEC_IMR_EOC10 (0x1u << 10) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 10 */ +#define AFEC_IMR_EOC11 (0x1u << 11) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 11 */ +#define AFEC_IMR_EOC12 (0x1u << 12) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 12 */ +#define AFEC_IMR_EOC13 (0x1u << 13) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 13 */ +#define AFEC_IMR_EOC14 (0x1u << 14) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 14 */ +#define AFEC_IMR_EOC15 (0x1u << 15) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 15 */ +#define AFEC_IMR_DRDY (0x1u << 24) /**< \brief (AFEC_IMR) Data Ready Interrupt Mask */ +#define AFEC_IMR_GOVRE (0x1u << 25) /**< \brief (AFEC_IMR) General Overrun Error Interrupt Mask */ +#define AFEC_IMR_COMPE (0x1u << 26) /**< \brief (AFEC_IMR) Comparison Event Interrupt Mask */ +#define AFEC_IMR_ENDRX (0x1u << 27) /**< \brief (AFEC_IMR) End of Receive Buffer Interrupt Mask */ +#define AFEC_IMR_RXBUFF (0x1u << 28) /**< \brief (AFEC_IMR) Receive Buffer Full Interrupt Mask */ +#define AFEC_IMR_TEMPCHG (0x1u << 30) /**< \brief (AFEC_IMR) Temperature Change Interrupt Mask */ +#define AFEC_IMR_EOCAL (0x1u << 31) /**< \brief (AFEC_IMR) End of Calibration Sequence Interrupt Mask */ +/* -------- AFEC_ISR : (AFEC Offset: 0x30) Interrupt Status Register -------- */ +#define AFEC_ISR_EOC0 (0x1u << 0) /**< \brief (AFEC_ISR) End of Conversion 0 */ +#define AFEC_ISR_EOC1 (0x1u << 1) /**< \brief (AFEC_ISR) End of Conversion 1 */ +#define AFEC_ISR_EOC2 (0x1u << 2) /**< \brief (AFEC_ISR) End of Conversion 2 */ +#define AFEC_ISR_EOC3 (0x1u << 3) /**< \brief (AFEC_ISR) End of Conversion 3 */ +#define AFEC_ISR_EOC4 (0x1u << 4) /**< \brief (AFEC_ISR) End of Conversion 4 */ +#define AFEC_ISR_EOC5 (0x1u << 5) /**< \brief (AFEC_ISR) End of Conversion 5 */ +#define AFEC_ISR_EOC6 (0x1u << 6) /**< \brief (AFEC_ISR) End of Conversion 6 */ +#define AFEC_ISR_EOC7 (0x1u << 7) /**< \brief (AFEC_ISR) End of Conversion 7 */ +#define AFEC_ISR_EOC8 (0x1u << 8) /**< \brief (AFEC_ISR) End of Conversion 8 */ +#define AFEC_ISR_EOC9 (0x1u << 9) /**< \brief (AFEC_ISR) End of Conversion 9 */ +#define AFEC_ISR_EOC10 (0x1u << 10) /**< \brief (AFEC_ISR) End of Conversion 10 */ +#define AFEC_ISR_EOC11 (0x1u << 11) /**< \brief (AFEC_ISR) End of Conversion 11 */ +#define AFEC_ISR_EOC12 (0x1u << 12) /**< \brief (AFEC_ISR) End of Conversion 12 */ +#define AFEC_ISR_EOC13 (0x1u << 13) /**< \brief (AFEC_ISR) End of Conversion 13 */ +#define AFEC_ISR_EOC14 (0x1u << 14) /**< \brief (AFEC_ISR) End of Conversion 14 */ +#define AFEC_ISR_EOC15 (0x1u << 15) /**< \brief (AFEC_ISR) End of Conversion 15 */ +#define AFEC_ISR_DRDY (0x1u << 24) /**< \brief (AFEC_ISR) Data Ready */ +#define AFEC_ISR_GOVRE (0x1u << 25) /**< \brief (AFEC_ISR) General Overrun Error */ +#define AFEC_ISR_COMPE (0x1u << 26) /**< \brief (AFEC_ISR) Comparison Error */ +#define AFEC_ISR_ENDRX (0x1u << 27) /**< \brief (AFEC_ISR) End of RX Buffer */ +#define AFEC_ISR_RXBUFF (0x1u << 28) /**< \brief (AFEC_ISR) RX Buffer Full */ +#define AFEC_ISR_TEMPCHG (0x1u << 30) /**< \brief (AFEC_ISR) Temperature Change */ +#define AFEC_ISR_EOCAL (0x1u << 31) /**< \brief (AFEC_ISR) End of Calibration Sequence */ +/* -------- AFEC_OVER : (AFEC Offset: 0x4C) Overrun Status Register -------- */ +#define AFEC_OVER_OVRE0 (0x1u << 0) /**< \brief (AFEC_OVER) Overrun Error 0 */ +#define AFEC_OVER_OVRE1 (0x1u << 1) /**< \brief (AFEC_OVER) Overrun Error 1 */ +#define AFEC_OVER_OVRE2 (0x1u << 2) /**< \brief (AFEC_OVER) Overrun Error 2 */ +#define AFEC_OVER_OVRE3 (0x1u << 3) /**< \brief (AFEC_OVER) Overrun Error 3 */ +#define AFEC_OVER_OVRE4 (0x1u << 4) /**< \brief (AFEC_OVER) Overrun Error 4 */ +#define AFEC_OVER_OVRE5 (0x1u << 5) /**< \brief (AFEC_OVER) Overrun Error 5 */ +#define AFEC_OVER_OVRE6 (0x1u << 6) /**< \brief (AFEC_OVER) Overrun Error 6 */ +#define AFEC_OVER_OVRE7 (0x1u << 7) /**< \brief (AFEC_OVER) Overrun Error 7 */ +#define AFEC_OVER_OVRE8 (0x1u << 8) /**< \brief (AFEC_OVER) Overrun Error 8 */ +#define AFEC_OVER_OVRE9 (0x1u << 9) /**< \brief (AFEC_OVER) Overrun Error 9 */ +#define AFEC_OVER_OVRE10 (0x1u << 10) /**< \brief (AFEC_OVER) Overrun Error 10 */ +#define AFEC_OVER_OVRE11 (0x1u << 11) /**< \brief (AFEC_OVER) Overrun Error 11 */ +#define AFEC_OVER_OVRE12 (0x1u << 12) /**< \brief (AFEC_OVER) Overrun Error 12 */ +#define AFEC_OVER_OVRE13 (0x1u << 13) /**< \brief (AFEC_OVER) Overrun Error 13 */ +#define AFEC_OVER_OVRE14 (0x1u << 14) /**< \brief (AFEC_OVER) Overrun Error 14 */ +#define AFEC_OVER_OVRE15 (0x1u << 15) /**< \brief (AFEC_OVER) Overrun Error 15 */ +/* -------- AFEC_CWR : (AFEC Offset: 0x50) Compare Window Register -------- */ +#define AFEC_CWR_LOWTHRES_Pos 0 +#define AFEC_CWR_LOWTHRES_Msk (0xfffu << AFEC_CWR_LOWTHRES_Pos) /**< \brief (AFEC_CWR) Low Threshold */ +#define AFEC_CWR_LOWTHRES(value) ((AFEC_CWR_LOWTHRES_Msk & ((value) << AFEC_CWR_LOWTHRES_Pos))) +#define AFEC_CWR_HIGHTHRES_Pos 16 +#define AFEC_CWR_HIGHTHRES_Msk (0xfffu << AFEC_CWR_HIGHTHRES_Pos) /**< \brief (AFEC_CWR) High Threshold */ +#define AFEC_CWR_HIGHTHRES(value) ((AFEC_CWR_HIGHTHRES_Msk & ((value) << AFEC_CWR_HIGHTHRES_Pos))) +/* -------- AFEC_CGR : (AFEC Offset: 0x54) Channel Gain Register -------- */ +#define AFEC_CGR_GAIN0_Pos 0 +#define AFEC_CGR_GAIN0_Msk (0x3u << AFEC_CGR_GAIN0_Pos) /**< \brief (AFEC_CGR) Gain for channel 0 */ +#define AFEC_CGR_GAIN0(value) ((AFEC_CGR_GAIN0_Msk & ((value) << AFEC_CGR_GAIN0_Pos))) +#define AFEC_CGR_GAIN1_Pos 2 +#define AFEC_CGR_GAIN1_Msk (0x3u << AFEC_CGR_GAIN1_Pos) /**< \brief (AFEC_CGR) Gain for channel 1 */ +#define AFEC_CGR_GAIN1(value) ((AFEC_CGR_GAIN1_Msk & ((value) << AFEC_CGR_GAIN1_Pos))) +#define AFEC_CGR_GAIN2_Pos 4 +#define AFEC_CGR_GAIN2_Msk (0x3u << AFEC_CGR_GAIN2_Pos) /**< \brief (AFEC_CGR) Gain for channel 2 */ +#define AFEC_CGR_GAIN2(value) ((AFEC_CGR_GAIN2_Msk & ((value) << AFEC_CGR_GAIN2_Pos))) +#define AFEC_CGR_GAIN3_Pos 6 +#define AFEC_CGR_GAIN3_Msk (0x3u << AFEC_CGR_GAIN3_Pos) /**< \brief (AFEC_CGR) Gain for channel 3 */ +#define AFEC_CGR_GAIN3(value) ((AFEC_CGR_GAIN3_Msk & ((value) << AFEC_CGR_GAIN3_Pos))) +#define AFEC_CGR_GAIN4_Pos 8 +#define AFEC_CGR_GAIN4_Msk (0x3u << AFEC_CGR_GAIN4_Pos) /**< \brief (AFEC_CGR) Gain for channel 4 */ +#define AFEC_CGR_GAIN4(value) ((AFEC_CGR_GAIN4_Msk & ((value) << AFEC_CGR_GAIN4_Pos))) +#define AFEC_CGR_GAIN5_Pos 10 +#define AFEC_CGR_GAIN5_Msk (0x3u << AFEC_CGR_GAIN5_Pos) /**< \brief (AFEC_CGR) Gain for channel 5 */ +#define AFEC_CGR_GAIN5(value) ((AFEC_CGR_GAIN5_Msk & ((value) << AFEC_CGR_GAIN5_Pos))) +#define AFEC_CGR_GAIN6_Pos 12 +#define AFEC_CGR_GAIN6_Msk (0x3u << AFEC_CGR_GAIN6_Pos) /**< \brief (AFEC_CGR) Gain for channel 6 */ +#define AFEC_CGR_GAIN6(value) ((AFEC_CGR_GAIN6_Msk & ((value) << AFEC_CGR_GAIN6_Pos))) +#define AFEC_CGR_GAIN7_Pos 14 +#define AFEC_CGR_GAIN7_Msk (0x3u << AFEC_CGR_GAIN7_Pos) /**< \brief (AFEC_CGR) Gain for channel 7 */ +#define AFEC_CGR_GAIN7(value) ((AFEC_CGR_GAIN7_Msk & ((value) << AFEC_CGR_GAIN7_Pos))) +#define AFEC_CGR_GAIN8_Pos 16 +#define AFEC_CGR_GAIN8_Msk (0x3u << AFEC_CGR_GAIN8_Pos) /**< \brief (AFEC_CGR) Gain for channel 8 */ +#define AFEC_CGR_GAIN8(value) ((AFEC_CGR_GAIN8_Msk & ((value) << AFEC_CGR_GAIN8_Pos))) +#define AFEC_CGR_GAIN9_Pos 18 +#define AFEC_CGR_GAIN9_Msk (0x3u << AFEC_CGR_GAIN9_Pos) /**< \brief (AFEC_CGR) Gain for channel 9 */ +#define AFEC_CGR_GAIN9(value) ((AFEC_CGR_GAIN9_Msk & ((value) << AFEC_CGR_GAIN9_Pos))) +#define AFEC_CGR_GAIN10_Pos 20 +#define AFEC_CGR_GAIN10_Msk (0x3u << AFEC_CGR_GAIN10_Pos) /**< \brief (AFEC_CGR) Gain for channel 10 */ +#define AFEC_CGR_GAIN10(value) ((AFEC_CGR_GAIN10_Msk & ((value) << AFEC_CGR_GAIN10_Pos))) +#define AFEC_CGR_GAIN11_Pos 22 +#define AFEC_CGR_GAIN11_Msk (0x3u << AFEC_CGR_GAIN11_Pos) /**< \brief (AFEC_CGR) Gain for channel 11 */ +#define AFEC_CGR_GAIN11(value) ((AFEC_CGR_GAIN11_Msk & ((value) << AFEC_CGR_GAIN11_Pos))) +#define AFEC_CGR_GAIN12_Pos 24 +#define AFEC_CGR_GAIN12_Msk (0x3u << AFEC_CGR_GAIN12_Pos) /**< \brief (AFEC_CGR) Gain for channel 12 */ +#define AFEC_CGR_GAIN12(value) ((AFEC_CGR_GAIN12_Msk & ((value) << AFEC_CGR_GAIN12_Pos))) +#define AFEC_CGR_GAIN13_Pos 26 +#define AFEC_CGR_GAIN13_Msk (0x3u << AFEC_CGR_GAIN13_Pos) /**< \brief (AFEC_CGR) Gain for channel 13 */ +#define AFEC_CGR_GAIN13(value) ((AFEC_CGR_GAIN13_Msk & ((value) << AFEC_CGR_GAIN13_Pos))) +#define AFEC_CGR_GAIN14_Pos 28 +#define AFEC_CGR_GAIN14_Msk (0x3u << AFEC_CGR_GAIN14_Pos) /**< \brief (AFEC_CGR) Gain for channel 14 */ +#define AFEC_CGR_GAIN14(value) ((AFEC_CGR_GAIN14_Msk & ((value) << AFEC_CGR_GAIN14_Pos))) +#define AFEC_CGR_GAIN15_Pos 30 +#define AFEC_CGR_GAIN15_Msk (0x3u << AFEC_CGR_GAIN15_Pos) /**< \brief (AFEC_CGR) Gain for channel 15 */ +#define AFEC_CGR_GAIN15(value) ((AFEC_CGR_GAIN15_Msk & ((value) << AFEC_CGR_GAIN15_Pos))) +/* -------- AFEC_CDOR : (AFEC Offset: 0x5C) Channel Calibration DC Offset Register -------- */ +#define AFEC_CDOR_OFF0 (0x1u << 0) /**< \brief (AFEC_CDOR) Offset for channel 0, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF1 (0x1u << 1) /**< \brief (AFEC_CDOR) Offset for channel 1, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF2 (0x1u << 2) /**< \brief (AFEC_CDOR) Offset for channel 2, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF3 (0x1u << 3) /**< \brief (AFEC_CDOR) Offset for channel 3, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF4 (0x1u << 4) /**< \brief (AFEC_CDOR) Offset for channel 4, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF5 (0x1u << 5) /**< \brief (AFEC_CDOR) Offset for channel 5, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF6 (0x1u << 6) /**< \brief (AFEC_CDOR) Offset for channel 6, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF7 (0x1u << 7) /**< \brief (AFEC_CDOR) Offset for channel 7, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF8 (0x1u << 8) /**< \brief (AFEC_CDOR) Offset for channel 8, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF9 (0x1u << 9) /**< \brief (AFEC_CDOR) Offset for channel 9, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF10 (0x1u << 10) /**< \brief (AFEC_CDOR) Offset for channel 10, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF11 (0x1u << 11) /**< \brief (AFEC_CDOR) Offset for channel 11, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF12 (0x1u << 12) /**< \brief (AFEC_CDOR) Offset for channel 12, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF13 (0x1u << 13) /**< \brief (AFEC_CDOR) Offset for channel 13, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF14 (0x1u << 14) /**< \brief (AFEC_CDOR) Offset for channel 14, used in automatic calibration procedure */ +#define AFEC_CDOR_OFF15 (0x1u << 15) /**< \brief (AFEC_CDOR) Offset for channel 15, used in automatic calibration procedure */ +/* -------- AFEC_DIFFR : (AFEC Offset: 0x60) Channel Differential Register -------- */ +#define AFEC_DIFFR_DIFF0 (0x1u << 0) /**< \brief (AFEC_DIFFR) Differential inputs for channel 0 */ +#define AFEC_DIFFR_DIFF1 (0x1u << 1) /**< \brief (AFEC_DIFFR) Differential inputs for channel 1 */ +#define AFEC_DIFFR_DIFF2 (0x1u << 2) /**< \brief (AFEC_DIFFR) Differential inputs for channel 2 */ +#define AFEC_DIFFR_DIFF3 (0x1u << 3) /**< \brief (AFEC_DIFFR) Differential inputs for channel 3 */ +#define AFEC_DIFFR_DIFF4 (0x1u << 4) /**< \brief (AFEC_DIFFR) Differential inputs for channel 4 */ +#define AFEC_DIFFR_DIFF5 (0x1u << 5) /**< \brief (AFEC_DIFFR) Differential inputs for channel 5 */ +#define AFEC_DIFFR_DIFF6 (0x1u << 6) /**< \brief (AFEC_DIFFR) Differential inputs for channel 6 */ +#define AFEC_DIFFR_DIFF7 (0x1u << 7) /**< \brief (AFEC_DIFFR) Differential inputs for channel 7 */ +#define AFEC_DIFFR_DIFF8 (0x1u << 8) /**< \brief (AFEC_DIFFR) Differential inputs for channel 8 */ +#define AFEC_DIFFR_DIFF9 (0x1u << 9) /**< \brief (AFEC_DIFFR) Differential inputs for channel 9 */ +#define AFEC_DIFFR_DIFF10 (0x1u << 10) /**< \brief (AFEC_DIFFR) Differential inputs for channel 10 */ +#define AFEC_DIFFR_DIFF11 (0x1u << 11) /**< \brief (AFEC_DIFFR) Differential inputs for channel 11 */ +#define AFEC_DIFFR_DIFF12 (0x1u << 12) /**< \brief (AFEC_DIFFR) Differential inputs for channel 12 */ +#define AFEC_DIFFR_DIFF13 (0x1u << 13) /**< \brief (AFEC_DIFFR) Differential inputs for channel 13 */ +#define AFEC_DIFFR_DIFF14 (0x1u << 14) /**< \brief (AFEC_DIFFR) Differential inputs for channel 14 */ +#define AFEC_DIFFR_DIFF15 (0x1u << 15) /**< \brief (AFEC_DIFFR) Differential inputs for channel 15 */ +/* -------- AFEC_CSELR : (AFEC Offset: 0x64) Channel Register Selection -------- */ +#define AFEC_CSELR_CSEL_Pos 0 +#define AFEC_CSELR_CSEL_Msk (0xfu << AFEC_CSELR_CSEL_Pos) /**< \brief (AFEC_CSELR) Channel Selection */ +#define AFEC_CSELR_CSEL(value) ((AFEC_CSELR_CSEL_Msk & ((value) << AFEC_CSELR_CSEL_Pos))) +/* -------- AFEC_CDR : (AFEC Offset: 0x68) Channel Data Register -------- */ +#define AFEC_CDR_DATA_Pos 0 +#define AFEC_CDR_DATA_Msk (0xfffu << AFEC_CDR_DATA_Pos) /**< \brief (AFEC_CDR) Converted Data */ +/* -------- AFEC_COCR : (AFEC Offset: 0x6C) Channel Offset Compensation Register -------- */ +#define AFEC_COCR_AOFF_Pos 0 +#define AFEC_COCR_AOFF_Msk (0xfffu << AFEC_COCR_AOFF_Pos) /**< \brief (AFEC_COCR) Analog Offset */ +#define AFEC_COCR_AOFF(value) ((AFEC_COCR_AOFF_Msk & ((value) << AFEC_COCR_AOFF_Pos))) +/* -------- AFEC_TEMPMR : (AFEC Offset: 0x70) Temperature Sensor Mode Register -------- */ +#define AFEC_TEMPMR_RTCT (0x1u << 0) /**< \brief (AFEC_TEMPMR) Temperature Sensor RTC Trigger mode */ +#define AFEC_TEMPMR_TEMPCMPMOD_Pos 4 +#define AFEC_TEMPMR_TEMPCMPMOD_Msk (0x3u << AFEC_TEMPMR_TEMPCMPMOD_Pos) /**< \brief (AFEC_TEMPMR) Temperature Comparison Mode */ +#define AFEC_TEMPMR_TEMPCMPMOD_LOW (0x0u << 4) /**< \brief (AFEC_TEMPMR) Generates an event when the converted data is lower than the low threshold of the window. */ +#define AFEC_TEMPMR_TEMPCMPMOD_HIGH (0x1u << 4) /**< \brief (AFEC_TEMPMR) Generates an event when the converted data is higher than the high threshold of the window. */ +#define AFEC_TEMPMR_TEMPCMPMOD_IN (0x2u << 4) /**< \brief (AFEC_TEMPMR) Generates an event when the converted data is in the comparison window. */ +#define AFEC_TEMPMR_TEMPCMPMOD_OUT (0x3u << 4) /**< \brief (AFEC_TEMPMR) Generates an event when the converted data is out of the comparison window. */ +/* -------- AFEC_TEMPCWR : (AFEC Offset: 0x74) Temperature Compare Window Register -------- */ +#define AFEC_TEMPCWR_TLOWTHRES_Pos 0 +#define AFEC_TEMPCWR_TLOWTHRES_Msk (0xffffu << AFEC_TEMPCWR_TLOWTHRES_Pos) /**< \brief (AFEC_TEMPCWR) Temperature Low Threshold */ +#define AFEC_TEMPCWR_TLOWTHRES(value) ((AFEC_TEMPCWR_TLOWTHRES_Msk & ((value) << AFEC_TEMPCWR_TLOWTHRES_Pos))) +#define AFEC_TEMPCWR_THIGHTHRES_Pos 16 +#define AFEC_TEMPCWR_THIGHTHRES_Msk (0xffffu << AFEC_TEMPCWR_THIGHTHRES_Pos) /**< \brief (AFEC_TEMPCWR) Temperature High Threshold */ +#define AFEC_TEMPCWR_THIGHTHRES(value) ((AFEC_TEMPCWR_THIGHTHRES_Msk & ((value) << AFEC_TEMPCWR_THIGHTHRES_Pos))) +/* -------- AFEC_ACR : (AFEC Offset: 0x94) Analog Control Register -------- */ +#define AFEC_ACR_IBCTL_Pos 8 +#define AFEC_ACR_IBCTL_Msk (0x3u << AFEC_ACR_IBCTL_Pos) /**< \brief (AFEC_ACR) AFEC Bias Current Control */ +#define AFEC_ACR_IBCTL(value) ((AFEC_ACR_IBCTL_Msk & ((value) << AFEC_ACR_IBCTL_Pos))) +/* -------- AFEC_WPMR : (AFEC Offset: 0xE4) Write Protect Mode Register -------- */ +#define AFEC_WPMR_WPEN (0x1u << 0) /**< \brief (AFEC_WPMR) Write Protect Enable */ +#define AFEC_WPMR_WPKEY_Pos 8 +#define AFEC_WPMR_WPKEY_Msk (0xffffffu << AFEC_WPMR_WPKEY_Pos) /**< \brief (AFEC_WPMR) Write Protect KEY */ +#define AFEC_WPMR_WPKEY_ADC (0x414443u << 8) /**< \brief (AFEC_WPMR) Should be written at value 0x414443 ("ADC" in ASCII). Writing any other value in this field aborts the write operation of the WPEN bit. Always reads as 0. */ +/* -------- AFEC_WPSR : (AFEC Offset: 0xE8) Write Protect Status Register -------- */ +#define AFEC_WPSR_WPVS (0x1u << 0) /**< \brief (AFEC_WPSR) Write Protect Violation Status */ +#define AFEC_WPSR_WPVSRC_Pos 8 +#define AFEC_WPSR_WPVSRC_Msk (0xffffu << AFEC_WPSR_WPVSRC_Pos) /**< \brief (AFEC_WPSR) Write Protect Violation Source */ +/* -------- AFEC_RPR : (AFEC Offset: 0x100) Receive Pointer Register -------- */ +#define AFEC_RPR_RXPTR_Pos 0 +#define AFEC_RPR_RXPTR_Msk (0xffffffffu << AFEC_RPR_RXPTR_Pos) /**< \brief (AFEC_RPR) Receive Pointer Register */ +#define AFEC_RPR_RXPTR(value) ((AFEC_RPR_RXPTR_Msk & ((value) << AFEC_RPR_RXPTR_Pos))) +/* -------- AFEC_RCR : (AFEC Offset: 0x104) Receive Counter Register -------- */ +#define AFEC_RCR_RXCTR_Pos 0 +#define AFEC_RCR_RXCTR_Msk (0xffffu << AFEC_RCR_RXCTR_Pos) /**< \brief (AFEC_RCR) Receive Counter Register */ +#define AFEC_RCR_RXCTR(value) ((AFEC_RCR_RXCTR_Msk & ((value) << AFEC_RCR_RXCTR_Pos))) +/* -------- AFEC_RNPR : (AFEC Offset: 0x110) Receive Next Pointer Register -------- */ +#define AFEC_RNPR_RXNPTR_Pos 0 +#define AFEC_RNPR_RXNPTR_Msk (0xffffffffu << AFEC_RNPR_RXNPTR_Pos) /**< \brief (AFEC_RNPR) Receive Next Pointer */ +#define AFEC_RNPR_RXNPTR(value) ((AFEC_RNPR_RXNPTR_Msk & ((value) << AFEC_RNPR_RXNPTR_Pos))) +/* -------- AFEC_RNCR : (AFEC Offset: 0x114) Receive Next Counter Register -------- */ +#define AFEC_RNCR_RXNCTR_Pos 0 +#define AFEC_RNCR_RXNCTR_Msk (0xffffu << AFEC_RNCR_RXNCTR_Pos) /**< \brief (AFEC_RNCR) Receive Next Counter */ +#define AFEC_RNCR_RXNCTR(value) ((AFEC_RNCR_RXNCTR_Msk & ((value) << AFEC_RNCR_RXNCTR_Pos))) +/* -------- AFEC_PTCR : (AFEC Offset: 0x120) Transfer Control Register -------- */ +#define AFEC_PTCR_RXTEN (0x1u << 0) /**< \brief (AFEC_PTCR) Receiver Transfer Enable */ +#define AFEC_PTCR_RXTDIS (0x1u << 1) /**< \brief (AFEC_PTCR) Receiver Transfer Disable */ +#define AFEC_PTCR_TXTEN (0x1u << 8) /**< \brief (AFEC_PTCR) Transmitter Transfer Enable */ +#define AFEC_PTCR_TXTDIS (0x1u << 9) /**< \brief (AFEC_PTCR) Transmitter Transfer Disable */ +/* -------- AFEC_PTSR : (AFEC Offset: 0x124) Transfer Status Register -------- */ +#define AFEC_PTSR_RXTEN (0x1u << 0) /**< \brief (AFEC_PTSR) Receiver Transfer Enable */ +#define AFEC_PTSR_TXTEN (0x1u << 8) /**< \brief (AFEC_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM4E_AFEC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/can.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/can.h new file mode 100644 index 000000000..3417afcec --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/can.h @@ -0,0 +1,304 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_CAN_COMPONENT_ +#define _SAM4E_CAN_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Controller Area Network */ +/* ============================================================================= */ +/** \addtogroup SAM4E_CAN Controller Area Network */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief CanMb hardware registers */ +typedef struct { + RwReg CAN_MMR; /**< \brief (CanMb Offset: 0x0) Mailbox Mode Register */ + RwReg CAN_MAM; /**< \brief (CanMb Offset: 0x4) Mailbox Acceptance Mask Register */ + RwReg CAN_MID; /**< \brief (CanMb Offset: 0x8) Mailbox ID Register */ + RwReg CAN_MFID; /**< \brief (CanMb Offset: 0xC) Mailbox Family ID Register */ + RwReg CAN_MSR; /**< \brief (CanMb Offset: 0x10) Mailbox Status Register */ + RwReg CAN_MDL; /**< \brief (CanMb Offset: 0x14) Mailbox Data Low Register */ + RwReg CAN_MDH; /**< \brief (CanMb Offset: 0x18) Mailbox Data High Register */ + RwReg CAN_MCR; /**< \brief (CanMb Offset: 0x1C) Mailbox Control Register */ +} CanMb; +/** \brief Can hardware registers */ +#define CANMB_NUMBER 8 +typedef struct { + RwReg CAN_MR; /**< \brief (Can Offset: 0x0000) Mode Register */ + WoReg CAN_IER; /**< \brief (Can Offset: 0x0004) Interrupt Enable Register */ + WoReg CAN_IDR; /**< \brief (Can Offset: 0x0008) Interrupt Disable Register */ + RoReg CAN_IMR; /**< \brief (Can Offset: 0x000C) Interrupt Mask Register */ + RoReg CAN_SR; /**< \brief (Can Offset: 0x0010) Status Register */ + RwReg CAN_BR; /**< \brief (Can Offset: 0x0014) Baudrate Register */ + RoReg CAN_TIM; /**< \brief (Can Offset: 0x0018) Timer Register */ + RoReg CAN_TIMESTP; /**< \brief (Can Offset: 0x001C) Timestamp Register */ + RoReg CAN_ECR; /**< \brief (Can Offset: 0x0020) Error Counter Register */ + WoReg CAN_TCR; /**< \brief (Can Offset: 0x0024) Transfer Command Register */ + WoReg CAN_ACR; /**< \brief (Can Offset: 0x0028) Abort Command Register */ + RoReg Reserved1[46]; + RwReg CAN_WPMR; /**< \brief (Can Offset: 0x00E4) Write Protect Mode Register */ + RoReg CAN_WPSR; /**< \brief (Can Offset: 0x00E8) Write Protect Status Register */ + RoReg Reserved2[69]; + CanMb CAN_MB[CANMB_NUMBER]; /**< \brief (Can Offset: 0x200) MB = 0 .. 7 */ +} Can; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- CAN_MR : (CAN Offset: 0x0000) Mode Register -------- */ +#define CAN_MR_CANEN (0x1u << 0) /**< \brief (CAN_MR) CAN Controller Enable */ +#define CAN_MR_LPM (0x1u << 1) /**< \brief (CAN_MR) Disable/Enable Low Power Mode */ +#define CAN_MR_ABM (0x1u << 2) /**< \brief (CAN_MR) Disable/Enable Autobaud/Listen mode */ +#define CAN_MR_OVL (0x1u << 3) /**< \brief (CAN_MR) Disable/Enable Overload Frame */ +#define CAN_MR_TEOF (0x1u << 4) /**< \brief (CAN_MR) Timestamp messages at each end of Frame */ +#define CAN_MR_TTM (0x1u << 5) /**< \brief (CAN_MR) Disable/Enable Time Triggered Mode */ +#define CAN_MR_TIMFRZ (0x1u << 6) /**< \brief (CAN_MR) Enable Timer Freeze */ +#define CAN_MR_DRPT (0x1u << 7) /**< \brief (CAN_MR) Disable Repeat */ +/* -------- CAN_IER : (CAN Offset: 0x0004) Interrupt Enable Register -------- */ +#define CAN_IER_MB0 (0x1u << 0) /**< \brief (CAN_IER) Mailbox 0 Interrupt Enable */ +#define CAN_IER_MB1 (0x1u << 1) /**< \brief (CAN_IER) Mailbox 1 Interrupt Enable */ +#define CAN_IER_MB2 (0x1u << 2) /**< \brief (CAN_IER) Mailbox 2 Interrupt Enable */ +#define CAN_IER_MB3 (0x1u << 3) /**< \brief (CAN_IER) Mailbox 3 Interrupt Enable */ +#define CAN_IER_MB4 (0x1u << 4) /**< \brief (CAN_IER) Mailbox 4 Interrupt Enable */ +#define CAN_IER_MB5 (0x1u << 5) /**< \brief (CAN_IER) Mailbox 5 Interrupt Enable */ +#define CAN_IER_MB6 (0x1u << 6) /**< \brief (CAN_IER) Mailbox 6 Interrupt Enable */ +#define CAN_IER_MB7 (0x1u << 7) /**< \brief (CAN_IER) Mailbox 7 Interrupt Enable */ +#define CAN_IER_ERRA (0x1u << 16) /**< \brief (CAN_IER) Error Active Mode Interrupt Enable */ +#define CAN_IER_WARN (0x1u << 17) /**< \brief (CAN_IER) Warning Limit Interrupt Enable */ +#define CAN_IER_ERRP (0x1u << 18) /**< \brief (CAN_IER) Error Passive Mode Interrupt Enable */ +#define CAN_IER_BOFF (0x1u << 19) /**< \brief (CAN_IER) Bus Off Mode Interrupt Enable */ +#define CAN_IER_SLEEP (0x1u << 20) /**< \brief (CAN_IER) Sleep Interrupt Enable */ +#define CAN_IER_WAKEUP (0x1u << 21) /**< \brief (CAN_IER) Wakeup Interrupt Enable */ +#define CAN_IER_TOVF (0x1u << 22) /**< \brief (CAN_IER) Timer Overflow Interrupt Enable */ +#define CAN_IER_TSTP (0x1u << 23) /**< \brief (CAN_IER) TimeStamp Interrupt Enable */ +#define CAN_IER_CERR (0x1u << 24) /**< \brief (CAN_IER) CRC Error Interrupt Enable */ +#define CAN_IER_SERR (0x1u << 25) /**< \brief (CAN_IER) Stuffing Error Interrupt Enable */ +#define CAN_IER_AERR (0x1u << 26) /**< \brief (CAN_IER) Acknowledgment Error Interrupt Enable */ +#define CAN_IER_FERR (0x1u << 27) /**< \brief (CAN_IER) Form Error Interrupt Enable */ +#define CAN_IER_BERR (0x1u << 28) /**< \brief (CAN_IER) Bit Error Interrupt Enable */ +/* -------- CAN_IDR : (CAN Offset: 0x0008) Interrupt Disable Register -------- */ +#define CAN_IDR_MB0 (0x1u << 0) /**< \brief (CAN_IDR) Mailbox 0 Interrupt Disable */ +#define CAN_IDR_MB1 (0x1u << 1) /**< \brief (CAN_IDR) Mailbox 1 Interrupt Disable */ +#define CAN_IDR_MB2 (0x1u << 2) /**< \brief (CAN_IDR) Mailbox 2 Interrupt Disable */ +#define CAN_IDR_MB3 (0x1u << 3) /**< \brief (CAN_IDR) Mailbox 3 Interrupt Disable */ +#define CAN_IDR_MB4 (0x1u << 4) /**< \brief (CAN_IDR) Mailbox 4 Interrupt Disable */ +#define CAN_IDR_MB5 (0x1u << 5) /**< \brief (CAN_IDR) Mailbox 5 Interrupt Disable */ +#define CAN_IDR_MB6 (0x1u << 6) /**< \brief (CAN_IDR) Mailbox 6 Interrupt Disable */ +#define CAN_IDR_MB7 (0x1u << 7) /**< \brief (CAN_IDR) Mailbox 7 Interrupt Disable */ +#define CAN_IDR_ERRA (0x1u << 16) /**< \brief (CAN_IDR) Error Active Mode Interrupt Disable */ +#define CAN_IDR_WARN (0x1u << 17) /**< \brief (CAN_IDR) Warning Limit Interrupt Disable */ +#define CAN_IDR_ERRP (0x1u << 18) /**< \brief (CAN_IDR) Error Passive Mode Interrupt Disable */ +#define CAN_IDR_BOFF (0x1u << 19) /**< \brief (CAN_IDR) Bus Off Mode Interrupt Disable */ +#define CAN_IDR_SLEEP (0x1u << 20) /**< \brief (CAN_IDR) Sleep Interrupt Disable */ +#define CAN_IDR_WAKEUP (0x1u << 21) /**< \brief (CAN_IDR) Wakeup Interrupt Disable */ +#define CAN_IDR_TOVF (0x1u << 22) /**< \brief (CAN_IDR) Timer Overflow Interrupt */ +#define CAN_IDR_TSTP (0x1u << 23) /**< \brief (CAN_IDR) TimeStamp Interrupt Disable */ +#define CAN_IDR_CERR (0x1u << 24) /**< \brief (CAN_IDR) CRC Error Interrupt Disable */ +#define CAN_IDR_SERR (0x1u << 25) /**< \brief (CAN_IDR) Stuffing Error Interrupt Disable */ +#define CAN_IDR_AERR (0x1u << 26) /**< \brief (CAN_IDR) Acknowledgment Error Interrupt Disable */ +#define CAN_IDR_FERR (0x1u << 27) /**< \brief (CAN_IDR) Form Error Interrupt Disable */ +#define CAN_IDR_BERR (0x1u << 28) /**< \brief (CAN_IDR) Bit Error Interrupt Disable */ +/* -------- CAN_IMR : (CAN Offset: 0x000C) Interrupt Mask Register -------- */ +#define CAN_IMR_MB0 (0x1u << 0) /**< \brief (CAN_IMR) Mailbox 0 Interrupt Mask */ +#define CAN_IMR_MB1 (0x1u << 1) /**< \brief (CAN_IMR) Mailbox 1 Interrupt Mask */ +#define CAN_IMR_MB2 (0x1u << 2) /**< \brief (CAN_IMR) Mailbox 2 Interrupt Mask */ +#define CAN_IMR_MB3 (0x1u << 3) /**< \brief (CAN_IMR) Mailbox 3 Interrupt Mask */ +#define CAN_IMR_MB4 (0x1u << 4) /**< \brief (CAN_IMR) Mailbox 4 Interrupt Mask */ +#define CAN_IMR_MB5 (0x1u << 5) /**< \brief (CAN_IMR) Mailbox 5 Interrupt Mask */ +#define CAN_IMR_MB6 (0x1u << 6) /**< \brief (CAN_IMR) Mailbox 6 Interrupt Mask */ +#define CAN_IMR_MB7 (0x1u << 7) /**< \brief (CAN_IMR) Mailbox 7 Interrupt Mask */ +#define CAN_IMR_ERRA (0x1u << 16) /**< \brief (CAN_IMR) Error Active Mode Interrupt Mask */ +#define CAN_IMR_WARN (0x1u << 17) /**< \brief (CAN_IMR) Warning Limit Interrupt Mask */ +#define CAN_IMR_ERRP (0x1u << 18) /**< \brief (CAN_IMR) Error Passive Mode Interrupt Mask */ +#define CAN_IMR_BOFF (0x1u << 19) /**< \brief (CAN_IMR) Bus Off Mode Interrupt Mask */ +#define CAN_IMR_SLEEP (0x1u << 20) /**< \brief (CAN_IMR) Sleep Interrupt Mask */ +#define CAN_IMR_WAKEUP (0x1u << 21) /**< \brief (CAN_IMR) Wakeup Interrupt Mask */ +#define CAN_IMR_TOVF (0x1u << 22) /**< \brief (CAN_IMR) Timer Overflow Interrupt Mask */ +#define CAN_IMR_TSTP (0x1u << 23) /**< \brief (CAN_IMR) Timestamp Interrupt Mask */ +#define CAN_IMR_CERR (0x1u << 24) /**< \brief (CAN_IMR) CRC Error Interrupt Mask */ +#define CAN_IMR_SERR (0x1u << 25) /**< \brief (CAN_IMR) Stuffing Error Interrupt Mask */ +#define CAN_IMR_AERR (0x1u << 26) /**< \brief (CAN_IMR) Acknowledgment Error Interrupt Mask */ +#define CAN_IMR_FERR (0x1u << 27) /**< \brief (CAN_IMR) Form Error Interrupt Mask */ +#define CAN_IMR_BERR (0x1u << 28) /**< \brief (CAN_IMR) Bit Error Interrupt Mask */ +/* -------- CAN_SR : (CAN Offset: 0x0010) Status Register -------- */ +#define CAN_SR_MB0 (0x1u << 0) /**< \brief (CAN_SR) Mailbox 0 Event */ +#define CAN_SR_MB1 (0x1u << 1) /**< \brief (CAN_SR) Mailbox 1 Event */ +#define CAN_SR_MB2 (0x1u << 2) /**< \brief (CAN_SR) Mailbox 2 Event */ +#define CAN_SR_MB3 (0x1u << 3) /**< \brief (CAN_SR) Mailbox 3 Event */ +#define CAN_SR_MB4 (0x1u << 4) /**< \brief (CAN_SR) Mailbox 4 Event */ +#define CAN_SR_MB5 (0x1u << 5) /**< \brief (CAN_SR) Mailbox 5 Event */ +#define CAN_SR_MB6 (0x1u << 6) /**< \brief (CAN_SR) Mailbox 6 Event */ +#define CAN_SR_MB7 (0x1u << 7) /**< \brief (CAN_SR) Mailbox 7 Event */ +#define CAN_SR_ERRA (0x1u << 16) /**< \brief (CAN_SR) Error Active Mode */ +#define CAN_SR_WARN (0x1u << 17) /**< \brief (CAN_SR) Warning Limit */ +#define CAN_SR_ERRP (0x1u << 18) /**< \brief (CAN_SR) Error Passive Mode */ +#define CAN_SR_BOFF (0x1u << 19) /**< \brief (CAN_SR) Bus Off Mode */ +#define CAN_SR_SLEEP (0x1u << 20) /**< \brief (CAN_SR) CAN controller in Low power Mode */ +#define CAN_SR_WAKEUP (0x1u << 21) /**< \brief (CAN_SR) CAN controller is not in Low power Mode */ +#define CAN_SR_TOVF (0x1u << 22) /**< \brief (CAN_SR) Timer Overflow */ +#define CAN_SR_TSTP (0x1u << 23) /**< \brief (CAN_SR) */ +#define CAN_SR_CERR (0x1u << 24) /**< \brief (CAN_SR) Mailbox CRC Error */ +#define CAN_SR_SERR (0x1u << 25) /**< \brief (CAN_SR) Mailbox Stuffing Error */ +#define CAN_SR_AERR (0x1u << 26) /**< \brief (CAN_SR) Acknowledgment Error */ +#define CAN_SR_FERR (0x1u << 27) /**< \brief (CAN_SR) Form Error */ +#define CAN_SR_BERR (0x1u << 28) /**< \brief (CAN_SR) Bit Error */ +#define CAN_SR_RBSY (0x1u << 29) /**< \brief (CAN_SR) Receiver busy */ +#define CAN_SR_TBSY (0x1u << 30) /**< \brief (CAN_SR) Transmitter busy */ +#define CAN_SR_OVLSY (0x1u << 31) /**< \brief (CAN_SR) Overload busy */ +/* -------- CAN_BR : (CAN Offset: 0x0014) Baudrate Register -------- */ +#define CAN_BR_PHASE2_Pos 0 +#define CAN_BR_PHASE2_Msk (0x7u << CAN_BR_PHASE2_Pos) /**< \brief (CAN_BR) Phase 2 segment */ +#define CAN_BR_PHASE2(value) ((CAN_BR_PHASE2_Msk & ((value) << CAN_BR_PHASE2_Pos))) +#define CAN_BR_PHASE1_Pos 4 +#define CAN_BR_PHASE1_Msk (0x7u << CAN_BR_PHASE1_Pos) /**< \brief (CAN_BR) Phase 1 segment */ +#define CAN_BR_PHASE1(value) ((CAN_BR_PHASE1_Msk & ((value) << CAN_BR_PHASE1_Pos))) +#define CAN_BR_PROPAG_Pos 8 +#define CAN_BR_PROPAG_Msk (0x7u << CAN_BR_PROPAG_Pos) /**< \brief (CAN_BR) Programming time segment */ +#define CAN_BR_PROPAG(value) ((CAN_BR_PROPAG_Msk & ((value) << CAN_BR_PROPAG_Pos))) +#define CAN_BR_SJW_Pos 12 +#define CAN_BR_SJW_Msk (0x3u << CAN_BR_SJW_Pos) /**< \brief (CAN_BR) Re-synchronization jump width */ +#define CAN_BR_SJW(value) ((CAN_BR_SJW_Msk & ((value) << CAN_BR_SJW_Pos))) +#define CAN_BR_BRP_Pos 16 +#define CAN_BR_BRP_Msk (0x7fu << CAN_BR_BRP_Pos) /**< \brief (CAN_BR) Baudrate Prescaler. */ +#define CAN_BR_BRP(value) ((CAN_BR_BRP_Msk & ((value) << CAN_BR_BRP_Pos))) +#define CAN_BR_SMP (0x1u << 24) /**< \brief (CAN_BR) Sampling Mode */ +#define CAN_BR_SMP_ONCE (0x0u << 24) /**< \brief (CAN_BR) The incoming bit stream is sampled once at sample point. */ +#define CAN_BR_SMP_THREE (0x1u << 24) /**< \brief (CAN_BR) The incoming bit stream is sampled three times with a period of a MCK clock period, centered on sample point. */ +/* -------- CAN_TIM : (CAN Offset: 0x0018) Timer Register -------- */ +#define CAN_TIM_TIMER_Pos 0 +#define CAN_TIM_TIMER_Msk (0xffffu << CAN_TIM_TIMER_Pos) /**< \brief (CAN_TIM) Timer */ +/* -------- CAN_TIMESTP : (CAN Offset: 0x001C) Timestamp Register -------- */ +#define CAN_TIMESTP_MTIMESTAMP_Pos 0 +#define CAN_TIMESTP_MTIMESTAMP_Msk (0xffffu << CAN_TIMESTP_MTIMESTAMP_Pos) /**< \brief (CAN_TIMESTP) Timestamp */ +/* -------- CAN_ECR : (CAN Offset: 0x0020) Error Counter Register -------- */ +#define CAN_ECR_REC_Pos 0 +#define CAN_ECR_REC_Msk (0xffu << CAN_ECR_REC_Pos) /**< \brief (CAN_ECR) Receive Error Counter */ +#define CAN_ECR_TEC_Pos 16 +#define CAN_ECR_TEC_Msk (0x1ffu << CAN_ECR_TEC_Pos) /**< \brief (CAN_ECR) Transmit Error Counter */ +/* -------- CAN_TCR : (CAN Offset: 0x0024) Transfer Command Register -------- */ +#define CAN_TCR_MB0 (0x1u << 0) /**< \brief (CAN_TCR) Transfer Request for Mailbox 0 */ +#define CAN_TCR_MB1 (0x1u << 1) /**< \brief (CAN_TCR) Transfer Request for Mailbox 1 */ +#define CAN_TCR_MB2 (0x1u << 2) /**< \brief (CAN_TCR) Transfer Request for Mailbox 2 */ +#define CAN_TCR_MB3 (0x1u << 3) /**< \brief (CAN_TCR) Transfer Request for Mailbox 3 */ +#define CAN_TCR_MB4 (0x1u << 4) /**< \brief (CAN_TCR) Transfer Request for Mailbox 4 */ +#define CAN_TCR_MB5 (0x1u << 5) /**< \brief (CAN_TCR) Transfer Request for Mailbox 5 */ +#define CAN_TCR_MB6 (0x1u << 6) /**< \brief (CAN_TCR) Transfer Request for Mailbox 6 */ +#define CAN_TCR_MB7 (0x1u << 7) /**< \brief (CAN_TCR) Transfer Request for Mailbox 7 */ +#define CAN_TCR_TIMRST (0x1u << 31) /**< \brief (CAN_TCR) Timer Reset */ +/* -------- CAN_ACR : (CAN Offset: 0x0028) Abort Command Register -------- */ +#define CAN_ACR_MB0 (0x1u << 0) /**< \brief (CAN_ACR) Abort Request for Mailbox 0 */ +#define CAN_ACR_MB1 (0x1u << 1) /**< \brief (CAN_ACR) Abort Request for Mailbox 1 */ +#define CAN_ACR_MB2 (0x1u << 2) /**< \brief (CAN_ACR) Abort Request for Mailbox 2 */ +#define CAN_ACR_MB3 (0x1u << 3) /**< \brief (CAN_ACR) Abort Request for Mailbox 3 */ +#define CAN_ACR_MB4 (0x1u << 4) /**< \brief (CAN_ACR) Abort Request for Mailbox 4 */ +#define CAN_ACR_MB5 (0x1u << 5) /**< \brief (CAN_ACR) Abort Request for Mailbox 5 */ +#define CAN_ACR_MB6 (0x1u << 6) /**< \brief (CAN_ACR) Abort Request for Mailbox 6 */ +#define CAN_ACR_MB7 (0x1u << 7) /**< \brief (CAN_ACR) Abort Request for Mailbox 7 */ +/* -------- CAN_WPMR : (CAN Offset: 0x00E4) Write Protect Mode Register -------- */ +#define CAN_WPMR_WPEN (0x1u << 0) /**< \brief (CAN_WPMR) Write Protection Enable */ +#define CAN_WPMR_WPKEY_Pos 8 +#define CAN_WPMR_WPKEY_Msk (0xffffffu << CAN_WPMR_WPKEY_Pos) /**< \brief (CAN_WPMR) SPI Write Protection Key Password */ +#define CAN_WPMR_WPKEY(value) ((CAN_WPMR_WPKEY_Msk & ((value) << CAN_WPMR_WPKEY_Pos))) +/* -------- CAN_WPSR : (CAN Offset: 0x00E8) Write Protect Status Register -------- */ +#define CAN_WPSR_WPVS (0x1u << 0) /**< \brief (CAN_WPSR) Write Protection Violation Status */ +#define CAN_WPSR_WPVSRC_Pos 8 +#define CAN_WPSR_WPVSRC_Msk (0xffu << CAN_WPSR_WPVSRC_Pos) /**< \brief (CAN_WPSR) Write Protection Violation Source */ +/* -------- CAN_MMR : (CAN Offset: N/A) Mailbox Mode Register -------- */ +#define CAN_MMR_MTIMEMARK_Pos 0 +#define CAN_MMR_MTIMEMARK_Msk (0xffffu << CAN_MMR_MTIMEMARK_Pos) /**< \brief (CAN_MMR) Mailbox Timemark */ +#define CAN_MMR_MTIMEMARK(value) ((CAN_MMR_MTIMEMARK_Msk & ((value) << CAN_MMR_MTIMEMARK_Pos))) +#define CAN_MMR_PRIOR_Pos 16 +#define CAN_MMR_PRIOR_Msk (0xfu << CAN_MMR_PRIOR_Pos) /**< \brief (CAN_MMR) Mailbox Priority */ +#define CAN_MMR_PRIOR(value) ((CAN_MMR_PRIOR_Msk & ((value) << CAN_MMR_PRIOR_Pos))) +#define CAN_MMR_MOT_Pos 24 +#define CAN_MMR_MOT_Msk (0x7u << CAN_MMR_MOT_Pos) /**< \brief (CAN_MMR) Mailbox Object Type */ +#define CAN_MMR_MOT_MB_DISABLED (0x0u << 24) /**< \brief (CAN_MMR) Mailbox is disabled. This prevents receiving or transmitting any messages with this mailbox. */ +#define CAN_MMR_MOT_MB_RX (0x1u << 24) /**< \brief (CAN_MMR) Reception Mailbox. Mailbox is configured for reception. If a message is received while the mailbox data register is full, it is discarded. */ +#define CAN_MMR_MOT_MB_RX_OVERWRITE (0x2u << 24) /**< \brief (CAN_MMR) Reception mailbox with overwrite. Mailbox is configured for reception. If a message is received while the mailbox is full, it overwrites the previous message. */ +#define CAN_MMR_MOT_MB_TX (0x3u << 24) /**< \brief (CAN_MMR) Transmit mailbox. Mailbox is configured for transmission. */ +#define CAN_MMR_MOT_MB_CONSUMER (0x4u << 24) /**< \brief (CAN_MMR) Consumer Mailbox. Mailbox is configured in reception but behaves as a Transmit Mailbox, i.e., it sends a remote frame and waits for an answer. */ +#define CAN_MMR_MOT_MB_PRODUCER (0x5u << 24) /**< \brief (CAN_MMR) Producer Mailbox. Mailbox is configured in transmission but also behaves like a reception mailbox, i.e., it waits to receive a Remote Frame before sending its contents. */ +/* -------- CAN_MAM : (CAN Offset: N/A) Mailbox Acceptance Mask Register -------- */ +#define CAN_MAM_MIDvB_Pos 0 +#define CAN_MAM_MIDvB_Msk (0x3ffffu << CAN_MAM_MIDvB_Pos) /**< \brief (CAN_MAM) Complementary bits for identifier in extended frame mode */ +#define CAN_MAM_MIDvB(value) ((CAN_MAM_MIDvB_Msk & ((value) << CAN_MAM_MIDvB_Pos))) +#define CAN_MAM_MIDvA_Pos 18 +#define CAN_MAM_MIDvA_Msk (0x7ffu << CAN_MAM_MIDvA_Pos) /**< \brief (CAN_MAM) Identifier for standard frame mode */ +#define CAN_MAM_MIDvA(value) ((CAN_MAM_MIDvA_Msk & ((value) << CAN_MAM_MIDvA_Pos))) +#define CAN_MAM_MIDE (0x1u << 29) /**< \brief (CAN_MAM) Identifier Version */ +/* -------- CAN_MID : (CAN Offset: N/A) Mailbox ID Register -------- */ +#define CAN_MID_MIDvB_Pos 0 +#define CAN_MID_MIDvB_Msk (0x3ffffu << CAN_MID_MIDvB_Pos) /**< \brief (CAN_MID) Complementary bits for identifier in extended frame mode */ +#define CAN_MID_MIDvB(value) ((CAN_MID_MIDvB_Msk & ((value) << CAN_MID_MIDvB_Pos))) +#define CAN_MID_MIDvA_Pos 18 +#define CAN_MID_MIDvA_Msk (0x7ffu << CAN_MID_MIDvA_Pos) /**< \brief (CAN_MID) Identifier for standard frame mode */ +#define CAN_MID_MIDvA(value) ((CAN_MID_MIDvA_Msk & ((value) << CAN_MID_MIDvA_Pos))) +#define CAN_MID_MIDE (0x1u << 29) /**< \brief (CAN_MID) Identifier Version */ +/* -------- CAN_MFID : (CAN Offset: N/A) Mailbox Family ID Register -------- */ +#define CAN_MFID_MFID_Pos 0 +#define CAN_MFID_MFID_Msk (0x1fffffffu << CAN_MFID_MFID_Pos) /**< \brief (CAN_MFID) Family ID */ +/* -------- CAN_MSR : (CAN Offset: N/A) Mailbox Status Register -------- */ +#define CAN_MSR_MTIMESTAMP_Pos 0 +#define CAN_MSR_MTIMESTAMP_Msk (0xffffu << CAN_MSR_MTIMESTAMP_Pos) /**< \brief (CAN_MSR) Timer value */ +#define CAN_MSR_MDLC_Pos 16 +#define CAN_MSR_MDLC_Msk (0xfu << CAN_MSR_MDLC_Pos) /**< \brief (CAN_MSR) Mailbox Data Length Code */ +#define CAN_MSR_MRTR (0x1u << 20) /**< \brief (CAN_MSR) Mailbox Remote Transmission Request */ +#define CAN_MSR_MABT (0x1u << 22) /**< \brief (CAN_MSR) Mailbox Message Abort */ +#define CAN_MSR_MRDY (0x1u << 23) /**< \brief (CAN_MSR) Mailbox Ready */ +#define CAN_MSR_MMI (0x1u << 24) /**< \brief (CAN_MSR) Mailbox Message Ignored */ +/* -------- CAN_MDL : (CAN Offset: N/A) Mailbox Data Low Register -------- */ +#define CAN_MDL_MDL_Pos 0 +#define CAN_MDL_MDL_Msk (0xffffffffu << CAN_MDL_MDL_Pos) /**< \brief (CAN_MDL) Message Data Low Value */ +#define CAN_MDL_MDL(value) ((CAN_MDL_MDL_Msk & ((value) << CAN_MDL_MDL_Pos))) +/* -------- CAN_MDH : (CAN Offset: N/A) Mailbox Data High Register -------- */ +#define CAN_MDH_MDH_Pos 0 +#define CAN_MDH_MDH_Msk (0xffffffffu << CAN_MDH_MDH_Pos) /**< \brief (CAN_MDH) Message Data High Value */ +#define CAN_MDH_MDH(value) ((CAN_MDH_MDH_Msk & ((value) << CAN_MDH_MDH_Pos))) +/* -------- CAN_MCR : (CAN Offset: N/A) Mailbox Control Register -------- */ +#define CAN_MCR_MDLC_Pos 16 +#define CAN_MCR_MDLC_Msk (0xfu << CAN_MCR_MDLC_Pos) /**< \brief (CAN_MCR) Mailbox Data Length Code */ +#define CAN_MCR_MDLC(value) ((CAN_MCR_MDLC_Msk & ((value) << CAN_MCR_MDLC_Pos))) +#define CAN_MCR_MRTR (0x1u << 20) /**< \brief (CAN_MCR) Mailbox Remote Transmission Request */ +#define CAN_MCR_MACR (0x1u << 22) /**< \brief (CAN_MCR) Abort Request for Mailbox x */ +#define CAN_MCR_MTCR (0x1u << 23) /**< \brief (CAN_MCR) Mailbox Transfer Command */ + +/*@}*/ + + +#endif /* _SAM4E_CAN_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/chipid.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/chipid.h new file mode 100644 index 000000000..1c7897ab6 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/chipid.h @@ -0,0 +1,162 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_CHIPID_COMPONENT_ +#define _SAM4E_CHIPID_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Chip Identifier */ +/* ============================================================================= */ +/** \addtogroup SAM4E_CHIPID Chip Identifier */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Chipid hardware registers */ +typedef struct { + RoReg CHIPID_CIDR; /**< \brief (Chipid Offset: 0x0) Chip ID Register */ + RoReg CHIPID_EXID; /**< \brief (Chipid Offset: 0x4) Chip ID Extension Register */ +} Chipid; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- CHIPID_CIDR : (CHIPID Offset: 0x0) Chip ID Register -------- */ +#define CHIPID_CIDR_VERSION_Pos 0 +#define CHIPID_CIDR_VERSION_Msk (0x1fu << CHIPID_CIDR_VERSION_Pos) /**< \brief (CHIPID_CIDR) Version of the Device */ +#define CHIPID_CIDR_EPROC_Pos 5 +#define CHIPID_CIDR_EPROC_Msk (0x7u << CHIPID_CIDR_EPROC_Pos) /**< \brief (CHIPID_CIDR) Embedded Processor */ +#define CHIPID_CIDR_EPROC_ARM946ES (0x1u << 5) /**< \brief (CHIPID_CIDR) ARM946ES */ +#define CHIPID_CIDR_EPROC_ARM7TDMI (0x2u << 5) /**< \brief (CHIPID_CIDR) ARM7TDMI */ +#define CHIPID_CIDR_EPROC_CM3 (0x3u << 5) /**< \brief (CHIPID_CIDR) Cortex-M3 */ +#define CHIPID_CIDR_EPROC_ARM920T (0x4u << 5) /**< \brief (CHIPID_CIDR) ARM920T */ +#define CHIPID_CIDR_EPROC_ARM926EJS (0x5u << 5) /**< \brief (CHIPID_CIDR) ARM926EJS */ +#define CHIPID_CIDR_EPROC_CA5 (0x6u << 5) /**< \brief (CHIPID_CIDR) Cortex-A5 */ +#define CHIPID_CIDR_EPROC_CM4 (0x7u << 5) /**< \brief (CHIPID_CIDR) Cortex-M4 */ +#define CHIPID_CIDR_NVPSIZ_Pos 8 +#define CHIPID_CIDR_NVPSIZ_Msk (0xfu << CHIPID_CIDR_NVPSIZ_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Size */ +#define CHIPID_CIDR_NVPSIZ_NONE (0x0u << 8) /**< \brief (CHIPID_CIDR) None */ +#define CHIPID_CIDR_NVPSIZ_8K (0x1u << 8) /**< \brief (CHIPID_CIDR) 8 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_16K (0x2u << 8) /**< \brief (CHIPID_CIDR) 16 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_32K (0x3u << 8) /**< \brief (CHIPID_CIDR) 32 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_64K (0x5u << 8) /**< \brief (CHIPID_CIDR) 64 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_128K (0x7u << 8) /**< \brief (CHIPID_CIDR) 128 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_256K (0x9u << 8) /**< \brief (CHIPID_CIDR) 256 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_512K (0xAu << 8) /**< \brief (CHIPID_CIDR) 512 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_1024K (0xCu << 8) /**< \brief (CHIPID_CIDR) 1024 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_2048K (0xEu << 8) /**< \brief (CHIPID_CIDR) 2048 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_Pos 12 +#define CHIPID_CIDR_NVPSIZ2_Msk (0xfu << CHIPID_CIDR_NVPSIZ2_Pos) /**< \brief (CHIPID_CIDR) Second Nonvolatile Program Memory Size */ +#define CHIPID_CIDR_NVPSIZ2_NONE (0x0u << 12) /**< \brief (CHIPID_CIDR) None */ +#define CHIPID_CIDR_NVPSIZ2_8K (0x1u << 12) /**< \brief (CHIPID_CIDR) 8 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_16K (0x2u << 12) /**< \brief (CHIPID_CIDR) 16 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_32K (0x3u << 12) /**< \brief (CHIPID_CIDR) 32 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_64K (0x5u << 12) /**< \brief (CHIPID_CIDR) 64 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_128K (0x7u << 12) /**< \brief (CHIPID_CIDR) 128 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_256K (0x9u << 12) /**< \brief (CHIPID_CIDR) 256 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_512K (0xAu << 12) /**< \brief (CHIPID_CIDR) 512 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_1024K (0xCu << 12) /**< \brief (CHIPID_CIDR) 1024 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_2048K (0xEu << 12) /**< \brief (CHIPID_CIDR) 2048 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_Pos 16 +#define CHIPID_CIDR_SRAMSIZ_Msk (0xfu << CHIPID_CIDR_SRAMSIZ_Pos) /**< \brief (CHIPID_CIDR) Internal SRAM Size */ +#define CHIPID_CIDR_SRAMSIZ_48K (0x0u << 16) /**< \brief (CHIPID_CIDR) 48 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_192K (0x1u << 16) /**< \brief (CHIPID_CIDR) 192 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_2K (0x2u << 16) /**< \brief (CHIPID_CIDR) 2 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_6K (0x3u << 16) /**< \brief (CHIPID_CIDR) 6 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_24K (0x4u << 16) /**< \brief (CHIPID_CIDR) 24 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_4K (0x5u << 16) /**< \brief (CHIPID_CIDR) 4 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_80K (0x6u << 16) /**< \brief (CHIPID_CIDR) 80 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_160K (0x7u << 16) /**< \brief (CHIPID_CIDR) 160 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_8K (0x8u << 16) /**< \brief (CHIPID_CIDR) 8 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_16K (0x9u << 16) /**< \brief (CHIPID_CIDR) 16 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_32K (0xAu << 16) /**< \brief (CHIPID_CIDR) 32 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_64K (0xBu << 16) /**< \brief (CHIPID_CIDR) 64 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_128K (0xCu << 16) /**< \brief (CHIPID_CIDR) 128 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_256K (0xDu << 16) /**< \brief (CHIPID_CIDR) 256 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_96K (0xEu << 16) /**< \brief (CHIPID_CIDR) 96 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_512K (0xFu << 16) /**< \brief (CHIPID_CIDR) 512 Kbytes */ +#define CHIPID_CIDR_ARCH_Pos 20 +#define CHIPID_CIDR_ARCH_Msk (0xffu << CHIPID_CIDR_ARCH_Pos) /**< \brief (CHIPID_CIDR) Architecture Identifier */ +#define CHIPID_CIDR_ARCH_AT91SAM9xx (0x19u << 20) /**< \brief (CHIPID_CIDR) AT91SAM9xx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM9XExx (0x29u << 20) /**< \brief (CHIPID_CIDR) AT91SAM9XExx Series */ +#define CHIPID_CIDR_ARCH_AT91x34 (0x34u << 20) /**< \brief (CHIPID_CIDR) AT91x34 Series */ +#define CHIPID_CIDR_ARCH_CAP7 (0x37u << 20) /**< \brief (CHIPID_CIDR) CAP7 Series */ +#define CHIPID_CIDR_ARCH_CAP9 (0x39u << 20) /**< \brief (CHIPID_CIDR) CAP9 Series */ +#define CHIPID_CIDR_ARCH_CAP11 (0x3Bu << 20) /**< \brief (CHIPID_CIDR) CAP11 Series */ +#define CHIPID_CIDR_ARCH_SAM4E (0x3Cu << 20) /**< \brief (CHIPID_CIDR) SAM4E Series */ +#define CHIPID_CIDR_ARCH_AT91x40 (0x40u << 20) /**< \brief (CHIPID_CIDR) AT91x40 Series */ +#define CHIPID_CIDR_ARCH_AT91x42 (0x42u << 20) /**< \brief (CHIPID_CIDR) AT91x42 Series */ +#define CHIPID_CIDR_ARCH_AT91x55 (0x55u << 20) /**< \brief (CHIPID_CIDR) AT91x55 Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Axx (0x60u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Axx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7AQxx (0x61u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7AQxx Series */ +#define CHIPID_CIDR_ARCH_AT91x63 (0x63u << 20) /**< \brief (CHIPID_CIDR) AT91x63 Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Sxx (0x70u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Sxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7XCxx (0x71u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7XCxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7SExx (0x72u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7SExx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Lxx (0x73u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Lxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Xxx (0x75u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Xxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7SLxx (0x76u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7SLxx Series */ +#define CHIPID_CIDR_ARCH_SAM3UxC (0x80u << 20) /**< \brief (CHIPID_CIDR) SAM3UxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3UxE (0x81u << 20) /**< \brief (CHIPID_CIDR) SAM3UxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3AxC (0x83u << 20) /**< \brief (CHIPID_CIDR) SAM3AxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxC (0x84u << 20) /**< \brief (CHIPID_CIDR) SAM3XxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxE (0x85u << 20) /**< \brief (CHIPID_CIDR) SAM3XxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxG (0x86u << 20) /**< \brief (CHIPID_CIDR) SAM3XxG Series (208/217-pin version) */ +#define CHIPID_CIDR_ARCH_AT91x92 (0x92u << 20) /**< \brief (CHIPID_CIDR) AT91x92 Series */ +#define CHIPID_CIDR_ARCH_SAM3SDxB (0x99u << 20) /**< \brief (CHIPID_CIDR) SAM3SDxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SDxC (0x9Au << 20) /**< \brief (CHIPID_CIDR) SAM3SDxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM5A (0xA5u << 20) /**< \brief (CHIPID_CIDR) SAM5A */ +#define CHIPID_CIDR_ARCH_SAM4LxA (0xB0u << 20) /**< \brief (CHIPID_CIDR) SAM4LxA Series (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4LxB (0xB1u << 20) /**< \brief (CHIPID_CIDR) SAM4LxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4LxC (0xB2u << 20) /**< \brief (CHIPID_CIDR) SAM4LxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_AT75Cxx (0xF0u << 20) /**< \brief (CHIPID_CIDR) AT75Cxx Series */ +#define CHIPID_CIDR_NVPTYP_Pos 28 +#define CHIPID_CIDR_NVPTYP_Msk (0x7u << CHIPID_CIDR_NVPTYP_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Type */ +#define CHIPID_CIDR_NVPTYP_ROM (0x0u << 28) /**< \brief (CHIPID_CIDR) ROM */ +#define CHIPID_CIDR_NVPTYP_ROMLESS (0x1u << 28) /**< \brief (CHIPID_CIDR) ROMless or on-chip Flash */ +#define CHIPID_CIDR_NVPTYP_FLASH (0x2u << 28) /**< \brief (CHIPID_CIDR) Embedded Flash Memory */ +#define CHIPID_CIDR_NVPTYP_ROM_FLASH (0x3u << 28) /**< \brief (CHIPID_CIDR) ROM and Embedded Flash MemoryNVPSIZ is ROM size NVPSIZ2 is Flash size */ +#define CHIPID_CIDR_NVPTYP_SRAM (0x4u << 28) /**< \brief (CHIPID_CIDR) SRAM emulating ROM */ +#define CHIPID_CIDR_EXT (0x1u << 31) /**< \brief (CHIPID_CIDR) Extension Flag */ +/* -------- CHIPID_EXID : (CHIPID Offset: 0x4) Chip ID Extension Register -------- */ +#define CHIPID_EXID_EXID_Pos 0 +#define CHIPID_EXID_EXID_Msk (0xffffffffu << CHIPID_EXID_EXID_Pos) /**< \brief (CHIPID_EXID) Chip ID Extension */ + +/*@}*/ + + +#endif /* _SAM4E_CHIPID_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/cmcc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/cmcc.h new file mode 100644 index 000000000..2d9bc4681 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/cmcc.h @@ -0,0 +1,127 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_CMCC_COMPONENT_ +#define _SAM4E_CMCC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Cortex M Cache Controller */ +/* ============================================================================= */ +/** \addtogroup SAM4E_CMCC Cortex M Cache Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Cmcc hardware registers */ +typedef struct { + RoReg CMCC_TYPE; /**< \brief (Cmcc Offset: 0x00) Cache Type Register */ + RwReg CMCC_CFG; /**< \brief (Cmcc Offset: 0x04) Cache Configuration Register */ + WoReg CMCC_CTRL; /**< \brief (Cmcc Offset: 0x08) Cache Control Register */ + RoReg CMCC_SR; /**< \brief (Cmcc Offset: 0x0C) Cache Status Register */ + RoReg Reserved1[4]; + WoReg CMCC_MAINT0; /**< \brief (Cmcc Offset: 0x20) Cache Maintenance Register 0 */ + WoReg CMCC_MAINT1; /**< \brief (Cmcc Offset: 0x24) Cache Maintenance Register 1 */ + RwReg CMCC_MCFG; /**< \brief (Cmcc Offset: 0x28) Cache Monitor Configuration Register */ + RwReg CMCC_MEN; /**< \brief (Cmcc Offset: 0x2C) Cache Monitor Enable Register */ + WoReg CMCC_MCTRL; /**< \brief (Cmcc Offset: 0x30) Cache Monitor Control Register */ + RoReg CMCC_MSR; /**< \brief (Cmcc Offset: 0x34) Cache Monitor Status Register */ +} Cmcc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- CMCC_TYPE : (CMCC Offset: 0x00) Cache Type Register -------- */ +#define CMCC_TYPE_AP (0x1u << 0) /**< \brief (CMCC_TYPE) Access Port Access Allowed */ +#define CMCC_TYPE_GCLK (0x1u << 1) /**< \brief (CMCC_TYPE) Dynamic Clock Gating Supported */ +#define CMCC_TYPE_RANDP (0x1u << 2) /**< \brief (CMCC_TYPE) Random Selection Policy Supported */ +#define CMCC_TYPE_LRUP (0x1u << 3) /**< \brief (CMCC_TYPE) Least Recently Used Policy Supported */ +#define CMCC_TYPE_RRP (0x1u << 4) /**< \brief (CMCC_TYPE) Random Selection Policy Supported */ +#define CMCC_TYPE_WAYNUM_Pos 5 +#define CMCC_TYPE_WAYNUM_Msk (0x3u << CMCC_TYPE_WAYNUM_Pos) /**< \brief (CMCC_TYPE) Number of Way */ +#define CMCC_TYPE_WAYNUM_DMAPPED (0x0u << 5) /**< \brief (CMCC_TYPE) Direct Mapped Cache */ +#define CMCC_TYPE_WAYNUM_ARCH2WAY (0x1u << 5) /**< \brief (CMCC_TYPE) 2-WAY set associative */ +#define CMCC_TYPE_WAYNUM_ARCH4WAY (0x2u << 5) /**< \brief (CMCC_TYPE) 4-WAY set associative */ +#define CMCC_TYPE_WAYNUM_ARCH8WAY (0x3u << 5) /**< \brief (CMCC_TYPE) 8-WAY set associative */ +#define CMCC_TYPE_LCKDOWN (0x1u << 7) /**< \brief (CMCC_TYPE) Lock Down Supported */ +#define CMCC_TYPE_CSIZE_Pos 8 +#define CMCC_TYPE_CSIZE_Msk (0x7u << CMCC_TYPE_CSIZE_Pos) /**< \brief (CMCC_TYPE) Cache Size */ +#define CMCC_TYPE_CSIZE_CSIZE_1KB (0x0u << 8) /**< \brief (CMCC_TYPE) Cache Size 1 Kbytes */ +#define CMCC_TYPE_CSIZE_CSIZE_2KB (0x1u << 8) /**< \brief (CMCC_TYPE) Cache Size 2 Kbytes */ +#define CMCC_TYPE_CSIZE_CSIZE_4KB (0x2u << 8) /**< \brief (CMCC_TYPE) Cache Size 4 Kbytes */ +#define CMCC_TYPE_CSIZE_CSIZE_8KB (0x3u << 8) /**< \brief (CMCC_TYPE) Cache Size 8 Kbytes */ +#define CMCC_TYPE_CLSIZE_Pos 11 +#define CMCC_TYPE_CLSIZE_Msk (0x7u << CMCC_TYPE_CLSIZE_Pos) /**< \brief (CMCC_TYPE) Cache Size */ +#define CMCC_TYPE_CLSIZE_CLSIZE_1KB (0x0u << 11) /**< \brief (CMCC_TYPE) 4 bytes */ +#define CMCC_TYPE_CLSIZE_CLSIZE_2KB (0x1u << 11) /**< \brief (CMCC_TYPE) 8 bytes */ +#define CMCC_TYPE_CLSIZE_CLSIZE_4KB (0x2u << 11) /**< \brief (CMCC_TYPE) 16 bytes */ +#define CMCC_TYPE_CLSIZE_CLSIZE_8KB (0x3u << 11) /**< \brief (CMCC_TYPE) 32 bytes */ +/* -------- CMCC_CFG : (CMCC Offset: 0x04) Cache Configuration Register -------- */ +#define CMCC_CFG_GCLKDIS (0x1u << 0) /**< \brief (CMCC_CFG) Disable Clock Gating */ +/* -------- CMCC_CTRL : (CMCC Offset: 0x08) Cache Control Register -------- */ +#define CMCC_CTRL_CEN (0x1u << 0) /**< \brief (CMCC_CTRL) Cache Controller Enable */ +/* -------- CMCC_SR : (CMCC Offset: 0x0C) Cache Status Register -------- */ +#define CMCC_SR_CSTS (0x1u << 0) /**< \brief (CMCC_SR) Cache Controller Status */ +/* -------- CMCC_MAINT0 : (CMCC Offset: 0x20) Cache Maintenance Register 0 -------- */ +#define CMCC_MAINT0_INVALL (0x1u << 0) /**< \brief (CMCC_MAINT0) Cache Controller Invalidate All */ +/* -------- CMCC_MAINT1 : (CMCC Offset: 0x24) Cache Maintenance Register 1 -------- */ +#define CMCC_MAINT1_INDEX_Pos 4 +#define CMCC_MAINT1_INDEX_Msk (0x1fu << CMCC_MAINT1_INDEX_Pos) /**< \brief (CMCC_MAINT1) Invalidate Index */ +#define CMCC_MAINT1_INDEX(value) ((CMCC_MAINT1_INDEX_Msk & ((value) << CMCC_MAINT1_INDEX_Pos))) +#define CMCC_MAINT1_WAY_Pos 30 +#define CMCC_MAINT1_WAY_Msk (0x3u << CMCC_MAINT1_WAY_Pos) /**< \brief (CMCC_MAINT1) Invalidate Way */ +#define CMCC_MAINT1_WAY_WAY0 (0x0u << 30) /**< \brief (CMCC_MAINT1) Way 0 is selection for index invalidation */ +#define CMCC_MAINT1_WAY_WAY1 (0x1u << 30) /**< \brief (CMCC_MAINT1) Way 1 is selection for index invalidation */ +#define CMCC_MAINT1_WAY_WAY2 (0x2u << 30) /**< \brief (CMCC_MAINT1) Way 2 is selection for index invalidation */ +#define CMCC_MAINT1_WAY_WAY3 (0x3u << 30) /**< \brief (CMCC_MAINT1) Way 3 is selection for index invalidation */ +/* -------- CMCC_MCFG : (CMCC Offset: 0x28) Cache Monitor Configuration Register -------- */ +#define CMCC_MCFG_MODE_Pos 0 +#define CMCC_MCFG_MODE_Msk (0x3u << CMCC_MCFG_MODE_Pos) /**< \brief (CMCC_MCFG) Cache Controller Monitor Counter Mode */ +#define CMCC_MCFG_MODE_CYCLE_COUNT (0x0u << 0) /**< \brief (CMCC_MCFG) Cycle counter */ +#define CMCC_MCFG_MODE_IHIT_COUNT (0x1u << 0) /**< \brief (CMCC_MCFG) Instruction hit counter */ +#define CMCC_MCFG_MODE_DHIT_COUNT (0x2u << 0) /**< \brief (CMCC_MCFG) Data hit counter */ +/* -------- CMCC_MEN : (CMCC Offset: 0x2C) Cache Monitor Enable Register -------- */ +#define CMCC_MEN_MENABLE (0x1u << 0) /**< \brief (CMCC_MEN) Cache Controller Monitor Enable */ +/* -------- CMCC_MCTRL : (CMCC Offset: 0x30) Cache Monitor Control Register -------- */ +#define CMCC_MCTRL_SWRST (0x1u << 0) /**< \brief (CMCC_MCTRL) Monitor */ +/* -------- CMCC_MSR : (CMCC Offset: 0x34) Cache Monitor Status Register -------- */ +#define CMCC_MSR_EVENT_CNT_Pos 0 +#define CMCC_MSR_EVENT_CNT_Msk (0xffffffffu << CMCC_MSR_EVENT_CNT_Pos) /**< \brief (CMCC_MSR) Monitor Event Counter */ + +/*@}*/ + + +#endif /* _SAM4E_CMCC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/crccu.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/crccu.h new file mode 100644 index 000000000..a10fff8e1 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/crccu.h @@ -0,0 +1,119 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_CRCCU_COMPONENT_ +#define _SAM4E_CRCCU_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Cyclic Redundancy Check Calculation Unit */ +/* ============================================================================= */ +/** \addtogroup SAM4E_CRCCU Cyclic Redundancy Check Calculation Unit */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Crccu hardware registers */ +typedef struct { + RwReg CRCCU_DSCR; /**< \brief (Crccu Offset: 0x00000000) CRCCU Descriptor Base Register */ + RoReg Reserved1[1]; + WoReg CRCCU_DMA_EN; /**< \brief (Crccu Offset: 0x00000008) CRCCU DMA Enable Register */ + WoReg CRCCU_DMA_DIS; /**< \brief (Crccu Offset: 0x0000000C) CRCCU DMA Disable Register */ + RoReg CRCCU_DMA_SR; /**< \brief (Crccu Offset: 0x00000010) CRCCU DMA Status Register */ + WoReg CRCCU_DMA_IER; /**< \brief (Crccu Offset: 0x00000014) CRCCU DMA Interrupt Enable Register */ + WoReg CRCCU_DMA_IDR; /**< \brief (Crccu Offset: 0x00000018) CRCCU DMA Interrupt Disable Register */ + RoReg CRCCU_DMA_IMR; /**< \brief (Crccu Offset: 0x0000001C) CRCCU DMA Interrupt Mask Register */ + RoReg CRCCU_DMA_ISR; /**< \brief (Crccu Offset: 0x00000020) CRCCU DMA Interrupt Status Register */ + RoReg Reserved2[4]; + WoReg CRCCU_CR; /**< \brief (Crccu Offset: 0x00000034) CRCCU Control Register */ + RwReg CRCCU_MR; /**< \brief (Crccu Offset: 0x00000038) CRCCU Mode Register */ + RoReg CRCCU_SR; /**< \brief (Crccu Offset: 0x0000003C) CRCCU Status Register */ + WoReg CRCCU_IER; /**< \brief (Crccu Offset: 0x00000040) CRCCU Interrupt Enable Register */ + WoReg CRCCU_IDR; /**< \brief (Crccu Offset: 0x00000044) CRCCU Interrupt Disable Register */ + RoReg CRCCU_IMR; /**< \brief (Crccu Offset: 0x00000048) CRCCU Interrupt Mask Register */ + RoReg CRCCU_ISR; /**< \brief (Crccu Offset: 0x0000004C) CRCCU Interrupt Status Register */ +} Crccu; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- CRCCU_DSCR : (CRCCU Offset: 0x00000000) CRCCU Descriptor Base Register -------- */ +#define CRCCU_DSCR_DSCR_Pos 9 +#define CRCCU_DSCR_DSCR_Msk (0x7fffffu << CRCCU_DSCR_DSCR_Pos) /**< \brief (CRCCU_DSCR) Descriptor Base Address */ +#define CRCCU_DSCR_DSCR(value) ((CRCCU_DSCR_DSCR_Msk & ((value) << CRCCU_DSCR_DSCR_Pos))) +/* -------- CRCCU_DMA_EN : (CRCCU Offset: 0x00000008) CRCCU DMA Enable Register -------- */ +#define CRCCU_DMA_EN_DMAEN (0x1u << 0) /**< \brief (CRCCU_DMA_EN) DMA Enable Register */ +/* -------- CRCCU_DMA_DIS : (CRCCU Offset: 0x0000000C) CRCCU DMA Disable Register -------- */ +#define CRCCU_DMA_DIS_DMADIS (0x1u << 0) /**< \brief (CRCCU_DMA_DIS) DMA Disable Register */ +/* -------- CRCCU_DMA_SR : (CRCCU Offset: 0x00000010) CRCCU DMA Status Register -------- */ +#define CRCCU_DMA_SR_DMASR (0x1u << 0) /**< \brief (CRCCU_DMA_SR) DMA Status Register */ +/* -------- CRCCU_DMA_IER : (CRCCU Offset: 0x00000014) CRCCU DMA Interrupt Enable Register -------- */ +#define CRCCU_DMA_IER_DMAIER (0x1u << 0) /**< \brief (CRCCU_DMA_IER) Interrupt Enable register */ +/* -------- CRCCU_DMA_IDR : (CRCCU Offset: 0x00000018) CRCCU DMA Interrupt Disable Register -------- */ +#define CRCCU_DMA_IDR_DMAIDR (0x1u << 0) /**< \brief (CRCCU_DMA_IDR) Interrupt Disable register */ +/* -------- CRCCU_DMA_IMR : (CRCCU Offset: 0x0000001C) CRCCU DMA Interrupt Mask Register -------- */ +#define CRCCU_DMA_IMR_DMAIMR (0x1u << 0) /**< \brief (CRCCU_DMA_IMR) Interrupt Mask Register */ +/* -------- CRCCU_DMA_ISR : (CRCCU Offset: 0x00000020) CRCCU DMA Interrupt Status Register -------- */ +#define CRCCU_DMA_ISR_DMAISR (0x1u << 0) /**< \brief (CRCCU_DMA_ISR) Interrupt Status register */ +/* -------- CRCCU_CR : (CRCCU Offset: 0x00000034) CRCCU Control Register -------- */ +#define CRCCU_CR_RESET (0x1u << 0) /**< \brief (CRCCU_CR) CRC Computation Reset */ +/* -------- CRCCU_MR : (CRCCU Offset: 0x00000038) CRCCU Mode Register -------- */ +#define CRCCU_MR_ENABLE (0x1u << 0) /**< \brief (CRCCU_MR) CRC Enable */ +#define CRCCU_MR_COMPARE (0x1u << 1) /**< \brief (CRCCU_MR) CRC Compare */ +#define CRCCU_MR_PTYPE_Pos 2 +#define CRCCU_MR_PTYPE_Msk (0x3u << CRCCU_MR_PTYPE_Pos) /**< \brief (CRCCU_MR) Primitive Polynomial */ +#define CRCCU_MR_PTYPE_CCITT8023 (0x0u << 2) /**< \brief (CRCCU_MR) Polynom 0x04C11DB7 */ +#define CRCCU_MR_PTYPE_CASTAGNOLI (0x1u << 2) /**< \brief (CRCCU_MR) Polynom 0x1EDC6F41 */ +#define CRCCU_MR_PTYPE_CCITT16 (0x2u << 2) /**< \brief (CRCCU_MR) Polynom 0x1021 */ +#define CRCCU_MR_DIVIDER_Pos 4 +#define CRCCU_MR_DIVIDER_Msk (0xfu << CRCCU_MR_DIVIDER_Pos) /**< \brief (CRCCU_MR) Request Divider */ +#define CRCCU_MR_DIVIDER(value) ((CRCCU_MR_DIVIDER_Msk & ((value) << CRCCU_MR_DIVIDER_Pos))) +/* -------- CRCCU_SR : (CRCCU Offset: 0x0000003C) CRCCU Status Register -------- */ +#define CRCCU_SR_CRC_Pos 0 +#define CRCCU_SR_CRC_Msk (0xffffffffu << CRCCU_SR_CRC_Pos) /**< \brief (CRCCU_SR) Cyclic Redundancy Check Value */ +/* -------- CRCCU_IER : (CRCCU Offset: 0x00000040) CRCCU Interrupt Enable Register -------- */ +#define CRCCU_IER_ERRIER (0x1u << 0) /**< \brief (CRCCU_IER) CRC Error Interrupt Enable */ +/* -------- CRCCU_IDR : (CRCCU Offset: 0x00000044) CRCCU Interrupt Disable Register -------- */ +#define CRCCU_IDR_ERRIDR (0x1u << 0) /**< \brief (CRCCU_IDR) CRC Error Interrupt Disable */ +/* -------- CRCCU_IMR : (CRCCU Offset: 0x00000048) CRCCU Interrupt Mask Register -------- */ +#define CRCCU_IMR_ERRIMR (0x1u << 0) /**< \brief (CRCCU_IMR) CRC Error Interrupt Mask */ +/* -------- CRCCU_ISR : (CRCCU Offset: 0x0000004C) CRCCU Interrupt Status Register -------- */ +#define CRCCU_ISR_ERRISR (0x1u << 0) /**< \brief (CRCCU_ISR) CRC Error Interrupt Status */ + +/*@}*/ + + +#endif /* _SAM4E_CRCCU_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/dacc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/dacc.h new file mode 100644 index 000000000..9739b1276 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/dacc.h @@ -0,0 +1,225 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_DACC_COMPONENT_ +#define _SAM4E_DACC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Digital-to-Analog Converter Controller */ +/* ============================================================================= */ +/** \addtogroup SAM4E_DACC Digital-to-Analog Converter Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Dacc hardware registers */ +typedef struct { + WoReg DACC_CR; /**< \brief (Dacc Offset: 0x00) Control Register */ + RwReg DACC_MR; /**< \brief (Dacc Offset: 0x04) Mode Register */ + RoReg Reserved1[2]; + WoReg DACC_CHER; /**< \brief (Dacc Offset: 0x10) Channel Enable Register */ + WoReg DACC_CHDR; /**< \brief (Dacc Offset: 0x14) Channel Disable Register */ + RoReg DACC_CHSR; /**< \brief (Dacc Offset: 0x18) Channel Status Register */ + RoReg Reserved2[1]; + WoReg DACC_CDR; /**< \brief (Dacc Offset: 0x20) Conversion Data Register */ + WoReg DACC_IER; /**< \brief (Dacc Offset: 0x24) Interrupt Enable Register */ + WoReg DACC_IDR; /**< \brief (Dacc Offset: 0x28) Interrupt Disable Register */ + RoReg DACC_IMR; /**< \brief (Dacc Offset: 0x2C) Interrupt Mask Register */ + RoReg DACC_ISR; /**< \brief (Dacc Offset: 0x30) Interrupt Status Register */ + RoReg Reserved3[24]; + RwReg DACC_ACR; /**< \brief (Dacc Offset: 0x94) Analog Current Register */ + RoReg Reserved4[19]; + RwReg DACC_WPMR; /**< \brief (Dacc Offset: 0xE4) Write Protect Mode register */ + RoReg DACC_WPSR; /**< \brief (Dacc Offset: 0xE8) Write Protect Status register */ + RoReg Reserved5[7]; + RwReg DACC_TPR; /**< \brief (Dacc Offset: 0x108) Transmit Pointer Register */ + RwReg DACC_TCR; /**< \brief (Dacc Offset: 0x10C) Transmit Counter Register */ + RoReg Reserved6[2]; + RwReg DACC_TNPR; /**< \brief (Dacc Offset: 0x118) Transmit Next Pointer Register */ + RwReg DACC_TNCR; /**< \brief (Dacc Offset: 0x11C) Transmit Next Counter Register */ + WoReg DACC_PTCR; /**< \brief (Dacc Offset: 0x120) Transfer Control Register */ + RoReg DACC_PTSR; /**< \brief (Dacc Offset: 0x124) Transfer Status Register */ +} Dacc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- DACC_CR : (DACC Offset: 0x00) Control Register -------- */ +#define DACC_CR_SWRST (0x1u << 0) /**< \brief (DACC_CR) Software Reset */ +/* -------- DACC_MR : (DACC Offset: 0x04) Mode Register -------- */ +#define DACC_MR_TRGEN (0x1u << 0) /**< \brief (DACC_MR) Trigger Enable */ +#define DACC_MR_TRGEN_DIS (0x0u << 0) /**< \brief (DACC_MR) External trigger mode disabled. DACC in free running mode. */ +#define DACC_MR_TRGEN_EN (0x1u << 0) /**< \brief (DACC_MR) External trigger mode enabled. */ +#define DACC_MR_TRGSEL_Pos 1 +#define DACC_MR_TRGSEL_Msk (0x7u << DACC_MR_TRGSEL_Pos) /**< \brief (DACC_MR) Trigger Selection */ +#define DACC_MR_TRGSEL(value) ((DACC_MR_TRGSEL_Msk & ((value) << DACC_MR_TRGSEL_Pos))) +#define DACC_MR_WORD (0x1u << 4) /**< \brief (DACC_MR) Word Transfer */ +#define DACC_MR_WORD_HALF (0x0u << 4) /**< \brief (DACC_MR) Half-Word transfer */ +#define DACC_MR_WORD_WORD (0x1u << 4) /**< \brief (DACC_MR) Word Transfer */ +#define DACC_MR_SLEEP (0x1u << 5) /**< \brief (DACC_MR) Sleep Mode */ +#define DACC_MR_FASTWKUP (0x1u << 6) /**< \brief (DACC_MR) Fast Wake up Mode */ +#define DACC_MR_REFRESH_Pos 8 +#define DACC_MR_REFRESH_Msk (0xffu << DACC_MR_REFRESH_Pos) /**< \brief (DACC_MR) Refresh Period */ +#define DACC_MR_REFRESH(value) ((DACC_MR_REFRESH_Msk & ((value) << DACC_MR_REFRESH_Pos))) +#define DACC_MR_USER_SEL_Pos 16 +#define DACC_MR_USER_SEL_Msk (0x3u << DACC_MR_USER_SEL_Pos) /**< \brief (DACC_MR) User Channel Selection */ +#define DACC_MR_USER_SEL_CHANNEL0 (0x0u << 16) /**< \brief (DACC_MR) Channel 0 */ +#define DACC_MR_USER_SEL_CHANNEL1 (0x1u << 16) /**< \brief (DACC_MR) Channel 1 */ +#define DACC_MR_TAG (0x1u << 20) /**< \brief (DACC_MR) Tag Selection Mode */ +#define DACC_MR_TAG_DIS (0x0u << 20) /**< \brief (DACC_MR) Tag selection mode disabled. Using USER_SEL to select the channel for the conversion. */ +#define DACC_MR_TAG_EN (0x1u << 20) /**< \brief (DACC_MR) Tag selection mode enabled */ +#define DACC_MR_MAXS (0x1u << 21) /**< \brief (DACC_MR) Max Speed Mode */ +#define DACC_MR_MAXS_NORMAL (0x0u << 21) /**< \brief (DACC_MR) Normal Mode */ +#define DACC_MR_MAXS_MAXIMUM (0x1u << 21) /**< \brief (DACC_MR) Max Speed Mode enabled */ +#define DACC_MR_CLKDIV (0x1u << 22) /**< \brief (DACC_MR) Clock Divider */ +#define DACC_MR_CLKDIV_DIV_2 (0x0u << 22) /**< \brief (DACC_MR) The DAC clock is MCK divided by 2 */ +#define DACC_MR_CLKDIV_DIV_4 (0x1u << 22) /**< \brief (DACC_MR) The DAC clock is MCK divided by 4 (to be used when MCK frequency is above 100MHz) */ +#define DACC_MR_STARTUP_Pos 24 +#define DACC_MR_STARTUP_Msk (0x3fu << DACC_MR_STARTUP_Pos) /**< \brief (DACC_MR) Startup Time Selection */ +#define DACC_MR_STARTUP_0 (0x0u << 24) /**< \brief (DACC_MR) 0 periods of DACClock */ +#define DACC_MR_STARTUP_8 (0x1u << 24) /**< \brief (DACC_MR) 8 periods of DACClock */ +#define DACC_MR_STARTUP_16 (0x2u << 24) /**< \brief (DACC_MR) 16 periods of DACClock */ +#define DACC_MR_STARTUP_24 (0x3u << 24) /**< \brief (DACC_MR) 24 periods of DACClock */ +#define DACC_MR_STARTUP_64 (0x4u << 24) /**< \brief (DACC_MR) 64 periods of DACClock */ +#define DACC_MR_STARTUP_80 (0x5u << 24) /**< \brief (DACC_MR) 80 periods of DACClock */ +#define DACC_MR_STARTUP_96 (0x6u << 24) /**< \brief (DACC_MR) 96 periods of DACClock */ +#define DACC_MR_STARTUP_112 (0x7u << 24) /**< \brief (DACC_MR) 112 periods of DACClock */ +#define DACC_MR_STARTUP_512 (0x8u << 24) /**< \brief (DACC_MR) 512 periods of DACClock */ +#define DACC_MR_STARTUP_576 (0x9u << 24) /**< \brief (DACC_MR) 576 periods of DACClock */ +#define DACC_MR_STARTUP_640 (0xAu << 24) /**< \brief (DACC_MR) 640 periods of DACClock */ +#define DACC_MR_STARTUP_704 (0xBu << 24) /**< \brief (DACC_MR) 704 periods of DACClock */ +#define DACC_MR_STARTUP_768 (0xCu << 24) /**< \brief (DACC_MR) 768 periods of DACClock */ +#define DACC_MR_STARTUP_832 (0xDu << 24) /**< \brief (DACC_MR) 832 periods of DACClock */ +#define DACC_MR_STARTUP_896 (0xEu << 24) /**< \brief (DACC_MR) 896 periods of DACClock */ +#define DACC_MR_STARTUP_960 (0xFu << 24) /**< \brief (DACC_MR) 960 periods of DACClock */ +#define DACC_MR_STARTUP_1024 (0x10u << 24) /**< \brief (DACC_MR) 1024 periods of DACClock */ +#define DACC_MR_STARTUP_1088 (0x11u << 24) /**< \brief (DACC_MR) 1088 periods of DACClock */ +#define DACC_MR_STARTUP_1152 (0x12u << 24) /**< \brief (DACC_MR) 1152 periods of DACClock */ +#define DACC_MR_STARTUP_1216 (0x13u << 24) /**< \brief (DACC_MR) 1216 periods of DACClock */ +#define DACC_MR_STARTUP_1280 (0x14u << 24) /**< \brief (DACC_MR) 1280 periods of DACClock */ +#define DACC_MR_STARTUP_1344 (0x15u << 24) /**< \brief (DACC_MR) 1344 periods of DACClock */ +#define DACC_MR_STARTUP_1408 (0x16u << 24) /**< \brief (DACC_MR) 1408 periods of DACClock */ +#define DACC_MR_STARTUP_1472 (0x17u << 24) /**< \brief (DACC_MR) 1472 periods of DACClock */ +#define DACC_MR_STARTUP_1536 (0x18u << 24) /**< \brief (DACC_MR) 1536 periods of DACClock */ +#define DACC_MR_STARTUP_1600 (0x19u << 24) /**< \brief (DACC_MR) 1600 periods of DACClock */ +#define DACC_MR_STARTUP_1664 (0x1Au << 24) /**< \brief (DACC_MR) 1664 periods of DACClock */ +#define DACC_MR_STARTUP_1728 (0x1Bu << 24) /**< \brief (DACC_MR) 1728 periods of DACClock */ +#define DACC_MR_STARTUP_1792 (0x1Cu << 24) /**< \brief (DACC_MR) 1792 periods of DACClock */ +#define DACC_MR_STARTUP_1856 (0x1Du << 24) /**< \brief (DACC_MR) 1856 periods of DACClock */ +#define DACC_MR_STARTUP_1920 (0x1Eu << 24) /**< \brief (DACC_MR) 1920 periods of DACClock */ +#define DACC_MR_STARTUP_1984 (0x1Fu << 24) /**< \brief (DACC_MR) 1984 periods of DACClock */ +/* -------- DACC_CHER : (DACC Offset: 0x10) Channel Enable Register -------- */ +#define DACC_CHER_CH0 (0x1u << 0) /**< \brief (DACC_CHER) Channel 0 Enable */ +#define DACC_CHER_CH1 (0x1u << 1) /**< \brief (DACC_CHER) Channel 1 Enable */ +/* -------- DACC_CHDR : (DACC Offset: 0x14) Channel Disable Register -------- */ +#define DACC_CHDR_CH0 (0x1u << 0) /**< \brief (DACC_CHDR) Channel 0 Disable */ +#define DACC_CHDR_CH1 (0x1u << 1) /**< \brief (DACC_CHDR) Channel 1 Disable */ +/* -------- DACC_CHSR : (DACC Offset: 0x18) Channel Status Register -------- */ +#define DACC_CHSR_CH0 (0x1u << 0) /**< \brief (DACC_CHSR) Channel 0 Status */ +#define DACC_CHSR_CH1 (0x1u << 1) /**< \brief (DACC_CHSR) Channel 1 Status */ +/* -------- DACC_CDR : (DACC Offset: 0x20) Conversion Data Register -------- */ +#define DACC_CDR_DATA_Pos 0 +#define DACC_CDR_DATA_Msk (0xffffffffu << DACC_CDR_DATA_Pos) /**< \brief (DACC_CDR) Data to Convert */ +#define DACC_CDR_DATA(value) ((DACC_CDR_DATA_Msk & ((value) << DACC_CDR_DATA_Pos))) +/* -------- DACC_IER : (DACC Offset: 0x24) Interrupt Enable Register -------- */ +#define DACC_IER_TXRDY (0x1u << 0) /**< \brief (DACC_IER) Transmit Ready Interrupt Enable */ +#define DACC_IER_EOC (0x1u << 1) /**< \brief (DACC_IER) End of Conversion Interrupt Enable */ +#define DACC_IER_ENDTX (0x1u << 2) /**< \brief (DACC_IER) End of Transmit Buffer Interrupt Enable */ +#define DACC_IER_TXBUFE (0x1u << 3) /**< \brief (DACC_IER) Transmit Buffer Empty Interrupt Enable */ +/* -------- DACC_IDR : (DACC Offset: 0x28) Interrupt Disable Register -------- */ +#define DACC_IDR_TXRDY (0x1u << 0) /**< \brief (DACC_IDR) Transmit Ready Interrupt Disable. */ +#define DACC_IDR_EOC (0x1u << 1) /**< \brief (DACC_IDR) End of Conversion Interrupt Disable */ +#define DACC_IDR_ENDTX (0x1u << 2) /**< \brief (DACC_IDR) End of Transmit Buffer Interrupt Disable */ +#define DACC_IDR_TXBUFE (0x1u << 3) /**< \brief (DACC_IDR) Transmit Buffer Empty Interrupt Disable */ +/* -------- DACC_IMR : (DACC Offset: 0x2C) Interrupt Mask Register -------- */ +#define DACC_IMR_TXRDY (0x1u << 0) /**< \brief (DACC_IMR) Transmit Ready Interrupt Mask */ +#define DACC_IMR_EOC (0x1u << 1) /**< \brief (DACC_IMR) End of Conversion Interrupt Mask */ +#define DACC_IMR_ENDTX (0x1u << 2) /**< \brief (DACC_IMR) End of Transmit Buffer Interrupt Mask */ +#define DACC_IMR_TXBUFE (0x1u << 3) /**< \brief (DACC_IMR) Transmit Buffer Empty Interrupt Mask */ +/* -------- DACC_ISR : (DACC Offset: 0x30) Interrupt Status Register -------- */ +#define DACC_ISR_TXRDY (0x1u << 0) /**< \brief (DACC_ISR) Transmit Ready Interrupt Flag */ +#define DACC_ISR_EOC (0x1u << 1) /**< \brief (DACC_ISR) End of Conversion Interrupt Flag */ +#define DACC_ISR_ENDTX (0x1u << 2) /**< \brief (DACC_ISR) End of DMA Interrupt Flag */ +#define DACC_ISR_TXBUFE (0x1u << 3) /**< \brief (DACC_ISR) Transmit Buffer Empty */ +/* -------- DACC_ACR : (DACC Offset: 0x94) Analog Current Register -------- */ +#define DACC_ACR_IBCTLCH0_Pos 0 +#define DACC_ACR_IBCTLCH0_Msk (0x3u << DACC_ACR_IBCTLCH0_Pos) /**< \brief (DACC_ACR) Analog Output Current Control */ +#define DACC_ACR_IBCTLCH0(value) ((DACC_ACR_IBCTLCH0_Msk & ((value) << DACC_ACR_IBCTLCH0_Pos))) +#define DACC_ACR_IBCTLCH1_Pos 2 +#define DACC_ACR_IBCTLCH1_Msk (0x3u << DACC_ACR_IBCTLCH1_Pos) /**< \brief (DACC_ACR) Analog Output Current Control */ +#define DACC_ACR_IBCTLCH1(value) ((DACC_ACR_IBCTLCH1_Msk & ((value) << DACC_ACR_IBCTLCH1_Pos))) +#define DACC_ACR_IBCTLDACCORE_Pos 8 +#define DACC_ACR_IBCTLDACCORE_Msk (0x3u << DACC_ACR_IBCTLDACCORE_Pos) /**< \brief (DACC_ACR) Bias Current Control for DAC Core */ +#define DACC_ACR_IBCTLDACCORE(value) ((DACC_ACR_IBCTLDACCORE_Msk & ((value) << DACC_ACR_IBCTLDACCORE_Pos))) +/* -------- DACC_WPMR : (DACC Offset: 0xE4) Write Protect Mode register -------- */ +#define DACC_WPMR_WPEN (0x1u << 0) /**< \brief (DACC_WPMR) Write Protect Enable */ +#define DACC_WPMR_WPKEY_Pos 8 +#define DACC_WPMR_WPKEY_Msk (0xffffffu << DACC_WPMR_WPKEY_Pos) /**< \brief (DACC_WPMR) Write Protect KEY */ +#define DACC_WPMR_WPKEY(value) ((DACC_WPMR_WPKEY_Msk & ((value) << DACC_WPMR_WPKEY_Pos))) +/* -------- DACC_WPSR : (DACC Offset: 0xE8) Write Protect Status register -------- */ +#define DACC_WPSR_WPROTERR (0x1u << 0) /**< \brief (DACC_WPSR) Write protection error */ +#define DACC_WPSR_WPROTADDR_Pos 8 +#define DACC_WPSR_WPROTADDR_Msk (0xffu << DACC_WPSR_WPROTADDR_Pos) /**< \brief (DACC_WPSR) Write protection error address */ +/* -------- DACC_TPR : (DACC Offset: 0x108) Transmit Pointer Register -------- */ +#define DACC_TPR_TXPTR_Pos 0 +#define DACC_TPR_TXPTR_Msk (0xffffffffu << DACC_TPR_TXPTR_Pos) /**< \brief (DACC_TPR) Transmit Counter Register */ +#define DACC_TPR_TXPTR(value) ((DACC_TPR_TXPTR_Msk & ((value) << DACC_TPR_TXPTR_Pos))) +/* -------- DACC_TCR : (DACC Offset: 0x10C) Transmit Counter Register -------- */ +#define DACC_TCR_TXCTR_Pos 0 +#define DACC_TCR_TXCTR_Msk (0xffffu << DACC_TCR_TXCTR_Pos) /**< \brief (DACC_TCR) Transmit Counter Register */ +#define DACC_TCR_TXCTR(value) ((DACC_TCR_TXCTR_Msk & ((value) << DACC_TCR_TXCTR_Pos))) +/* -------- DACC_TNPR : (DACC Offset: 0x118) Transmit Next Pointer Register -------- */ +#define DACC_TNPR_TXNPTR_Pos 0 +#define DACC_TNPR_TXNPTR_Msk (0xffffffffu << DACC_TNPR_TXNPTR_Pos) /**< \brief (DACC_TNPR) Transmit Next Pointer */ +#define DACC_TNPR_TXNPTR(value) ((DACC_TNPR_TXNPTR_Msk & ((value) << DACC_TNPR_TXNPTR_Pos))) +/* -------- DACC_TNCR : (DACC Offset: 0x11C) Transmit Next Counter Register -------- */ +#define DACC_TNCR_TXNCTR_Pos 0 +#define DACC_TNCR_TXNCTR_Msk (0xffffu << DACC_TNCR_TXNCTR_Pos) /**< \brief (DACC_TNCR) Transmit Counter Next */ +#define DACC_TNCR_TXNCTR(value) ((DACC_TNCR_TXNCTR_Msk & ((value) << DACC_TNCR_TXNCTR_Pos))) +/* -------- DACC_PTCR : (DACC Offset: 0x120) Transfer Control Register -------- */ +#define DACC_PTCR_RXTEN (0x1u << 0) /**< \brief (DACC_PTCR) Receiver Transfer Enable */ +#define DACC_PTCR_RXTDIS (0x1u << 1) /**< \brief (DACC_PTCR) Receiver Transfer Disable */ +#define DACC_PTCR_TXTEN (0x1u << 8) /**< \brief (DACC_PTCR) Transmitter Transfer Enable */ +#define DACC_PTCR_TXTDIS (0x1u << 9) /**< \brief (DACC_PTCR) Transmitter Transfer Disable */ +/* -------- DACC_PTSR : (DACC Offset: 0x124) Transfer Status Register -------- */ +#define DACC_PTSR_RXTEN (0x1u << 0) /**< \brief (DACC_PTSR) Receiver Transfer Enable */ +#define DACC_PTSR_TXTEN (0x1u << 8) /**< \brief (DACC_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM4E_DACC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/dmac.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/dmac.h new file mode 100644 index 000000000..e507ce609 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/dmac.h @@ -0,0 +1,305 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_DMAC_COMPONENT_ +#define _SAM4E_DMAC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR DMA Controller */ +/* ============================================================================= */ +/** \addtogroup SAM4E_DMAC DMA Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief DmacCh_num hardware registers */ +typedef struct { + RwReg DMAC_SADDR; /**< \brief (DmacCh_num Offset: 0x0) DMAC Channel Source Address Register */ + RwReg DMAC_DADDR; /**< \brief (DmacCh_num Offset: 0x4) DMAC Channel Destination Address Register */ + RwReg DMAC_DSCR; /**< \brief (DmacCh_num Offset: 0x8) DMAC Channel Descriptor Address Register */ + RwReg DMAC_CTRLA; /**< \brief (DmacCh_num Offset: 0xC) DMAC Channel Control A Register */ + RwReg DMAC_CTRLB; /**< \brief (DmacCh_num Offset: 0x10) DMAC Channel Control B Register */ + RwReg DMAC_CFG; /**< \brief (DmacCh_num Offset: 0x14) DMAC Channel Configuration Register */ + RoReg Reserved1[4]; +} DmacCh_num; +/** \brief Dmac hardware registers */ +#define DMACCH_NUM_NUMBER 4 +typedef struct { + RwReg DMAC_GCFG; /**< \brief (Dmac Offset: 0x000) DMAC Global Configuration Register */ + RwReg DMAC_EN; /**< \brief (Dmac Offset: 0x004) DMAC Enable Register */ + RwReg DMAC_SREQ; /**< \brief (Dmac Offset: 0x008) DMAC Software Single Request Register */ + RwReg DMAC_CREQ; /**< \brief (Dmac Offset: 0x00C) DMAC Software Chunk Transfer Request Register */ + RwReg DMAC_LAST; /**< \brief (Dmac Offset: 0x010) DMAC Software Last Transfer Flag Register */ + RoReg Reserved1[1]; + WoReg DMAC_EBCIER; /**< \brief (Dmac Offset: 0x018) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Enable register. */ + WoReg DMAC_EBCIDR; /**< \brief (Dmac Offset: 0x01C) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Disable register. */ + RoReg DMAC_EBCIMR; /**< \brief (Dmac Offset: 0x020) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Mask Register. */ + RoReg DMAC_EBCISR; /**< \brief (Dmac Offset: 0x024) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Status Register. */ + WoReg DMAC_CHER; /**< \brief (Dmac Offset: 0x028) DMAC Channel Handler Enable Register */ + WoReg DMAC_CHDR; /**< \brief (Dmac Offset: 0x02C) DMAC Channel Handler Disable Register */ + RoReg DMAC_CHSR; /**< \brief (Dmac Offset: 0x030) DMAC Channel Handler Status Register */ + RoReg Reserved2[2]; + DmacCh_num DMAC_CH_NUM[DMACCH_NUM_NUMBER]; /**< \brief (Dmac Offset: 0x3C) ch_num = 0 .. 3 */ + RoReg Reserved3[66]; + RwReg DMAC_WPMR; /**< \brief (Dmac Offset: 0x1E4) DMAC Write Protect Mode Register */ + RoReg DMAC_WPSR; /**< \brief (Dmac Offset: 0x1E8) DMAC Write Protect Status Register */ +} Dmac; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- DMAC_GCFG : (DMAC Offset: 0x000) DMAC Global Configuration Register -------- */ +#define DMAC_GCFG_ARB_CFG (0x1u << 4) /**< \brief (DMAC_GCFG) Arbiter Configuration */ +#define DMAC_GCFG_ARB_CFG_FIXED (0x0u << 4) /**< \brief (DMAC_GCFG) Fixed priority arbiter. */ +#define DMAC_GCFG_ARB_CFG_ROUND_ROBIN (0x1u << 4) /**< \brief (DMAC_GCFG) Modified round robin arbiter. */ +/* -------- DMAC_EN : (DMAC Offset: 0x004) DMAC Enable Register -------- */ +#define DMAC_EN_ENABLE (0x1u << 0) /**< \brief (DMAC_EN) General Enable of DMA */ +/* -------- DMAC_SREQ : (DMAC Offset: 0x008) DMAC Software Single Request Register -------- */ +#define DMAC_SREQ_SSREQ0 (0x1u << 0) /**< \brief (DMAC_SREQ) Source Request */ +#define DMAC_SREQ_DSREQ0 (0x1u << 1) /**< \brief (DMAC_SREQ) Destination Request */ +#define DMAC_SREQ_SSREQ1 (0x1u << 2) /**< \brief (DMAC_SREQ) Source Request */ +#define DMAC_SREQ_DSREQ1 (0x1u << 3) /**< \brief (DMAC_SREQ) Destination Request */ +#define DMAC_SREQ_SSREQ2 (0x1u << 4) /**< \brief (DMAC_SREQ) Source Request */ +#define DMAC_SREQ_DSREQ2 (0x1u << 5) /**< \brief (DMAC_SREQ) Destination Request */ +#define DMAC_SREQ_SSREQ3 (0x1u << 6) /**< \brief (DMAC_SREQ) Source Request */ +#define DMAC_SREQ_DSREQ3 (0x1u << 7) /**< \brief (DMAC_SREQ) Destination Request */ +/* -------- DMAC_CREQ : (DMAC Offset: 0x00C) DMAC Software Chunk Transfer Request Register -------- */ +#define DMAC_CREQ_SCREQ0 (0x1u << 0) /**< \brief (DMAC_CREQ) Source Chunk Request */ +#define DMAC_CREQ_DCREQ0 (0x1u << 1) /**< \brief (DMAC_CREQ) Destination Chunk Request */ +#define DMAC_CREQ_SCREQ1 (0x1u << 2) /**< \brief (DMAC_CREQ) Source Chunk Request */ +#define DMAC_CREQ_DCREQ1 (0x1u << 3) /**< \brief (DMAC_CREQ) Destination Chunk Request */ +#define DMAC_CREQ_SCREQ2 (0x1u << 4) /**< \brief (DMAC_CREQ) Source Chunk Request */ +#define DMAC_CREQ_DCREQ2 (0x1u << 5) /**< \brief (DMAC_CREQ) Destination Chunk Request */ +#define DMAC_CREQ_SCREQ3 (0x1u << 6) /**< \brief (DMAC_CREQ) Source Chunk Request */ +#define DMAC_CREQ_DCREQ3 (0x1u << 7) /**< \brief (DMAC_CREQ) Destination Chunk Request */ +/* -------- DMAC_LAST : (DMAC Offset: 0x010) DMAC Software Last Transfer Flag Register -------- */ +#define DMAC_LAST_SLAST0 (0x1u << 0) /**< \brief (DMAC_LAST) Source Last */ +#define DMAC_LAST_DLAST0 (0x1u << 1) /**< \brief (DMAC_LAST) Destination Last */ +#define DMAC_LAST_SLAST1 (0x1u << 2) /**< \brief (DMAC_LAST) Source Last */ +#define DMAC_LAST_DLAST1 (0x1u << 3) /**< \brief (DMAC_LAST) Destination Last */ +#define DMAC_LAST_SLAST2 (0x1u << 4) /**< \brief (DMAC_LAST) Source Last */ +#define DMAC_LAST_DLAST2 (0x1u << 5) /**< \brief (DMAC_LAST) Destination Last */ +#define DMAC_LAST_SLAST3 (0x1u << 6) /**< \brief (DMAC_LAST) Source Last */ +#define DMAC_LAST_DLAST3 (0x1u << 7) /**< \brief (DMAC_LAST) Destination Last */ +/* -------- DMAC_EBCIER : (DMAC Offset: 0x018) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Enable register. -------- */ +#define DMAC_EBCIER_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCIER) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIER_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCIER) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIER_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCIER) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIER_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCIER) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIER_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCIER) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIER_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCIER) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIER_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCIER) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIER_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCIER) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIER_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCIER) Access Error [3:0] */ +#define DMAC_EBCIER_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCIER) Access Error [3:0] */ +#define DMAC_EBCIER_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCIER) Access Error [3:0] */ +#define DMAC_EBCIER_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCIER) Access Error [3:0] */ +/* -------- DMAC_EBCIDR : (DMAC Offset: 0x01C) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Disable register. -------- */ +#define DMAC_EBCIDR_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCIDR) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIDR_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCIDR) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIDR_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCIDR) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIDR_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCIDR) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIDR_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCIDR) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIDR_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCIDR) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIDR_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCIDR) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIDR_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCIDR) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIDR_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCIDR) Access Error [3:0] */ +#define DMAC_EBCIDR_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCIDR) Access Error [3:0] */ +#define DMAC_EBCIDR_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCIDR) Access Error [3:0] */ +#define DMAC_EBCIDR_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCIDR) Access Error [3:0] */ +/* -------- DMAC_EBCIMR : (DMAC Offset: 0x020) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Mask Register. -------- */ +#define DMAC_EBCIMR_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCIMR) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIMR_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCIMR) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIMR_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCIMR) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIMR_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCIMR) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIMR_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCIMR) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIMR_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCIMR) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIMR_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCIMR) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIMR_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCIMR) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCIMR_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCIMR) Access Error [3:0] */ +#define DMAC_EBCIMR_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCIMR) Access Error [3:0] */ +#define DMAC_EBCIMR_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCIMR) Access Error [3:0] */ +#define DMAC_EBCIMR_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCIMR) Access Error [3:0] */ +/* -------- DMAC_EBCISR : (DMAC Offset: 0x024) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Status Register. -------- */ +#define DMAC_EBCISR_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCISR) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCISR_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCISR) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCISR_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCISR) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCISR_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCISR) Buffer Transfer Completed [3:0] */ +#define DMAC_EBCISR_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCISR) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCISR_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCISR) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCISR_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCISR) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCISR_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCISR) Chained Buffer Transfer Completed [3:0] */ +#define DMAC_EBCISR_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCISR) Access Error [3:0] */ +#define DMAC_EBCISR_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCISR) Access Error [3:0] */ +#define DMAC_EBCISR_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCISR) Access Error [3:0] */ +#define DMAC_EBCISR_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCISR) Access Error [3:0] */ +/* -------- DMAC_CHER : (DMAC Offset: 0x028) DMAC Channel Handler Enable Register -------- */ +#define DMAC_CHER_ENA0 (0x1u << 0) /**< \brief (DMAC_CHER) Enable [3:0] */ +#define DMAC_CHER_ENA1 (0x1u << 1) /**< \brief (DMAC_CHER) Enable [3:0] */ +#define DMAC_CHER_ENA2 (0x1u << 2) /**< \brief (DMAC_CHER) Enable [3:0] */ +#define DMAC_CHER_ENA3 (0x1u << 3) /**< \brief (DMAC_CHER) Enable [3:0] */ +#define DMAC_CHER_SUSP0 (0x1u << 8) /**< \brief (DMAC_CHER) Suspend [3:0] */ +#define DMAC_CHER_SUSP1 (0x1u << 9) /**< \brief (DMAC_CHER) Suspend [3:0] */ +#define DMAC_CHER_SUSP2 (0x1u << 10) /**< \brief (DMAC_CHER) Suspend [3:0] */ +#define DMAC_CHER_SUSP3 (0x1u << 11) /**< \brief (DMAC_CHER) Suspend [3:0] */ +#define DMAC_CHER_KEEP0 (0x1u << 24) /**< \brief (DMAC_CHER) Keep on [3:0] */ +#define DMAC_CHER_KEEP1 (0x1u << 25) /**< \brief (DMAC_CHER) Keep on [3:0] */ +#define DMAC_CHER_KEEP2 (0x1u << 26) /**< \brief (DMAC_CHER) Keep on [3:0] */ +#define DMAC_CHER_KEEP3 (0x1u << 27) /**< \brief (DMAC_CHER) Keep on [3:0] */ +/* -------- DMAC_CHDR : (DMAC Offset: 0x02C) DMAC Channel Handler Disable Register -------- */ +#define DMAC_CHDR_DIS0 (0x1u << 0) /**< \brief (DMAC_CHDR) Disable [3:0] */ +#define DMAC_CHDR_DIS1 (0x1u << 1) /**< \brief (DMAC_CHDR) Disable [3:0] */ +#define DMAC_CHDR_DIS2 (0x1u << 2) /**< \brief (DMAC_CHDR) Disable [3:0] */ +#define DMAC_CHDR_DIS3 (0x1u << 3) /**< \brief (DMAC_CHDR) Disable [3:0] */ +#define DMAC_CHDR_RES0 (0x1u << 8) /**< \brief (DMAC_CHDR) Resume [3:0] */ +#define DMAC_CHDR_RES1 (0x1u << 9) /**< \brief (DMAC_CHDR) Resume [3:0] */ +#define DMAC_CHDR_RES2 (0x1u << 10) /**< \brief (DMAC_CHDR) Resume [3:0] */ +#define DMAC_CHDR_RES3 (0x1u << 11) /**< \brief (DMAC_CHDR) Resume [3:0] */ +/* -------- DMAC_CHSR : (DMAC Offset: 0x030) DMAC Channel Handler Status Register -------- */ +#define DMAC_CHSR_ENA0 (0x1u << 0) /**< \brief (DMAC_CHSR) Enable [3:0] */ +#define DMAC_CHSR_ENA1 (0x1u << 1) /**< \brief (DMAC_CHSR) Enable [3:0] */ +#define DMAC_CHSR_ENA2 (0x1u << 2) /**< \brief (DMAC_CHSR) Enable [3:0] */ +#define DMAC_CHSR_ENA3 (0x1u << 3) /**< \brief (DMAC_CHSR) Enable [3:0] */ +#define DMAC_CHSR_SUSP0 (0x1u << 8) /**< \brief (DMAC_CHSR) Suspend [3:0] */ +#define DMAC_CHSR_SUSP1 (0x1u << 9) /**< \brief (DMAC_CHSR) Suspend [3:0] */ +#define DMAC_CHSR_SUSP2 (0x1u << 10) /**< \brief (DMAC_CHSR) Suspend [3:0] */ +#define DMAC_CHSR_SUSP3 (0x1u << 11) /**< \brief (DMAC_CHSR) Suspend [3:0] */ +#define DMAC_CHSR_EMPT0 (0x1u << 16) /**< \brief (DMAC_CHSR) Empty [3:0] */ +#define DMAC_CHSR_EMPT1 (0x1u << 17) /**< \brief (DMAC_CHSR) Empty [3:0] */ +#define DMAC_CHSR_EMPT2 (0x1u << 18) /**< \brief (DMAC_CHSR) Empty [3:0] */ +#define DMAC_CHSR_EMPT3 (0x1u << 19) /**< \brief (DMAC_CHSR) Empty [3:0] */ +#define DMAC_CHSR_STAL0 (0x1u << 24) /**< \brief (DMAC_CHSR) Stalled [3:0] */ +#define DMAC_CHSR_STAL1 (0x1u << 25) /**< \brief (DMAC_CHSR) Stalled [3:0] */ +#define DMAC_CHSR_STAL2 (0x1u << 26) /**< \brief (DMAC_CHSR) Stalled [3:0] */ +#define DMAC_CHSR_STAL3 (0x1u << 27) /**< \brief (DMAC_CHSR) Stalled [3:0] */ +/* -------- DMAC_SADDR : (DMAC Offset: N/A) DMAC Channel Source Address Register -------- */ +#define DMAC_SADDR_SADDR_Pos 0 +#define DMAC_SADDR_SADDR_Msk (0xffffffffu << DMAC_SADDR_SADDR_Pos) /**< \brief (DMAC_SADDR) Channel x Source Address */ +#define DMAC_SADDR_SADDR(value) ((DMAC_SADDR_SADDR_Msk & ((value) << DMAC_SADDR_SADDR_Pos))) +/* -------- DMAC_DADDR : (DMAC Offset: N/A) DMAC Channel Destination Address Register -------- */ +#define DMAC_DADDR_DADDR_Pos 0 +#define DMAC_DADDR_DADDR_Msk (0xffffffffu << DMAC_DADDR_DADDR_Pos) /**< \brief (DMAC_DADDR) Channel x Destination Address */ +#define DMAC_DADDR_DADDR(value) ((DMAC_DADDR_DADDR_Msk & ((value) << DMAC_DADDR_DADDR_Pos))) +/* -------- DMAC_DSCR : (DMAC Offset: N/A) DMAC Channel Descriptor Address Register -------- */ +#define DMAC_DSCR_DSCR_Pos 2 +#define DMAC_DSCR_DSCR_Msk (0x3fffffffu << DMAC_DSCR_DSCR_Pos) /**< \brief (DMAC_DSCR) Buffer Transfer Descriptor Address */ +#define DMAC_DSCR_DSCR(value) ((DMAC_DSCR_DSCR_Msk & ((value) << DMAC_DSCR_DSCR_Pos))) +/* -------- DMAC_CTRLA : (DMAC Offset: N/A) DMAC Channel Control A Register -------- */ +#define DMAC_CTRLA_BTSIZE_Pos 0 +#define DMAC_CTRLA_BTSIZE_Msk (0xffffu << DMAC_CTRLA_BTSIZE_Pos) /**< \brief (DMAC_CTRLA) Buffer Transfer Size */ +#define DMAC_CTRLA_BTSIZE(value) ((DMAC_CTRLA_BTSIZE_Msk & ((value) << DMAC_CTRLA_BTSIZE_Pos))) +#define DMAC_CTRLA_SRC_WIDTH_Pos 24 +#define DMAC_CTRLA_SRC_WIDTH_Msk (0x3u << DMAC_CTRLA_SRC_WIDTH_Pos) /**< \brief (DMAC_CTRLA) Transfer Width for the Source */ +#define DMAC_CTRLA_SRC_WIDTH_BYTE (0x0u << 24) /**< \brief (DMAC_CTRLA) the transfer size is set to 8-bit width */ +#define DMAC_CTRLA_SRC_WIDTH_HALF_WORD (0x1u << 24) /**< \brief (DMAC_CTRLA) the transfer size is set to 16-bit width */ +#define DMAC_CTRLA_SRC_WIDTH_WORD (0x2u << 24) /**< \brief (DMAC_CTRLA) the transfer size is set to 32-bit width */ +#define DMAC_CTRLA_DST_WIDTH_Pos 28 +#define DMAC_CTRLA_DST_WIDTH_Msk (0x3u << DMAC_CTRLA_DST_WIDTH_Pos) /**< \brief (DMAC_CTRLA) Transfer Width for the Destination */ +#define DMAC_CTRLA_DST_WIDTH_BYTE (0x0u << 28) /**< \brief (DMAC_CTRLA) the transfer size is set to 8-bit width */ +#define DMAC_CTRLA_DST_WIDTH_HALF_WORD (0x1u << 28) /**< \brief (DMAC_CTRLA) the transfer size is set to 16-bit width */ +#define DMAC_CTRLA_DST_WIDTH_WORD (0x2u << 28) /**< \brief (DMAC_CTRLA) the transfer size is set to 32-bit width */ +#define DMAC_CTRLA_DONE (0x1u << 31) /**< \brief (DMAC_CTRLA) Current Descriptor Stop Command and Transfer Completed Memory Indicator */ +/* -------- DMAC_CTRLB : (DMAC Offset: N/A) DMAC Channel Control B Register -------- */ +#define DMAC_CTRLB_SRC_DSCR (0x1u << 16) /**< \brief (DMAC_CTRLB) Source Address Descriptor */ +#define DMAC_CTRLB_SRC_DSCR_FETCH_FROM_MEM (0x0u << 16) /**< \brief (DMAC_CTRLB) Source address is updated when the descriptor is fetched from the memory. */ +#define DMAC_CTRLB_SRC_DSCR_FETCH_DISABLE (0x1u << 16) /**< \brief (DMAC_CTRLB) Buffer Descriptor Fetch operation is disabled for the source. */ +#define DMAC_CTRLB_DST_DSCR (0x1u << 20) /**< \brief (DMAC_CTRLB) Destination Address Descriptor */ +#define DMAC_CTRLB_DST_DSCR_FETCH_FROM_MEM (0x0u << 20) /**< \brief (DMAC_CTRLB) Destination address is updated when the descriptor is fetched from the memory. */ +#define DMAC_CTRLB_DST_DSCR_FETCH_DISABLE (0x1u << 20) /**< \brief (DMAC_CTRLB) Buffer Descriptor Fetch operation is disabled for the destination. */ +#define DMAC_CTRLB_FC_Pos 21 +#define DMAC_CTRLB_FC_Msk (0x3u << DMAC_CTRLB_FC_Pos) /**< \brief (DMAC_CTRLB) Flow Control */ +#define DMAC_CTRLB_FC_MEM2MEM_DMA_FC (0x0u << 21) /**< \brief (DMAC_CTRLB) Memory-to-Memory Transfer DMAC is flow controller */ +#define DMAC_CTRLB_FC_MEM2PER_DMA_FC (0x1u << 21) /**< \brief (DMAC_CTRLB) Memory-to-Peripheral Transfer DMAC is flow controller */ +#define DMAC_CTRLB_FC_PER2MEM_DMA_FC (0x2u << 21) /**< \brief (DMAC_CTRLB) Peripheral-to-Memory Transfer DMAC is flow controller */ +#define DMAC_CTRLB_FC_PER2PER_DMA_FC (0x3u << 21) /**< \brief (DMAC_CTRLB) Peripheral-to-Peripheral Transfer DMAC is flow controller */ +#define DMAC_CTRLB_SRC_INCR_Pos 24 +#define DMAC_CTRLB_SRC_INCR_Msk (0x3u << DMAC_CTRLB_SRC_INCR_Pos) /**< \brief (DMAC_CTRLB) Incrementing, Decrementing or Fixed Address for the Source */ +#define DMAC_CTRLB_SRC_INCR_INCREMENTING (0x0u << 24) /**< \brief (DMAC_CTRLB) The source address is incremented */ +#define DMAC_CTRLB_SRC_INCR_DECREMENTING (0x1u << 24) /**< \brief (DMAC_CTRLB) The source address is decremented */ +#define DMAC_CTRLB_SRC_INCR_FIXED (0x2u << 24) /**< \brief (DMAC_CTRLB) The source address remains unchanged */ +#define DMAC_CTRLB_DST_INCR_Pos 28 +#define DMAC_CTRLB_DST_INCR_Msk (0x3u << DMAC_CTRLB_DST_INCR_Pos) /**< \brief (DMAC_CTRLB) Incrementing, Decrementing or Fixed Address for the Destination */ +#define DMAC_CTRLB_DST_INCR_INCREMENTING (0x0u << 28) /**< \brief (DMAC_CTRLB) The destination address is incremented */ +#define DMAC_CTRLB_DST_INCR_DECREMENTING (0x1u << 28) /**< \brief (DMAC_CTRLB) The destination address is decremented */ +#define DMAC_CTRLB_DST_INCR_FIXED (0x2u << 28) /**< \brief (DMAC_CTRLB) The destination address remains unchanged */ +#define DMAC_CTRLB_IEN (0x1u << 30) /**< \brief (DMAC_CTRLB) Interrupt Enable Not */ +/* -------- DMAC_CFG : (DMAC Offset: N/A) DMAC Channel Configuration Register -------- */ +#define DMAC_CFG_SRC_PER_Pos 0 +#define DMAC_CFG_SRC_PER_Msk (0xfu << DMAC_CFG_SRC_PER_Pos) /**< \brief (DMAC_CFG) Source with Peripheral identifier */ +#define DMAC_CFG_SRC_PER(value) ((DMAC_CFG_SRC_PER_Msk & ((value) << DMAC_CFG_SRC_PER_Pos))) +#define DMAC_CFG_DST_PER_Pos 4 +#define DMAC_CFG_DST_PER_Msk (0xfu << DMAC_CFG_DST_PER_Pos) /**< \brief (DMAC_CFG) Destination with Peripheral identifier */ +#define DMAC_CFG_DST_PER(value) ((DMAC_CFG_DST_PER_Msk & ((value) << DMAC_CFG_DST_PER_Pos))) +#define DMAC_CFG_SRC_H2SEL (0x1u << 9) /**< \brief (DMAC_CFG) Software or Hardware Selection for the Source */ +#define DMAC_CFG_SRC_H2SEL_SW (0x0u << 9) /**< \brief (DMAC_CFG) Software handshaking interface is used to trigger a transfer request. */ +#define DMAC_CFG_SRC_H2SEL_HW (0x1u << 9) /**< \brief (DMAC_CFG) Hardware handshaking interface is used to trigger a transfer request. */ +#define DMAC_CFG_DST_H2SEL (0x1u << 13) /**< \brief (DMAC_CFG) Software or Hardware Selection for the Destination */ +#define DMAC_CFG_DST_H2SEL_SW (0x0u << 13) /**< \brief (DMAC_CFG) Software handshaking interface is used to trigger a transfer request. */ +#define DMAC_CFG_DST_H2SEL_HW (0x1u << 13) /**< \brief (DMAC_CFG) Hardware handshaking interface is used to trigger a transfer request. */ +#define DMAC_CFG_SOD (0x1u << 16) /**< \brief (DMAC_CFG) Stop On Done */ +#define DMAC_CFG_SOD_DISABLE (0x0u << 16) /**< \brief (DMAC_CFG) STOP ON DONE disabled, the descriptor fetch operation ignores DONE Field of CTRLA register. */ +#define DMAC_CFG_SOD_ENABLE (0x1u << 16) /**< \brief (DMAC_CFG) STOP ON DONE activated, the DMAC module is automatically disabled if DONE FIELD is set to 1. */ +#define DMAC_CFG_LOCK_IF (0x1u << 20) /**< \brief (DMAC_CFG) Interface Lock */ +#define DMAC_CFG_LOCK_IF_DISABLE (0x0u << 20) /**< \brief (DMAC_CFG) Interface Lock capability is disabled */ +#define DMAC_CFG_LOCK_IF_ENABLE (0x1u << 20) /**< \brief (DMAC_CFG) Interface Lock capability is enabled */ +#define DMAC_CFG_LOCK_B (0x1u << 21) /**< \brief (DMAC_CFG) Bus Lock */ +#define DMAC_CFG_LOCK_B_DISABLE (0x0u << 21) /**< \brief (DMAC_CFG) AHB Bus Locking capability is disabled. */ +#define DMAC_CFG_LOCK_IF_L (0x1u << 22) /**< \brief (DMAC_CFG) Master Interface Arbiter Lock */ +#define DMAC_CFG_LOCK_IF_L_CHUNK (0x0u << 22) /**< \brief (DMAC_CFG) The Master Interface Arbiter is locked by the channel x for a chunk transfer. */ +#define DMAC_CFG_LOCK_IF_L_BUFFER (0x1u << 22) /**< \brief (DMAC_CFG) The Master Interface Arbiter is locked by the channel x for a buffer transfer. */ +#define DMAC_CFG_AHB_PROT_Pos 24 +#define DMAC_CFG_AHB_PROT_Msk (0x7u << DMAC_CFG_AHB_PROT_Pos) /**< \brief (DMAC_CFG) AHB Protection */ +#define DMAC_CFG_AHB_PROT(value) ((DMAC_CFG_AHB_PROT_Msk & ((value) << DMAC_CFG_AHB_PROT_Pos))) +#define DMAC_CFG_FIFOCFG_Pos 28 +#define DMAC_CFG_FIFOCFG_Msk (0x3u << DMAC_CFG_FIFOCFG_Pos) /**< \brief (DMAC_CFG) FIFO Configuration */ +#define DMAC_CFG_FIFOCFG_ALAP_CFG (0x0u << 28) /**< \brief (DMAC_CFG) The largest defined length AHB burst is performed on the destination AHB interface. */ +#define DMAC_CFG_FIFOCFG_HALF_CFG (0x1u << 28) /**< \brief (DMAC_CFG) When half FIFO size is available/filled, a source/destination request is serviced. */ +#define DMAC_CFG_FIFOCFG_ASAP_CFG (0x2u << 28) /**< \brief (DMAC_CFG) When there is enough space/data available to perform a single AHB access, then the request is serviced. */ +/* -------- DMAC_WPMR : (DMAC Offset: 0x1E4) DMAC Write Protect Mode Register -------- */ +#define DMAC_WPMR_WPEN (0x1u << 0) /**< \brief (DMAC_WPMR) Write Protect Enable */ +#define DMAC_WPMR_WPKEY_Pos 8 +#define DMAC_WPMR_WPKEY_Msk (0xffffffu << DMAC_WPMR_WPKEY_Pos) /**< \brief (DMAC_WPMR) Write Protect KEY */ +#define DMAC_WPMR_WPKEY(value) ((DMAC_WPMR_WPKEY_Msk & ((value) << DMAC_WPMR_WPKEY_Pos))) +/* -------- DMAC_WPSR : (DMAC Offset: 0x1E8) DMAC Write Protect Status Register -------- */ +#define DMAC_WPSR_WPVS (0x1u << 0) /**< \brief (DMAC_WPSR) Write Protect Violation Status */ +#define DMAC_WPSR_WPVSRC_Pos 8 +#define DMAC_WPSR_WPVSRC_Msk (0xffffu << DMAC_WPSR_WPVSRC_Pos) /**< \brief (DMAC_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM4E_DMAC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/efc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/efc.h new file mode 100644 index 000000000..d5d039100 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/efc.h @@ -0,0 +1,110 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_EFC_COMPONENT_ +#define _SAM4E_EFC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Embedded Flash Controller */ +/* ============================================================================= */ +/** \addtogroup SAM4E_EFC Embedded Flash Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Efc hardware registers */ +typedef struct { + RwReg EEFC_FMR; /**< \brief (Efc Offset: 0x00) EEFC Flash Mode Register */ + WoReg EEFC_FCR; /**< \brief (Efc Offset: 0x04) EEFC Flash Command Register */ + RoReg EEFC_FSR; /**< \brief (Efc Offset: 0x08) EEFC Flash Status Register */ + RoReg EEFC_FRR; /**< \brief (Efc Offset: 0x0C) EEFC Flash Result Register */ +} Efc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- EEFC_FMR : (EFC Offset: 0x00) EEFC Flash Mode Register -------- */ +#define EEFC_FMR_FRDY (0x1u << 0) /**< \brief (EEFC_FMR) Ready Interrupt Enable */ +#define EEFC_FMR_FWS_Pos 8 +#define EEFC_FMR_FWS_Msk (0xfu << EEFC_FMR_FWS_Pos) /**< \brief (EEFC_FMR) Flash Wait State */ +#define EEFC_FMR_FWS(value) ((EEFC_FMR_FWS_Msk & ((value) << EEFC_FMR_FWS_Pos))) +#define EEFC_FMR_SCOD (0x1u << 16) /**< \brief (EEFC_FMR) Sequential Code Optimization Disable */ +#define EEFC_FMR_FAM (0x1u << 24) /**< \brief (EEFC_FMR) Flash Access Mode */ +#define EEFC_FMR_CLOE (0x1u << 26) /**< \brief (EEFC_FMR) Code Loops Optimization Enable */ +/* -------- EEFC_FCR : (EFC Offset: 0x04) EEFC Flash Command Register -------- */ +#define EEFC_FCR_FCMD_Pos 0 +#define EEFC_FCR_FCMD_Msk (0xffu << EEFC_FCR_FCMD_Pos) /**< \brief (EEFC_FCR) Flash Command */ +#define EEFC_FCR_FCMD_GETD (0x0u << 0) /**< \brief (EEFC_FCR) Get Flash Descriptor */ +#define EEFC_FCR_FCMD_WP (0x1u << 0) /**< \brief (EEFC_FCR) Write page */ +#define EEFC_FCR_FCMD_WPL (0x2u << 0) /**< \brief (EEFC_FCR) Write page and lock */ +#define EEFC_FCR_FCMD_EWP (0x3u << 0) /**< \brief (EEFC_FCR) Erase page and write page */ +#define EEFC_FCR_FCMD_EWPL (0x4u << 0) /**< \brief (EEFC_FCR) Erase page and write page then lock */ +#define EEFC_FCR_FCMD_EA (0x5u << 0) /**< \brief (EEFC_FCR) Erase all */ +#define EEFC_FCR_FCMD_EPA (0x7u << 0) /**< \brief (EEFC_FCR) Erase Pages */ +#define EEFC_FCR_FCMD_SLB (0x8u << 0) /**< \brief (EEFC_FCR) Set Lock Bit */ +#define EEFC_FCR_FCMD_CLB (0x9u << 0) /**< \brief (EEFC_FCR) Clear Lock Bit */ +#define EEFC_FCR_FCMD_GLB (0xAu << 0) /**< \brief (EEFC_FCR) Get Lock Bit */ +#define EEFC_FCR_FCMD_SGPB (0xBu << 0) /**< \brief (EEFC_FCR) Set GPNVM Bit */ +#define EEFC_FCR_FCMD_CGPB (0xCu << 0) /**< \brief (EEFC_FCR) Clear GPNVM Bit */ +#define EEFC_FCR_FCMD_GGPB (0xDu << 0) /**< \brief (EEFC_FCR) Get GPNVM Bit */ +#define EEFC_FCR_FCMD_STUI (0xEu << 0) /**< \brief (EEFC_FCR) Start Read Unique Identifier */ +#define EEFC_FCR_FCMD_SPUI (0xFu << 0) /**< \brief (EEFC_FCR) Stop Read Unique Identifier */ +#define EEFC_FCR_FCMD_GCALB (0x10u << 0) /**< \brief (EEFC_FCR) Get CALIB Bit */ +#define EEFC_FCR_FCMD_ES (0x11u << 0) /**< \brief (EEFC_FCR) Erase Sector */ +#define EEFC_FCR_FCMD_WUS (0x12u << 0) /**< \brief (EEFC_FCR) Write User Signature */ +#define EEFC_FCR_FCMD_EUS (0x13u << 0) /**< \brief (EEFC_FCR) Erase User Signature */ +#define EEFC_FCR_FCMD_STUS (0x14u << 0) /**< \brief (EEFC_FCR) Start Read User Signature */ +#define EEFC_FCR_FCMD_SPUS (0x15u << 0) /**< \brief (EEFC_FCR) Stop Read User Signature */ +#define EEFC_FCR_FARG_Pos 8 +#define EEFC_FCR_FARG_Msk (0xffffu << EEFC_FCR_FARG_Pos) /**< \brief (EEFC_FCR) Flash Command Argument */ +#define EEFC_FCR_FARG(value) ((EEFC_FCR_FARG_Msk & ((value) << EEFC_FCR_FARG_Pos))) +#define EEFC_FCR_FKEY_Pos 24 +#define EEFC_FCR_FKEY_Msk (0xffu << EEFC_FCR_FKEY_Pos) /**< \brief (EEFC_FCR) Flash Writing Protection Key */ +#define EEFC_FCR_FKEY_PASSWD (0x5Au << 24) /**< \brief (EEFC_FCR) The 0x5A value enables the command defined by the bits of the register. If the field is written with a different value, the write is not performed and no action is started. */ +/* -------- EEFC_FSR : (EFC Offset: 0x08) EEFC Flash Status Register -------- */ +#define EEFC_FSR_FRDY (0x1u << 0) /**< \brief (EEFC_FSR) Flash Ready Status */ +#define EEFC_FSR_FCMDE (0x1u << 1) /**< \brief (EEFC_FSR) Flash Command Error Status */ +#define EEFC_FSR_FLOCKE (0x1u << 2) /**< \brief (EEFC_FSR) Flash Lock Error Status */ +#define EEFC_FSR_FLERR (0x1u << 3) /**< \brief (EEFC_FSR) Flash Error Status */ +/* -------- EEFC_FRR : (EFC Offset: 0x0C) EEFC Flash Result Register -------- */ +#define EEFC_FRR_FVALUE_Pos 0 +#define EEFC_FRR_FVALUE_Msk (0xffffffffu << EEFC_FRR_FVALUE_Pos) /**< \brief (EEFC_FRR) Flash Result Value */ + +/*@}*/ + + +#endif /* _SAM4E_EFC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/gmac.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/gmac.h new file mode 100644 index 000000000..164b397ca --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/gmac.h @@ -0,0 +1,627 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_GMAC_COMPONENT_ +#define _SAM4E_GMAC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Gigabit Ethernet MAC */ +/* ============================================================================= */ +/** \addtogroup SAM4E_GMAC Gigabit Ethernet MAC */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief GmacSa hardware registers */ +typedef struct { + RwReg GMAC_SAB; /**< \brief (GmacSa Offset: 0x0) Specific Address 1 Bottom [31:0] Register */ + RwReg GMAC_SAT; /**< \brief (GmacSa Offset: 0x4) Specific Address 1 Top [47:32] Register */ +} GmacSa; +/** \brief Gmac hardware registers */ +#define GMACSA_NUMBER 4 +typedef struct { + RwReg GMAC_NCR; /**< \brief (Gmac Offset: 0x000) Network Control Register */ + RwReg GMAC_NCFGR; /**< \brief (Gmac Offset: 0x004) Network Configuration Register */ + RoReg GMAC_NSR; /**< \brief (Gmac Offset: 0x008) Network Status Register */ + RwReg GMAC_UR; /**< \brief (Gmac Offset: 0x00C) User Register */ + RwReg GMAC_DCFGR; /**< \brief (Gmac Offset: 0x010) DMA Configuration Register */ + RwReg GMAC_TSR; /**< \brief (Gmac Offset: 0x014) Transmit Status Register */ + RwReg GMAC_RBQB; /**< \brief (Gmac Offset: 0x018) Receive Buffer Queue Base Address */ + RwReg GMAC_TBQB; /**< \brief (Gmac Offset: 0x01C) Transmit Buffer Queue Base Address */ + RwReg GMAC_RSR; /**< \brief (Gmac Offset: 0x020) Receive Status Register */ + RoReg GMAC_ISR; /**< \brief (Gmac Offset: 0x024) Interrupt Status Register */ + WoReg GMAC_IER; /**< \brief (Gmac Offset: 0x028) Interrupt Enable Register */ + WoReg GMAC_IDR; /**< \brief (Gmac Offset: 0x02C) Interrupt Disable Register */ + RoReg GMAC_IMR; /**< \brief (Gmac Offset: 0x030) Interrupt Mask Register */ + RwReg GMAC_MAN; /**< \brief (Gmac Offset: 0x034) PHY Maintenance Register */ + RoReg GMAC_RPQ; /**< \brief (Gmac Offset: 0x038) Received Pause Quantum Register */ + RwReg GMAC_TPQ; /**< \brief (Gmac Offset: 0x03C) Transmit Pause Quantum Register */ + RoReg Reserved1[16]; + RwReg GMAC_HRB; /**< \brief (Gmac Offset: 0x080) Hash Register Bottom [31:0] */ + RwReg GMAC_HRT; /**< \brief (Gmac Offset: 0x084) Hash Register Top [63:32] */ + GmacSa GMAC_SA[GMACSA_NUMBER]; /**< \brief (Gmac Offset: 0x088) 1 .. 4 */ + RwReg GMAC_TIDM[4]; /**< \brief (Gmac Offset: 0x0A8) Type ID Match 1 Register */ + RoReg Reserved2[1]; + RwReg GMAC_IPGS; /**< \brief (Gmac Offset: 0x0BC) IPG Stretch Register */ + RwReg GMAC_SVLAN; /**< \brief (Gmac Offset: 0x0C0) Stacked VLAN Register */ + RwReg GMAC_TPFCP; /**< \brief (Gmac Offset: 0x0C4) Transmit PFC Pause Register */ + RwReg GMAC_SAMB1; /**< \brief (Gmac Offset: 0x0C8) Specific Address 1 Mask Bottom [31:0] Register */ + RwReg GMAC_SAMT1; /**< \brief (Gmac Offset: 0x0CC) Specific Address 1 Mask Top [47:32] Register */ + RoReg Reserved3[12]; + RoReg GMAC_OTLO; /**< \brief (Gmac Offset: 0x100) Octets Transmitted [31:0] Register */ + RoReg GMAC_OTHI; /**< \brief (Gmac Offset: 0x104) Octets Transmitted [47:32] Register */ + RoReg GMAC_FT; /**< \brief (Gmac Offset: 0x108) Frames Transmitted Register */ + RoReg GMAC_BCFT; /**< \brief (Gmac Offset: 0x10C) Broadcast Frames Transmitted Register */ + RoReg GMAC_MFT; /**< \brief (Gmac Offset: 0x110) Multicast Frames Transmitted Register */ + RoReg GMAC_PFT; /**< \brief (Gmac Offset: 0x114) Pause Frames Transmitted Register */ + RoReg GMAC_BFT64; /**< \brief (Gmac Offset: 0x118) 64 Byte Frames Transmitted Register */ + RoReg GMAC_TBFT127; /**< \brief (Gmac Offset: 0x11C) 65 to 127 Byte Frames Transmitted Register */ + RoReg GMAC_TBFT255; /**< \brief (Gmac Offset: 0x120) 128 to 255 Byte Frames Transmitted Register */ + RoReg GMAC_TBFT511; /**< \brief (Gmac Offset: 0x124) 256 to 511 Byte Frames Transmitted Register */ + RoReg GMAC_TBFT1023; /**< \brief (Gmac Offset: 0x128) 512 to 1023 Byte Frames Transmitted Register */ + RoReg GMAC_TBFT1518; /**< \brief (Gmac Offset: 0x12C) 1024 to 1518 Byte Frames Transmitted Register */ + RoReg GMAC_GTBFT1518; /**< \brief (Gmac Offset: 0x130) Greater Than 1518 Byte Frames Transmitted Register */ + RoReg GMAC_TUR; /**< \brief (Gmac Offset: 0x134) Transmit Under Runs Register */ + RoReg GMAC_SCF; /**< \brief (Gmac Offset: 0x138) Single Collision Frames Register */ + RoReg GMAC_MCF; /**< \brief (Gmac Offset: 0x13C) Multiple Collision Frames Register */ + RoReg GMAC_EC; /**< \brief (Gmac Offset: 0x140) Excessive Collisions Register */ + RoReg GMAC_LC; /**< \brief (Gmac Offset: 0x144) Late Collisions Register */ + RoReg GMAC_DTF; /**< \brief (Gmac Offset: 0x148) Deferred Transmission Frames Register */ + RoReg GMAC_CSE; /**< \brief (Gmac Offset: 0x14C) Carrier Sense Errors Register */ + RoReg GMAC_ORLO; /**< \brief (Gmac Offset: 0x150) Octets Received [31:0] Received */ + RoReg GMAC_ORHI; /**< \brief (Gmac Offset: 0x154) Octets Received [47:32] Received */ + RoReg GMAC_FR; /**< \brief (Gmac Offset: 0x158) Frames Received Register */ + RoReg GMAC_BCFR; /**< \brief (Gmac Offset: 0x15C) Broadcast Frames Received Register */ + RoReg GMAC_MFR; /**< \brief (Gmac Offset: 0x160) Multicast Frames Received Register */ + RoReg GMAC_PFR; /**< \brief (Gmac Offset: 0x164) Pause Frames Received Register */ + RoReg GMAC_BFR64; /**< \brief (Gmac Offset: 0x168) 64 Byte Frames Received Register */ + RoReg GMAC_TBFR127; /**< \brief (Gmac Offset: 0x16C) 65 to 127 Byte Frames Received Register */ + RoReg GMAC_TBFR255; /**< \brief (Gmac Offset: 0x170) 128 to 255 Byte Frames Received Register */ + RoReg GMAC_TBFR511; /**< \brief (Gmac Offset: 0x174) 256 to 511Byte Frames Received Register */ + RoReg GMAC_TBFR1023; /**< \brief (Gmac Offset: 0x178) 512 to 1023 Byte Frames Received Register */ + RoReg GMAC_TBFR1518; /**< \brief (Gmac Offset: 0x17C) 1024 to 1518 Byte Frames Received Register */ + RoReg GMAC_TMXBFR; /**< \brief (Gmac Offset: 0x180) 1519 to Maximum Byte Frames Received Register */ + RoReg GMAC_UFR; /**< \brief (Gmac Offset: 0x184) Undersize Frames Received Register */ + RoReg GMAC_OFR; /**< \brief (Gmac Offset: 0x188) Oversize Frames Received Register */ + RoReg GMAC_JR; /**< \brief (Gmac Offset: 0x18C) Jabbers Received Register */ + RoReg GMAC_FCSE; /**< \brief (Gmac Offset: 0x190) Frame Check Sequence Errors Register */ + RoReg GMAC_LFFE; /**< \brief (Gmac Offset: 0x194) Length Field Frame Errors Register */ + RoReg GMAC_RSE; /**< \brief (Gmac Offset: 0x198) Receive Symbol Errors Register */ + RoReg GMAC_AE; /**< \brief (Gmac Offset: 0x19C) Alignment Errors Register */ + RoReg GMAC_RRE; /**< \brief (Gmac Offset: 0x1A0) Receive Resource Errors Register */ + RoReg GMAC_ROE; /**< \brief (Gmac Offset: 0x1A4) Receive Overrun Register */ + RoReg GMAC_IHCE; /**< \brief (Gmac Offset: 0x1A8) IP Header Checksum Errors Register */ + RoReg GMAC_TCE; /**< \brief (Gmac Offset: 0x1AC) TCP Checksum Errors Register */ + RoReg GMAC_UCE; /**< \brief (Gmac Offset: 0x1B0) UDP Checksum Errors Register */ + RoReg Reserved4[5]; + RwReg GMAC_TSSS; /**< \brief (Gmac Offset: 0x1C8) 1588 Timer Sync Strobe Seconds Register */ + RwReg GMAC_TSSN; /**< \brief (Gmac Offset: 0x1CC) 1588 Timer Sync Strobe Nanoseconds Register */ + RwReg GMAC_TS; /**< \brief (Gmac Offset: 0x1D0) 1588 Timer Seconds Register */ + RwReg GMAC_TN; /**< \brief (Gmac Offset: 0x1D4) 1588 Timer Nanoseconds Register */ + WoReg GMAC_TA; /**< \brief (Gmac Offset: 0x1D8) 1588 Timer Adjust Register */ + RwReg GMAC_TI; /**< \brief (Gmac Offset: 0x1DC) 1588 Timer Increment Register */ + RoReg GMAC_EFTS; /**< \brief (Gmac Offset: 0x1E0) PTP Event Frame Transmitted Seconds */ + RoReg GMAC_EFTN; /**< \brief (Gmac Offset: 0x1E4) PTP Event Frame Transmitted Nanoseconds */ + RoReg GMAC_EFRS; /**< \brief (Gmac Offset: 0x1E8) PTP Event Frame Received Seconds */ + RoReg GMAC_EFRN; /**< \brief (Gmac Offset: 0x1EC) PTP Event Frame Received Nanoseconds */ + RoReg GMAC_PEFTS; /**< \brief (Gmac Offset: 0x1F0) PTP Peer Event Frame Transmitted Seconds */ + RoReg GMAC_PEFTN; /**< \brief (Gmac Offset: 0x1F4) PTP Peer Event Frame Transmitted Nanoseconds */ + RoReg GMAC_PEFRS; /**< \brief (Gmac Offset: 0x1F8) PTP Peer Event Frame Received Seconds */ + RoReg GMAC_PEFRN; /**< \brief (Gmac Offset: 0x1FC) PTP Peer Event Frame Received Nanoseconds */ +} Gmac; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- GMAC_NCR : (GMAC Offset: 0x000) Network Control Register -------- */ +#define GMAC_NCR_LBL (0x1u << 1) /**< \brief (GMAC_NCR) Loop Back Local */ +#define GMAC_NCR_RXEN (0x1u << 2) /**< \brief (GMAC_NCR) Receive Enable */ +#define GMAC_NCR_TXEN (0x1u << 3) /**< \brief (GMAC_NCR) Transmit Enable */ +#define GMAC_NCR_MPE (0x1u << 4) /**< \brief (GMAC_NCR) Management Port Enable */ +#define GMAC_NCR_CLRSTAT (0x1u << 5) /**< \brief (GMAC_NCR) Clear Statistics Registers */ +#define GMAC_NCR_INCSTAT (0x1u << 6) /**< \brief (GMAC_NCR) Increment Statistics Registers */ +#define GMAC_NCR_WESTAT (0x1u << 7) /**< \brief (GMAC_NCR) Write Enable for Statistics Registers */ +#define GMAC_NCR_BP (0x1u << 8) /**< \brief (GMAC_NCR) Back pressure */ +#define GMAC_NCR_TSTART (0x1u << 9) /**< \brief (GMAC_NCR) Start Transmission */ +#define GMAC_NCR_THALT (0x1u << 10) /**< \brief (GMAC_NCR) Transmit Halt */ +#define GMAC_NCR_TXPF (0x1u << 11) /**< \brief (GMAC_NCR) Transmit Pause Frame */ +#define GMAC_NCR_TXZQPF (0x1u << 12) /**< \brief (GMAC_NCR) Transmit Zero Quantum Pause Frame */ +#define GMAC_NCR_RDS (0x1u << 14) /**< \brief (GMAC_NCR) Read Snapshot */ +#define GMAC_NCR_SRTSM (0x1u << 15) /**< \brief (GMAC_NCR) Store Receive Time Stamp to Memory */ +#define GMAC_NCR_ENPBPR (0x1u << 16) /**< \brief (GMAC_NCR) Enable PFC Priority-based Pause Reception */ +#define GMAC_NCR_TXPBPF (0x1u << 17) /**< \brief (GMAC_NCR) Transmit PFC Priority-based Pause Frame */ +#define GMAC_NCR_FNP (0x1u << 18) /**< \brief (GMAC_NCR) Flush Next Packet */ +/* -------- GMAC_NCFGR : (GMAC Offset: 0x004) Network Configuration Register -------- */ +#define GMAC_NCFGR_SPD (0x1u << 0) /**< \brief (GMAC_NCFGR) Speed */ +#define GMAC_NCFGR_FD (0x1u << 1) /**< \brief (GMAC_NCFGR) Full Duplex */ +#define GMAC_NCFGR_DNVLAN (0x1u << 2) /**< \brief (GMAC_NCFGR) Discard Non-VLAN FRAMES */ +#define GMAC_NCFGR_JFRAME (0x1u << 3) /**< \brief (GMAC_NCFGR) Jumbo Frame Size */ +#define GMAC_NCFGR_CAF (0x1u << 4) /**< \brief (GMAC_NCFGR) Copy All Frames */ +#define GMAC_NCFGR_NBC (0x1u << 5) /**< \brief (GMAC_NCFGR) No Broadcast */ +#define GMAC_NCFGR_MTIHEN (0x1u << 6) /**< \brief (GMAC_NCFGR) Multicast Hash Enable */ +#define GMAC_NCFGR_UNIHEN (0x1u << 7) /**< \brief (GMAC_NCFGR) Unicast Hash Enable */ +#define GMAC_NCFGR_MAXFS (0x1u << 8) /**< \brief (GMAC_NCFGR) 1536 Maximum Frame Size */ +#define GMAC_NCFGR_RTY (0x1u << 12) /**< \brief (GMAC_NCFGR) Retry Test */ +#define GMAC_NCFGR_PEN (0x1u << 13) /**< \brief (GMAC_NCFGR) Pause Enable */ +#define GMAC_NCFGR_RXBUFO_Pos 14 +#define GMAC_NCFGR_RXBUFO_Msk (0x3u << GMAC_NCFGR_RXBUFO_Pos) /**< \brief (GMAC_NCFGR) Receive Buffer Offset */ +#define GMAC_NCFGR_RXBUFO(value) ((GMAC_NCFGR_RXBUFO_Msk & ((value) << GMAC_NCFGR_RXBUFO_Pos))) +#define GMAC_NCFGR_LFERD (0x1u << 16) /**< \brief (GMAC_NCFGR) Length Field Error Frame Discard */ +#define GMAC_NCFGR_RFCS (0x1u << 17) /**< \brief (GMAC_NCFGR) Remove FCS */ +#define GMAC_NCFGR_CLK_Pos 18 +#define GMAC_NCFGR_CLK_Msk (0x7u << GMAC_NCFGR_CLK_Pos) /**< \brief (GMAC_NCFGR) MDC CLock Division */ +#define GMAC_NCFGR_CLK_MCK_8 (0x0u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 8 (MCK up to 20 MHz) */ +#define GMAC_NCFGR_CLK_MCK_16 (0x1u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 16 (MCK up to 40 MHz) */ +#define GMAC_NCFGR_CLK_MCK_32 (0x2u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 32 (MCK up to 80 MHz) */ +#define GMAC_NCFGR_CLK_MCK_48 (0x3u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 48 (MCK up to 120MHz) */ +#define GMAC_NCFGR_CLK_MCK_64 (0x4u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 64 (MCK up to 160 MHz) */ +#define GMAC_NCFGR_CLK_MCK_96 (0x5u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 96 (MCK up to 240 MHz) */ +#define GMAC_NCFGR_DBW_Pos 21 +#define GMAC_NCFGR_DBW_Msk (0x3u << GMAC_NCFGR_DBW_Pos) /**< \brief (GMAC_NCFGR) Data Bus Width */ +#define GMAC_NCFGR_DBW(value) ((GMAC_NCFGR_DBW_Msk & ((value) << GMAC_NCFGR_DBW_Pos))) +#define GMAC_NCFGR_DCPF (0x1u << 23) /**< \brief (GMAC_NCFGR) Disable Copy of Pause Frames */ +#define GMAC_NCFGR_RXCOEN (0x1u << 24) /**< \brief (GMAC_NCFGR) Receive Checksum Offload Enable */ +#define GMAC_NCFGR_EFRHD (0x1u << 25) /**< \brief (GMAC_NCFGR) Enable Frames Received in Half Duplex */ +#define GMAC_NCFGR_IRXFCS (0x1u << 26) /**< \brief (GMAC_NCFGR) Ignore RX FCS */ +#define GMAC_NCFGR_IPGSEN (0x1u << 28) /**< \brief (GMAC_NCFGR) IP Stretch Enable */ +#define GMAC_NCFGR_RXBP (0x1u << 29) /**< \brief (GMAC_NCFGR) Receive Bad Preamble */ +#define GMAC_NCFGR_IRXER (0x1u << 30) /**< \brief (GMAC_NCFGR) Ignore IPG GRXER */ +/* -------- GMAC_NSR : (GMAC Offset: 0x008) Network Status Register -------- */ +#define GMAC_NSR_MDIO (0x1u << 1) /**< \brief (GMAC_NSR) MDIO Input Status */ +#define GMAC_NSR_IDLE (0x1u << 2) /**< \brief (GMAC_NSR) PHY Management Logic Idle */ +/* -------- GMAC_UR : (GMAC Offset: 0x00C) User Register -------- */ +#define GMAC_UR_RMIIMII (0x1u << 0) /**< \brief (GMAC_UR) */ +/* -------- GMAC_DCFGR : (GMAC Offset: 0x010) DMA Configuration Register -------- */ +#define GMAC_DCFGR_FBLDO_Pos 0 +#define GMAC_DCFGR_FBLDO_Msk (0x1fu << GMAC_DCFGR_FBLDO_Pos) /**< \brief (GMAC_DCFGR) Fixed Burst Length for DMA Data Operations: */ +#define GMAC_DCFGR_FBLDO_SINGLE (0x1u << 0) /**< \brief (GMAC_DCFGR) 00001: Always use SINGLE AHB bursts */ +#define GMAC_DCFGR_FBLDO_INCR4 (0x4u << 0) /**< \brief (GMAC_DCFGR) 001xx: Attempt to use INCR4 AHB bursts (Default) */ +#define GMAC_DCFGR_FBLDO_INCR8 (0x8u << 0) /**< \brief (GMAC_DCFGR) 01xxx: Attempt to use INCR8 AHB bursts */ +#define GMAC_DCFGR_FBLDO_INCR16 (0x10u << 0) /**< \brief (GMAC_DCFGR) 1xxxx: Attempt to use INCR16 AHB bursts */ +#define GMAC_DCFGR_ESMA (0x1u << 6) /**< \brief (GMAC_DCFGR) Endian Swap Mode Enable for Management Descriptor Accesses */ +#define GMAC_DCFGR_ESPA (0x1u << 7) /**< \brief (GMAC_DCFGR) Endian Swap Mode Enable for Packet Data Accesses */ +#define GMAC_DCFGR_TXCOEN (0x1u << 11) /**< \brief (GMAC_DCFGR) Transmitter Checksum Generation Offload Enable */ +#define GMAC_DCFGR_DRBS_Pos 16 +#define GMAC_DCFGR_DRBS_Msk (0xffu << GMAC_DCFGR_DRBS_Pos) /**< \brief (GMAC_DCFGR) DMA Receive Buffer Size */ +#define GMAC_DCFGR_DRBS(value) ((GMAC_DCFGR_DRBS_Msk & ((value) << GMAC_DCFGR_DRBS_Pos))) +/* -------- GMAC_TSR : (GMAC Offset: 0x014) Transmit Status Register -------- */ +#define GMAC_TSR_UBR (0x1u << 0) /**< \brief (GMAC_TSR) Used Bit Read */ +#define GMAC_TSR_COL (0x1u << 1) /**< \brief (GMAC_TSR) Collision Occurred */ +#define GMAC_TSR_RLE (0x1u << 2) /**< \brief (GMAC_TSR) Retry Limit Exceeded */ +#define GMAC_TSR_TXGO (0x1u << 3) /**< \brief (GMAC_TSR) Transmit Go */ +#define GMAC_TSR_TFC (0x1u << 4) /**< \brief (GMAC_TSR) Transmit Frame Corruption due to AHB error */ +#define GMAC_TSR_TXCOMP (0x1u << 5) /**< \brief (GMAC_TSR) Transmit Complete */ +#define GMAC_TSR_UND (0x1u << 6) /**< \brief (GMAC_TSR) Transmit Under Run */ +#define GMAC_TSR_HRESP (0x1u << 8) /**< \brief (GMAC_TSR) HRESP Not OK */ +/* -------- GMAC_RBQB : (GMAC Offset: 0x018) Receive Buffer Queue Base Address -------- */ +#define GMAC_RBQB_ADDR_Pos 2 +#define GMAC_RBQB_ADDR_Msk (0x3fffffffu << GMAC_RBQB_ADDR_Pos) /**< \brief (GMAC_RBQB) Receive buffer queue base address */ +#define GMAC_RBQB_ADDR(value) ((GMAC_RBQB_ADDR_Msk & ((value) << GMAC_RBQB_ADDR_Pos))) +/* -------- GMAC_TBQB : (GMAC Offset: 0x01C) Transmit Buffer Queue Base Address -------- */ +#define GMAC_TBQB_ADDR_Pos 2 +#define GMAC_TBQB_ADDR_Msk (0x3fffffffu << GMAC_TBQB_ADDR_Pos) /**< \brief (GMAC_TBQB) Transmit Buffer Queue Base Address */ +#define GMAC_TBQB_ADDR(value) ((GMAC_TBQB_ADDR_Msk & ((value) << GMAC_TBQB_ADDR_Pos))) +/* -------- GMAC_RSR : (GMAC Offset: 0x020) Receive Status Register -------- */ +#define GMAC_RSR_BNA (0x1u << 0) /**< \brief (GMAC_RSR) Buffer Not Available */ +#define GMAC_RSR_REC (0x1u << 1) /**< \brief (GMAC_RSR) Frame Received */ +#define GMAC_RSR_RXOVR (0x1u << 2) /**< \brief (GMAC_RSR) Receive Overrun */ +#define GMAC_RSR_HNO (0x1u << 3) /**< \brief (GMAC_RSR) HRESP Not OK */ +/* -------- GMAC_ISR : (GMAC Offset: 0x024) Interrupt Status Register -------- */ +#define GMAC_ISR_MFS (0x1u << 0) /**< \brief (GMAC_ISR) Management Frame Sent */ +#define GMAC_ISR_RCOMP (0x1u << 1) /**< \brief (GMAC_ISR) Receive Complete */ +#define GMAC_ISR_RXUBR (0x1u << 2) /**< \brief (GMAC_ISR) RX Used Bit Read */ +#define GMAC_ISR_TXUBR (0x1u << 3) /**< \brief (GMAC_ISR) TX Used Bit Read */ +#define GMAC_ISR_TUR (0x1u << 4) /**< \brief (GMAC_ISR) Transmit Under Run */ +#define GMAC_ISR_RLEX (0x1u << 5) /**< \brief (GMAC_ISR) Retry Limit Exceeded */ +#define GMAC_ISR_TFC (0x1u << 6) /**< \brief (GMAC_ISR) Transmit Frame Corruption due to AHB error */ +#define GMAC_ISR_TCOMP (0x1u << 7) /**< \brief (GMAC_ISR) Transmit Complete */ +#define GMAC_ISR_ROVR (0x1u << 10) /**< \brief (GMAC_ISR) Receive Overrun */ +#define GMAC_ISR_HRESP (0x1u << 11) /**< \brief (GMAC_ISR) HRESP Not OK */ +#define GMAC_ISR_PFNZ (0x1u << 12) /**< \brief (GMAC_ISR) Pause Frame with Non-zero Pause Quantum Received */ +#define GMAC_ISR_PTZ (0x1u << 13) /**< \brief (GMAC_ISR) Pause Time Zero */ +#define GMAC_ISR_PFTR (0x1u << 14) /**< \brief (GMAC_ISR) Pause Frame Transmitted */ +#define GMAC_ISR_DRQFR (0x1u << 18) /**< \brief (GMAC_ISR) PTP Delay Request Frame Received */ +#define GMAC_ISR_SFR (0x1u << 19) /**< \brief (GMAC_ISR) PTP Sync Frame Received */ +#define GMAC_ISR_DRQFT (0x1u << 20) /**< \brief (GMAC_ISR) PTP Delay Request Frame Transmitted */ +#define GMAC_ISR_SFT (0x1u << 21) /**< \brief (GMAC_ISR) PTP Sync Frame Transmitted */ +#define GMAC_ISR_PDRQFR (0x1u << 22) /**< \brief (GMAC_ISR) PDelay Request Frame Received */ +#define GMAC_ISR_PDRSFR (0x1u << 23) /**< \brief (GMAC_ISR) PDelay Response Frame Received */ +#define GMAC_ISR_PDRQFT (0x1u << 24) /**< \brief (GMAC_ISR) PDelay Request Frame Transmitted */ +#define GMAC_ISR_PDRSFT (0x1u << 25) /**< \brief (GMAC_ISR) PDelay Response Frame Transmitted */ +#define GMAC_ISR_SRI (0x1u << 26) /**< \brief (GMAC_ISR) TSU Seconds Register Increment */ +#define GMAC_ISR_WOL (0x1u << 28) /**< \brief (GMAC_ISR) Wake On LAN */ +/* -------- GMAC_IER : (GMAC Offset: 0x028) Interrupt Enable Register -------- */ +#define GMAC_IER_MFS (0x1u << 0) /**< \brief (GMAC_IER) Management Frame Sent */ +#define GMAC_IER_RCOMP (0x1u << 1) /**< \brief (GMAC_IER) Receive Complete */ +#define GMAC_IER_RXUBR (0x1u << 2) /**< \brief (GMAC_IER) RX Used Bit Read */ +#define GMAC_IER_TXUBR (0x1u << 3) /**< \brief (GMAC_IER) TX Used Bit Read */ +#define GMAC_IER_TUR (0x1u << 4) /**< \brief (GMAC_IER) Transmit Under Run */ +#define GMAC_IER_RLEX (0x1u << 5) /**< \brief (GMAC_IER) Retry Limit Exceeded or Late Collision */ +#define GMAC_IER_TFC (0x1u << 6) /**< \brief (GMAC_IER) Transmit Frame Corruption due to AHB error */ +#define GMAC_IER_TCOMP (0x1u << 7) /**< \brief (GMAC_IER) Transmit Complete */ +#define GMAC_IER_ROVR (0x1u << 10) /**< \brief (GMAC_IER) Receive Overrun */ +#define GMAC_IER_HRESP (0x1u << 11) /**< \brief (GMAC_IER) HRESP Not OK */ +#define GMAC_IER_PFNZ (0x1u << 12) /**< \brief (GMAC_IER) Pause Frame with Non-zero Pause Quantum Received */ +#define GMAC_IER_PTZ (0x1u << 13) /**< \brief (GMAC_IER) Pause Time Zero */ +#define GMAC_IER_PFTR (0x1u << 14) /**< \brief (GMAC_IER) Pause Frame Transmitted */ +#define GMAC_IER_EXINT (0x1u << 15) /**< \brief (GMAC_IER) External Interrupt */ +#define GMAC_IER_DRQFR (0x1u << 18) /**< \brief (GMAC_IER) PTP Delay Request Frame Received */ +#define GMAC_IER_SFR (0x1u << 19) /**< \brief (GMAC_IER) PTP Sync Frame Received */ +#define GMAC_IER_DRQFT (0x1u << 20) /**< \brief (GMAC_IER) PTP Delay Request Frame Transmitted */ +#define GMAC_IER_SFT (0x1u << 21) /**< \brief (GMAC_IER) PTP Sync Frame Transmitted */ +#define GMAC_IER_PDRQFR (0x1u << 22) /**< \brief (GMAC_IER) PDelay Request Frame Received */ +#define GMAC_IER_PDRSFR (0x1u << 23) /**< \brief (GMAC_IER) PDelay Response Frame Received */ +#define GMAC_IER_PDRQFT (0x1u << 24) /**< \brief (GMAC_IER) PDelay Request Frame Transmitted */ +#define GMAC_IER_PDRSFT (0x1u << 25) /**< \brief (GMAC_IER) PDelay Response Frame Transmitted */ +#define GMAC_IER_SRI (0x1u << 26) /**< \brief (GMAC_IER) TSU Seconds Register Increment */ +#define GMAC_IER_WOL (0x1u << 28) /**< \brief (GMAC_IER) Wake On LAN */ +/* -------- GMAC_IDR : (GMAC Offset: 0x02C) Interrupt Disable Register -------- */ +#define GMAC_IDR_MFS (0x1u << 0) /**< \brief (GMAC_IDR) Management Frame Sent */ +#define GMAC_IDR_RCOMP (0x1u << 1) /**< \brief (GMAC_IDR) Receive Complete */ +#define GMAC_IDR_RXUBR (0x1u << 2) /**< \brief (GMAC_IDR) RX Used Bit Read */ +#define GMAC_IDR_TXUBR (0x1u << 3) /**< \brief (GMAC_IDR) TX Used Bit Read */ +#define GMAC_IDR_TUR (0x1u << 4) /**< \brief (GMAC_IDR) Transmit Under Run */ +#define GMAC_IDR_RLEX (0x1u << 5) /**< \brief (GMAC_IDR) Retry Limit Exceeded or Late Collision */ +#define GMAC_IDR_TFC (0x1u << 6) /**< \brief (GMAC_IDR) Transmit Frame Corruption due to AHB error */ +#define GMAC_IDR_TCOMP (0x1u << 7) /**< \brief (GMAC_IDR) Transmit Complete */ +#define GMAC_IDR_ROVR (0x1u << 10) /**< \brief (GMAC_IDR) Receive Overrun */ +#define GMAC_IDR_HRESP (0x1u << 11) /**< \brief (GMAC_IDR) HRESP Not OK */ +#define GMAC_IDR_PFNZ (0x1u << 12) /**< \brief (GMAC_IDR) Pause Frame with Non-zero Pause Quantum Received */ +#define GMAC_IDR_PTZ (0x1u << 13) /**< \brief (GMAC_IDR) Pause Time Zero */ +#define GMAC_IDR_PFTR (0x1u << 14) /**< \brief (GMAC_IDR) Pause Frame Transmitted */ +#define GMAC_IDR_EXINT (0x1u << 15) /**< \brief (GMAC_IDR) External Interrupt */ +#define GMAC_IDR_DRQFR (0x1u << 18) /**< \brief (GMAC_IDR) PTP Delay Request Frame Received */ +#define GMAC_IDR_SFR (0x1u << 19) /**< \brief (GMAC_IDR) PTP Sync Frame Received */ +#define GMAC_IDR_DRQFT (0x1u << 20) /**< \brief (GMAC_IDR) PTP Delay Request Frame Transmitted */ +#define GMAC_IDR_SFT (0x1u << 21) /**< \brief (GMAC_IDR) PTP Sync Frame Transmitted */ +#define GMAC_IDR_PDRQFR (0x1u << 22) /**< \brief (GMAC_IDR) PDelay Request Frame Received */ +#define GMAC_IDR_PDRSFR (0x1u << 23) /**< \brief (GMAC_IDR) PDelay Response Frame Received */ +#define GMAC_IDR_PDRQFT (0x1u << 24) /**< \brief (GMAC_IDR) PDelay Request Frame Transmitted */ +#define GMAC_IDR_PDRSFT (0x1u << 25) /**< \brief (GMAC_IDR) PDelay Response Frame Transmitted */ +#define GMAC_IDR_SRI (0x1u << 26) /**< \brief (GMAC_IDR) TSU Seconds Register Increment */ +#define GMAC_IDR_WOL (0x1u << 28) /**< \brief (GMAC_IDR) Wake On LAN */ +/* -------- GMAC_IMR : (GMAC Offset: 0x030) Interrupt Mask Register -------- */ +#define GMAC_IMR_MFS (0x1u << 0) /**< \brief (GMAC_IMR) Management Frame Sent */ +#define GMAC_IMR_RCOMP (0x1u << 1) /**< \brief (GMAC_IMR) Receive Complete */ +#define GMAC_IMR_RXUBR (0x1u << 2) /**< \brief (GMAC_IMR) RX Used Bit Read */ +#define GMAC_IMR_TXUBR (0x1u << 3) /**< \brief (GMAC_IMR) TX Used Bit Read */ +#define GMAC_IMR_TUR (0x1u << 4) /**< \brief (GMAC_IMR) Transmit Under Run */ +#define GMAC_IMR_RLEX (0x1u << 5) /**< \brief (GMAC_IMR) Retry Limit Exceeded */ +#define GMAC_IMR_TFC (0x1u << 6) /**< \brief (GMAC_IMR) Transmit Frame Corruption due to AHB error */ +#define GMAC_IMR_TCOMP (0x1u << 7) /**< \brief (GMAC_IMR) Transmit Complete */ +#define GMAC_IMR_ROVR (0x1u << 10) /**< \brief (GMAC_IMR) Receive Overrun */ +#define GMAC_IMR_HRESP (0x1u << 11) /**< \brief (GMAC_IMR) HRESP Not OK */ +#define GMAC_IMR_PFNZ (0x1u << 12) /**< \brief (GMAC_IMR) Pause Frame with Non-zero Pause Quantum Received */ +#define GMAC_IMR_PTZ (0x1u << 13) /**< \brief (GMAC_IMR) Pause Time Zero */ +#define GMAC_IMR_PFTR (0x1u << 14) /**< \brief (GMAC_IMR) Pause Frame Transmitted */ +#define GMAC_IMR_EXINT (0x1u << 15) /**< \brief (GMAC_IMR) External Interrupt */ +#define GMAC_IMR_DRQFR (0x1u << 18) /**< \brief (GMAC_IMR) PTP Delay Request Frame Received */ +#define GMAC_IMR_SFR (0x1u << 19) /**< \brief (GMAC_IMR) PTP Sync Frame Received */ +#define GMAC_IMR_DRQFT (0x1u << 20) /**< \brief (GMAC_IMR) PTP Delay Request Frame Transmitted */ +#define GMAC_IMR_SFT (0x1u << 21) /**< \brief (GMAC_IMR) PTP Sync Frame Transmitted */ +#define GMAC_IMR_PDRQFR (0x1u << 22) /**< \brief (GMAC_IMR) PDelay Request Frame Received */ +#define GMAC_IMR_PDRSFR (0x1u << 23) /**< \brief (GMAC_IMR) PDelay Response Frame Received */ +#define GMAC_IMR_PDRQFT (0x1u << 24) /**< \brief (GMAC_IMR) PDelay Request Frame Transmitted */ +#define GMAC_IMR_PDRSFT (0x1u << 25) /**< \brief (GMAC_IMR) PDelay Response Frame Transmitted */ +/* -------- GMAC_MAN : (GMAC Offset: 0x034) PHY Maintenance Register -------- */ +#define GMAC_MAN_DATA_Pos 0 +#define GMAC_MAN_DATA_Msk (0xffffu << GMAC_MAN_DATA_Pos) /**< \brief (GMAC_MAN) PHY Data */ +#define GMAC_MAN_DATA(value) ((GMAC_MAN_DATA_Msk & ((value) << GMAC_MAN_DATA_Pos))) +#define GMAC_MAN_WTN_Pos 16 +#define GMAC_MAN_WTN_Msk (0x3u << GMAC_MAN_WTN_Pos) /**< \brief (GMAC_MAN) Write Ten */ +#define GMAC_MAN_WTN(value) ((GMAC_MAN_WTN_Msk & ((value) << GMAC_MAN_WTN_Pos))) +#define GMAC_MAN_REGA_Pos 18 +#define GMAC_MAN_REGA_Msk (0x1fu << GMAC_MAN_REGA_Pos) /**< \brief (GMAC_MAN) Register Address */ +#define GMAC_MAN_REGA(value) ((GMAC_MAN_REGA_Msk & ((value) << GMAC_MAN_REGA_Pos))) +#define GMAC_MAN_PHYA_Pos 23 +#define GMAC_MAN_PHYA_Msk (0x1fu << GMAC_MAN_PHYA_Pos) /**< \brief (GMAC_MAN) PHY Address */ +#define GMAC_MAN_PHYA(value) ((GMAC_MAN_PHYA_Msk & ((value) << GMAC_MAN_PHYA_Pos))) +#define GMAC_MAN_OP_Pos 28 +#define GMAC_MAN_OP_Msk (0x3u << GMAC_MAN_OP_Pos) /**< \brief (GMAC_MAN) Operation */ +#define GMAC_MAN_OP(value) ((GMAC_MAN_OP_Msk & ((value) << GMAC_MAN_OP_Pos))) +#define GMAC_MAN_CLTTO (0x1u << 30) /**< \brief (GMAC_MAN) Clause 22 Operation */ +#define GMAC_MAN_WZO (0x1u << 31) /**< \brief (GMAC_MAN) Write ZERO */ +/* -------- GMAC_RPQ : (GMAC Offset: 0x038) Received Pause Quantum Register -------- */ +#define GMAC_RPQ_RPQ_Pos 0 +#define GMAC_RPQ_RPQ_Msk (0xffffu << GMAC_RPQ_RPQ_Pos) /**< \brief (GMAC_RPQ) Received Pause Quantum */ +/* -------- GMAC_TPQ : (GMAC Offset: 0x03C) Transmit Pause Quantum Register -------- */ +#define GMAC_TPQ_TPQ_Pos 0 +#define GMAC_TPQ_TPQ_Msk (0xffffu << GMAC_TPQ_TPQ_Pos) /**< \brief (GMAC_TPQ) Transmit Pause Quantum */ +#define GMAC_TPQ_TPQ(value) ((GMAC_TPQ_TPQ_Msk & ((value) << GMAC_TPQ_TPQ_Pos))) +/* -------- GMAC_HRB : (GMAC Offset: 0x080) Hash Register Bottom [31:0] -------- */ +#define GMAC_HRB_ADDR_Pos 0 +#define GMAC_HRB_ADDR_Msk (0xffffffffu << GMAC_HRB_ADDR_Pos) /**< \brief (GMAC_HRB) Hash Address */ +#define GMAC_HRB_ADDR(value) ((GMAC_HRB_ADDR_Msk & ((value) << GMAC_HRB_ADDR_Pos))) +/* -------- GMAC_HRT : (GMAC Offset: 0x084) Hash Register Top [63:32] -------- */ +#define GMAC_HRT_ADDR_Pos 0 +#define GMAC_HRT_ADDR_Msk (0xffffffffu << GMAC_HRT_ADDR_Pos) /**< \brief (GMAC_HRT) Hash Address */ +#define GMAC_HRT_ADDR(value) ((GMAC_HRT_ADDR_Msk & ((value) << GMAC_HRT_ADDR_Pos))) +/* -------- GMAC_SAB1 : (GMAC Offset: 0x088) Specific Address 1 Bottom [31:0] Register -------- */ +#define GMAC_SAB1_ADDR_Pos 0 +#define GMAC_SAB1_ADDR_Msk (0xffffffffu << GMAC_SAB1_ADDR_Pos) /**< \brief (GMAC_SAB1) Specific Address 1 */ +#define GMAC_SAB1_ADDR(value) ((GMAC_SAB1_ADDR_Msk & ((value) << GMAC_SAB1_ADDR_Pos))) +/* -------- GMAC_SAT1 : (GMAC Offset: 0x08C) Specific Address 1 Top [47:32] Register -------- */ +#define GMAC_SAT1_ADDR_Pos 0 +#define GMAC_SAT1_ADDR_Msk (0xffffu << GMAC_SAT1_ADDR_Pos) /**< \brief (GMAC_SAT1) Specific Address 1 */ +#define GMAC_SAT1_ADDR(value) ((GMAC_SAT1_ADDR_Msk & ((value) << GMAC_SAT1_ADDR_Pos))) +/* -------- GMAC_SAB2 : (GMAC Offset: 0x090) Specific Address 2 Bottom [31:0] Register -------- */ +#define GMAC_SAB2_ADDR_Pos 0 +#define GMAC_SAB2_ADDR_Msk (0xffffffffu << GMAC_SAB2_ADDR_Pos) /**< \brief (GMAC_SAB2) Specific Address 2 */ +#define GMAC_SAB2_ADDR(value) ((GMAC_SAB2_ADDR_Msk & ((value) << GMAC_SAB2_ADDR_Pos))) +/* -------- GMAC_SAT2 : (GMAC Offset: 0x094) Specific Address 2 Top [47:32] Register -------- */ +#define GMAC_SAT2_ADDR_Pos 0 +#define GMAC_SAT2_ADDR_Msk (0xffffu << GMAC_SAT2_ADDR_Pos) /**< \brief (GMAC_SAT2) Specific Address 2 */ +#define GMAC_SAT2_ADDR(value) ((GMAC_SAT2_ADDR_Msk & ((value) << GMAC_SAT2_ADDR_Pos))) +/* -------- GMAC_SAB3 : (GMAC Offset: 0x098) Specific Address 3 Bottom [31:0] Register -------- */ +#define GMAC_SAB3_ADDR_Pos 0 +#define GMAC_SAB3_ADDR_Msk (0xffffffffu << GMAC_SAB3_ADDR_Pos) /**< \brief (GMAC_SAB3) Specific Address 3 */ +#define GMAC_SAB3_ADDR(value) ((GMAC_SAB3_ADDR_Msk & ((value) << GMAC_SAB3_ADDR_Pos))) +/* -------- GMAC_SAT3 : (GMAC Offset: 0x09C) Specific Address 3 Top [47:32] Register -------- */ +#define GMAC_SAT3_ADDR_Pos 0 +#define GMAC_SAT3_ADDR_Msk (0xffffu << GMAC_SAT3_ADDR_Pos) /**< \brief (GMAC_SAT3) Specific Address 3 */ +#define GMAC_SAT3_ADDR(value) ((GMAC_SAT3_ADDR_Msk & ((value) << GMAC_SAT3_ADDR_Pos))) +/* -------- GMAC_SAB4 : (GMAC Offset: 0x0A0) Specific Address 4 Bottom [31:0] Register -------- */ +#define GMAC_SAB4_ADDR_Pos 0 +#define GMAC_SAB4_ADDR_Msk (0xffffffffu << GMAC_SAB4_ADDR_Pos) /**< \brief (GMAC_SAB4) Specific Address 4 */ +#define GMAC_SAB4_ADDR(value) ((GMAC_SAB4_ADDR_Msk & ((value) << GMAC_SAB4_ADDR_Pos))) +/* -------- GMAC_SAT4 : (GMAC Offset: 0x0A4) Specific Address 4 Top [47:32] Register -------- */ +#define GMAC_SAT4_ADDR_Pos 0 +#define GMAC_SAT4_ADDR_Msk (0xffffu << GMAC_SAT4_ADDR_Pos) /**< \brief (GMAC_SAT4) Specific Address 4 */ +#define GMAC_SAT4_ADDR(value) ((GMAC_SAT4_ADDR_Msk & ((value) << GMAC_SAT4_ADDR_Pos))) +/* -------- GMAC_TIDM[4] : (GMAC Offset: 0x0A8) Type ID Match 1 Register -------- */ +#define GMAC_TIDM_TID_Pos 0 +#define GMAC_TIDM_TID_Msk (0xffffu << GMAC_TIDM_TID_Pos) /**< \brief (GMAC_TIDM[4]) Type ID Match 1 */ +#define GMAC_TIDM_TID(value) ((GMAC_TIDM_TID_Msk & ((value) << GMAC_TIDM_TID_Pos))) +/* -------- GMAC_IPGS : (GMAC Offset: 0x0BC) IPG Stretch Register -------- */ +#define GMAC_IPGS_FL_Pos 0 +#define GMAC_IPGS_FL_Msk (0xffffu << GMAC_IPGS_FL_Pos) /**< \brief (GMAC_IPGS) Frame Length */ +#define GMAC_IPGS_FL(value) ((GMAC_IPGS_FL_Msk & ((value) << GMAC_IPGS_FL_Pos))) +/* -------- GMAC_SVLAN : (GMAC Offset: 0x0C0) Stacked VLAN Register -------- */ +#define GMAC_SVLAN_VLAN_TYPE_Pos 0 +#define GMAC_SVLAN_VLAN_TYPE_Msk (0xffffu << GMAC_SVLAN_VLAN_TYPE_Pos) /**< \brief (GMAC_SVLAN) User Defined VLAN_TYPE Field */ +#define GMAC_SVLAN_VLAN_TYPE(value) ((GMAC_SVLAN_VLAN_TYPE_Msk & ((value) << GMAC_SVLAN_VLAN_TYPE_Pos))) +#define GMAC_SVLAN_ESVLAN (0x1u << 31) /**< \brief (GMAC_SVLAN) Enable Stacked VLAN Processing Mode */ +/* -------- GMAC_TPFCP : (GMAC Offset: 0x0C4) Transmit PFC Pause Register -------- */ +#define GMAC_TPFCP_PEV_Pos 0 +#define GMAC_TPFCP_PEV_Msk (0xffu << GMAC_TPFCP_PEV_Pos) /**< \brief (GMAC_TPFCP) Priority Enable Vector */ +#define GMAC_TPFCP_PEV(value) ((GMAC_TPFCP_PEV_Msk & ((value) << GMAC_TPFCP_PEV_Pos))) +#define GMAC_TPFCP_PQ_Pos 8 +#define GMAC_TPFCP_PQ_Msk (0xffu << GMAC_TPFCP_PQ_Pos) /**< \brief (GMAC_TPFCP) Pause Quantum */ +#define GMAC_TPFCP_PQ(value) ((GMAC_TPFCP_PQ_Msk & ((value) << GMAC_TPFCP_PQ_Pos))) +/* -------- GMAC_SAMB1 : (GMAC Offset: 0x0C8) Specific Address 1 Mask Bottom [31:0] Register -------- */ +#define GMAC_SAMB1_ADDR_Pos 0 +#define GMAC_SAMB1_ADDR_Msk (0xffffffffu << GMAC_SAMB1_ADDR_Pos) /**< \brief (GMAC_SAMB1) Specific Address 1 Mask */ +#define GMAC_SAMB1_ADDR(value) ((GMAC_SAMB1_ADDR_Msk & ((value) << GMAC_SAMB1_ADDR_Pos))) +/* -------- GMAC_SAMT1 : (GMAC Offset: 0x0CC) Specific Address 1 Mask Top [47:32] Register -------- */ +#define GMAC_SAMT1_ADDR_Pos 0 +#define GMAC_SAMT1_ADDR_Msk (0xffffu << GMAC_SAMT1_ADDR_Pos) /**< \brief (GMAC_SAMT1) Specific Address 1 Mask */ +#define GMAC_SAMT1_ADDR(value) ((GMAC_SAMT1_ADDR_Msk & ((value) << GMAC_SAMT1_ADDR_Pos))) +/* -------- GMAC_OTLO : (GMAC Offset: 0x100) Octets Transmitted [31:0] Register -------- */ +#define GMAC_OTLO_TXO_Pos 0 +#define GMAC_OTLO_TXO_Msk (0xffffffffu << GMAC_OTLO_TXO_Pos) /**< \brief (GMAC_OTLO) Transmitted Octets */ +/* -------- GMAC_OTHI : (GMAC Offset: 0x104) Octets Transmitted [47:32] Register -------- */ +#define GMAC_OTHI_TXO_Pos 0 +#define GMAC_OTHI_TXO_Msk (0xffffu << GMAC_OTHI_TXO_Pos) /**< \brief (GMAC_OTHI) Transmitted Octets */ +/* -------- GMAC_FT : (GMAC Offset: 0x108) Frames Transmitted Register -------- */ +#define GMAC_FT_FTX_Pos 0 +#define GMAC_FT_FTX_Msk (0xffffffffu << GMAC_FT_FTX_Pos) /**< \brief (GMAC_FT) Frames Transmitted without Error */ +/* -------- GMAC_BCFT : (GMAC Offset: 0x10C) Broadcast Frames Transmitted Register -------- */ +#define GMAC_BCFT_BFTX_Pos 0 +#define GMAC_BCFT_BFTX_Msk (0xffffffffu << GMAC_BCFT_BFTX_Pos) /**< \brief (GMAC_BCFT) Broadcast Frames Transmitted without Error */ +/* -------- GMAC_MFT : (GMAC Offset: 0x110) Multicast Frames Transmitted Register -------- */ +#define GMAC_MFT_MFTX_Pos 0 +#define GMAC_MFT_MFTX_Msk (0xffffffffu << GMAC_MFT_MFTX_Pos) /**< \brief (GMAC_MFT) Multicast Frames Transmitted without Error */ +/* -------- GMAC_PFT : (GMAC Offset: 0x114) Pause Frames Transmitted Register -------- */ +#define GMAC_PFT_PFTX_Pos 0 +#define GMAC_PFT_PFTX_Msk (0xffffu << GMAC_PFT_PFTX_Pos) /**< \brief (GMAC_PFT) Pause Frames Transmitted Register */ +/* -------- GMAC_BFT64 : (GMAC Offset: 0x118) 64 Byte Frames Transmitted Register -------- */ +#define GMAC_BFT64_NFTX_Pos 0 +#define GMAC_BFT64_NFTX_Msk (0xffffffffu << GMAC_BFT64_NFTX_Pos) /**< \brief (GMAC_BFT64) 64 Byte Frames Transmitted without Error */ +/* -------- GMAC_TBFT127 : (GMAC Offset: 0x11C) 65 to 127 Byte Frames Transmitted Register -------- */ +#define GMAC_TBFT127_NFTX_Pos 0 +#define GMAC_TBFT127_NFTX_Msk (0xffffffffu << GMAC_TBFT127_NFTX_Pos) /**< \brief (GMAC_TBFT127) 65 to 127 Byte Frames Transmitted without Error */ +/* -------- GMAC_TBFT255 : (GMAC Offset: 0x120) 128 to 255 Byte Frames Transmitted Register -------- */ +#define GMAC_TBFT255_NFTX_Pos 0 +#define GMAC_TBFT255_NFTX_Msk (0xffffffffu << GMAC_TBFT255_NFTX_Pos) /**< \brief (GMAC_TBFT255) 128 to 255 Byte Frames Transmitted without Error */ +/* -------- GMAC_TBFT511 : (GMAC Offset: 0x124) 256 to 511 Byte Frames Transmitted Register -------- */ +#define GMAC_TBFT511_NFTX_Pos 0 +#define GMAC_TBFT511_NFTX_Msk (0xffffffffu << GMAC_TBFT511_NFTX_Pos) /**< \brief (GMAC_TBFT511) 256 to 511 Byte Frames Transmitted without Error */ +/* -------- GMAC_TBFT1023 : (GMAC Offset: 0x128) 512 to 1023 Byte Frames Transmitted Register -------- */ +#define GMAC_TBFT1023_NFTX_Pos 0 +#define GMAC_TBFT1023_NFTX_Msk (0xffffffffu << GMAC_TBFT1023_NFTX_Pos) /**< \brief (GMAC_TBFT1023) 512 to 1023 Byte Frames Transmitted without Error */ +/* -------- GMAC_TBFT1518 : (GMAC Offset: 0x12C) 1024 to 1518 Byte Frames Transmitted Register -------- */ +#define GMAC_TBFT1518_NFTX_Pos 0 +#define GMAC_TBFT1518_NFTX_Msk (0xffffffffu << GMAC_TBFT1518_NFTX_Pos) /**< \brief (GMAC_TBFT1518) 1024 to 1518 Byte Frames Transmitted without Error */ +/* -------- GMAC_GTBFT1518 : (GMAC Offset: 0x130) Greater Than 1518 Byte Frames Transmitted Register -------- */ +#define GMAC_GTBFT1518_NFTX_Pos 0 +#define GMAC_GTBFT1518_NFTX_Msk (0xffffffffu << GMAC_GTBFT1518_NFTX_Pos) /**< \brief (GMAC_GTBFT1518) Greater than 1518 Byte Frames Transmitted without Error */ +/* -------- GMAC_TUR : (GMAC Offset: 0x134) Transmit Under Runs Register -------- */ +#define GMAC_TUR_TXUNR_Pos 0 +#define GMAC_TUR_TXUNR_Msk (0x3ffu << GMAC_TUR_TXUNR_Pos) /**< \brief (GMAC_TUR) Transmit Under Runs */ +/* -------- GMAC_SCF : (GMAC Offset: 0x138) Single Collision Frames Register -------- */ +#define GMAC_SCF_SCOL_Pos 0 +#define GMAC_SCF_SCOL_Msk (0x3ffffu << GMAC_SCF_SCOL_Pos) /**< \brief (GMAC_SCF) Single Collision */ +/* -------- GMAC_MCF : (GMAC Offset: 0x13C) Multiple Collision Frames Register -------- */ +#define GMAC_MCF_MCOL_Pos 0 +#define GMAC_MCF_MCOL_Msk (0x3ffffu << GMAC_MCF_MCOL_Pos) /**< \brief (GMAC_MCF) Multiple Collision */ +/* -------- GMAC_EC : (GMAC Offset: 0x140) Excessive Collisions Register -------- */ +#define GMAC_EC_XCOL_Pos 0 +#define GMAC_EC_XCOL_Msk (0x3ffu << GMAC_EC_XCOL_Pos) /**< \brief (GMAC_EC) Excessive Collisions */ +/* -------- GMAC_LC : (GMAC Offset: 0x144) Late Collisions Register -------- */ +#define GMAC_LC_LCOL_Pos 0 +#define GMAC_LC_LCOL_Msk (0x3ffu << GMAC_LC_LCOL_Pos) /**< \brief (GMAC_LC) Late Collisions */ +/* -------- GMAC_DTF : (GMAC Offset: 0x148) Deferred Transmission Frames Register -------- */ +#define GMAC_DTF_DEFT_Pos 0 +#define GMAC_DTF_DEFT_Msk (0x3ffffu << GMAC_DTF_DEFT_Pos) /**< \brief (GMAC_DTF) Deferred Transmission */ +/* -------- GMAC_CSE : (GMAC Offset: 0x14C) Carrier Sense Errors Register -------- */ +#define GMAC_CSE_CSR_Pos 0 +#define GMAC_CSE_CSR_Msk (0x3ffu << GMAC_CSE_CSR_Pos) /**< \brief (GMAC_CSE) Carrier Sense Error */ +/* -------- GMAC_ORLO : (GMAC Offset: 0x150) Octets Received [31:0] Received -------- */ +#define GMAC_ORLO_RXO_Pos 0 +#define GMAC_ORLO_RXO_Msk (0xffffffffu << GMAC_ORLO_RXO_Pos) /**< \brief (GMAC_ORLO) Received Octets */ +/* -------- GMAC_ORHI : (GMAC Offset: 0x154) Octets Received [47:32] Received -------- */ +#define GMAC_ORHI_RXO_Pos 0 +#define GMAC_ORHI_RXO_Msk (0xffffu << GMAC_ORHI_RXO_Pos) /**< \brief (GMAC_ORHI) Received Octets */ +/* -------- GMAC_FR : (GMAC Offset: 0x158) Frames Received Register -------- */ +#define GMAC_FR_FRX_Pos 0 +#define GMAC_FR_FRX_Msk (0xffffffffu << GMAC_FR_FRX_Pos) /**< \brief (GMAC_FR) Frames Received without Error */ +/* -------- GMAC_BCFR : (GMAC Offset: 0x15C) Broadcast Frames Received Register -------- */ +#define GMAC_BCFR_BFRX_Pos 0 +#define GMAC_BCFR_BFRX_Msk (0xffffffffu << GMAC_BCFR_BFRX_Pos) /**< \brief (GMAC_BCFR) Broadcast Frames Received without Error */ +/* -------- GMAC_MFR : (GMAC Offset: 0x160) Multicast Frames Received Register -------- */ +#define GMAC_MFR_MFRX_Pos 0 +#define GMAC_MFR_MFRX_Msk (0xffffffffu << GMAC_MFR_MFRX_Pos) /**< \brief (GMAC_MFR) Multicast Frames Received without Error */ +/* -------- GMAC_PFR : (GMAC Offset: 0x164) Pause Frames Received Register -------- */ +#define GMAC_PFR_PFRX_Pos 0 +#define GMAC_PFR_PFRX_Msk (0xffffu << GMAC_PFR_PFRX_Pos) /**< \brief (GMAC_PFR) Pause Frames Received Register */ +/* -------- GMAC_BFR64 : (GMAC Offset: 0x168) 64 Byte Frames Received Register -------- */ +#define GMAC_BFR64_NFRX_Pos 0 +#define GMAC_BFR64_NFRX_Msk (0xffffffffu << GMAC_BFR64_NFRX_Pos) /**< \brief (GMAC_BFR64) 64 Byte Frames Received without Error */ +/* -------- GMAC_TBFR127 : (GMAC Offset: 0x16C) 65 to 127 Byte Frames Received Register -------- */ +#define GMAC_TBFR127_NFRX_Pos 0 +#define GMAC_TBFR127_NFRX_Msk (0xffffffffu << GMAC_TBFR127_NFRX_Pos) /**< \brief (GMAC_TBFR127) 65 to 127 Byte Frames Received without Error */ +/* -------- GMAC_TBFR255 : (GMAC Offset: 0x170) 128 to 255 Byte Frames Received Register -------- */ +#define GMAC_TBFR255_NFRX_Pos 0 +#define GMAC_TBFR255_NFRX_Msk (0xffffffffu << GMAC_TBFR255_NFRX_Pos) /**< \brief (GMAC_TBFR255) 128 to 255 Byte Frames Received without Error */ +/* -------- GMAC_TBFR511 : (GMAC Offset: 0x174) 256 to 511Byte Frames Received Register -------- */ +#define GMAC_TBFR511_NFRX_Pos 0 +#define GMAC_TBFR511_NFRX_Msk (0xffffffffu << GMAC_TBFR511_NFRX_Pos) /**< \brief (GMAC_TBFR511) 256 to 511 Byte Frames Received without Error */ +/* -------- GMAC_TBFR1023 : (GMAC Offset: 0x178) 512 to 1023 Byte Frames Received Register -------- */ +#define GMAC_TBFR1023_NFRX_Pos 0 +#define GMAC_TBFR1023_NFRX_Msk (0xffffffffu << GMAC_TBFR1023_NFRX_Pos) /**< \brief (GMAC_TBFR1023) 512 to 1023 Byte Frames Received without Error */ +/* -------- GMAC_TBFR1518 : (GMAC Offset: 0x17C) 1024 to 1518 Byte Frames Received Register -------- */ +#define GMAC_TBFR1518_NFRX_Pos 0 +#define GMAC_TBFR1518_NFRX_Msk (0xffffffffu << GMAC_TBFR1518_NFRX_Pos) /**< \brief (GMAC_TBFR1518) 1024 to 1518 Byte Frames Received without Error */ +/* -------- GMAC_TMXBFR : (GMAC Offset: 0x180) 1519 to Maximum Byte Frames Received Register -------- */ +#define GMAC_TMXBFR_NFRX_Pos 0 +#define GMAC_TMXBFR_NFRX_Msk (0xffffffffu << GMAC_TMXBFR_NFRX_Pos) /**< \brief (GMAC_TMXBFR) 1519 to Maximum Byte Frames Received without Error */ +/* -------- GMAC_UFR : (GMAC Offset: 0x184) Undersize Frames Received Register -------- */ +#define GMAC_UFR_UFRX_Pos 0 +#define GMAC_UFR_UFRX_Msk (0x3ffu << GMAC_UFR_UFRX_Pos) /**< \brief (GMAC_UFR) Undersize Frames Received */ +/* -------- GMAC_OFR : (GMAC Offset: 0x188) Oversize Frames Received Register -------- */ +#define GMAC_OFR_OFRX_Pos 0 +#define GMAC_OFR_OFRX_Msk (0x3ffu << GMAC_OFR_OFRX_Pos) /**< \brief (GMAC_OFR) Oversized Frames Received */ +/* -------- GMAC_JR : (GMAC Offset: 0x18C) Jabbers Received Register -------- */ +#define GMAC_JR_JRX_Pos 0 +#define GMAC_JR_JRX_Msk (0x3ffu << GMAC_JR_JRX_Pos) /**< \brief (GMAC_JR) Jabbers Received */ +/* -------- GMAC_FCSE : (GMAC Offset: 0x190) Frame Check Sequence Errors Register -------- */ +#define GMAC_FCSE_FCKR_Pos 0 +#define GMAC_FCSE_FCKR_Msk (0x3ffu << GMAC_FCSE_FCKR_Pos) /**< \brief (GMAC_FCSE) Frame Check Sequence Errors */ +/* -------- GMAC_LFFE : (GMAC Offset: 0x194) Length Field Frame Errors Register -------- */ +#define GMAC_LFFE_LFER_Pos 0 +#define GMAC_LFFE_LFER_Msk (0x3ffu << GMAC_LFFE_LFER_Pos) /**< \brief (GMAC_LFFE) Length Field Frame Errors */ +/* -------- GMAC_RSE : (GMAC Offset: 0x198) Receive Symbol Errors Register -------- */ +#define GMAC_RSE_RXSE_Pos 0 +#define GMAC_RSE_RXSE_Msk (0x3ffu << GMAC_RSE_RXSE_Pos) /**< \brief (GMAC_RSE) Receive Symbol Errors */ +/* -------- GMAC_AE : (GMAC Offset: 0x19C) Alignment Errors Register -------- */ +#define GMAC_AE_AER_Pos 0 +#define GMAC_AE_AER_Msk (0x3ffu << GMAC_AE_AER_Pos) /**< \brief (GMAC_AE) Alignment Errors */ +/* -------- GMAC_RRE : (GMAC Offset: 0x1A0) Receive Resource Errors Register -------- */ +#define GMAC_RRE_RXRER_Pos 0 +#define GMAC_RRE_RXRER_Msk (0x3ffffu << GMAC_RRE_RXRER_Pos) /**< \brief (GMAC_RRE) Receive Resource Errors */ +/* -------- GMAC_ROE : (GMAC Offset: 0x1A4) Receive Overrun Register -------- */ +#define GMAC_ROE_RXOVR_Pos 0 +#define GMAC_ROE_RXOVR_Msk (0x3ffu << GMAC_ROE_RXOVR_Pos) /**< \brief (GMAC_ROE) Receive Overruns */ +/* -------- GMAC_IHCE : (GMAC Offset: 0x1A8) IP Header Checksum Errors Register -------- */ +#define GMAC_IHCE_HCKER_Pos 0 +#define GMAC_IHCE_HCKER_Msk (0xffu << GMAC_IHCE_HCKER_Pos) /**< \brief (GMAC_IHCE) IP Header Checksum Errors */ +/* -------- GMAC_TCE : (GMAC Offset: 0x1AC) TCP Checksum Errors Register -------- */ +#define GMAC_TCE_TCKER_Pos 0 +#define GMAC_TCE_TCKER_Msk (0xffu << GMAC_TCE_TCKER_Pos) /**< \brief (GMAC_TCE) TCP Checksum Errors */ +/* -------- GMAC_UCE : (GMAC Offset: 0x1B0) UDP Checksum Errors Register -------- */ +#define GMAC_UCE_UCKER_Pos 0 +#define GMAC_UCE_UCKER_Msk (0xffu << GMAC_UCE_UCKER_Pos) /**< \brief (GMAC_UCE) UDP Checksum Errors */ +/* -------- GMAC_TSSS : (GMAC Offset: 0x1C8) 1588 Timer Sync Strobe Seconds Register -------- */ +#define GMAC_TSSS_VTS_Pos 0 +#define GMAC_TSSS_VTS_Msk (0xffffffffu << GMAC_TSSS_VTS_Pos) /**< \brief (GMAC_TSSS) Value of Timer Seconds Register Capture */ +#define GMAC_TSSS_VTS(value) ((GMAC_TSSS_VTS_Msk & ((value) << GMAC_TSSS_VTS_Pos))) +/* -------- GMAC_TSSN : (GMAC Offset: 0x1CC) 1588 Timer Sync Strobe Nanoseconds Register -------- */ +#define GMAC_TSSN_VTN_Pos 0 +#define GMAC_TSSN_VTN_Msk (0x3fffffffu << GMAC_TSSN_VTN_Pos) /**< \brief (GMAC_TSSN) Value Timer Nanoseconds Register Capture */ +#define GMAC_TSSN_VTN(value) ((GMAC_TSSN_VTN_Msk & ((value) << GMAC_TSSN_VTN_Pos))) +/* -------- GMAC_TS : (GMAC Offset: 0x1D0) 1588 Timer Seconds Register -------- */ +#define GMAC_TS_TCS_Pos 0 +#define GMAC_TS_TCS_Msk (0xffffffffu << GMAC_TS_TCS_Pos) /**< \brief (GMAC_TS) Timer Count in Seconds */ +#define GMAC_TS_TCS(value) ((GMAC_TS_TCS_Msk & ((value) << GMAC_TS_TCS_Pos))) +/* -------- GMAC_TN : (GMAC Offset: 0x1D4) 1588 Timer Nanoseconds Register -------- */ +#define GMAC_TN_TNS_Pos 0 +#define GMAC_TN_TNS_Msk (0x3fffffffu << GMAC_TN_TNS_Pos) /**< \brief (GMAC_TN) Timer Count in Nanoseconds */ +#define GMAC_TN_TNS(value) ((GMAC_TN_TNS_Msk & ((value) << GMAC_TN_TNS_Pos))) +/* -------- GMAC_TA : (GMAC Offset: 0x1D8) 1588 Timer Adjust Register -------- */ +#define GMAC_TA_ITDT_Pos 0 +#define GMAC_TA_ITDT_Msk (0x3fffffffu << GMAC_TA_ITDT_Pos) /**< \brief (GMAC_TA) Increment/Decrement */ +#define GMAC_TA_ITDT(value) ((GMAC_TA_ITDT_Msk & ((value) << GMAC_TA_ITDT_Pos))) +#define GMAC_TA_ADJ (0x1u << 31) /**< \brief (GMAC_TA) Adjust 1588 Timer */ +/* -------- GMAC_TI : (GMAC Offset: 0x1DC) 1588 Timer Increment Register -------- */ +#define GMAC_TI_CNS_Pos 0 +#define GMAC_TI_CNS_Msk (0xffu << GMAC_TI_CNS_Pos) /**< \brief (GMAC_TI) Count Nanoseconds */ +#define GMAC_TI_CNS(value) ((GMAC_TI_CNS_Msk & ((value) << GMAC_TI_CNS_Pos))) +#define GMAC_TI_ACNS_Pos 8 +#define GMAC_TI_ACNS_Msk (0xffu << GMAC_TI_ACNS_Pos) /**< \brief (GMAC_TI) Alternative Count Nanoseconds */ +#define GMAC_TI_ACNS(value) ((GMAC_TI_ACNS_Msk & ((value) << GMAC_TI_ACNS_Pos))) +#define GMAC_TI_NIT_Pos 16 +#define GMAC_TI_NIT_Msk (0xffu << GMAC_TI_NIT_Pos) /**< \brief (GMAC_TI) Number of Increments */ +#define GMAC_TI_NIT(value) ((GMAC_TI_NIT_Msk & ((value) << GMAC_TI_NIT_Pos))) +/* -------- GMAC_EFTS : (GMAC Offset: 0x1E0) PTP Event Frame Transmitted Seconds -------- */ +#define GMAC_EFTS_RUD_Pos 0 +#define GMAC_EFTS_RUD_Msk (0xffffffffu << GMAC_EFTS_RUD_Pos) /**< \brief (GMAC_EFTS) Register Update */ +/* -------- GMAC_EFTN : (GMAC Offset: 0x1E4) PTP Event Frame Transmitted Nanoseconds -------- */ +#define GMAC_EFTN_RUD_Pos 0 +#define GMAC_EFTN_RUD_Msk (0x3fffffffu << GMAC_EFTN_RUD_Pos) /**< \brief (GMAC_EFTN) Register Update */ +/* -------- GMAC_EFRS : (GMAC Offset: 0x1E8) PTP Event Frame Received Seconds -------- */ +#define GMAC_EFRS_RUD_Pos 0 +#define GMAC_EFRS_RUD_Msk (0xffffffffu << GMAC_EFRS_RUD_Pos) /**< \brief (GMAC_EFRS) Register Update */ +/* -------- GMAC_EFRN : (GMAC Offset: 0x1EC) PTP Event Frame Received Nanoseconds -------- */ +#define GMAC_EFRN_RUD_Pos 0 +#define GMAC_EFRN_RUD_Msk (0x3fffffffu << GMAC_EFRN_RUD_Pos) /**< \brief (GMAC_EFRN) Register Update */ +/* -------- GMAC_PEFTS : (GMAC Offset: 0x1F0) PTP Peer Event Frame Transmitted Seconds -------- */ +#define GMAC_PEFTS_RUD_Pos 0 +#define GMAC_PEFTS_RUD_Msk (0xffffffffu << GMAC_PEFTS_RUD_Pos) /**< \brief (GMAC_PEFTS) Register Update */ +/* -------- GMAC_PEFTN : (GMAC Offset: 0x1F4) PTP Peer Event Frame Transmitted Nanoseconds -------- */ +#define GMAC_PEFTN_RUD_Pos 0 +#define GMAC_PEFTN_RUD_Msk (0x3fffffffu << GMAC_PEFTN_RUD_Pos) /**< \brief (GMAC_PEFTN) Register Update */ +/* -------- GMAC_PEFRS : (GMAC Offset: 0x1F8) PTP Peer Event Frame Received Seconds -------- */ +#define GMAC_PEFRS_RUD_Pos 0 +#define GMAC_PEFRS_RUD_Msk (0xffffffffu << GMAC_PEFRS_RUD_Pos) /**< \brief (GMAC_PEFRS) Register Update */ +/* -------- GMAC_PEFRN : (GMAC Offset: 0x1FC) PTP Peer Event Frame Received Nanoseconds -------- */ +#define GMAC_PEFRN_RUD_Pos 0 +#define GMAC_PEFRN_RUD_Msk (0x3fffffffu << GMAC_PEFRN_RUD_Pos) /**< \brief (GMAC_PEFRN) Register Update */ + +/*@}*/ + + +#endif /* _SAM4E_GMAC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/gpbr.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/gpbr.h new file mode 100644 index 000000000..c379442bf --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/gpbr.h @@ -0,0 +1,65 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_GPBR_COMPONENT_ +#define _SAM4E_GPBR_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR General Purpose Backup Register */ +/* ============================================================================= */ +/** \addtogroup SAM4E_GPBR General Purpose Backup Register */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Gpbr hardware registers */ +typedef struct { + RwReg SYS_GPBR[20]; /**< \brief (Gpbr Offset: 0x0) General Purpose Backup Register */ +} Gpbr; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- SYS_GPBR[20] : (GPBR Offset: 0x0) General Purpose Backup Register -------- */ +#define SYS_GPBR_GPBR_VALUE_Pos 0 +#define SYS_GPBR_GPBR_VALUE_Msk (0xffffffffu << SYS_GPBR_GPBR_VALUE_Pos) /**< \brief (SYS_GPBR[20]) Value of GPBR x */ +#define SYS_GPBR_GPBR_VALUE(value) ((SYS_GPBR_GPBR_VALUE_Msk & ((value) << SYS_GPBR_GPBR_VALUE_Pos))) + +/*@}*/ + + +#endif /* _SAM4E_GPBR_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/hsmci.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/hsmci.h new file mode 100644 index 000000000..a5b95d7b2 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/hsmci.h @@ -0,0 +1,395 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_HSMCI_COMPONENT_ +#define _SAM4E_HSMCI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR High Speed MultiMedia Card Interface */ +/* ============================================================================= */ +/** \addtogroup SAM4E_HSMCI High Speed MultiMedia Card Interface */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Hsmci hardware registers */ +typedef struct { + WoReg HSMCI_CR; /**< \brief (Hsmci Offset: 0x00) Control Register */ + RwReg HSMCI_MR; /**< \brief (Hsmci Offset: 0x04) Mode Register */ + RwReg HSMCI_DTOR; /**< \brief (Hsmci Offset: 0x08) Data Timeout Register */ + RwReg HSMCI_SDCR; /**< \brief (Hsmci Offset: 0x0C) SD/SDIO Card Register */ + RwReg HSMCI_ARGR; /**< \brief (Hsmci Offset: 0x10) Argument Register */ + WoReg HSMCI_CMDR; /**< \brief (Hsmci Offset: 0x14) Command Register */ + RwReg HSMCI_BLKR; /**< \brief (Hsmci Offset: 0x18) Block Register */ + RwReg HSMCI_CSTOR; /**< \brief (Hsmci Offset: 0x1C) Completion Signal Timeout Register */ + RoReg HSMCI_RSPR[4]; /**< \brief (Hsmci Offset: 0x20) Response Register */ + RoReg HSMCI_RDR; /**< \brief (Hsmci Offset: 0x30) Receive Data Register */ + WoReg HSMCI_TDR; /**< \brief (Hsmci Offset: 0x34) Transmit Data Register */ + RoReg Reserved1[2]; + RoReg HSMCI_SR; /**< \brief (Hsmci Offset: 0x40) Status Register */ + WoReg HSMCI_IER; /**< \brief (Hsmci Offset: 0x44) Interrupt Enable Register */ + WoReg HSMCI_IDR; /**< \brief (Hsmci Offset: 0x48) Interrupt Disable Register */ + RoReg HSMCI_IMR; /**< \brief (Hsmci Offset: 0x4C) Interrupt Mask Register */ + RoReg Reserved2[1]; + RwReg HSMCI_CFG; /**< \brief (Hsmci Offset: 0x54) Configuration Register */ + RoReg Reserved3[35]; + RwReg HSMCI_WPMR; /**< \brief (Hsmci Offset: 0xE4) Write Protection Mode Register */ + RoReg HSMCI_WPSR; /**< \brief (Hsmci Offset: 0xE8) Write Protection Status Register */ + RoReg Reserved4[5]; + RwReg HSMCI_RPR; /**< \brief (Hsmci Offset: 0x100) Receive Pointer Register */ + RwReg HSMCI_RCR; /**< \brief (Hsmci Offset: 0x104) Receive Counter Register */ + RwReg HSMCI_TPR; /**< \brief (Hsmci Offset: 0x108) Transmit Pointer Register */ + RwReg HSMCI_TCR; /**< \brief (Hsmci Offset: 0x10C) Transmit Counter Register */ + RwReg HSMCI_RNPR; /**< \brief (Hsmci Offset: 0x110) Receive Next Pointer Register */ + RwReg HSMCI_RNCR; /**< \brief (Hsmci Offset: 0x114) Receive Next Counter Register */ + RwReg HSMCI_TNPR; /**< \brief (Hsmci Offset: 0x118) Transmit Next Pointer Register */ + RwReg HSMCI_TNCR; /**< \brief (Hsmci Offset: 0x11C) Transmit Next Counter Register */ + WoReg HSMCI_PTCR; /**< \brief (Hsmci Offset: 0x120) Transfer Control Register */ + RoReg HSMCI_PTSR; /**< \brief (Hsmci Offset: 0x124) Transfer Status Register */ + RoReg Reserved5[54]; + RwReg HSMCI_FIFO[256]; /**< \brief (Hsmci Offset: 0x200) FIFO Memory Aperture0 */ +} Hsmci; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- HSMCI_CR : (HSMCI Offset: 0x00) Control Register -------- */ +#define HSMCI_CR_MCIEN (0x1u << 0) /**< \brief (HSMCI_CR) Multi-Media Interface Enable */ +#define HSMCI_CR_MCIDIS (0x1u << 1) /**< \brief (HSMCI_CR) Multi-Media Interface Disable */ +#define HSMCI_CR_PWSEN (0x1u << 2) /**< \brief (HSMCI_CR) Power Save Mode Enable */ +#define HSMCI_CR_PWSDIS (0x1u << 3) /**< \brief (HSMCI_CR) Power Save Mode Disable */ +#define HSMCI_CR_SWRST (0x1u << 7) /**< \brief (HSMCI_CR) Software Reset */ +/* -------- HSMCI_MR : (HSMCI Offset: 0x04) Mode Register -------- */ +#define HSMCI_MR_CLKDIV_Pos 0 +#define HSMCI_MR_CLKDIV_Msk (0xffu << HSMCI_MR_CLKDIV_Pos) /**< \brief (HSMCI_MR) Clock Divider */ +#define HSMCI_MR_CLKDIV(value) ((HSMCI_MR_CLKDIV_Msk & ((value) << HSMCI_MR_CLKDIV_Pos))) +#define HSMCI_MR_PWSDIV_Pos 8 +#define HSMCI_MR_PWSDIV_Msk (0x7u << HSMCI_MR_PWSDIV_Pos) /**< \brief (HSMCI_MR) Power Saving Divider */ +#define HSMCI_MR_PWSDIV(value) ((HSMCI_MR_PWSDIV_Msk & ((value) << HSMCI_MR_PWSDIV_Pos))) +#define HSMCI_MR_RDPROOF (0x1u << 11) /**< \brief (HSMCI_MR) Read Proof Enable */ +#define HSMCI_MR_WRPROOF (0x1u << 12) /**< \brief (HSMCI_MR) Write Proof Enable */ +#define HSMCI_MR_FBYTE (0x1u << 13) /**< \brief (HSMCI_MR) Force Byte Transfer */ +#define HSMCI_MR_PADV (0x1u << 14) /**< \brief (HSMCI_MR) Padding Value */ +#define HSMCI_MR_PDCMODE (0x1u << 15) /**< \brief (HSMCI_MR) PDC-oriented Mode */ +#define HSMCI_MR_CLKODD (0x1u << 16) /**< \brief (HSMCI_MR) Clock divider is odd */ +/* -------- HSMCI_DTOR : (HSMCI Offset: 0x08) Data Timeout Register -------- */ +#define HSMCI_DTOR_DTOCYC_Pos 0 +#define HSMCI_DTOR_DTOCYC_Msk (0xfu << HSMCI_DTOR_DTOCYC_Pos) /**< \brief (HSMCI_DTOR) Data Timeout Cycle Number */ +#define HSMCI_DTOR_DTOCYC(value) ((HSMCI_DTOR_DTOCYC_Msk & ((value) << HSMCI_DTOR_DTOCYC_Pos))) +#define HSMCI_DTOR_DTOMUL_Pos 4 +#define HSMCI_DTOR_DTOMUL_Msk (0x7u << HSMCI_DTOR_DTOMUL_Pos) /**< \brief (HSMCI_DTOR) Data Timeout Multiplier */ +#define HSMCI_DTOR_DTOMUL_1 (0x0u << 4) /**< \brief (HSMCI_DTOR) DTOCYC */ +#define HSMCI_DTOR_DTOMUL_16 (0x1u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 16 */ +#define HSMCI_DTOR_DTOMUL_128 (0x2u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 128 */ +#define HSMCI_DTOR_DTOMUL_256 (0x3u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 256 */ +#define HSMCI_DTOR_DTOMUL_1024 (0x4u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 1024 */ +#define HSMCI_DTOR_DTOMUL_4096 (0x5u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 4096 */ +#define HSMCI_DTOR_DTOMUL_65536 (0x6u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 65536 */ +#define HSMCI_DTOR_DTOMUL_1048576 (0x7u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 1048576 */ +/* -------- HSMCI_SDCR : (HSMCI Offset: 0x0C) SD/SDIO Card Register -------- */ +#define HSMCI_SDCR_SDCSEL_Pos 0 +#define HSMCI_SDCR_SDCSEL_Msk (0x3u << HSMCI_SDCR_SDCSEL_Pos) /**< \brief (HSMCI_SDCR) SDCard/SDIO Slot */ +#define HSMCI_SDCR_SDCSEL_SLOTA (0x0u << 0) /**< \brief (HSMCI_SDCR) Slot A is selected. */ +#define HSMCI_SDCR_SDCSEL_SLOTB (0x1u << 0) /**< \brief (HSMCI_SDCR) - */ +#define HSMCI_SDCR_SDCSEL_SLOTC (0x2u << 0) /**< \brief (HSMCI_SDCR) - */ +#define HSMCI_SDCR_SDCSEL_SLOTD (0x3u << 0) /**< \brief (HSMCI_SDCR) - */ +#define HSMCI_SDCR_SDCBUS_Pos 6 +#define HSMCI_SDCR_SDCBUS_Msk (0x3u << HSMCI_SDCR_SDCBUS_Pos) /**< \brief (HSMCI_SDCR) SDCard/SDIO Bus Width */ +#define HSMCI_SDCR_SDCBUS_1 (0x0u << 6) /**< \brief (HSMCI_SDCR) 1 bit */ +#define HSMCI_SDCR_SDCBUS_4 (0x2u << 6) /**< \brief (HSMCI_SDCR) 4 bit */ +#define HSMCI_SDCR_SDCBUS_8 (0x3u << 6) /**< \brief (HSMCI_SDCR) 8 bit */ +/* -------- HSMCI_ARGR : (HSMCI Offset: 0x10) Argument Register -------- */ +#define HSMCI_ARGR_ARG_Pos 0 +#define HSMCI_ARGR_ARG_Msk (0xffffffffu << HSMCI_ARGR_ARG_Pos) /**< \brief (HSMCI_ARGR) Command Argument */ +#define HSMCI_ARGR_ARG(value) ((HSMCI_ARGR_ARG_Msk & ((value) << HSMCI_ARGR_ARG_Pos))) +/* -------- HSMCI_CMDR : (HSMCI Offset: 0x14) Command Register -------- */ +#define HSMCI_CMDR_CMDNB_Pos 0 +#define HSMCI_CMDR_CMDNB_Msk (0x3fu << HSMCI_CMDR_CMDNB_Pos) /**< \brief (HSMCI_CMDR) Command Number */ +#define HSMCI_CMDR_CMDNB(value) ((HSMCI_CMDR_CMDNB_Msk & ((value) << HSMCI_CMDR_CMDNB_Pos))) +#define HSMCI_CMDR_RSPTYP_Pos 6 +#define HSMCI_CMDR_RSPTYP_Msk (0x3u << HSMCI_CMDR_RSPTYP_Pos) /**< \brief (HSMCI_CMDR) Response Type */ +#define HSMCI_CMDR_RSPTYP_NORESP (0x0u << 6) /**< \brief (HSMCI_CMDR) No response. */ +#define HSMCI_CMDR_RSPTYP_48_BIT (0x1u << 6) /**< \brief (HSMCI_CMDR) 48-bit response. */ +#define HSMCI_CMDR_RSPTYP_136_BIT (0x2u << 6) /**< \brief (HSMCI_CMDR) 136-bit response. */ +#define HSMCI_CMDR_RSPTYP_R1B (0x3u << 6) /**< \brief (HSMCI_CMDR) R1b response type */ +#define HSMCI_CMDR_SPCMD_Pos 8 +#define HSMCI_CMDR_SPCMD_Msk (0x7u << HSMCI_CMDR_SPCMD_Pos) /**< \brief (HSMCI_CMDR) Special Command */ +#define HSMCI_CMDR_SPCMD_STD (0x0u << 8) /**< \brief (HSMCI_CMDR) Not a special CMD. */ +#define HSMCI_CMDR_SPCMD_INIT (0x1u << 8) /**< \brief (HSMCI_CMDR) Initialization CMD: 74 clock cycles for initialization sequence. */ +#define HSMCI_CMDR_SPCMD_SYNC (0x2u << 8) /**< \brief (HSMCI_CMDR) Synchronized CMD: Wait for the end of the current data block transfer before sending the pending command. */ +#define HSMCI_CMDR_SPCMD_CE_ATA (0x3u << 8) /**< \brief (HSMCI_CMDR) CE-ATA Completion Signal disable Command. The host cancels the ability for the device to return a command completion signal on the command line. */ +#define HSMCI_CMDR_SPCMD_IT_CMD (0x4u << 8) /**< \brief (HSMCI_CMDR) Interrupt command: Corresponds to the Interrupt Mode (CMD40). */ +#define HSMCI_CMDR_SPCMD_IT_RESP (0x5u << 8) /**< \brief (HSMCI_CMDR) Interrupt response: Corresponds to the Interrupt Mode (CMD40). */ +#define HSMCI_CMDR_SPCMD_BOR (0x6u << 8) /**< \brief (HSMCI_CMDR) Boot Operation Request. Start a boot operation mode, the host processor can read boot data from the MMC device directly. */ +#define HSMCI_CMDR_SPCMD_EBO (0x7u << 8) /**< \brief (HSMCI_CMDR) End Boot Operation. This command allows the host processor to terminate the boot operation mode. */ +#define HSMCI_CMDR_OPDCMD (0x1u << 11) /**< \brief (HSMCI_CMDR) Open Drain Command */ +#define HSMCI_CMDR_OPDCMD_PUSHPULL (0x0u << 11) /**< \brief (HSMCI_CMDR) Push pull command. */ +#define HSMCI_CMDR_OPDCMD_OPENDRAIN (0x1u << 11) /**< \brief (HSMCI_CMDR) Open drain command. */ +#define HSMCI_CMDR_MAXLAT (0x1u << 12) /**< \brief (HSMCI_CMDR) Max Latency for Command to Response */ +#define HSMCI_CMDR_MAXLAT_5 (0x0u << 12) /**< \brief (HSMCI_CMDR) 5-cycle max latency. */ +#define HSMCI_CMDR_MAXLAT_64 (0x1u << 12) /**< \brief (HSMCI_CMDR) 64-cycle max latency. */ +#define HSMCI_CMDR_TRCMD_Pos 16 +#define HSMCI_CMDR_TRCMD_Msk (0x3u << HSMCI_CMDR_TRCMD_Pos) /**< \brief (HSMCI_CMDR) Transfer Command */ +#define HSMCI_CMDR_TRCMD_NO_DATA (0x0u << 16) /**< \brief (HSMCI_CMDR) No data transfer */ +#define HSMCI_CMDR_TRCMD_START_DATA (0x1u << 16) /**< \brief (HSMCI_CMDR) Start data transfer */ +#define HSMCI_CMDR_TRCMD_STOP_DATA (0x2u << 16) /**< \brief (HSMCI_CMDR) Stop data transfer */ +#define HSMCI_CMDR_TRDIR (0x1u << 18) /**< \brief (HSMCI_CMDR) Transfer Direction */ +#define HSMCI_CMDR_TRDIR_WRITE (0x0u << 18) /**< \brief (HSMCI_CMDR) Write. */ +#define HSMCI_CMDR_TRDIR_READ (0x1u << 18) /**< \brief (HSMCI_CMDR) Read. */ +#define HSMCI_CMDR_TRTYP_Pos 19 +#define HSMCI_CMDR_TRTYP_Msk (0x7u << HSMCI_CMDR_TRTYP_Pos) /**< \brief (HSMCI_CMDR) Transfer Type */ +#define HSMCI_CMDR_TRTYP_SINGLE (0x0u << 19) /**< \brief (HSMCI_CMDR) MMC/SD Card Single Block */ +#define HSMCI_CMDR_TRTYP_MULTIPLE (0x1u << 19) /**< \brief (HSMCI_CMDR) MMC/SD Card Multiple Block */ +#define HSMCI_CMDR_TRTYP_STREAM (0x2u << 19) /**< \brief (HSMCI_CMDR) MMC Stream */ +#define HSMCI_CMDR_TRTYP_BYTE (0x4u << 19) /**< \brief (HSMCI_CMDR) SDIO Byte */ +#define HSMCI_CMDR_TRTYP_BLOCK (0x5u << 19) /**< \brief (HSMCI_CMDR) SDIO Block */ +#define HSMCI_CMDR_IOSPCMD_Pos 24 +#define HSMCI_CMDR_IOSPCMD_Msk (0x3u << HSMCI_CMDR_IOSPCMD_Pos) /**< \brief (HSMCI_CMDR) SDIO Special Command */ +#define HSMCI_CMDR_IOSPCMD_STD (0x0u << 24) /**< \brief (HSMCI_CMDR) Not an SDIO Special Command */ +#define HSMCI_CMDR_IOSPCMD_SUSPEND (0x1u << 24) /**< \brief (HSMCI_CMDR) SDIO Suspend Command */ +#define HSMCI_CMDR_IOSPCMD_RESUME (0x2u << 24) /**< \brief (HSMCI_CMDR) SDIO Resume Command */ +#define HSMCI_CMDR_ATACS (0x1u << 26) /**< \brief (HSMCI_CMDR) ATA with Command Completion Signal */ +#define HSMCI_CMDR_ATACS_NORMAL (0x0u << 26) /**< \brief (HSMCI_CMDR) Normal operation mode. */ +#define HSMCI_CMDR_ATACS_COMPLETION (0x1u << 26) /**< \brief (HSMCI_CMDR) This bit indicates that a completion signal is expected within a programmed amount of time (HSMCI_CSTOR). */ +#define HSMCI_CMDR_BOOT_ACK (0x1u << 27) /**< \brief (HSMCI_CMDR) Boot Operation Acknowledge. */ +/* -------- HSMCI_BLKR : (HSMCI Offset: 0x18) Block Register -------- */ +#define HSMCI_BLKR_BCNT_Pos 0 +#define HSMCI_BLKR_BCNT_Msk (0xffffu << HSMCI_BLKR_BCNT_Pos) /**< \brief (HSMCI_BLKR) MMC/SDIO Block Count - SDIO Byte Count */ +#define HSMCI_BLKR_BCNT(value) ((HSMCI_BLKR_BCNT_Msk & ((value) << HSMCI_BLKR_BCNT_Pos))) +#define HSMCI_BLKR_BLKLEN_Pos 16 +#define HSMCI_BLKR_BLKLEN_Msk (0xffffu << HSMCI_BLKR_BLKLEN_Pos) /**< \brief (HSMCI_BLKR) Data Block Length */ +#define HSMCI_BLKR_BLKLEN(value) ((HSMCI_BLKR_BLKLEN_Msk & ((value) << HSMCI_BLKR_BLKLEN_Pos))) +/* -------- HSMCI_CSTOR : (HSMCI Offset: 0x1C) Completion Signal Timeout Register -------- */ +#define HSMCI_CSTOR_CSTOCYC_Pos 0 +#define HSMCI_CSTOR_CSTOCYC_Msk (0xfu << HSMCI_CSTOR_CSTOCYC_Pos) /**< \brief (HSMCI_CSTOR) Completion Signal Timeout Cycle Number */ +#define HSMCI_CSTOR_CSTOCYC(value) ((HSMCI_CSTOR_CSTOCYC_Msk & ((value) << HSMCI_CSTOR_CSTOCYC_Pos))) +#define HSMCI_CSTOR_CSTOMUL_Pos 4 +#define HSMCI_CSTOR_CSTOMUL_Msk (0x7u << HSMCI_CSTOR_CSTOMUL_Pos) /**< \brief (HSMCI_CSTOR) Completion Signal Timeout Multiplier */ +#define HSMCI_CSTOR_CSTOMUL_1 (0x0u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1 */ +#define HSMCI_CSTOR_CSTOMUL_16 (0x1u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 16 */ +#define HSMCI_CSTOR_CSTOMUL_128 (0x2u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 128 */ +#define HSMCI_CSTOR_CSTOMUL_256 (0x3u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 256 */ +#define HSMCI_CSTOR_CSTOMUL_1024 (0x4u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1024 */ +#define HSMCI_CSTOR_CSTOMUL_4096 (0x5u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 4096 */ +#define HSMCI_CSTOR_CSTOMUL_65536 (0x6u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 65536 */ +#define HSMCI_CSTOR_CSTOMUL_1048576 (0x7u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1048576 */ +/* -------- HSMCI_RSPR[4] : (HSMCI Offset: 0x20) Response Register -------- */ +#define HSMCI_RSPR_RSP_Pos 0 +#define HSMCI_RSPR_RSP_Msk (0xffffffffu << HSMCI_RSPR_RSP_Pos) /**< \brief (HSMCI_RSPR[4]) Response */ +/* -------- HSMCI_RDR : (HSMCI Offset: 0x30) Receive Data Register -------- */ +#define HSMCI_RDR_DATA_Pos 0 +#define HSMCI_RDR_DATA_Msk (0xffffffffu << HSMCI_RDR_DATA_Pos) /**< \brief (HSMCI_RDR) Data to Read */ +/* -------- HSMCI_TDR : (HSMCI Offset: 0x34) Transmit Data Register -------- */ +#define HSMCI_TDR_DATA_Pos 0 +#define HSMCI_TDR_DATA_Msk (0xffffffffu << HSMCI_TDR_DATA_Pos) /**< \brief (HSMCI_TDR) Data to Write */ +#define HSMCI_TDR_DATA(value) ((HSMCI_TDR_DATA_Msk & ((value) << HSMCI_TDR_DATA_Pos))) +/* -------- HSMCI_SR : (HSMCI Offset: 0x40) Status Register -------- */ +#define HSMCI_SR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_SR) Command Ready */ +#define HSMCI_SR_RXRDY (0x1u << 1) /**< \brief (HSMCI_SR) Receiver Ready */ +#define HSMCI_SR_TXRDY (0x1u << 2) /**< \brief (HSMCI_SR) Transmit Ready */ +#define HSMCI_SR_BLKE (0x1u << 3) /**< \brief (HSMCI_SR) Data Block Ended */ +#define HSMCI_SR_DTIP (0x1u << 4) /**< \brief (HSMCI_SR) Data Transfer in Progress */ +#define HSMCI_SR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_SR) HSMCI Not Busy */ +#define HSMCI_SR_ENDRX (0x1u << 6) /**< \brief (HSMCI_SR) End of RX Buffer */ +#define HSMCI_SR_ENDTX (0x1u << 7) /**< \brief (HSMCI_SR) End of TX Buffer */ +#define HSMCI_SR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_SR) SDIO Interrupt for Slot A */ +#define HSMCI_SR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_SR) SDIO Read Wait Operation Status */ +#define HSMCI_SR_CSRCV (0x1u << 13) /**< \brief (HSMCI_SR) CE-ATA Completion Signal Received */ +#define HSMCI_SR_RXBUFF (0x1u << 14) /**< \brief (HSMCI_SR) RX Buffer Full */ +#define HSMCI_SR_TXBUFE (0x1u << 15) /**< \brief (HSMCI_SR) TX Buffer Empty */ +#define HSMCI_SR_RINDE (0x1u << 16) /**< \brief (HSMCI_SR) Response Index Error */ +#define HSMCI_SR_RDIRE (0x1u << 17) /**< \brief (HSMCI_SR) Response Direction Error */ +#define HSMCI_SR_RCRCE (0x1u << 18) /**< \brief (HSMCI_SR) Response CRC Error */ +#define HSMCI_SR_RENDE (0x1u << 19) /**< \brief (HSMCI_SR) Response End Bit Error */ +#define HSMCI_SR_RTOE (0x1u << 20) /**< \brief (HSMCI_SR) Response Time-out Error */ +#define HSMCI_SR_DCRCE (0x1u << 21) /**< \brief (HSMCI_SR) Data CRC Error */ +#define HSMCI_SR_DTOE (0x1u << 22) /**< \brief (HSMCI_SR) Data Time-out Error */ +#define HSMCI_SR_CSTOE (0x1u << 23) /**< \brief (HSMCI_SR) Completion Signal Time-out Error */ +#define HSMCI_SR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_SR) FIFO empty flag */ +#define HSMCI_SR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_SR) Transfer Done flag */ +#define HSMCI_SR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_SR) Boot Operation Acknowledge Received */ +#define HSMCI_SR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_SR) Boot Operation Acknowledge Error */ +#define HSMCI_SR_OVRE (0x1u << 30) /**< \brief (HSMCI_SR) Overrun */ +#define HSMCI_SR_UNRE (0x1u << 31) /**< \brief (HSMCI_SR) Underrun */ +/* -------- HSMCI_IER : (HSMCI Offset: 0x44) Interrupt Enable Register -------- */ +#define HSMCI_IER_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IER) Command Ready Interrupt Enable */ +#define HSMCI_IER_RXRDY (0x1u << 1) /**< \brief (HSMCI_IER) Receiver Ready Interrupt Enable */ +#define HSMCI_IER_TXRDY (0x1u << 2) /**< \brief (HSMCI_IER) Transmit Ready Interrupt Enable */ +#define HSMCI_IER_BLKE (0x1u << 3) /**< \brief (HSMCI_IER) Data Block Ended Interrupt Enable */ +#define HSMCI_IER_DTIP (0x1u << 4) /**< \brief (HSMCI_IER) Data Transfer in Progress Interrupt Enable */ +#define HSMCI_IER_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IER) Data Not Busy Interrupt Enable */ +#define HSMCI_IER_ENDRX (0x1u << 6) /**< \brief (HSMCI_IER) End of Receive Buffer Interrupt Enable */ +#define HSMCI_IER_ENDTX (0x1u << 7) /**< \brief (HSMCI_IER) End of Transmit Buffer Interrupt Enable */ +#define HSMCI_IER_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IER) SDIO Interrupt for Slot A Interrupt Enable */ +#define HSMCI_IER_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IER) SDIO Read Wait Operation Status Interrupt Enable */ +#define HSMCI_IER_CSRCV (0x1u << 13) /**< \brief (HSMCI_IER) Completion Signal Received Interrupt Enable */ +#define HSMCI_IER_RXBUFF (0x1u << 14) /**< \brief (HSMCI_IER) Receive Buffer Full Interrupt Enable */ +#define HSMCI_IER_TXBUFE (0x1u << 15) /**< \brief (HSMCI_IER) Transmit Buffer Empty Interrupt Enable */ +#define HSMCI_IER_RINDE (0x1u << 16) /**< \brief (HSMCI_IER) Response Index Error Interrupt Enable */ +#define HSMCI_IER_RDIRE (0x1u << 17) /**< \brief (HSMCI_IER) Response Direction Error Interrupt Enable */ +#define HSMCI_IER_RCRCE (0x1u << 18) /**< \brief (HSMCI_IER) Response CRC Error Interrupt Enable */ +#define HSMCI_IER_RENDE (0x1u << 19) /**< \brief (HSMCI_IER) Response End Bit Error Interrupt Enable */ +#define HSMCI_IER_RTOE (0x1u << 20) /**< \brief (HSMCI_IER) Response Time-out Error Interrupt Enable */ +#define HSMCI_IER_DCRCE (0x1u << 21) /**< \brief (HSMCI_IER) Data CRC Error Interrupt Enable */ +#define HSMCI_IER_DTOE (0x1u << 22) /**< \brief (HSMCI_IER) Data Time-out Error Interrupt Enable */ +#define HSMCI_IER_CSTOE (0x1u << 23) /**< \brief (HSMCI_IER) Completion Signal Timeout Error Interrupt Enable */ +#define HSMCI_IER_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IER) FIFO empty Interrupt enable */ +#define HSMCI_IER_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IER) Transfer Done Interrupt enable */ +#define HSMCI_IER_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IER) Boot Acknowledge Interrupt Enable */ +#define HSMCI_IER_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IER) Boot Acknowledge Error Interrupt Enable */ +#define HSMCI_IER_OVRE (0x1u << 30) /**< \brief (HSMCI_IER) Overrun Interrupt Enable */ +#define HSMCI_IER_UNRE (0x1u << 31) /**< \brief (HSMCI_IER) Underrun Interrupt Enable */ +/* -------- HSMCI_IDR : (HSMCI Offset: 0x48) Interrupt Disable Register -------- */ +#define HSMCI_IDR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IDR) Command Ready Interrupt Disable */ +#define HSMCI_IDR_RXRDY (0x1u << 1) /**< \brief (HSMCI_IDR) Receiver Ready Interrupt Disable */ +#define HSMCI_IDR_TXRDY (0x1u << 2) /**< \brief (HSMCI_IDR) Transmit Ready Interrupt Disable */ +#define HSMCI_IDR_BLKE (0x1u << 3) /**< \brief (HSMCI_IDR) Data Block Ended Interrupt Disable */ +#define HSMCI_IDR_DTIP (0x1u << 4) /**< \brief (HSMCI_IDR) Data Transfer in Progress Interrupt Disable */ +#define HSMCI_IDR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IDR) Data Not Busy Interrupt Disable */ +#define HSMCI_IDR_ENDRX (0x1u << 6) /**< \brief (HSMCI_IDR) End of Receive Buffer Interrupt Disable */ +#define HSMCI_IDR_ENDTX (0x1u << 7) /**< \brief (HSMCI_IDR) End of Transmit Buffer Interrupt Disable */ +#define HSMCI_IDR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IDR) SDIO Interrupt for Slot A Interrupt Disable */ +#define HSMCI_IDR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IDR) SDIO Read Wait Operation Status Interrupt Disable */ +#define HSMCI_IDR_CSRCV (0x1u << 13) /**< \brief (HSMCI_IDR) Completion Signal received interrupt Disable */ +#define HSMCI_IDR_RXBUFF (0x1u << 14) /**< \brief (HSMCI_IDR) Receive Buffer Full Interrupt Disable */ +#define HSMCI_IDR_TXBUFE (0x1u << 15) /**< \brief (HSMCI_IDR) Transmit Buffer Empty Interrupt Disable */ +#define HSMCI_IDR_RINDE (0x1u << 16) /**< \brief (HSMCI_IDR) Response Index Error Interrupt Disable */ +#define HSMCI_IDR_RDIRE (0x1u << 17) /**< \brief (HSMCI_IDR) Response Direction Error Interrupt Disable */ +#define HSMCI_IDR_RCRCE (0x1u << 18) /**< \brief (HSMCI_IDR) Response CRC Error Interrupt Disable */ +#define HSMCI_IDR_RENDE (0x1u << 19) /**< \brief (HSMCI_IDR) Response End Bit Error Interrupt Disable */ +#define HSMCI_IDR_RTOE (0x1u << 20) /**< \brief (HSMCI_IDR) Response Time-out Error Interrupt Disable */ +#define HSMCI_IDR_DCRCE (0x1u << 21) /**< \brief (HSMCI_IDR) Data CRC Error Interrupt Disable */ +#define HSMCI_IDR_DTOE (0x1u << 22) /**< \brief (HSMCI_IDR) Data Time-out Error Interrupt Disable */ +#define HSMCI_IDR_CSTOE (0x1u << 23) /**< \brief (HSMCI_IDR) Completion Signal Time out Error Interrupt Disable */ +#define HSMCI_IDR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IDR) FIFO empty Interrupt Disable */ +#define HSMCI_IDR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IDR) Transfer Done Interrupt Disable */ +#define HSMCI_IDR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IDR) Boot Acknowledge Interrupt Disable */ +#define HSMCI_IDR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IDR) Boot Acknowledge Error Interrupt Disable */ +#define HSMCI_IDR_OVRE (0x1u << 30) /**< \brief (HSMCI_IDR) Overrun Interrupt Disable */ +#define HSMCI_IDR_UNRE (0x1u << 31) /**< \brief (HSMCI_IDR) Underrun Interrupt Disable */ +/* -------- HSMCI_IMR : (HSMCI Offset: 0x4C) Interrupt Mask Register -------- */ +#define HSMCI_IMR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IMR) Command Ready Interrupt Mask */ +#define HSMCI_IMR_RXRDY (0x1u << 1) /**< \brief (HSMCI_IMR) Receiver Ready Interrupt Mask */ +#define HSMCI_IMR_TXRDY (0x1u << 2) /**< \brief (HSMCI_IMR) Transmit Ready Interrupt Mask */ +#define HSMCI_IMR_BLKE (0x1u << 3) /**< \brief (HSMCI_IMR) Data Block Ended Interrupt Mask */ +#define HSMCI_IMR_DTIP (0x1u << 4) /**< \brief (HSMCI_IMR) Data Transfer in Progress Interrupt Mask */ +#define HSMCI_IMR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IMR) Data Not Busy Interrupt Mask */ +#define HSMCI_IMR_ENDRX (0x1u << 6) /**< \brief (HSMCI_IMR) End of Receive Buffer Interrupt Mask */ +#define HSMCI_IMR_ENDTX (0x1u << 7) /**< \brief (HSMCI_IMR) End of Transmit Buffer Interrupt Mask */ +#define HSMCI_IMR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IMR) SDIO Interrupt for Slot A Interrupt Mask */ +#define HSMCI_IMR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IMR) SDIO Read Wait Operation Status Interrupt Mask */ +#define HSMCI_IMR_CSRCV (0x1u << 13) /**< \brief (HSMCI_IMR) Completion Signal Received Interrupt Mask */ +#define HSMCI_IMR_RXBUFF (0x1u << 14) /**< \brief (HSMCI_IMR) Receive Buffer Full Interrupt Mask */ +#define HSMCI_IMR_TXBUFE (0x1u << 15) /**< \brief (HSMCI_IMR) Transmit Buffer Empty Interrupt Mask */ +#define HSMCI_IMR_RINDE (0x1u << 16) /**< \brief (HSMCI_IMR) Response Index Error Interrupt Mask */ +#define HSMCI_IMR_RDIRE (0x1u << 17) /**< \brief (HSMCI_IMR) Response Direction Error Interrupt Mask */ +#define HSMCI_IMR_RCRCE (0x1u << 18) /**< \brief (HSMCI_IMR) Response CRC Error Interrupt Mask */ +#define HSMCI_IMR_RENDE (0x1u << 19) /**< \brief (HSMCI_IMR) Response End Bit Error Interrupt Mask */ +#define HSMCI_IMR_RTOE (0x1u << 20) /**< \brief (HSMCI_IMR) Response Time-out Error Interrupt Mask */ +#define HSMCI_IMR_DCRCE (0x1u << 21) /**< \brief (HSMCI_IMR) Data CRC Error Interrupt Mask */ +#define HSMCI_IMR_DTOE (0x1u << 22) /**< \brief (HSMCI_IMR) Data Time-out Error Interrupt Mask */ +#define HSMCI_IMR_CSTOE (0x1u << 23) /**< \brief (HSMCI_IMR) Completion Signal Time-out Error Interrupt Mask */ +#define HSMCI_IMR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IMR) FIFO Empty Interrupt Mask */ +#define HSMCI_IMR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IMR) Transfer Done Interrupt Mask */ +#define HSMCI_IMR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IMR) Boot Operation Acknowledge Received Interrupt Mask */ +#define HSMCI_IMR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IMR) Boot Operation Acknowledge Error Interrupt Mask */ +#define HSMCI_IMR_OVRE (0x1u << 30) /**< \brief (HSMCI_IMR) Overrun Interrupt Mask */ +#define HSMCI_IMR_UNRE (0x1u << 31) /**< \brief (HSMCI_IMR) Underrun Interrupt Mask */ +/* -------- HSMCI_CFG : (HSMCI Offset: 0x54) Configuration Register -------- */ +#define HSMCI_CFG_FIFOMODE (0x1u << 0) /**< \brief (HSMCI_CFG) HSMCI Internal FIFO control mode */ +#define HSMCI_CFG_FERRCTRL (0x1u << 4) /**< \brief (HSMCI_CFG) Flow Error flag reset control mode */ +#define HSMCI_CFG_HSMODE (0x1u << 8) /**< \brief (HSMCI_CFG) High Speed Mode */ +#define HSMCI_CFG_LSYNC (0x1u << 12) /**< \brief (HSMCI_CFG) Synchronize on the last block */ +/* -------- HSMCI_WPMR : (HSMCI Offset: 0xE4) Write Protection Mode Register -------- */ +#define HSMCI_WPMR_WP_EN (0x1u << 0) /**< \brief (HSMCI_WPMR) Write Protection Enable */ +#define HSMCI_WPMR_WP_KEY_Pos 8 +#define HSMCI_WPMR_WP_KEY_Msk (0xffffffu << HSMCI_WPMR_WP_KEY_Pos) /**< \brief (HSMCI_WPMR) Write Protection Key password */ +#define HSMCI_WPMR_WP_KEY(value) ((HSMCI_WPMR_WP_KEY_Msk & ((value) << HSMCI_WPMR_WP_KEY_Pos))) +/* -------- HSMCI_WPSR : (HSMCI Offset: 0xE8) Write Protection Status Register -------- */ +#define HSMCI_WPSR_WP_VS_Pos 0 +#define HSMCI_WPSR_WP_VS_Msk (0xfu << HSMCI_WPSR_WP_VS_Pos) /**< \brief (HSMCI_WPSR) Write Protection Violation Status */ +#define HSMCI_WPSR_WP_VS_NONE (0x0u << 0) /**< \brief (HSMCI_WPSR) No Write Protection Violation occurred since the last read of this register (WP_SR) */ +#define HSMCI_WPSR_WP_VS_WRITE (0x1u << 0) /**< \brief (HSMCI_WPSR) Write Protection detected unauthorized attempt to write a control register had occurred (since the last read.) */ +#define HSMCI_WPSR_WP_VS_RESET (0x2u << 0) /**< \brief (HSMCI_WPSR) Software reset had been performed while Write Protection was enabled (since the last read). */ +#define HSMCI_WPSR_WP_VS_BOTH (0x3u << 0) /**< \brief (HSMCI_WPSR) Both Write Protection violation and software reset with Write Protection enabled have occurred since the last read. */ +#define HSMCI_WPSR_WP_VSRC_Pos 8 +#define HSMCI_WPSR_WP_VSRC_Msk (0xffffu << HSMCI_WPSR_WP_VSRC_Pos) /**< \brief (HSMCI_WPSR) Write Protection Violation SouRCe */ +/* -------- HSMCI_RPR : (HSMCI Offset: 0x100) Receive Pointer Register -------- */ +#define HSMCI_RPR_RXPTR_Pos 0 +#define HSMCI_RPR_RXPTR_Msk (0xffffffffu << HSMCI_RPR_RXPTR_Pos) /**< \brief (HSMCI_RPR) Receive Pointer Register */ +#define HSMCI_RPR_RXPTR(value) ((HSMCI_RPR_RXPTR_Msk & ((value) << HSMCI_RPR_RXPTR_Pos))) +/* -------- HSMCI_RCR : (HSMCI Offset: 0x104) Receive Counter Register -------- */ +#define HSMCI_RCR_RXCTR_Pos 0 +#define HSMCI_RCR_RXCTR_Msk (0xffffu << HSMCI_RCR_RXCTR_Pos) /**< \brief (HSMCI_RCR) Receive Counter Register */ +#define HSMCI_RCR_RXCTR(value) ((HSMCI_RCR_RXCTR_Msk & ((value) << HSMCI_RCR_RXCTR_Pos))) +/* -------- HSMCI_TPR : (HSMCI Offset: 0x108) Transmit Pointer Register -------- */ +#define HSMCI_TPR_TXPTR_Pos 0 +#define HSMCI_TPR_TXPTR_Msk (0xffffffffu << HSMCI_TPR_TXPTR_Pos) /**< \brief (HSMCI_TPR) Transmit Counter Register */ +#define HSMCI_TPR_TXPTR(value) ((HSMCI_TPR_TXPTR_Msk & ((value) << HSMCI_TPR_TXPTR_Pos))) +/* -------- HSMCI_TCR : (HSMCI Offset: 0x10C) Transmit Counter Register -------- */ +#define HSMCI_TCR_TXCTR_Pos 0 +#define HSMCI_TCR_TXCTR_Msk (0xffffu << HSMCI_TCR_TXCTR_Pos) /**< \brief (HSMCI_TCR) Transmit Counter Register */ +#define HSMCI_TCR_TXCTR(value) ((HSMCI_TCR_TXCTR_Msk & ((value) << HSMCI_TCR_TXCTR_Pos))) +/* -------- HSMCI_RNPR : (HSMCI Offset: 0x110) Receive Next Pointer Register -------- */ +#define HSMCI_RNPR_RXNPTR_Pos 0 +#define HSMCI_RNPR_RXNPTR_Msk (0xffffffffu << HSMCI_RNPR_RXNPTR_Pos) /**< \brief (HSMCI_RNPR) Receive Next Pointer */ +#define HSMCI_RNPR_RXNPTR(value) ((HSMCI_RNPR_RXNPTR_Msk & ((value) << HSMCI_RNPR_RXNPTR_Pos))) +/* -------- HSMCI_RNCR : (HSMCI Offset: 0x114) Receive Next Counter Register -------- */ +#define HSMCI_RNCR_RXNCTR_Pos 0 +#define HSMCI_RNCR_RXNCTR_Msk (0xffffu << HSMCI_RNCR_RXNCTR_Pos) /**< \brief (HSMCI_RNCR) Receive Next Counter */ +#define HSMCI_RNCR_RXNCTR(value) ((HSMCI_RNCR_RXNCTR_Msk & ((value) << HSMCI_RNCR_RXNCTR_Pos))) +/* -------- HSMCI_TNPR : (HSMCI Offset: 0x118) Transmit Next Pointer Register -------- */ +#define HSMCI_TNPR_TXNPTR_Pos 0 +#define HSMCI_TNPR_TXNPTR_Msk (0xffffffffu << HSMCI_TNPR_TXNPTR_Pos) /**< \brief (HSMCI_TNPR) Transmit Next Pointer */ +#define HSMCI_TNPR_TXNPTR(value) ((HSMCI_TNPR_TXNPTR_Msk & ((value) << HSMCI_TNPR_TXNPTR_Pos))) +/* -------- HSMCI_TNCR : (HSMCI Offset: 0x11C) Transmit Next Counter Register -------- */ +#define HSMCI_TNCR_TXNCTR_Pos 0 +#define HSMCI_TNCR_TXNCTR_Msk (0xffffu << HSMCI_TNCR_TXNCTR_Pos) /**< \brief (HSMCI_TNCR) Transmit Counter Next */ +#define HSMCI_TNCR_TXNCTR(value) ((HSMCI_TNCR_TXNCTR_Msk & ((value) << HSMCI_TNCR_TXNCTR_Pos))) +/* -------- HSMCI_PTCR : (HSMCI Offset: 0x120) Transfer Control Register -------- */ +#define HSMCI_PTCR_RXTEN (0x1u << 0) /**< \brief (HSMCI_PTCR) Receiver Transfer Enable */ +#define HSMCI_PTCR_RXTDIS (0x1u << 1) /**< \brief (HSMCI_PTCR) Receiver Transfer Disable */ +#define HSMCI_PTCR_TXTEN (0x1u << 8) /**< \brief (HSMCI_PTCR) Transmitter Transfer Enable */ +#define HSMCI_PTCR_TXTDIS (0x1u << 9) /**< \brief (HSMCI_PTCR) Transmitter Transfer Disable */ +/* -------- HSMCI_PTSR : (HSMCI Offset: 0x124) Transfer Status Register -------- */ +#define HSMCI_PTSR_RXTEN (0x1u << 0) /**< \brief (HSMCI_PTSR) Receiver Transfer Enable */ +#define HSMCI_PTSR_TXTEN (0x1u << 8) /**< \brief (HSMCI_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM4E_HSMCI_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/matrix.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/matrix.h new file mode 100644 index 000000000..f14688aa4 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/matrix.h @@ -0,0 +1,261 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_MATRIX_COMPONENT_ +#define _SAM4E_MATRIX_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Bus Matrix */ +/* ============================================================================= */ +/** \addtogroup SAM4E_MATRIX Bus Matrix */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Matrix hardware registers */ +typedef struct { + RwReg MATRIX_MCFG[7]; /**< \brief (Matrix Offset: 0x0000) Master Configuration Register */ + RoReg Reserved1[9]; + RwReg MATRIX_SCFG[6]; /**< \brief (Matrix Offset: 0x0040) Slave Configuration Register */ + RoReg Reserved2[10]; + RwReg MATRIX_PRAS0; /**< \brief (Matrix Offset: 0x0080) Priority Register A for Slave 0 */ + RoReg Reserved3[1]; + RwReg MATRIX_PRAS1; /**< \brief (Matrix Offset: 0x0088) Priority Register A for Slave 1 */ + RoReg Reserved4[1]; + RwReg MATRIX_PRAS2; /**< \brief (Matrix Offset: 0x0090) Priority Register A for Slave 2 */ + RoReg Reserved5[1]; + RwReg MATRIX_PRAS3; /**< \brief (Matrix Offset: 0x0098) Priority Register A for Slave 3 */ + RoReg Reserved6[1]; + RwReg MATRIX_PRAS4; /**< \brief (Matrix Offset: 0x00A0) Priority Register A for Slave 4 */ + RoReg Reserved7[1]; + RwReg MATRIX_PRAS5; /**< \brief (Matrix Offset: 0x00A8) Priority Register A for Slave 5 */ + RoReg Reserved8[1]; + RoReg Reserved9[20]; + RwReg MATRIX_MRCR; /**< \brief (Matrix Offset: 0x0100) Master Remap Control Register */ + RoReg Reserved10[4]; + RwReg CCFG_SYSIO; /**< \brief (Matrix Offset: 0x0114) System I/O Configuration Register */ + RoReg Reserved11[3]; + RwReg CCFG_SMCNFCS; /**< \brief (Matrix Offset: 0x0124) SMC NAND Flash Chip Select Configuration Register */ + RoReg Reserved12[47]; + RwReg MATRIX_WPMR; /**< \brief (Matrix Offset: 0x01E4) Write Protect Mode Register */ + RoReg MATRIX_WPSR; /**< \brief (Matrix Offset: 0x01E8) Write Protect Status Register */ +} Matrix; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- MATRIX_MCFG[7] : (MATRIX Offset: 0x0000) Master Configuration Register -------- */ +#define MATRIX_MCFG_ULBT_Pos 0 +#define MATRIX_MCFG_ULBT_Msk (0x7u << MATRIX_MCFG_ULBT_Pos) /**< \brief (MATRIX_MCFG[7]) Undefined Length Burst Type */ +#define MATRIX_MCFG_ULBT(value) ((MATRIX_MCFG_ULBT_Msk & ((value) << MATRIX_MCFG_ULBT_Pos))) +/* -------- MATRIX_SCFG[6] : (MATRIX Offset: 0x0040) Slave Configuration Register -------- */ +#define MATRIX_SCFG_SLOT_CYCLE_Pos 0 +#define MATRIX_SCFG_SLOT_CYCLE_Msk (0x1ffu << MATRIX_SCFG_SLOT_CYCLE_Pos) /**< \brief (MATRIX_SCFG[6]) Maximum Bus Grant Duration for Masters */ +#define MATRIX_SCFG_SLOT_CYCLE(value) ((MATRIX_SCFG_SLOT_CYCLE_Msk & ((value) << MATRIX_SCFG_SLOT_CYCLE_Pos))) +#define MATRIX_SCFG_DEFMSTR_TYPE_Pos 16 +#define MATRIX_SCFG_DEFMSTR_TYPE_Msk (0x3u << MATRIX_SCFG_DEFMSTR_TYPE_Pos) /**< \brief (MATRIX_SCFG[6]) Default Master Type */ +#define MATRIX_SCFG_DEFMSTR_TYPE(value) ((MATRIX_SCFG_DEFMSTR_TYPE_Msk & ((value) << MATRIX_SCFG_DEFMSTR_TYPE_Pos))) +#define MATRIX_SCFG_FIXED_DEFMSTR_Pos 18 +#define MATRIX_SCFG_FIXED_DEFMSTR_Msk (0xfu << MATRIX_SCFG_FIXED_DEFMSTR_Pos) /**< \brief (MATRIX_SCFG[6]) Fixed Default Master */ +#define MATRIX_SCFG_FIXED_DEFMSTR(value) ((MATRIX_SCFG_FIXED_DEFMSTR_Msk & ((value) << MATRIX_SCFG_FIXED_DEFMSTR_Pos))) +/* -------- MATRIX_PRAS0 : (MATRIX Offset: 0x0080) Priority Register A for Slave 0 -------- */ +#define MATRIX_PRAS0_M0PR_Pos 0 +#define MATRIX_PRAS0_M0PR_Msk (0x3u << MATRIX_PRAS0_M0PR_Pos) /**< \brief (MATRIX_PRAS0) Master 0 Priority */ +#define MATRIX_PRAS0_M0PR(value) ((MATRIX_PRAS0_M0PR_Msk & ((value) << MATRIX_PRAS0_M0PR_Pos))) +#define MATRIX_PRAS0_M1PR_Pos 4 +#define MATRIX_PRAS0_M1PR_Msk (0x3u << MATRIX_PRAS0_M1PR_Pos) /**< \brief (MATRIX_PRAS0) Master 1 Priority */ +#define MATRIX_PRAS0_M1PR(value) ((MATRIX_PRAS0_M1PR_Msk & ((value) << MATRIX_PRAS0_M1PR_Pos))) +#define MATRIX_PRAS0_M2PR_Pos 8 +#define MATRIX_PRAS0_M2PR_Msk (0x3u << MATRIX_PRAS0_M2PR_Pos) /**< \brief (MATRIX_PRAS0) Master 2 Priority */ +#define MATRIX_PRAS0_M2PR(value) ((MATRIX_PRAS0_M2PR_Msk & ((value) << MATRIX_PRAS0_M2PR_Pos))) +#define MATRIX_PRAS0_M3PR_Pos 12 +#define MATRIX_PRAS0_M3PR_Msk (0x3u << MATRIX_PRAS0_M3PR_Pos) /**< \brief (MATRIX_PRAS0) Master 3 Priority */ +#define MATRIX_PRAS0_M3PR(value) ((MATRIX_PRAS0_M3PR_Msk & ((value) << MATRIX_PRAS0_M3PR_Pos))) +#define MATRIX_PRAS0_M4PR_Pos 16 +#define MATRIX_PRAS0_M4PR_Msk (0x3u << MATRIX_PRAS0_M4PR_Pos) /**< \brief (MATRIX_PRAS0) Master 4 Priority */ +#define MATRIX_PRAS0_M4PR(value) ((MATRIX_PRAS0_M4PR_Msk & ((value) << MATRIX_PRAS0_M4PR_Pos))) +#define MATRIX_PRAS0_M5PR_Pos 20 +#define MATRIX_PRAS0_M5PR_Msk (0x3u << MATRIX_PRAS0_M5PR_Pos) /**< \brief (MATRIX_PRAS0) Master 5 Priority */ +#define MATRIX_PRAS0_M5PR(value) ((MATRIX_PRAS0_M5PR_Msk & ((value) << MATRIX_PRAS0_M5PR_Pos))) +#define MATRIX_PRAS0_M6PR_Pos 24 +#define MATRIX_PRAS0_M6PR_Msk (0x3u << MATRIX_PRAS0_M6PR_Pos) /**< \brief (MATRIX_PRAS0) Master 6 Priority */ +#define MATRIX_PRAS0_M6PR(value) ((MATRIX_PRAS0_M6PR_Msk & ((value) << MATRIX_PRAS0_M6PR_Pos))) +/* -------- MATRIX_PRAS1 : (MATRIX Offset: 0x0088) Priority Register A for Slave 1 -------- */ +#define MATRIX_PRAS1_M0PR_Pos 0 +#define MATRIX_PRAS1_M0PR_Msk (0x3u << MATRIX_PRAS1_M0PR_Pos) /**< \brief (MATRIX_PRAS1) Master 0 Priority */ +#define MATRIX_PRAS1_M0PR(value) ((MATRIX_PRAS1_M0PR_Msk & ((value) << MATRIX_PRAS1_M0PR_Pos))) +#define MATRIX_PRAS1_M1PR_Pos 4 +#define MATRIX_PRAS1_M1PR_Msk (0x3u << MATRIX_PRAS1_M1PR_Pos) /**< \brief (MATRIX_PRAS1) Master 1 Priority */ +#define MATRIX_PRAS1_M1PR(value) ((MATRIX_PRAS1_M1PR_Msk & ((value) << MATRIX_PRAS1_M1PR_Pos))) +#define MATRIX_PRAS1_M2PR_Pos 8 +#define MATRIX_PRAS1_M2PR_Msk (0x3u << MATRIX_PRAS1_M2PR_Pos) /**< \brief (MATRIX_PRAS1) Master 2 Priority */ +#define MATRIX_PRAS1_M2PR(value) ((MATRIX_PRAS1_M2PR_Msk & ((value) << MATRIX_PRAS1_M2PR_Pos))) +#define MATRIX_PRAS1_M3PR_Pos 12 +#define MATRIX_PRAS1_M3PR_Msk (0x3u << MATRIX_PRAS1_M3PR_Pos) /**< \brief (MATRIX_PRAS1) Master 3 Priority */ +#define MATRIX_PRAS1_M3PR(value) ((MATRIX_PRAS1_M3PR_Msk & ((value) << MATRIX_PRAS1_M3PR_Pos))) +#define MATRIX_PRAS1_M4PR_Pos 16 +#define MATRIX_PRAS1_M4PR_Msk (0x3u << MATRIX_PRAS1_M4PR_Pos) /**< \brief (MATRIX_PRAS1) Master 4 Priority */ +#define MATRIX_PRAS1_M4PR(value) ((MATRIX_PRAS1_M4PR_Msk & ((value) << MATRIX_PRAS1_M4PR_Pos))) +#define MATRIX_PRAS1_M5PR_Pos 20 +#define MATRIX_PRAS1_M5PR_Msk (0x3u << MATRIX_PRAS1_M5PR_Pos) /**< \brief (MATRIX_PRAS1) Master 5 Priority */ +#define MATRIX_PRAS1_M5PR(value) ((MATRIX_PRAS1_M5PR_Msk & ((value) << MATRIX_PRAS1_M5PR_Pos))) +#define MATRIX_PRAS1_M6PR_Pos 24 +#define MATRIX_PRAS1_M6PR_Msk (0x3u << MATRIX_PRAS1_M6PR_Pos) /**< \brief (MATRIX_PRAS1) Master 6 Priority */ +#define MATRIX_PRAS1_M6PR(value) ((MATRIX_PRAS1_M6PR_Msk & ((value) << MATRIX_PRAS1_M6PR_Pos))) +/* -------- MATRIX_PRAS2 : (MATRIX Offset: 0x0090) Priority Register A for Slave 2 -------- */ +#define MATRIX_PRAS2_M0PR_Pos 0 +#define MATRIX_PRAS2_M0PR_Msk (0x3u << MATRIX_PRAS2_M0PR_Pos) /**< \brief (MATRIX_PRAS2) Master 0 Priority */ +#define MATRIX_PRAS2_M0PR(value) ((MATRIX_PRAS2_M0PR_Msk & ((value) << MATRIX_PRAS2_M0PR_Pos))) +#define MATRIX_PRAS2_M1PR_Pos 4 +#define MATRIX_PRAS2_M1PR_Msk (0x3u << MATRIX_PRAS2_M1PR_Pos) /**< \brief (MATRIX_PRAS2) Master 1 Priority */ +#define MATRIX_PRAS2_M1PR(value) ((MATRIX_PRAS2_M1PR_Msk & ((value) << MATRIX_PRAS2_M1PR_Pos))) +#define MATRIX_PRAS2_M2PR_Pos 8 +#define MATRIX_PRAS2_M2PR_Msk (0x3u << MATRIX_PRAS2_M2PR_Pos) /**< \brief (MATRIX_PRAS2) Master 2 Priority */ +#define MATRIX_PRAS2_M2PR(value) ((MATRIX_PRAS2_M2PR_Msk & ((value) << MATRIX_PRAS2_M2PR_Pos))) +#define MATRIX_PRAS2_M3PR_Pos 12 +#define MATRIX_PRAS2_M3PR_Msk (0x3u << MATRIX_PRAS2_M3PR_Pos) /**< \brief (MATRIX_PRAS2) Master 3 Priority */ +#define MATRIX_PRAS2_M3PR(value) ((MATRIX_PRAS2_M3PR_Msk & ((value) << MATRIX_PRAS2_M3PR_Pos))) +#define MATRIX_PRAS2_M4PR_Pos 16 +#define MATRIX_PRAS2_M4PR_Msk (0x3u << MATRIX_PRAS2_M4PR_Pos) /**< \brief (MATRIX_PRAS2) Master 4 Priority */ +#define MATRIX_PRAS2_M4PR(value) ((MATRIX_PRAS2_M4PR_Msk & ((value) << MATRIX_PRAS2_M4PR_Pos))) +#define MATRIX_PRAS2_M5PR_Pos 20 +#define MATRIX_PRAS2_M5PR_Msk (0x3u << MATRIX_PRAS2_M5PR_Pos) /**< \brief (MATRIX_PRAS2) Master 5 Priority */ +#define MATRIX_PRAS2_M5PR(value) ((MATRIX_PRAS2_M5PR_Msk & ((value) << MATRIX_PRAS2_M5PR_Pos))) +#define MATRIX_PRAS2_M6PR_Pos 24 +#define MATRIX_PRAS2_M6PR_Msk (0x3u << MATRIX_PRAS2_M6PR_Pos) /**< \brief (MATRIX_PRAS2) Master 6 Priority */ +#define MATRIX_PRAS2_M6PR(value) ((MATRIX_PRAS2_M6PR_Msk & ((value) << MATRIX_PRAS2_M6PR_Pos))) +/* -------- MATRIX_PRAS3 : (MATRIX Offset: 0x0098) Priority Register A for Slave 3 -------- */ +#define MATRIX_PRAS3_M0PR_Pos 0 +#define MATRIX_PRAS3_M0PR_Msk (0x3u << MATRIX_PRAS3_M0PR_Pos) /**< \brief (MATRIX_PRAS3) Master 0 Priority */ +#define MATRIX_PRAS3_M0PR(value) ((MATRIX_PRAS3_M0PR_Msk & ((value) << MATRIX_PRAS3_M0PR_Pos))) +#define MATRIX_PRAS3_M1PR_Pos 4 +#define MATRIX_PRAS3_M1PR_Msk (0x3u << MATRIX_PRAS3_M1PR_Pos) /**< \brief (MATRIX_PRAS3) Master 1 Priority */ +#define MATRIX_PRAS3_M1PR(value) ((MATRIX_PRAS3_M1PR_Msk & ((value) << MATRIX_PRAS3_M1PR_Pos))) +#define MATRIX_PRAS3_M2PR_Pos 8 +#define MATRIX_PRAS3_M2PR_Msk (0x3u << MATRIX_PRAS3_M2PR_Pos) /**< \brief (MATRIX_PRAS3) Master 2 Priority */ +#define MATRIX_PRAS3_M2PR(value) ((MATRIX_PRAS3_M2PR_Msk & ((value) << MATRIX_PRAS3_M2PR_Pos))) +#define MATRIX_PRAS3_M3PR_Pos 12 +#define MATRIX_PRAS3_M3PR_Msk (0x3u << MATRIX_PRAS3_M3PR_Pos) /**< \brief (MATRIX_PRAS3) Master 3 Priority */ +#define MATRIX_PRAS3_M3PR(value) ((MATRIX_PRAS3_M3PR_Msk & ((value) << MATRIX_PRAS3_M3PR_Pos))) +#define MATRIX_PRAS3_M4PR_Pos 16 +#define MATRIX_PRAS3_M4PR_Msk (0x3u << MATRIX_PRAS3_M4PR_Pos) /**< \brief (MATRIX_PRAS3) Master 4 Priority */ +#define MATRIX_PRAS3_M4PR(value) ((MATRIX_PRAS3_M4PR_Msk & ((value) << MATRIX_PRAS3_M4PR_Pos))) +#define MATRIX_PRAS3_M5PR_Pos 20 +#define MATRIX_PRAS3_M5PR_Msk (0x3u << MATRIX_PRAS3_M5PR_Pos) /**< \brief (MATRIX_PRAS3) Master 5 Priority */ +#define MATRIX_PRAS3_M5PR(value) ((MATRIX_PRAS3_M5PR_Msk & ((value) << MATRIX_PRAS3_M5PR_Pos))) +#define MATRIX_PRAS3_M6PR_Pos 24 +#define MATRIX_PRAS3_M6PR_Msk (0x3u << MATRIX_PRAS3_M6PR_Pos) /**< \brief (MATRIX_PRAS3) Master 6 Priority */ +#define MATRIX_PRAS3_M6PR(value) ((MATRIX_PRAS3_M6PR_Msk & ((value) << MATRIX_PRAS3_M6PR_Pos))) +/* -------- MATRIX_PRAS4 : (MATRIX Offset: 0x00A0) Priority Register A for Slave 4 -------- */ +#define MATRIX_PRAS4_M0PR_Pos 0 +#define MATRIX_PRAS4_M0PR_Msk (0x3u << MATRIX_PRAS4_M0PR_Pos) /**< \brief (MATRIX_PRAS4) Master 0 Priority */ +#define MATRIX_PRAS4_M0PR(value) ((MATRIX_PRAS4_M0PR_Msk & ((value) << MATRIX_PRAS4_M0PR_Pos))) +#define MATRIX_PRAS4_M1PR_Pos 4 +#define MATRIX_PRAS4_M1PR_Msk (0x3u << MATRIX_PRAS4_M1PR_Pos) /**< \brief (MATRIX_PRAS4) Master 1 Priority */ +#define MATRIX_PRAS4_M1PR(value) ((MATRIX_PRAS4_M1PR_Msk & ((value) << MATRIX_PRAS4_M1PR_Pos))) +#define MATRIX_PRAS4_M2PR_Pos 8 +#define MATRIX_PRAS4_M2PR_Msk (0x3u << MATRIX_PRAS4_M2PR_Pos) /**< \brief (MATRIX_PRAS4) Master 2 Priority */ +#define MATRIX_PRAS4_M2PR(value) ((MATRIX_PRAS4_M2PR_Msk & ((value) << MATRIX_PRAS4_M2PR_Pos))) +#define MATRIX_PRAS4_M3PR_Pos 12 +#define MATRIX_PRAS4_M3PR_Msk (0x3u << MATRIX_PRAS4_M3PR_Pos) /**< \brief (MATRIX_PRAS4) Master 3 Priority */ +#define MATRIX_PRAS4_M3PR(value) ((MATRIX_PRAS4_M3PR_Msk & ((value) << MATRIX_PRAS4_M3PR_Pos))) +#define MATRIX_PRAS4_M4PR_Pos 16 +#define MATRIX_PRAS4_M4PR_Msk (0x3u << MATRIX_PRAS4_M4PR_Pos) /**< \brief (MATRIX_PRAS4) Master 4 Priority */ +#define MATRIX_PRAS4_M4PR(value) ((MATRIX_PRAS4_M4PR_Msk & ((value) << MATRIX_PRAS4_M4PR_Pos))) +#define MATRIX_PRAS4_M5PR_Pos 20 +#define MATRIX_PRAS4_M5PR_Msk (0x3u << MATRIX_PRAS4_M5PR_Pos) /**< \brief (MATRIX_PRAS4) Master 5 Priority */ +#define MATRIX_PRAS4_M5PR(value) ((MATRIX_PRAS4_M5PR_Msk & ((value) << MATRIX_PRAS4_M5PR_Pos))) +#define MATRIX_PRAS4_M6PR_Pos 24 +#define MATRIX_PRAS4_M6PR_Msk (0x3u << MATRIX_PRAS4_M6PR_Pos) /**< \brief (MATRIX_PRAS4) Master 6 Priority */ +#define MATRIX_PRAS4_M6PR(value) ((MATRIX_PRAS4_M6PR_Msk & ((value) << MATRIX_PRAS4_M6PR_Pos))) +/* -------- MATRIX_PRAS5 : (MATRIX Offset: 0x00A8) Priority Register A for Slave 5 -------- */ +#define MATRIX_PRAS5_M0PR_Pos 0 +#define MATRIX_PRAS5_M0PR_Msk (0x3u << MATRIX_PRAS5_M0PR_Pos) /**< \brief (MATRIX_PRAS5) Master 0 Priority */ +#define MATRIX_PRAS5_M0PR(value) ((MATRIX_PRAS5_M0PR_Msk & ((value) << MATRIX_PRAS5_M0PR_Pos))) +#define MATRIX_PRAS5_M1PR_Pos 4 +#define MATRIX_PRAS5_M1PR_Msk (0x3u << MATRIX_PRAS5_M1PR_Pos) /**< \brief (MATRIX_PRAS5) Master 1 Priority */ +#define MATRIX_PRAS5_M1PR(value) ((MATRIX_PRAS5_M1PR_Msk & ((value) << MATRIX_PRAS5_M1PR_Pos))) +#define MATRIX_PRAS5_M2PR_Pos 8 +#define MATRIX_PRAS5_M2PR_Msk (0x3u << MATRIX_PRAS5_M2PR_Pos) /**< \brief (MATRIX_PRAS5) Master 2 Priority */ +#define MATRIX_PRAS5_M2PR(value) ((MATRIX_PRAS5_M2PR_Msk & ((value) << MATRIX_PRAS5_M2PR_Pos))) +#define MATRIX_PRAS5_M3PR_Pos 12 +#define MATRIX_PRAS5_M3PR_Msk (0x3u << MATRIX_PRAS5_M3PR_Pos) /**< \brief (MATRIX_PRAS5) Master 3 Priority */ +#define MATRIX_PRAS5_M3PR(value) ((MATRIX_PRAS5_M3PR_Msk & ((value) << MATRIX_PRAS5_M3PR_Pos))) +#define MATRIX_PRAS5_M4PR_Pos 16 +#define MATRIX_PRAS5_M4PR_Msk (0x3u << MATRIX_PRAS5_M4PR_Pos) /**< \brief (MATRIX_PRAS5) Master 4 Priority */ +#define MATRIX_PRAS5_M4PR(value) ((MATRIX_PRAS5_M4PR_Msk & ((value) << MATRIX_PRAS5_M4PR_Pos))) +#define MATRIX_PRAS5_M5PR_Pos 20 +#define MATRIX_PRAS5_M5PR_Msk (0x3u << MATRIX_PRAS5_M5PR_Pos) /**< \brief (MATRIX_PRAS5) Master 5 Priority */ +#define MATRIX_PRAS5_M5PR(value) ((MATRIX_PRAS5_M5PR_Msk & ((value) << MATRIX_PRAS5_M5PR_Pos))) +#define MATRIX_PRAS5_M6PR_Pos 24 +#define MATRIX_PRAS5_M6PR_Msk (0x3u << MATRIX_PRAS5_M6PR_Pos) /**< \brief (MATRIX_PRAS5) Master 6 Priority */ +#define MATRIX_PRAS5_M6PR(value) ((MATRIX_PRAS5_M6PR_Msk & ((value) << MATRIX_PRAS5_M6PR_Pos))) +/* -------- MATRIX_MRCR : (MATRIX Offset: 0x0100) Master Remap Control Register -------- */ +#define MATRIX_MRCR_RCB0 (0x1u << 0) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 0 */ +#define MATRIX_MRCR_RCB1 (0x1u << 1) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 1 */ +#define MATRIX_MRCR_RCB2 (0x1u << 2) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 2 */ +#define MATRIX_MRCR_RCB3 (0x1u << 3) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 3 */ +#define MATRIX_MRCR_RCB4 (0x1u << 4) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 4 */ +#define MATRIX_MRCR_RCB5 (0x1u << 5) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 5 */ +#define MATRIX_MRCR_RCB6 (0x1u << 6) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 6 */ +/* -------- CCFG_SYSIO : (MATRIX Offset: 0x0114) System I/O Configuration Register -------- */ +#define CCFG_SYSIO_SYSIO4 (0x1u << 4) /**< \brief (CCFG_SYSIO) PB4 or TDI Assignment */ +#define CCFG_SYSIO_SYSIO5 (0x1u << 5) /**< \brief (CCFG_SYSIO) PB5 or TDO/TRACESWO Assignment */ +#define CCFG_SYSIO_SYSIO6 (0x1u << 6) /**< \brief (CCFG_SYSIO) PB6 or TMS/SWDIO Assignment */ +#define CCFG_SYSIO_SYSIO7 (0x1u << 7) /**< \brief (CCFG_SYSIO) PB7 or TCK/SWCLK Assignment */ +#define CCFG_SYSIO_SYSIO10 (0x1u << 10) /**< \brief (CCFG_SYSIO) PB10 or DDM Assignment */ +#define CCFG_SYSIO_SYSIO11 (0x1u << 11) /**< \brief (CCFG_SYSIO) PB11 or DDP Assignment */ +#define CCFG_SYSIO_SYSIO12 (0x1u << 12) /**< \brief (CCFG_SYSIO) PB12 or ERASE Assignment */ +/* -------- CCFG_SMCNFCS : (MATRIX Offset: 0x0124) SMC NAND Flash Chip Select Configuration Register -------- */ +#define CCFG_SMCNFCS_SMC_NFCS0 (0x1u << 0) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 0 Assignment */ +#define CCFG_SMCNFCS_SMC_NFCS1 (0x1u << 1) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 1 Assignment */ +#define CCFG_SMCNFCS_SMC_NFCS2 (0x1u << 2) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 2 Assignment */ +#define CCFG_SMCNFCS_SMC_NFCS3 (0x1u << 3) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 3 Assignment */ +/* -------- MATRIX_WPMR : (MATRIX Offset: 0x01E4) Write Protect Mode Register -------- */ +#define MATRIX_WPMR_WPEN (0x1u << 0) /**< \brief (MATRIX_WPMR) Write Protect Enable */ +#define MATRIX_WPMR_WPKEY_Pos 8 +#define MATRIX_WPMR_WPKEY_Msk (0xffffffu << MATRIX_WPMR_WPKEY_Pos) /**< \brief (MATRIX_WPMR) Write Protect KEY (Write-only) */ +#define MATRIX_WPMR_WPKEY(value) ((MATRIX_WPMR_WPKEY_Msk & ((value) << MATRIX_WPMR_WPKEY_Pos))) +/* -------- MATRIX_WPSR : (MATRIX Offset: 0x01E8) Write Protect Status Register -------- */ +#define MATRIX_WPSR_WPVS (0x1u << 0) /**< \brief (MATRIX_WPSR) Write Protect Violation Status */ +#define MATRIX_WPSR_WPVSRC_Pos 8 +#define MATRIX_WPSR_WPVSRC_Msk (0xffffu << MATRIX_WPSR_WPVSRC_Pos) /**< \brief (MATRIX_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM4E_MATRIX_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pdc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pdc.h new file mode 100644 index 000000000..e2db44e7a --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pdc.h @@ -0,0 +1,110 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_PDC_COMPONENT_ +#define _SAM4E_PDC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Peripheral DMA Controller */ +/* ============================================================================= */ +/** \addtogroup SAM4E_PDC Peripheral DMA Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Pdc hardware registers */ +typedef struct { + RwReg PERIPH_RPR; /**< \brief (Pdc Offset: 0x00) Receive Pointer Register */ + RwReg PERIPH_RCR; /**< \brief (Pdc Offset: 0x04) Receive Counter Register */ + RwReg PERIPH_TPR; /**< \brief (Pdc Offset: 0x08) Transmit Pointer Register */ + RwReg PERIPH_TCR; /**< \brief (Pdc Offset: 0x0C) Transmit Counter Register */ + RwReg PERIPH_RNPR; /**< \brief (Pdc Offset: 0x10) Receive Next Pointer Register */ + RwReg PERIPH_RNCR; /**< \brief (Pdc Offset: 0x14) Receive Next Counter Register */ + RwReg PERIPH_TNPR; /**< \brief (Pdc Offset: 0x18) Transmit Next Pointer Register */ + RwReg PERIPH_TNCR; /**< \brief (Pdc Offset: 0x1C) Transmit Next Counter Register */ + WoReg PERIPH_PTCR; /**< \brief (Pdc Offset: 0x20) Transfer Control Register */ + RoReg PERIPH_PTSR; /**< \brief (Pdc Offset: 0x24) Transfer Status Register */ +} Pdc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- PERIPH_RPR : (PDC Offset: 0x00) Receive Pointer Register -------- */ +#define PERIPH_RPR_RXPTR_Pos 0 +#define PERIPH_RPR_RXPTR_Msk (0xffffffffu << PERIPH_RPR_RXPTR_Pos) /**< \brief (PERIPH_RPR) Receive Pointer Register */ +#define PERIPH_RPR_RXPTR(value) ((PERIPH_RPR_RXPTR_Msk & ((value) << PERIPH_RPR_RXPTR_Pos))) +/* -------- PERIPH_RCR : (PDC Offset: 0x04) Receive Counter Register -------- */ +#define PERIPH_RCR_RXCTR_Pos 0 +#define PERIPH_RCR_RXCTR_Msk (0xffffu << PERIPH_RCR_RXCTR_Pos) /**< \brief (PERIPH_RCR) Receive Counter Register */ +#define PERIPH_RCR_RXCTR(value) ((PERIPH_RCR_RXCTR_Msk & ((value) << PERIPH_RCR_RXCTR_Pos))) +/* -------- PERIPH_TPR : (PDC Offset: 0x08) Transmit Pointer Register -------- */ +#define PERIPH_TPR_TXPTR_Pos 0 +#define PERIPH_TPR_TXPTR_Msk (0xffffffffu << PERIPH_TPR_TXPTR_Pos) /**< \brief (PERIPH_TPR) Transmit Counter Register */ +#define PERIPH_TPR_TXPTR(value) ((PERIPH_TPR_TXPTR_Msk & ((value) << PERIPH_TPR_TXPTR_Pos))) +/* -------- PERIPH_TCR : (PDC Offset: 0x0C) Transmit Counter Register -------- */ +#define PERIPH_TCR_TXCTR_Pos 0 +#define PERIPH_TCR_TXCTR_Msk (0xffffu << PERIPH_TCR_TXCTR_Pos) /**< \brief (PERIPH_TCR) Transmit Counter Register */ +#define PERIPH_TCR_TXCTR(value) ((PERIPH_TCR_TXCTR_Msk & ((value) << PERIPH_TCR_TXCTR_Pos))) +/* -------- PERIPH_RNPR : (PDC Offset: 0x10) Receive Next Pointer Register -------- */ +#define PERIPH_RNPR_RXNPTR_Pos 0 +#define PERIPH_RNPR_RXNPTR_Msk (0xffffffffu << PERIPH_RNPR_RXNPTR_Pos) /**< \brief (PERIPH_RNPR) Receive Next Pointer */ +#define PERIPH_RNPR_RXNPTR(value) ((PERIPH_RNPR_RXNPTR_Msk & ((value) << PERIPH_RNPR_RXNPTR_Pos))) +/* -------- PERIPH_RNCR : (PDC Offset: 0x14) Receive Next Counter Register -------- */ +#define PERIPH_RNCR_RXNCTR_Pos 0 +#define PERIPH_RNCR_RXNCTR_Msk (0xffffu << PERIPH_RNCR_RXNCTR_Pos) /**< \brief (PERIPH_RNCR) Receive Next Counter */ +#define PERIPH_RNCR_RXNCTR(value) ((PERIPH_RNCR_RXNCTR_Msk & ((value) << PERIPH_RNCR_RXNCTR_Pos))) +/* -------- PERIPH_TNPR : (PDC Offset: 0x18) Transmit Next Pointer Register -------- */ +#define PERIPH_TNPR_TXNPTR_Pos 0 +#define PERIPH_TNPR_TXNPTR_Msk (0xffffffffu << PERIPH_TNPR_TXNPTR_Pos) /**< \brief (PERIPH_TNPR) Transmit Next Pointer */ +#define PERIPH_TNPR_TXNPTR(value) ((PERIPH_TNPR_TXNPTR_Msk & ((value) << PERIPH_TNPR_TXNPTR_Pos))) +/* -------- PERIPH_TNCR : (PDC Offset: 0x1C) Transmit Next Counter Register -------- */ +#define PERIPH_TNCR_TXNCTR_Pos 0 +#define PERIPH_TNCR_TXNCTR_Msk (0xffffu << PERIPH_TNCR_TXNCTR_Pos) /**< \brief (PERIPH_TNCR) Transmit Counter Next */ +#define PERIPH_TNCR_TXNCTR(value) ((PERIPH_TNCR_TXNCTR_Msk & ((value) << PERIPH_TNCR_TXNCTR_Pos))) +/* -------- PERIPH_PTCR : (PDC Offset: 0x20) Transfer Control Register -------- */ +#define PERIPH_PTCR_RXTEN (0x1u << 0) /**< \brief (PERIPH_PTCR) Receiver Transfer Enable */ +#define PERIPH_PTCR_RXTDIS (0x1u << 1) /**< \brief (PERIPH_PTCR) Receiver Transfer Disable */ +#define PERIPH_PTCR_TXTEN (0x1u << 8) /**< \brief (PERIPH_PTCR) Transmitter Transfer Enable */ +#define PERIPH_PTCR_TXTDIS (0x1u << 9) /**< \brief (PERIPH_PTCR) Transmitter Transfer Disable */ +/* -------- PERIPH_PTSR : (PDC Offset: 0x24) Transfer Status Register -------- */ +#define PERIPH_PTSR_RXTEN (0x1u << 0) /**< \brief (PERIPH_PTSR) Receiver Transfer Enable */ +#define PERIPH_PTSR_TXTEN (0x1u << 8) /**< \brief (PERIPH_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM4E_PDC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pio.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pio.h new file mode 100644 index 000000000..f60d41906 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pio.h @@ -0,0 +1,1683 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_PIO_COMPONENT_ +#define _SAM4E_PIO_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Parallel Input/Output Controller */ +/* ============================================================================= */ +/** \addtogroup SAM4E_PIO Parallel Input/Output Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Pio hardware registers */ +typedef struct { + WoReg PIO_PER; /**< \brief (Pio Offset: 0x0000) PIO Enable Register */ + WoReg PIO_PDR; /**< \brief (Pio Offset: 0x0004) PIO Disable Register */ + RoReg PIO_PSR; /**< \brief (Pio Offset: 0x0008) PIO Status Register */ + RoReg Reserved1[1]; + WoReg PIO_OER; /**< \brief (Pio Offset: 0x0010) Output Enable Register */ + WoReg PIO_ODR; /**< \brief (Pio Offset: 0x0014) Output Disable Register */ + RoReg PIO_OSR; /**< \brief (Pio Offset: 0x0018) Output Status Register */ + RoReg Reserved2[1]; + WoReg PIO_IFER; /**< \brief (Pio Offset: 0x0020) Glitch Input Filter Enable Register */ + WoReg PIO_IFDR; /**< \brief (Pio Offset: 0x0024) Glitch Input Filter Disable Register */ + RoReg PIO_IFSR; /**< \brief (Pio Offset: 0x0028) Glitch Input Filter Status Register */ + RoReg Reserved3[1]; + WoReg PIO_SODR; /**< \brief (Pio Offset: 0x0030) Set Output Data Register */ + WoReg PIO_CODR; /**< \brief (Pio Offset: 0x0034) Clear Output Data Register */ + RwReg PIO_ODSR; /**< \brief (Pio Offset: 0x0038) Output Data Status Register */ + RoReg PIO_PDSR; /**< \brief (Pio Offset: 0x003C) Pin Data Status Register */ + WoReg PIO_IER; /**< \brief (Pio Offset: 0x0040) Interrupt Enable Register */ + WoReg PIO_IDR; /**< \brief (Pio Offset: 0x0044) Interrupt Disable Register */ + RoReg PIO_IMR; /**< \brief (Pio Offset: 0x0048) Interrupt Mask Register */ + RoReg PIO_ISR; /**< \brief (Pio Offset: 0x004C) Interrupt Status Register */ + WoReg PIO_MDER; /**< \brief (Pio Offset: 0x0050) Multi-driver Enable Register */ + WoReg PIO_MDDR; /**< \brief (Pio Offset: 0x0054) Multi-driver Disable Register */ + RoReg PIO_MDSR; /**< \brief (Pio Offset: 0x0058) Multi-driver Status Register */ + RoReg Reserved4[1]; + WoReg PIO_PUDR; /**< \brief (Pio Offset: 0x0060) Pull-up Disable Register */ + WoReg PIO_PUER; /**< \brief (Pio Offset: 0x0064) Pull-up Enable Register */ + RoReg PIO_PUSR; /**< \brief (Pio Offset: 0x0068) Pad Pull-up Status Register */ + RoReg Reserved5[1]; + RwReg PIO_ABCDSR[2]; /**< \brief (Pio Offset: 0x0070) Peripheral Select Register */ + RoReg Reserved6[2]; + WoReg PIO_IFSCDR; /**< \brief (Pio Offset: 0x0080) Input Filter Slow Clock Disable Register */ + WoReg PIO_IFSCER; /**< \brief (Pio Offset: 0x0084) Input Filter Slow Clock Enable Register */ + RoReg PIO_IFSCSR; /**< \brief (Pio Offset: 0x0088) Input Filter Slow Clock Status Register */ + RwReg PIO_SCDR; /**< \brief (Pio Offset: 0x008C) Slow Clock Divider Debouncing Register */ + WoReg PIO_PPDDR; /**< \brief (Pio Offset: 0x0090) Pad Pull-down Disable Register */ + WoReg PIO_PPDER; /**< \brief (Pio Offset: 0x0094) Pad Pull-down Enable Register */ + RoReg PIO_PPDSR; /**< \brief (Pio Offset: 0x0098) Pad Pull-down Status Register */ + RoReg Reserved7[1]; + WoReg PIO_OWER; /**< \brief (Pio Offset: 0x00A0) Output Write Enable */ + WoReg PIO_OWDR; /**< \brief (Pio Offset: 0x00A4) Output Write Disable */ + RoReg PIO_OWSR; /**< \brief (Pio Offset: 0x00A8) Output Write Status Register */ + RoReg Reserved8[1]; + WoReg PIO_AIMER; /**< \brief (Pio Offset: 0x00B0) Additional Interrupt Modes Enable Register */ + WoReg PIO_AIMDR; /**< \brief (Pio Offset: 0x00B4) Additional Interrupt Modes Disables Register */ + RoReg PIO_AIMMR; /**< \brief (Pio Offset: 0x00B8) Additional Interrupt Modes Mask Register */ + RoReg Reserved9[1]; + WoReg PIO_ESR; /**< \brief (Pio Offset: 0x00C0) Edge Select Register */ + WoReg PIO_LSR; /**< \brief (Pio Offset: 0x00C4) Level Select Register */ + RoReg PIO_ELSR; /**< \brief (Pio Offset: 0x00C8) Edge/Level Status Register */ + RoReg Reserved10[1]; + WoReg PIO_FELLSR; /**< \brief (Pio Offset: 0x00D0) Falling Edge/Low Level Select Register */ + WoReg PIO_REHLSR; /**< \brief (Pio Offset: 0x00D4) Rising Edge/ High Level Select Register */ + RoReg PIO_FRLHSR; /**< \brief (Pio Offset: 0x00D8) Fall/Rise - Low/High Status Register */ + RoReg Reserved11[1]; + RoReg PIO_LOCKSR; /**< \brief (Pio Offset: 0x00E0) Lock Status */ + RwReg PIO_WPMR; /**< \brief (Pio Offset: 0x00E4) Write Protect Mode Register */ + RoReg PIO_WPSR; /**< \brief (Pio Offset: 0x00E8) Write Protect Status Register */ + RoReg Reserved12[5]; + RwReg PIO_SCHMITT; /**< \brief (Pio Offset: 0x0100) Schmitt Trigger Register */ + RoReg Reserved13[3]; + RwReg PIO_DELAYR; /**< \brief (Pio Offset: 0x0110) IO Delay Register */ + RoReg Reserved14[15]; + RwReg PIO_PCMR; /**< \brief (Pio Offset: 0x150) Parallel Capture Mode Register */ + WoReg PIO_PCIER; /**< \brief (Pio Offset: 0x154) Parallel Capture Interrupt Enable Register */ + WoReg PIO_PCIDR; /**< \brief (Pio Offset: 0x158) Parallel Capture Interrupt Disable Register */ + RoReg PIO_PCIMR; /**< \brief (Pio Offset: 0x15C) Parallel Capture Interrupt Mask Register */ + RoReg PIO_PCISR; /**< \brief (Pio Offset: 0x160) Parallel Capture Interrupt Status Register */ + RoReg PIO_PCRHR; /**< \brief (Pio Offset: 0x164) Parallel Capture Reception Holding Register */ + RwReg PIO_RPR; /**< \brief (Pio Offset: 0x168) Receive Pointer Register */ + RwReg PIO_RCR; /**< \brief (Pio Offset: 0x16C) Receive Counter Register */ + RoReg Reserved15[2]; + RwReg PIO_RNPR; /**< \brief (Pio Offset: 0x178) Receive Next Pointer Register */ + RwReg PIO_RNCR; /**< \brief (Pio Offset: 0x17C) Receive Next Counter Register */ + RoReg Reserved16[2]; + WoReg PIO_PTCR; /**< \brief (Pio Offset: 0x188) Transfer Control Register */ + RoReg PIO_PTSR; /**< \brief (Pio Offset: 0x18C) Transfer Status Register */ +} Pio; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- PIO_PER : (PIO Offset: 0x0000) PIO Enable Register -------- */ +#define PIO_PER_P0 (0x1u << 0) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P1 (0x1u << 1) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P2 (0x1u << 2) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P3 (0x1u << 3) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P4 (0x1u << 4) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P5 (0x1u << 5) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P6 (0x1u << 6) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P7 (0x1u << 7) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P8 (0x1u << 8) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P9 (0x1u << 9) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P10 (0x1u << 10) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P11 (0x1u << 11) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P12 (0x1u << 12) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P13 (0x1u << 13) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P14 (0x1u << 14) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P15 (0x1u << 15) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P16 (0x1u << 16) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P17 (0x1u << 17) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P18 (0x1u << 18) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P19 (0x1u << 19) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P20 (0x1u << 20) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P21 (0x1u << 21) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P22 (0x1u << 22) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P23 (0x1u << 23) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P24 (0x1u << 24) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P25 (0x1u << 25) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P26 (0x1u << 26) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P27 (0x1u << 27) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P28 (0x1u << 28) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P29 (0x1u << 29) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P30 (0x1u << 30) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P31 (0x1u << 31) /**< \brief (PIO_PER) PIO Enable */ +/* -------- PIO_PDR : (PIO Offset: 0x0004) PIO Disable Register -------- */ +#define PIO_PDR_P0 (0x1u << 0) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P1 (0x1u << 1) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P2 (0x1u << 2) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P3 (0x1u << 3) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P4 (0x1u << 4) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P5 (0x1u << 5) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P6 (0x1u << 6) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P7 (0x1u << 7) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P8 (0x1u << 8) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P9 (0x1u << 9) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P10 (0x1u << 10) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P11 (0x1u << 11) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P12 (0x1u << 12) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P13 (0x1u << 13) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P14 (0x1u << 14) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P15 (0x1u << 15) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P16 (0x1u << 16) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P17 (0x1u << 17) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P18 (0x1u << 18) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P19 (0x1u << 19) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P20 (0x1u << 20) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P21 (0x1u << 21) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P22 (0x1u << 22) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P23 (0x1u << 23) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P24 (0x1u << 24) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P25 (0x1u << 25) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P26 (0x1u << 26) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P27 (0x1u << 27) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P28 (0x1u << 28) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P29 (0x1u << 29) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P30 (0x1u << 30) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P31 (0x1u << 31) /**< \brief (PIO_PDR) PIO Disable */ +/* -------- PIO_PSR : (PIO Offset: 0x0008) PIO Status Register -------- */ +#define PIO_PSR_P0 (0x1u << 0) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P1 (0x1u << 1) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P2 (0x1u << 2) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P3 (0x1u << 3) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P4 (0x1u << 4) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P5 (0x1u << 5) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P6 (0x1u << 6) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P7 (0x1u << 7) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P8 (0x1u << 8) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P9 (0x1u << 9) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P10 (0x1u << 10) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P11 (0x1u << 11) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P12 (0x1u << 12) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P13 (0x1u << 13) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P14 (0x1u << 14) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P15 (0x1u << 15) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P16 (0x1u << 16) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P17 (0x1u << 17) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P18 (0x1u << 18) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P19 (0x1u << 19) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P20 (0x1u << 20) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P21 (0x1u << 21) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P22 (0x1u << 22) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P23 (0x1u << 23) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P24 (0x1u << 24) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P25 (0x1u << 25) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P26 (0x1u << 26) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P27 (0x1u << 27) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P28 (0x1u << 28) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P29 (0x1u << 29) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P30 (0x1u << 30) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P31 (0x1u << 31) /**< \brief (PIO_PSR) PIO Status */ +/* -------- PIO_OER : (PIO Offset: 0x0010) Output Enable Register -------- */ +#define PIO_OER_P0 (0x1u << 0) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P1 (0x1u << 1) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P2 (0x1u << 2) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P3 (0x1u << 3) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P4 (0x1u << 4) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P5 (0x1u << 5) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P6 (0x1u << 6) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P7 (0x1u << 7) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P8 (0x1u << 8) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P9 (0x1u << 9) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P10 (0x1u << 10) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P11 (0x1u << 11) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P12 (0x1u << 12) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P13 (0x1u << 13) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P14 (0x1u << 14) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P15 (0x1u << 15) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P16 (0x1u << 16) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P17 (0x1u << 17) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P18 (0x1u << 18) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P19 (0x1u << 19) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P20 (0x1u << 20) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P21 (0x1u << 21) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P22 (0x1u << 22) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P23 (0x1u << 23) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P24 (0x1u << 24) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P25 (0x1u << 25) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P26 (0x1u << 26) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P27 (0x1u << 27) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P28 (0x1u << 28) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P29 (0x1u << 29) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P30 (0x1u << 30) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P31 (0x1u << 31) /**< \brief (PIO_OER) Output Enable */ +/* -------- PIO_ODR : (PIO Offset: 0x0014) Output Disable Register -------- */ +#define PIO_ODR_P0 (0x1u << 0) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P1 (0x1u << 1) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P2 (0x1u << 2) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P3 (0x1u << 3) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P4 (0x1u << 4) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P5 (0x1u << 5) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P6 (0x1u << 6) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P7 (0x1u << 7) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P8 (0x1u << 8) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P9 (0x1u << 9) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P10 (0x1u << 10) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P11 (0x1u << 11) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P12 (0x1u << 12) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P13 (0x1u << 13) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P14 (0x1u << 14) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P15 (0x1u << 15) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P16 (0x1u << 16) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P17 (0x1u << 17) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P18 (0x1u << 18) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P19 (0x1u << 19) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P20 (0x1u << 20) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P21 (0x1u << 21) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P22 (0x1u << 22) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P23 (0x1u << 23) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P24 (0x1u << 24) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P25 (0x1u << 25) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P26 (0x1u << 26) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P27 (0x1u << 27) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P28 (0x1u << 28) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P29 (0x1u << 29) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P30 (0x1u << 30) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P31 (0x1u << 31) /**< \brief (PIO_ODR) Output Disable */ +/* -------- PIO_OSR : (PIO Offset: 0x0018) Output Status Register -------- */ +#define PIO_OSR_P0 (0x1u << 0) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P1 (0x1u << 1) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P2 (0x1u << 2) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P3 (0x1u << 3) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P4 (0x1u << 4) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P5 (0x1u << 5) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P6 (0x1u << 6) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P7 (0x1u << 7) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P8 (0x1u << 8) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P9 (0x1u << 9) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P10 (0x1u << 10) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P11 (0x1u << 11) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P12 (0x1u << 12) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P13 (0x1u << 13) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P14 (0x1u << 14) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P15 (0x1u << 15) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P16 (0x1u << 16) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P17 (0x1u << 17) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P18 (0x1u << 18) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P19 (0x1u << 19) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P20 (0x1u << 20) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P21 (0x1u << 21) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P22 (0x1u << 22) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P23 (0x1u << 23) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P24 (0x1u << 24) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P25 (0x1u << 25) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P26 (0x1u << 26) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P27 (0x1u << 27) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P28 (0x1u << 28) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P29 (0x1u << 29) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P30 (0x1u << 30) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P31 (0x1u << 31) /**< \brief (PIO_OSR) Output Status */ +/* -------- PIO_IFER : (PIO Offset: 0x0020) Glitch Input Filter Enable Register -------- */ +#define PIO_IFER_P0 (0x1u << 0) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P1 (0x1u << 1) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P2 (0x1u << 2) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P3 (0x1u << 3) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P4 (0x1u << 4) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P5 (0x1u << 5) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P6 (0x1u << 6) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P7 (0x1u << 7) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P8 (0x1u << 8) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P9 (0x1u << 9) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P10 (0x1u << 10) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P11 (0x1u << 11) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P12 (0x1u << 12) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P13 (0x1u << 13) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P14 (0x1u << 14) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P15 (0x1u << 15) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P16 (0x1u << 16) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P17 (0x1u << 17) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P18 (0x1u << 18) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P19 (0x1u << 19) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P20 (0x1u << 20) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P21 (0x1u << 21) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P22 (0x1u << 22) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P23 (0x1u << 23) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P24 (0x1u << 24) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P25 (0x1u << 25) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P26 (0x1u << 26) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P27 (0x1u << 27) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P28 (0x1u << 28) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P29 (0x1u << 29) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P30 (0x1u << 30) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P31 (0x1u << 31) /**< \brief (PIO_IFER) Input Filter Enable */ +/* -------- PIO_IFDR : (PIO Offset: 0x0024) Glitch Input Filter Disable Register -------- */ +#define PIO_IFDR_P0 (0x1u << 0) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P1 (0x1u << 1) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P2 (0x1u << 2) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P3 (0x1u << 3) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P4 (0x1u << 4) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P5 (0x1u << 5) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P6 (0x1u << 6) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P7 (0x1u << 7) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P8 (0x1u << 8) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P9 (0x1u << 9) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P10 (0x1u << 10) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P11 (0x1u << 11) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P12 (0x1u << 12) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P13 (0x1u << 13) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P14 (0x1u << 14) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P15 (0x1u << 15) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P16 (0x1u << 16) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P17 (0x1u << 17) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P18 (0x1u << 18) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P19 (0x1u << 19) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P20 (0x1u << 20) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P21 (0x1u << 21) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P22 (0x1u << 22) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P23 (0x1u << 23) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P24 (0x1u << 24) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P25 (0x1u << 25) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P26 (0x1u << 26) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P27 (0x1u << 27) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P28 (0x1u << 28) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P29 (0x1u << 29) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P30 (0x1u << 30) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P31 (0x1u << 31) /**< \brief (PIO_IFDR) Input Filter Disable */ +/* -------- PIO_IFSR : (PIO Offset: 0x0028) Glitch Input Filter Status Register -------- */ +#define PIO_IFSR_P0 (0x1u << 0) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P1 (0x1u << 1) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P2 (0x1u << 2) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P3 (0x1u << 3) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P4 (0x1u << 4) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P5 (0x1u << 5) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P6 (0x1u << 6) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P7 (0x1u << 7) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P8 (0x1u << 8) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P9 (0x1u << 9) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P10 (0x1u << 10) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P11 (0x1u << 11) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P12 (0x1u << 12) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P13 (0x1u << 13) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P14 (0x1u << 14) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P15 (0x1u << 15) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P16 (0x1u << 16) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P17 (0x1u << 17) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P18 (0x1u << 18) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P19 (0x1u << 19) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P20 (0x1u << 20) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P21 (0x1u << 21) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P22 (0x1u << 22) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P23 (0x1u << 23) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P24 (0x1u << 24) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P25 (0x1u << 25) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P26 (0x1u << 26) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P27 (0x1u << 27) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P28 (0x1u << 28) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P29 (0x1u << 29) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P30 (0x1u << 30) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P31 (0x1u << 31) /**< \brief (PIO_IFSR) Input Filer Status */ +/* -------- PIO_SODR : (PIO Offset: 0x0030) Set Output Data Register -------- */ +#define PIO_SODR_P0 (0x1u << 0) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P1 (0x1u << 1) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P2 (0x1u << 2) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P3 (0x1u << 3) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P4 (0x1u << 4) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P5 (0x1u << 5) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P6 (0x1u << 6) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P7 (0x1u << 7) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P8 (0x1u << 8) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P9 (0x1u << 9) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P10 (0x1u << 10) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P11 (0x1u << 11) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P12 (0x1u << 12) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P13 (0x1u << 13) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P14 (0x1u << 14) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P15 (0x1u << 15) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P16 (0x1u << 16) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P17 (0x1u << 17) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P18 (0x1u << 18) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P19 (0x1u << 19) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P20 (0x1u << 20) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P21 (0x1u << 21) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P22 (0x1u << 22) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P23 (0x1u << 23) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P24 (0x1u << 24) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P25 (0x1u << 25) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P26 (0x1u << 26) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P27 (0x1u << 27) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P28 (0x1u << 28) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P29 (0x1u << 29) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P30 (0x1u << 30) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P31 (0x1u << 31) /**< \brief (PIO_SODR) Set Output Data */ +/* -------- PIO_CODR : (PIO Offset: 0x0034) Clear Output Data Register -------- */ +#define PIO_CODR_P0 (0x1u << 0) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P1 (0x1u << 1) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P2 (0x1u << 2) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P3 (0x1u << 3) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P4 (0x1u << 4) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P5 (0x1u << 5) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P6 (0x1u << 6) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P7 (0x1u << 7) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P8 (0x1u << 8) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P9 (0x1u << 9) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P10 (0x1u << 10) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P11 (0x1u << 11) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P12 (0x1u << 12) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P13 (0x1u << 13) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P14 (0x1u << 14) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P15 (0x1u << 15) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P16 (0x1u << 16) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P17 (0x1u << 17) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P18 (0x1u << 18) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P19 (0x1u << 19) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P20 (0x1u << 20) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P21 (0x1u << 21) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P22 (0x1u << 22) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P23 (0x1u << 23) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P24 (0x1u << 24) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P25 (0x1u << 25) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P26 (0x1u << 26) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P27 (0x1u << 27) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P28 (0x1u << 28) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P29 (0x1u << 29) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P30 (0x1u << 30) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P31 (0x1u << 31) /**< \brief (PIO_CODR) Clear Output Data */ +/* -------- PIO_ODSR : (PIO Offset: 0x0038) Output Data Status Register -------- */ +#define PIO_ODSR_P0 (0x1u << 0) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P1 (0x1u << 1) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P2 (0x1u << 2) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P3 (0x1u << 3) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P4 (0x1u << 4) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P5 (0x1u << 5) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P6 (0x1u << 6) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P7 (0x1u << 7) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P8 (0x1u << 8) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P9 (0x1u << 9) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P10 (0x1u << 10) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P11 (0x1u << 11) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P12 (0x1u << 12) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P13 (0x1u << 13) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P14 (0x1u << 14) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P15 (0x1u << 15) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P16 (0x1u << 16) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P17 (0x1u << 17) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P18 (0x1u << 18) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P19 (0x1u << 19) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P20 (0x1u << 20) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P21 (0x1u << 21) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P22 (0x1u << 22) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P23 (0x1u << 23) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P24 (0x1u << 24) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P25 (0x1u << 25) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P26 (0x1u << 26) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P27 (0x1u << 27) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P28 (0x1u << 28) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P29 (0x1u << 29) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P30 (0x1u << 30) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P31 (0x1u << 31) /**< \brief (PIO_ODSR) Output Data Status */ +/* -------- PIO_PDSR : (PIO Offset: 0x003C) Pin Data Status Register -------- */ +#define PIO_PDSR_P0 (0x1u << 0) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P1 (0x1u << 1) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P2 (0x1u << 2) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P3 (0x1u << 3) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P4 (0x1u << 4) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P5 (0x1u << 5) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P6 (0x1u << 6) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P7 (0x1u << 7) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P8 (0x1u << 8) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P9 (0x1u << 9) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P10 (0x1u << 10) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P11 (0x1u << 11) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P12 (0x1u << 12) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P13 (0x1u << 13) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P14 (0x1u << 14) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P15 (0x1u << 15) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P16 (0x1u << 16) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P17 (0x1u << 17) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P18 (0x1u << 18) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P19 (0x1u << 19) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P20 (0x1u << 20) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P21 (0x1u << 21) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P22 (0x1u << 22) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P23 (0x1u << 23) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P24 (0x1u << 24) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P25 (0x1u << 25) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P26 (0x1u << 26) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P27 (0x1u << 27) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P28 (0x1u << 28) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P29 (0x1u << 29) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P30 (0x1u << 30) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P31 (0x1u << 31) /**< \brief (PIO_PDSR) Output Data Status */ +/* -------- PIO_IER : (PIO Offset: 0x0040) Interrupt Enable Register -------- */ +#define PIO_IER_P0 (0x1u << 0) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P1 (0x1u << 1) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P2 (0x1u << 2) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P3 (0x1u << 3) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P4 (0x1u << 4) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P5 (0x1u << 5) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P6 (0x1u << 6) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P7 (0x1u << 7) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P8 (0x1u << 8) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P9 (0x1u << 9) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P10 (0x1u << 10) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P11 (0x1u << 11) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P12 (0x1u << 12) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P13 (0x1u << 13) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P14 (0x1u << 14) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P15 (0x1u << 15) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P16 (0x1u << 16) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P17 (0x1u << 17) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P18 (0x1u << 18) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P19 (0x1u << 19) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P20 (0x1u << 20) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P21 (0x1u << 21) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P22 (0x1u << 22) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P23 (0x1u << 23) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P24 (0x1u << 24) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P25 (0x1u << 25) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P26 (0x1u << 26) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P27 (0x1u << 27) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P28 (0x1u << 28) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P29 (0x1u << 29) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P30 (0x1u << 30) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P31 (0x1u << 31) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +/* -------- PIO_IDR : (PIO Offset: 0x0044) Interrupt Disable Register -------- */ +#define PIO_IDR_P0 (0x1u << 0) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P1 (0x1u << 1) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P2 (0x1u << 2) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P3 (0x1u << 3) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P4 (0x1u << 4) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P5 (0x1u << 5) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P6 (0x1u << 6) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P7 (0x1u << 7) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P8 (0x1u << 8) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P9 (0x1u << 9) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P10 (0x1u << 10) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P11 (0x1u << 11) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P12 (0x1u << 12) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P13 (0x1u << 13) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P14 (0x1u << 14) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P15 (0x1u << 15) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P16 (0x1u << 16) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P17 (0x1u << 17) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P18 (0x1u << 18) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P19 (0x1u << 19) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P20 (0x1u << 20) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P21 (0x1u << 21) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P22 (0x1u << 22) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P23 (0x1u << 23) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P24 (0x1u << 24) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P25 (0x1u << 25) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P26 (0x1u << 26) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P27 (0x1u << 27) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P28 (0x1u << 28) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P29 (0x1u << 29) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P30 (0x1u << 30) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P31 (0x1u << 31) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +/* -------- PIO_IMR : (PIO Offset: 0x0048) Interrupt Mask Register -------- */ +#define PIO_IMR_P0 (0x1u << 0) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P1 (0x1u << 1) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P2 (0x1u << 2) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P3 (0x1u << 3) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P4 (0x1u << 4) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P5 (0x1u << 5) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P6 (0x1u << 6) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P7 (0x1u << 7) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P8 (0x1u << 8) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P9 (0x1u << 9) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P10 (0x1u << 10) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P11 (0x1u << 11) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P12 (0x1u << 12) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P13 (0x1u << 13) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P14 (0x1u << 14) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P15 (0x1u << 15) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P16 (0x1u << 16) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P17 (0x1u << 17) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P18 (0x1u << 18) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P19 (0x1u << 19) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P20 (0x1u << 20) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P21 (0x1u << 21) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P22 (0x1u << 22) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P23 (0x1u << 23) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P24 (0x1u << 24) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P25 (0x1u << 25) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P26 (0x1u << 26) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P27 (0x1u << 27) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P28 (0x1u << 28) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P29 (0x1u << 29) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P30 (0x1u << 30) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P31 (0x1u << 31) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +/* -------- PIO_ISR : (PIO Offset: 0x004C) Interrupt Status Register -------- */ +#define PIO_ISR_P0 (0x1u << 0) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P1 (0x1u << 1) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P2 (0x1u << 2) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P3 (0x1u << 3) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P4 (0x1u << 4) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P5 (0x1u << 5) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P6 (0x1u << 6) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P7 (0x1u << 7) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P8 (0x1u << 8) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P9 (0x1u << 9) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P10 (0x1u << 10) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P11 (0x1u << 11) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P12 (0x1u << 12) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P13 (0x1u << 13) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P14 (0x1u << 14) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P15 (0x1u << 15) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P16 (0x1u << 16) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P17 (0x1u << 17) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P18 (0x1u << 18) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P19 (0x1u << 19) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P20 (0x1u << 20) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P21 (0x1u << 21) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P22 (0x1u << 22) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P23 (0x1u << 23) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P24 (0x1u << 24) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P25 (0x1u << 25) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P26 (0x1u << 26) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P27 (0x1u << 27) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P28 (0x1u << 28) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P29 (0x1u << 29) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P30 (0x1u << 30) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P31 (0x1u << 31) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +/* -------- PIO_MDER : (PIO Offset: 0x0050) Multi-driver Enable Register -------- */ +#define PIO_MDER_P0 (0x1u << 0) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P1 (0x1u << 1) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P2 (0x1u << 2) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P3 (0x1u << 3) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P4 (0x1u << 4) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P5 (0x1u << 5) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P6 (0x1u << 6) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P7 (0x1u << 7) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P8 (0x1u << 8) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P9 (0x1u << 9) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P10 (0x1u << 10) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P11 (0x1u << 11) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P12 (0x1u << 12) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P13 (0x1u << 13) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P14 (0x1u << 14) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P15 (0x1u << 15) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P16 (0x1u << 16) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P17 (0x1u << 17) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P18 (0x1u << 18) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P19 (0x1u << 19) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P20 (0x1u << 20) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P21 (0x1u << 21) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P22 (0x1u << 22) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P23 (0x1u << 23) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P24 (0x1u << 24) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P25 (0x1u << 25) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P26 (0x1u << 26) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P27 (0x1u << 27) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P28 (0x1u << 28) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P29 (0x1u << 29) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P30 (0x1u << 30) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P31 (0x1u << 31) /**< \brief (PIO_MDER) Multi Drive Enable. */ +/* -------- PIO_MDDR : (PIO Offset: 0x0054) Multi-driver Disable Register -------- */ +#define PIO_MDDR_P0 (0x1u << 0) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P1 (0x1u << 1) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P2 (0x1u << 2) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P3 (0x1u << 3) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P4 (0x1u << 4) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P5 (0x1u << 5) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P6 (0x1u << 6) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P7 (0x1u << 7) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P8 (0x1u << 8) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P9 (0x1u << 9) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P10 (0x1u << 10) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P11 (0x1u << 11) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P12 (0x1u << 12) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P13 (0x1u << 13) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P14 (0x1u << 14) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P15 (0x1u << 15) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P16 (0x1u << 16) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P17 (0x1u << 17) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P18 (0x1u << 18) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P19 (0x1u << 19) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P20 (0x1u << 20) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P21 (0x1u << 21) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P22 (0x1u << 22) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P23 (0x1u << 23) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P24 (0x1u << 24) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P25 (0x1u << 25) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P26 (0x1u << 26) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P27 (0x1u << 27) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P28 (0x1u << 28) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P29 (0x1u << 29) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P30 (0x1u << 30) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P31 (0x1u << 31) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +/* -------- PIO_MDSR : (PIO Offset: 0x0058) Multi-driver Status Register -------- */ +#define PIO_MDSR_P0 (0x1u << 0) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P1 (0x1u << 1) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P2 (0x1u << 2) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P3 (0x1u << 3) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P4 (0x1u << 4) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P5 (0x1u << 5) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P6 (0x1u << 6) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P7 (0x1u << 7) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P8 (0x1u << 8) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P9 (0x1u << 9) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P10 (0x1u << 10) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P11 (0x1u << 11) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P12 (0x1u << 12) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P13 (0x1u << 13) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P14 (0x1u << 14) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P15 (0x1u << 15) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P16 (0x1u << 16) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P17 (0x1u << 17) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P18 (0x1u << 18) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P19 (0x1u << 19) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P20 (0x1u << 20) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P21 (0x1u << 21) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P22 (0x1u << 22) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P23 (0x1u << 23) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P24 (0x1u << 24) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P25 (0x1u << 25) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P26 (0x1u << 26) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P27 (0x1u << 27) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P28 (0x1u << 28) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P29 (0x1u << 29) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P30 (0x1u << 30) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P31 (0x1u << 31) /**< \brief (PIO_MDSR) Multi Drive Status. */ +/* -------- PIO_PUDR : (PIO Offset: 0x0060) Pull-up Disable Register -------- */ +#define PIO_PUDR_P0 (0x1u << 0) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P1 (0x1u << 1) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P2 (0x1u << 2) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P3 (0x1u << 3) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P4 (0x1u << 4) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P5 (0x1u << 5) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P6 (0x1u << 6) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P7 (0x1u << 7) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P8 (0x1u << 8) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P9 (0x1u << 9) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P10 (0x1u << 10) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P11 (0x1u << 11) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P12 (0x1u << 12) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P13 (0x1u << 13) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P14 (0x1u << 14) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P15 (0x1u << 15) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P16 (0x1u << 16) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P17 (0x1u << 17) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P18 (0x1u << 18) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P19 (0x1u << 19) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P20 (0x1u << 20) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P21 (0x1u << 21) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P22 (0x1u << 22) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P23 (0x1u << 23) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P24 (0x1u << 24) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P25 (0x1u << 25) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P26 (0x1u << 26) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P27 (0x1u << 27) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P28 (0x1u << 28) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P29 (0x1u << 29) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P30 (0x1u << 30) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P31 (0x1u << 31) /**< \brief (PIO_PUDR) Pull Up Disable. */ +/* -------- PIO_PUER : (PIO Offset: 0x0064) Pull-up Enable Register -------- */ +#define PIO_PUER_P0 (0x1u << 0) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P1 (0x1u << 1) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P2 (0x1u << 2) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P3 (0x1u << 3) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P4 (0x1u << 4) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P5 (0x1u << 5) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P6 (0x1u << 6) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P7 (0x1u << 7) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P8 (0x1u << 8) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P9 (0x1u << 9) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P10 (0x1u << 10) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P11 (0x1u << 11) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P12 (0x1u << 12) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P13 (0x1u << 13) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P14 (0x1u << 14) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P15 (0x1u << 15) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P16 (0x1u << 16) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P17 (0x1u << 17) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P18 (0x1u << 18) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P19 (0x1u << 19) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P20 (0x1u << 20) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P21 (0x1u << 21) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P22 (0x1u << 22) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P23 (0x1u << 23) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P24 (0x1u << 24) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P25 (0x1u << 25) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P26 (0x1u << 26) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P27 (0x1u << 27) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P28 (0x1u << 28) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P29 (0x1u << 29) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P30 (0x1u << 30) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P31 (0x1u << 31) /**< \brief (PIO_PUER) Pull Up Enable. */ +/* -------- PIO_PUSR : (PIO Offset: 0x0068) Pad Pull-up Status Register -------- */ +#define PIO_PUSR_P0 (0x1u << 0) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P1 (0x1u << 1) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P2 (0x1u << 2) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P3 (0x1u << 3) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P4 (0x1u << 4) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P5 (0x1u << 5) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P6 (0x1u << 6) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P7 (0x1u << 7) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P8 (0x1u << 8) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P9 (0x1u << 9) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P10 (0x1u << 10) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P11 (0x1u << 11) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P12 (0x1u << 12) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P13 (0x1u << 13) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P14 (0x1u << 14) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P15 (0x1u << 15) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P16 (0x1u << 16) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P17 (0x1u << 17) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P18 (0x1u << 18) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P19 (0x1u << 19) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P20 (0x1u << 20) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P21 (0x1u << 21) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P22 (0x1u << 22) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P23 (0x1u << 23) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P24 (0x1u << 24) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P25 (0x1u << 25) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P26 (0x1u << 26) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P27 (0x1u << 27) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P28 (0x1u << 28) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P29 (0x1u << 29) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P30 (0x1u << 30) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P31 (0x1u << 31) /**< \brief (PIO_PUSR) Pull Up Status. */ +/* -------- PIO_ABCDSR[2] : (PIO Offset: 0x0070) Peripheral Select Register -------- */ +#define PIO_ABCDSR_P0 (0x1u << 0) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P1 (0x1u << 1) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P2 (0x1u << 2) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P3 (0x1u << 3) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P4 (0x1u << 4) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P5 (0x1u << 5) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P6 (0x1u << 6) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P7 (0x1u << 7) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P8 (0x1u << 8) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P9 (0x1u << 9) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P10 (0x1u << 10) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P11 (0x1u << 11) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P12 (0x1u << 12) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P13 (0x1u << 13) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P14 (0x1u << 14) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P15 (0x1u << 15) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P16 (0x1u << 16) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P17 (0x1u << 17) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P18 (0x1u << 18) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P19 (0x1u << 19) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P20 (0x1u << 20) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P21 (0x1u << 21) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P22 (0x1u << 22) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P23 (0x1u << 23) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P24 (0x1u << 24) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P25 (0x1u << 25) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P26 (0x1u << 26) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P27 (0x1u << 27) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P28 (0x1u << 28) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P29 (0x1u << 29) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P30 (0x1u << 30) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P31 (0x1u << 31) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +/* -------- PIO_IFSCDR : (PIO Offset: 0x0080) Input Filter Slow Clock Disable Register -------- */ +#define PIO_IFSCDR_P0 (0x1u << 0) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P1 (0x1u << 1) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P2 (0x1u << 2) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P3 (0x1u << 3) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P4 (0x1u << 4) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P5 (0x1u << 5) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P6 (0x1u << 6) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P7 (0x1u << 7) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P8 (0x1u << 8) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P9 (0x1u << 9) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P10 (0x1u << 10) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P11 (0x1u << 11) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P12 (0x1u << 12) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P13 (0x1u << 13) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P14 (0x1u << 14) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P15 (0x1u << 15) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P16 (0x1u << 16) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P17 (0x1u << 17) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P18 (0x1u << 18) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P19 (0x1u << 19) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P20 (0x1u << 20) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P21 (0x1u << 21) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P22 (0x1u << 22) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P23 (0x1u << 23) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P24 (0x1u << 24) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P25 (0x1u << 25) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P26 (0x1u << 26) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P27 (0x1u << 27) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P28 (0x1u << 28) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P29 (0x1u << 29) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P30 (0x1u << 30) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P31 (0x1u << 31) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +/* -------- PIO_IFSCER : (PIO Offset: 0x0084) Input Filter Slow Clock Enable Register -------- */ +#define PIO_IFSCER_P0 (0x1u << 0) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P1 (0x1u << 1) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P2 (0x1u << 2) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P3 (0x1u << 3) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P4 (0x1u << 4) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P5 (0x1u << 5) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P6 (0x1u << 6) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P7 (0x1u << 7) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P8 (0x1u << 8) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P9 (0x1u << 9) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P10 (0x1u << 10) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P11 (0x1u << 11) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P12 (0x1u << 12) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P13 (0x1u << 13) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P14 (0x1u << 14) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P15 (0x1u << 15) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P16 (0x1u << 16) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P17 (0x1u << 17) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P18 (0x1u << 18) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P19 (0x1u << 19) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P20 (0x1u << 20) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P21 (0x1u << 21) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P22 (0x1u << 22) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P23 (0x1u << 23) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P24 (0x1u << 24) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P25 (0x1u << 25) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P26 (0x1u << 26) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P27 (0x1u << 27) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P28 (0x1u << 28) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P29 (0x1u << 29) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P30 (0x1u << 30) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P31 (0x1u << 31) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +/* -------- PIO_IFSCSR : (PIO Offset: 0x0088) Input Filter Slow Clock Status Register -------- */ +#define PIO_IFSCSR_P0 (0x1u << 0) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P1 (0x1u << 1) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P2 (0x1u << 2) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P3 (0x1u << 3) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P4 (0x1u << 4) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P5 (0x1u << 5) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P6 (0x1u << 6) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P7 (0x1u << 7) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P8 (0x1u << 8) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P9 (0x1u << 9) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P10 (0x1u << 10) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P11 (0x1u << 11) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P12 (0x1u << 12) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P13 (0x1u << 13) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P14 (0x1u << 14) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P15 (0x1u << 15) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P16 (0x1u << 16) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P17 (0x1u << 17) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P18 (0x1u << 18) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P19 (0x1u << 19) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P20 (0x1u << 20) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P21 (0x1u << 21) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P22 (0x1u << 22) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P23 (0x1u << 23) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P24 (0x1u << 24) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P25 (0x1u << 25) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P26 (0x1u << 26) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P27 (0x1u << 27) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P28 (0x1u << 28) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P29 (0x1u << 29) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P30 (0x1u << 30) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P31 (0x1u << 31) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +/* -------- PIO_SCDR : (PIO Offset: 0x008C) Slow Clock Divider Debouncing Register -------- */ +#define PIO_SCDR_DIV_Pos 0 +#define PIO_SCDR_DIV_Msk (0x3fffu << PIO_SCDR_DIV_Pos) /**< \brief (PIO_SCDR) */ +#define PIO_SCDR_DIV(value) ((PIO_SCDR_DIV_Msk & ((value) << PIO_SCDR_DIV_Pos))) +/* -------- PIO_PPDDR : (PIO Offset: 0x0090) Pad Pull-down Disable Register -------- */ +#define PIO_PPDDR_P0 (0x1u << 0) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P1 (0x1u << 1) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P2 (0x1u << 2) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P3 (0x1u << 3) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P4 (0x1u << 4) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P5 (0x1u << 5) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P6 (0x1u << 6) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P7 (0x1u << 7) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P8 (0x1u << 8) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P9 (0x1u << 9) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P10 (0x1u << 10) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P11 (0x1u << 11) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P12 (0x1u << 12) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P13 (0x1u << 13) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P14 (0x1u << 14) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P15 (0x1u << 15) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P16 (0x1u << 16) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P17 (0x1u << 17) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P18 (0x1u << 18) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P19 (0x1u << 19) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P20 (0x1u << 20) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P21 (0x1u << 21) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P22 (0x1u << 22) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P23 (0x1u << 23) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P24 (0x1u << 24) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P25 (0x1u << 25) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P26 (0x1u << 26) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P27 (0x1u << 27) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P28 (0x1u << 28) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P29 (0x1u << 29) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P30 (0x1u << 30) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P31 (0x1u << 31) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +/* -------- PIO_PPDER : (PIO Offset: 0x0094) Pad Pull-down Enable Register -------- */ +#define PIO_PPDER_P0 (0x1u << 0) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P1 (0x1u << 1) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P2 (0x1u << 2) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P3 (0x1u << 3) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P4 (0x1u << 4) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P5 (0x1u << 5) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P6 (0x1u << 6) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P7 (0x1u << 7) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P8 (0x1u << 8) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P9 (0x1u << 9) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P10 (0x1u << 10) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P11 (0x1u << 11) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P12 (0x1u << 12) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P13 (0x1u << 13) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P14 (0x1u << 14) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P15 (0x1u << 15) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P16 (0x1u << 16) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P17 (0x1u << 17) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P18 (0x1u << 18) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P19 (0x1u << 19) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P20 (0x1u << 20) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P21 (0x1u << 21) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P22 (0x1u << 22) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P23 (0x1u << 23) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P24 (0x1u << 24) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P25 (0x1u << 25) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P26 (0x1u << 26) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P27 (0x1u << 27) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P28 (0x1u << 28) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P29 (0x1u << 29) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P30 (0x1u << 30) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P31 (0x1u << 31) /**< \brief (PIO_PPDER) Pull Down Enable. */ +/* -------- PIO_PPDSR : (PIO Offset: 0x0098) Pad Pull-down Status Register -------- */ +#define PIO_PPDSR_P0 (0x1u << 0) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P1 (0x1u << 1) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P2 (0x1u << 2) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P3 (0x1u << 3) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P4 (0x1u << 4) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P5 (0x1u << 5) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P6 (0x1u << 6) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P7 (0x1u << 7) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P8 (0x1u << 8) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P9 (0x1u << 9) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P10 (0x1u << 10) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P11 (0x1u << 11) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P12 (0x1u << 12) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P13 (0x1u << 13) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P14 (0x1u << 14) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P15 (0x1u << 15) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P16 (0x1u << 16) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P17 (0x1u << 17) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P18 (0x1u << 18) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P19 (0x1u << 19) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P20 (0x1u << 20) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P21 (0x1u << 21) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P22 (0x1u << 22) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P23 (0x1u << 23) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P24 (0x1u << 24) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P25 (0x1u << 25) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P26 (0x1u << 26) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P27 (0x1u << 27) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P28 (0x1u << 28) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P29 (0x1u << 29) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P30 (0x1u << 30) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P31 (0x1u << 31) /**< \brief (PIO_PPDSR) Pull Down Status. */ +/* -------- PIO_OWER : (PIO Offset: 0x00A0) Output Write Enable -------- */ +#define PIO_OWER_P0 (0x1u << 0) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P1 (0x1u << 1) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P2 (0x1u << 2) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P3 (0x1u << 3) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P4 (0x1u << 4) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P5 (0x1u << 5) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P6 (0x1u << 6) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P7 (0x1u << 7) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P8 (0x1u << 8) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P9 (0x1u << 9) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P10 (0x1u << 10) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P11 (0x1u << 11) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P12 (0x1u << 12) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P13 (0x1u << 13) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P14 (0x1u << 14) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P15 (0x1u << 15) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P16 (0x1u << 16) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P17 (0x1u << 17) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P18 (0x1u << 18) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P19 (0x1u << 19) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P20 (0x1u << 20) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P21 (0x1u << 21) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P22 (0x1u << 22) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P23 (0x1u << 23) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P24 (0x1u << 24) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P25 (0x1u << 25) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P26 (0x1u << 26) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P27 (0x1u << 27) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P28 (0x1u << 28) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P29 (0x1u << 29) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P30 (0x1u << 30) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P31 (0x1u << 31) /**< \brief (PIO_OWER) Output Write Enable. */ +/* -------- PIO_OWDR : (PIO Offset: 0x00A4) Output Write Disable -------- */ +#define PIO_OWDR_P0 (0x1u << 0) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P1 (0x1u << 1) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P2 (0x1u << 2) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P3 (0x1u << 3) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P4 (0x1u << 4) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P5 (0x1u << 5) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P6 (0x1u << 6) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P7 (0x1u << 7) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P8 (0x1u << 8) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P9 (0x1u << 9) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P10 (0x1u << 10) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P11 (0x1u << 11) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P12 (0x1u << 12) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P13 (0x1u << 13) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P14 (0x1u << 14) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P15 (0x1u << 15) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P16 (0x1u << 16) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P17 (0x1u << 17) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P18 (0x1u << 18) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P19 (0x1u << 19) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P20 (0x1u << 20) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P21 (0x1u << 21) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P22 (0x1u << 22) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P23 (0x1u << 23) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P24 (0x1u << 24) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P25 (0x1u << 25) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P26 (0x1u << 26) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P27 (0x1u << 27) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P28 (0x1u << 28) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P29 (0x1u << 29) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P30 (0x1u << 30) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P31 (0x1u << 31) /**< \brief (PIO_OWDR) Output Write Disable. */ +/* -------- PIO_OWSR : (PIO Offset: 0x00A8) Output Write Status Register -------- */ +#define PIO_OWSR_P0 (0x1u << 0) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P1 (0x1u << 1) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P2 (0x1u << 2) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P3 (0x1u << 3) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P4 (0x1u << 4) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P5 (0x1u << 5) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P6 (0x1u << 6) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P7 (0x1u << 7) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P8 (0x1u << 8) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P9 (0x1u << 9) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P10 (0x1u << 10) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P11 (0x1u << 11) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P12 (0x1u << 12) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P13 (0x1u << 13) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P14 (0x1u << 14) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P15 (0x1u << 15) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P16 (0x1u << 16) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P17 (0x1u << 17) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P18 (0x1u << 18) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P19 (0x1u << 19) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P20 (0x1u << 20) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P21 (0x1u << 21) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P22 (0x1u << 22) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P23 (0x1u << 23) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P24 (0x1u << 24) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P25 (0x1u << 25) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P26 (0x1u << 26) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P27 (0x1u << 27) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P28 (0x1u << 28) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P29 (0x1u << 29) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P30 (0x1u << 30) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P31 (0x1u << 31) /**< \brief (PIO_OWSR) Output Write Status. */ +/* -------- PIO_AIMER : (PIO Offset: 0x00B0) Additional Interrupt Modes Enable Register -------- */ +#define PIO_AIMER_P0 (0x1u << 0) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P1 (0x1u << 1) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P2 (0x1u << 2) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P3 (0x1u << 3) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P4 (0x1u << 4) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P5 (0x1u << 5) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P6 (0x1u << 6) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P7 (0x1u << 7) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P8 (0x1u << 8) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P9 (0x1u << 9) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P10 (0x1u << 10) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P11 (0x1u << 11) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P12 (0x1u << 12) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P13 (0x1u << 13) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P14 (0x1u << 14) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P15 (0x1u << 15) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P16 (0x1u << 16) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P17 (0x1u << 17) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P18 (0x1u << 18) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P19 (0x1u << 19) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P20 (0x1u << 20) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P21 (0x1u << 21) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P22 (0x1u << 22) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P23 (0x1u << 23) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P24 (0x1u << 24) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P25 (0x1u << 25) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P26 (0x1u << 26) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P27 (0x1u << 27) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P28 (0x1u << 28) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P29 (0x1u << 29) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P30 (0x1u << 30) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P31 (0x1u << 31) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +/* -------- PIO_AIMDR : (PIO Offset: 0x00B4) Additional Interrupt Modes Disables Register -------- */ +#define PIO_AIMDR_P0 (0x1u << 0) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P1 (0x1u << 1) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P2 (0x1u << 2) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P3 (0x1u << 3) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P4 (0x1u << 4) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P5 (0x1u << 5) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P6 (0x1u << 6) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P7 (0x1u << 7) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P8 (0x1u << 8) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P9 (0x1u << 9) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P10 (0x1u << 10) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P11 (0x1u << 11) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P12 (0x1u << 12) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P13 (0x1u << 13) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P14 (0x1u << 14) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P15 (0x1u << 15) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P16 (0x1u << 16) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P17 (0x1u << 17) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P18 (0x1u << 18) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P19 (0x1u << 19) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P20 (0x1u << 20) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P21 (0x1u << 21) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P22 (0x1u << 22) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P23 (0x1u << 23) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P24 (0x1u << 24) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P25 (0x1u << 25) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P26 (0x1u << 26) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P27 (0x1u << 27) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P28 (0x1u << 28) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P29 (0x1u << 29) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P30 (0x1u << 30) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P31 (0x1u << 31) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +/* -------- PIO_AIMMR : (PIO Offset: 0x00B8) Additional Interrupt Modes Mask Register -------- */ +#define PIO_AIMMR_P0 (0x1u << 0) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P1 (0x1u << 1) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P2 (0x1u << 2) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P3 (0x1u << 3) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P4 (0x1u << 4) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P5 (0x1u << 5) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P6 (0x1u << 6) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P7 (0x1u << 7) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P8 (0x1u << 8) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P9 (0x1u << 9) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P10 (0x1u << 10) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P11 (0x1u << 11) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P12 (0x1u << 12) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P13 (0x1u << 13) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P14 (0x1u << 14) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P15 (0x1u << 15) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P16 (0x1u << 16) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P17 (0x1u << 17) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P18 (0x1u << 18) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P19 (0x1u << 19) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P20 (0x1u << 20) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P21 (0x1u << 21) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P22 (0x1u << 22) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P23 (0x1u << 23) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P24 (0x1u << 24) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P25 (0x1u << 25) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P26 (0x1u << 26) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P27 (0x1u << 27) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P28 (0x1u << 28) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P29 (0x1u << 29) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P30 (0x1u << 30) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P31 (0x1u << 31) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +/* -------- PIO_ESR : (PIO Offset: 0x00C0) Edge Select Register -------- */ +#define PIO_ESR_P0 (0x1u << 0) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P1 (0x1u << 1) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P2 (0x1u << 2) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P3 (0x1u << 3) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P4 (0x1u << 4) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P5 (0x1u << 5) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P6 (0x1u << 6) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P7 (0x1u << 7) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P8 (0x1u << 8) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P9 (0x1u << 9) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P10 (0x1u << 10) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P11 (0x1u << 11) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P12 (0x1u << 12) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P13 (0x1u << 13) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P14 (0x1u << 14) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P15 (0x1u << 15) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P16 (0x1u << 16) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P17 (0x1u << 17) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P18 (0x1u << 18) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P19 (0x1u << 19) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P20 (0x1u << 20) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P21 (0x1u << 21) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P22 (0x1u << 22) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P23 (0x1u << 23) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P24 (0x1u << 24) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P25 (0x1u << 25) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P26 (0x1u << 26) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P27 (0x1u << 27) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P28 (0x1u << 28) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P29 (0x1u << 29) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P30 (0x1u << 30) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P31 (0x1u << 31) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +/* -------- PIO_LSR : (PIO Offset: 0x00C4) Level Select Register -------- */ +#define PIO_LSR_P0 (0x1u << 0) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P1 (0x1u << 1) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P2 (0x1u << 2) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P3 (0x1u << 3) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P4 (0x1u << 4) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P5 (0x1u << 5) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P6 (0x1u << 6) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P7 (0x1u << 7) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P8 (0x1u << 8) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P9 (0x1u << 9) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P10 (0x1u << 10) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P11 (0x1u << 11) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P12 (0x1u << 12) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P13 (0x1u << 13) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P14 (0x1u << 14) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P15 (0x1u << 15) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P16 (0x1u << 16) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P17 (0x1u << 17) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P18 (0x1u << 18) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P19 (0x1u << 19) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P20 (0x1u << 20) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P21 (0x1u << 21) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P22 (0x1u << 22) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P23 (0x1u << 23) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P24 (0x1u << 24) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P25 (0x1u << 25) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P26 (0x1u << 26) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P27 (0x1u << 27) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P28 (0x1u << 28) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P29 (0x1u << 29) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P30 (0x1u << 30) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P31 (0x1u << 31) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +/* -------- PIO_ELSR : (PIO Offset: 0x00C8) Edge/Level Status Register -------- */ +#define PIO_ELSR_P0 (0x1u << 0) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P1 (0x1u << 1) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P2 (0x1u << 2) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P3 (0x1u << 3) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P4 (0x1u << 4) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P5 (0x1u << 5) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P6 (0x1u << 6) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P7 (0x1u << 7) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P8 (0x1u << 8) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P9 (0x1u << 9) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P10 (0x1u << 10) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P11 (0x1u << 11) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P12 (0x1u << 12) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P13 (0x1u << 13) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P14 (0x1u << 14) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P15 (0x1u << 15) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P16 (0x1u << 16) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P17 (0x1u << 17) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P18 (0x1u << 18) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P19 (0x1u << 19) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P20 (0x1u << 20) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P21 (0x1u << 21) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P22 (0x1u << 22) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P23 (0x1u << 23) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P24 (0x1u << 24) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P25 (0x1u << 25) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P26 (0x1u << 26) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P27 (0x1u << 27) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P28 (0x1u << 28) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P29 (0x1u << 29) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P30 (0x1u << 30) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P31 (0x1u << 31) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +/* -------- PIO_FELLSR : (PIO Offset: 0x00D0) Falling Edge/Low Level Select Register -------- */ +#define PIO_FELLSR_P0 (0x1u << 0) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P1 (0x1u << 1) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P2 (0x1u << 2) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P3 (0x1u << 3) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P4 (0x1u << 4) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P5 (0x1u << 5) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P6 (0x1u << 6) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P7 (0x1u << 7) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P8 (0x1u << 8) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P9 (0x1u << 9) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P10 (0x1u << 10) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P11 (0x1u << 11) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P12 (0x1u << 12) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P13 (0x1u << 13) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P14 (0x1u << 14) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P15 (0x1u << 15) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P16 (0x1u << 16) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P17 (0x1u << 17) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P18 (0x1u << 18) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P19 (0x1u << 19) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P20 (0x1u << 20) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P21 (0x1u << 21) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P22 (0x1u << 22) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P23 (0x1u << 23) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P24 (0x1u << 24) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P25 (0x1u << 25) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P26 (0x1u << 26) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P27 (0x1u << 27) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P28 (0x1u << 28) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P29 (0x1u << 29) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P30 (0x1u << 30) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P31 (0x1u << 31) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +/* -------- PIO_REHLSR : (PIO Offset: 0x00D4) Rising Edge/ High Level Select Register -------- */ +#define PIO_REHLSR_P0 (0x1u << 0) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P1 (0x1u << 1) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P2 (0x1u << 2) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P3 (0x1u << 3) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P4 (0x1u << 4) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P5 (0x1u << 5) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P6 (0x1u << 6) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P7 (0x1u << 7) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P8 (0x1u << 8) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P9 (0x1u << 9) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P10 (0x1u << 10) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P11 (0x1u << 11) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P12 (0x1u << 12) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P13 (0x1u << 13) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P14 (0x1u << 14) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P15 (0x1u << 15) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P16 (0x1u << 16) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P17 (0x1u << 17) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P18 (0x1u << 18) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P19 (0x1u << 19) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P20 (0x1u << 20) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P21 (0x1u << 21) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P22 (0x1u << 22) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P23 (0x1u << 23) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P24 (0x1u << 24) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P25 (0x1u << 25) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P26 (0x1u << 26) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P27 (0x1u << 27) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P28 (0x1u << 28) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P29 (0x1u << 29) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P30 (0x1u << 30) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P31 (0x1u << 31) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +/* -------- PIO_FRLHSR : (PIO Offset: 0x00D8) Fall/Rise - Low/High Status Register -------- */ +#define PIO_FRLHSR_P0 (0x1u << 0) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P1 (0x1u << 1) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P2 (0x1u << 2) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P3 (0x1u << 3) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P4 (0x1u << 4) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P5 (0x1u << 5) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P6 (0x1u << 6) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P7 (0x1u << 7) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P8 (0x1u << 8) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P9 (0x1u << 9) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P10 (0x1u << 10) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P11 (0x1u << 11) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P12 (0x1u << 12) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P13 (0x1u << 13) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P14 (0x1u << 14) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P15 (0x1u << 15) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P16 (0x1u << 16) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P17 (0x1u << 17) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P18 (0x1u << 18) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P19 (0x1u << 19) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P20 (0x1u << 20) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P21 (0x1u << 21) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P22 (0x1u << 22) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P23 (0x1u << 23) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P24 (0x1u << 24) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P25 (0x1u << 25) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P26 (0x1u << 26) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P27 (0x1u << 27) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P28 (0x1u << 28) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P29 (0x1u << 29) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P30 (0x1u << 30) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P31 (0x1u << 31) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +/* -------- PIO_LOCKSR : (PIO Offset: 0x00E0) Lock Status -------- */ +#define PIO_LOCKSR_P0 (0x1u << 0) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P1 (0x1u << 1) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P2 (0x1u << 2) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P3 (0x1u << 3) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P4 (0x1u << 4) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P5 (0x1u << 5) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P6 (0x1u << 6) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P7 (0x1u << 7) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P8 (0x1u << 8) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P9 (0x1u << 9) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P10 (0x1u << 10) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P11 (0x1u << 11) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P12 (0x1u << 12) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P13 (0x1u << 13) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P14 (0x1u << 14) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P15 (0x1u << 15) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P16 (0x1u << 16) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P17 (0x1u << 17) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P18 (0x1u << 18) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P19 (0x1u << 19) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P20 (0x1u << 20) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P21 (0x1u << 21) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P22 (0x1u << 22) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P23 (0x1u << 23) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P24 (0x1u << 24) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P25 (0x1u << 25) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P26 (0x1u << 26) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P27 (0x1u << 27) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P28 (0x1u << 28) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P29 (0x1u << 29) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P30 (0x1u << 30) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P31 (0x1u << 31) /**< \brief (PIO_LOCKSR) Lock Status. */ +/* -------- PIO_WPMR : (PIO Offset: 0x00E4) Write Protect Mode Register -------- */ +#define PIO_WPMR_WPEN (0x1u << 0) /**< \brief (PIO_WPMR) Write Protect Enable */ +#define PIO_WPMR_WPKEY_Pos 8 +#define PIO_WPMR_WPKEY_Msk (0xffffffu << PIO_WPMR_WPKEY_Pos) /**< \brief (PIO_WPMR) Write Protect KEY */ +#define PIO_WPMR_WPKEY(value) ((PIO_WPMR_WPKEY_Msk & ((value) << PIO_WPMR_WPKEY_Pos))) +/* -------- PIO_WPSR : (PIO Offset: 0x00E8) Write Protect Status Register -------- */ +#define PIO_WPSR_WPVS (0x1u << 0) /**< \brief (PIO_WPSR) Write Protect Violation Status */ +#define PIO_WPSR_WPVSRC_Pos 8 +#define PIO_WPSR_WPVSRC_Msk (0xffffu << PIO_WPSR_WPVSRC_Pos) /**< \brief (PIO_WPSR) Write Protect Violation Source */ +/* -------- PIO_SCHMITT : (PIO Offset: 0x0100) Schmitt Trigger Register -------- */ +#define PIO_SCHMITT_SCHMITT0 (0x1u << 0) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT1 (0x1u << 1) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT2 (0x1u << 2) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT3 (0x1u << 3) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT4 (0x1u << 4) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT5 (0x1u << 5) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT6 (0x1u << 6) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT7 (0x1u << 7) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT8 (0x1u << 8) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT9 (0x1u << 9) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT10 (0x1u << 10) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT11 (0x1u << 11) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT12 (0x1u << 12) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT13 (0x1u << 13) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT14 (0x1u << 14) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT15 (0x1u << 15) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT16 (0x1u << 16) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT17 (0x1u << 17) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT18 (0x1u << 18) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT19 (0x1u << 19) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT20 (0x1u << 20) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT21 (0x1u << 21) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT22 (0x1u << 22) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT23 (0x1u << 23) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT24 (0x1u << 24) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT25 (0x1u << 25) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT26 (0x1u << 26) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT27 (0x1u << 27) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT28 (0x1u << 28) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT29 (0x1u << 29) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT30 (0x1u << 30) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT31 (0x1u << 31) /**< \brief (PIO_SCHMITT) */ +/* -------- PIO_DELAYR : (PIO Offset: 0x0110) IO Delay Register -------- */ +#define PIO_DELAYR_Delay0_Pos 0 +#define PIO_DELAYR_Delay0_Msk (0xfu << PIO_DELAYR_Delay0_Pos) /**< \brief (PIO_DELAYR) */ +#define PIO_DELAYR_Delay0(value) ((PIO_DELAYR_Delay0_Msk & ((value) << PIO_DELAYR_Delay0_Pos))) +#define PIO_DELAYR_Delay1_Pos 4 +#define PIO_DELAYR_Delay1_Msk (0xfu << PIO_DELAYR_Delay1_Pos) /**< \brief (PIO_DELAYR) */ +#define PIO_DELAYR_Delay1(value) ((PIO_DELAYR_Delay1_Msk & ((value) << PIO_DELAYR_Delay1_Pos))) +#define PIO_DELAYR_Delay2_Pos 8 +#define PIO_DELAYR_Delay2_Msk (0xfu << PIO_DELAYR_Delay2_Pos) /**< \brief (PIO_DELAYR) */ +#define PIO_DELAYR_Delay2(value) ((PIO_DELAYR_Delay2_Msk & ((value) << PIO_DELAYR_Delay2_Pos))) +#define PIO_DELAYR_Delay3_Pos 12 +#define PIO_DELAYR_Delay3_Msk (0xfu << PIO_DELAYR_Delay3_Pos) /**< \brief (PIO_DELAYR) */ +#define PIO_DELAYR_Delay3(value) ((PIO_DELAYR_Delay3_Msk & ((value) << PIO_DELAYR_Delay3_Pos))) +#define PIO_DELAYR_Delay4_Pos 16 +#define PIO_DELAYR_Delay4_Msk (0xfu << PIO_DELAYR_Delay4_Pos) /**< \brief (PIO_DELAYR) */ +#define PIO_DELAYR_Delay4(value) ((PIO_DELAYR_Delay4_Msk & ((value) << PIO_DELAYR_Delay4_Pos))) +#define PIO_DELAYR_Delay5_Pos 20 +#define PIO_DELAYR_Delay5_Msk (0xfu << PIO_DELAYR_Delay5_Pos) /**< \brief (PIO_DELAYR) */ +#define PIO_DELAYR_Delay5(value) ((PIO_DELAYR_Delay5_Msk & ((value) << PIO_DELAYR_Delay5_Pos))) +#define PIO_DELAYR_Delay6_Pos 24 +#define PIO_DELAYR_Delay6_Msk (0xfu << PIO_DELAYR_Delay6_Pos) /**< \brief (PIO_DELAYR) */ +#define PIO_DELAYR_Delay6(value) ((PIO_DELAYR_Delay6_Msk & ((value) << PIO_DELAYR_Delay6_Pos))) +#define PIO_DELAYR_Delay7_Pos 28 +#define PIO_DELAYR_Delay7_Msk (0xfu << PIO_DELAYR_Delay7_Pos) /**< \brief (PIO_DELAYR) */ +#define PIO_DELAYR_Delay7(value) ((PIO_DELAYR_Delay7_Msk & ((value) << PIO_DELAYR_Delay7_Pos))) +/* -------- PIO_PCMR : (PIO Offset: 0x150) Parallel Capture Mode Register -------- */ +#define PIO_PCMR_PCEN (0x1u << 0) /**< \brief (PIO_PCMR) Parallel Capture Mode Enable */ +#define PIO_PCMR_DSIZE_Pos 4 +#define PIO_PCMR_DSIZE_Msk (0x3u << PIO_PCMR_DSIZE_Pos) /**< \brief (PIO_PCMR) Parallel Capture Mode Data Size */ +#define PIO_PCMR_DSIZE_BYTE (0x0u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR register is a BYTE (8-bit) */ +#define PIO_PCMR_DSIZE_HALFWORD (0x1u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR register is a HALF-WORD (16-bit) */ +#define PIO_PCMR_DSIZE_WORD (0x2u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR register is a WORD (32-bit) */ +#define PIO_PCMR_ALWYS (0x1u << 9) /**< \brief (PIO_PCMR) Parallel Capture Mode Always Sampling */ +#define PIO_PCMR_HALFS (0x1u << 10) /**< \brief (PIO_PCMR) Parallel Capture Mode Half Sampling */ +#define PIO_PCMR_FRSTS (0x1u << 11) /**< \brief (PIO_PCMR) Parallel Capture Mode First Sample */ +/* -------- PIO_PCIER : (PIO Offset: 0x154) Parallel Capture Interrupt Enable Register -------- */ +#define PIO_PCIER_DRDY (0x1u << 0) /**< \brief (PIO_PCIER) Parallel Capture Mode Data Ready Interrupt Enable */ +#define PIO_PCIER_OVRE (0x1u << 1) /**< \brief (PIO_PCIER) Parallel Capture Mode Overrun Error Interrupt Enable */ +#define PIO_PCIER_ENDRX (0x1u << 2) /**< \brief (PIO_PCIER) End of Reception Transfer Interrupt Enable */ +#define PIO_PCIER_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIER) Reception Buffer Full Interrupt Enable */ +/* -------- PIO_PCIDR : (PIO Offset: 0x158) Parallel Capture Interrupt Disable Register -------- */ +#define PIO_PCIDR_DRDY (0x1u << 0) /**< \brief (PIO_PCIDR) Parallel Capture Mode Data Ready Interrupt Disable */ +#define PIO_PCIDR_OVRE (0x1u << 1) /**< \brief (PIO_PCIDR) Parallel Capture Mode Overrun Error Interrupt Disable */ +#define PIO_PCIDR_ENDRX (0x1u << 2) /**< \brief (PIO_PCIDR) End of Reception Transfer Interrupt Disable */ +#define PIO_PCIDR_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIDR) Reception Buffer Full Interrupt Disable */ +/* -------- PIO_PCIMR : (PIO Offset: 0x15C) Parallel Capture Interrupt Mask Register -------- */ +#define PIO_PCIMR_DRDY (0x1u << 0) /**< \brief (PIO_PCIMR) Parallel Capture Mode Data Ready Interrupt Mask */ +#define PIO_PCIMR_OVRE (0x1u << 1) /**< \brief (PIO_PCIMR) Parallel Capture Mode Overrun Error Interrupt Mask */ +#define PIO_PCIMR_ENDRX (0x1u << 2) /**< \brief (PIO_PCIMR) End of Reception Transfer Interrupt Mask */ +#define PIO_PCIMR_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIMR) Reception Buffer Full Interrupt Mask */ +/* -------- PIO_PCISR : (PIO Offset: 0x160) Parallel Capture Interrupt Status Register -------- */ +#define PIO_PCISR_DRDY (0x1u << 0) /**< \brief (PIO_PCISR) Parallel Capture Mode Data Ready */ +#define PIO_PCISR_OVRE (0x1u << 1) /**< \brief (PIO_PCISR) Parallel Capture Mode Overrun Error. */ +#define PIO_PCISR_ENDRX (0x1u << 2) /**< \brief (PIO_PCISR) End of Reception Transfer. */ +#define PIO_PCISR_RXBUFF (0x1u << 3) /**< \brief (PIO_PCISR) Reception Buffer Full */ +/* -------- PIO_PCRHR : (PIO Offset: 0x164) Parallel Capture Reception Holding Register -------- */ +#define PIO_PCRHR_RDATA_Pos 0 +#define PIO_PCRHR_RDATA_Msk (0xffffffffu << PIO_PCRHR_RDATA_Pos) /**< \brief (PIO_PCRHR) Parallel Capture Mode Reception Data. */ +/* -------- PIO_RPR : (PIO Offset: 0x168) Receive Pointer Register -------- */ +#define PIO_RPR_RXPTR_Pos 0 +#define PIO_RPR_RXPTR_Msk (0xffffffffu << PIO_RPR_RXPTR_Pos) /**< \brief (PIO_RPR) Receive Pointer Register */ +#define PIO_RPR_RXPTR(value) ((PIO_RPR_RXPTR_Msk & ((value) << PIO_RPR_RXPTR_Pos))) +/* -------- PIO_RCR : (PIO Offset: 0x16C) Receive Counter Register -------- */ +#define PIO_RCR_RXCTR_Pos 0 +#define PIO_RCR_RXCTR_Msk (0xffffu << PIO_RCR_RXCTR_Pos) /**< \brief (PIO_RCR) Receive Counter Register */ +#define PIO_RCR_RXCTR(value) ((PIO_RCR_RXCTR_Msk & ((value) << PIO_RCR_RXCTR_Pos))) +/* -------- PIO_RNPR : (PIO Offset: 0x178) Receive Next Pointer Register -------- */ +#define PIO_RNPR_RXNPTR_Pos 0 +#define PIO_RNPR_RXNPTR_Msk (0xffffffffu << PIO_RNPR_RXNPTR_Pos) /**< \brief (PIO_RNPR) Receive Next Pointer */ +#define PIO_RNPR_RXNPTR(value) ((PIO_RNPR_RXNPTR_Msk & ((value) << PIO_RNPR_RXNPTR_Pos))) +/* -------- PIO_RNCR : (PIO Offset: 0x17C) Receive Next Counter Register -------- */ +#define PIO_RNCR_RXNCTR_Pos 0 +#define PIO_RNCR_RXNCTR_Msk (0xffffu << PIO_RNCR_RXNCTR_Pos) /**< \brief (PIO_RNCR) Receive Next Counter */ +#define PIO_RNCR_RXNCTR(value) ((PIO_RNCR_RXNCTR_Msk & ((value) << PIO_RNCR_RXNCTR_Pos))) +/* -------- PIO_PTCR : (PIO Offset: 0x188) Transfer Control Register -------- */ +#define PIO_PTCR_RXTEN (0x1u << 0) /**< \brief (PIO_PTCR) Receiver Transfer Enable */ +#define PIO_PTCR_RXTDIS (0x1u << 1) /**< \brief (PIO_PTCR) Receiver Transfer Disable */ +#define PIO_PTCR_TXTEN (0x1u << 8) /**< \brief (PIO_PTCR) Transmitter Transfer Enable */ +#define PIO_PTCR_TXTDIS (0x1u << 9) /**< \brief (PIO_PTCR) Transmitter Transfer Disable */ +/* -------- PIO_PTSR : (PIO Offset: 0x18C) Transfer Status Register -------- */ +#define PIO_PTSR_RXTEN (0x1u << 0) /**< \brief (PIO_PTSR) Receiver Transfer Enable */ +#define PIO_PTSR_TXTEN (0x1u << 8) /**< \brief (PIO_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM4E_PIO_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pmc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pmc.h new file mode 100644 index 000000000..10a2a10fa --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pmc.h @@ -0,0 +1,413 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_PMC_COMPONENT_ +#define _SAM4E_PMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Power Management Controller */ +/* ============================================================================= */ +/** \addtogroup SAM4E_PMC Power Management Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Pmc hardware registers */ +typedef struct { + WoReg PMC_SCER; /**< \brief (Pmc Offset: 0x0000) System Clock Enable Register */ + WoReg PMC_SCDR; /**< \brief (Pmc Offset: 0x0004) System Clock Disable Register */ + RoReg PMC_SCSR; /**< \brief (Pmc Offset: 0x0008) System Clock Status Register */ + RoReg Reserved1[1]; + WoReg PMC_PCER0; /**< \brief (Pmc Offset: 0x0010) Peripheral Clock Enable Register 0 */ + WoReg PMC_PCDR0; /**< \brief (Pmc Offset: 0x0014) Peripheral Clock Disable Register 0 */ + RoReg PMC_PCSR0; /**< \brief (Pmc Offset: 0x0018) Peripheral Clock Status Register 0 */ + RoReg Reserved2[1]; + RwReg CKGR_MOR; /**< \brief (Pmc Offset: 0x0020) Main Oscillator Register */ + RwReg CKGR_MCFR; /**< \brief (Pmc Offset: 0x0024) Main Clock Frequency Register */ + RwReg CKGR_PLLAR; /**< \brief (Pmc Offset: 0x0028) PLLA Register */ + RoReg Reserved3[1]; + RwReg PMC_MCKR; /**< \brief (Pmc Offset: 0x0030) Master Clock Register */ + RoReg Reserved4[1]; + RwReg PMC_USB; /**< \brief (Pmc Offset: 0x0038) USB Clock Register */ + RoReg Reserved5[1]; + RwReg PMC_PCK[3]; /**< \brief (Pmc Offset: 0x0040) Programmable Clock 0 Register */ + RoReg Reserved6[5]; + WoReg PMC_IER; /**< \brief (Pmc Offset: 0x0060) Interrupt Enable Register */ + WoReg PMC_IDR; /**< \brief (Pmc Offset: 0x0064) Interrupt Disable Register */ + RoReg PMC_SR; /**< \brief (Pmc Offset: 0x0068) Status Register */ + RoReg PMC_IMR; /**< \brief (Pmc Offset: 0x006C) Interrupt Mask Register */ + RwReg PMC_FSMR; /**< \brief (Pmc Offset: 0x0070) Fast Start-up Mode Register */ + RwReg PMC_FSPR; /**< \brief (Pmc Offset: 0x0074) Fast Start-up Polarity Register */ + WoReg PMC_FOCR; /**< \brief (Pmc Offset: 0x0078) Fault Output Clear Register */ + RoReg Reserved7[26]; + RwReg PMC_WPMR; /**< \brief (Pmc Offset: 0x00E4) Write Protect Mode Register */ + RoReg PMC_WPSR; /**< \brief (Pmc Offset: 0x00E8) Write Protect Status Register */ + RoReg Reserved8[5]; + WoReg PMC_PCER1; /**< \brief (Pmc Offset: 0x0100) Peripheral Clock Enable Register 1 */ + WoReg PMC_PCDR1; /**< \brief (Pmc Offset: 0x0104) Peripheral Clock Disable Register 1 */ + RoReg PMC_PCSR1; /**< \brief (Pmc Offset: 0x0108) Peripheral Clock Status Register 1 */ + RoReg Reserved9[1]; + RwReg PMC_OCR; /**< \brief (Pmc Offset: 0x0110) Oscillator Calibration Register */ +} Pmc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- PMC_SCER : (PMC Offset: 0x0000) System Clock Enable Register -------- */ +#define PMC_SCER_UDP (0x1u << 7) /**< \brief (PMC_SCER) USB Device Port Clock Enable */ +#define PMC_SCER_PCK0 (0x1u << 8) /**< \brief (PMC_SCER) Programmable Clock 0 Output Enable */ +#define PMC_SCER_PCK1 (0x1u << 9) /**< \brief (PMC_SCER) Programmable Clock 1 Output Enable */ +#define PMC_SCER_PCK2 (0x1u << 10) /**< \brief (PMC_SCER) Programmable Clock 2 Output Enable */ +/* -------- PMC_SCDR : (PMC Offset: 0x0004) System Clock Disable Register -------- */ +#define PMC_SCDR_UDP (0x1u << 7) /**< \brief (PMC_SCDR) USB Device Port Clock Disable */ +#define PMC_SCDR_PCK0 (0x1u << 8) /**< \brief (PMC_SCDR) Programmable Clock 0 Output Disable */ +#define PMC_SCDR_PCK1 (0x1u << 9) /**< \brief (PMC_SCDR) Programmable Clock 1 Output Disable */ +#define PMC_SCDR_PCK2 (0x1u << 10) /**< \brief (PMC_SCDR) Programmable Clock 2 Output Disable */ +/* -------- PMC_SCSR : (PMC Offset: 0x0008) System Clock Status Register -------- */ +#define PMC_SCSR_UDP (0x1u << 7) /**< \brief (PMC_SCSR) USB Device Port Clock Status */ +#define PMC_SCSR_PCK0 (0x1u << 8) /**< \brief (PMC_SCSR) Programmable Clock 0 Output Status */ +#define PMC_SCSR_PCK1 (0x1u << 9) /**< \brief (PMC_SCSR) Programmable Clock 1 Output Status */ +#define PMC_SCSR_PCK2 (0x1u << 10) /**< \brief (PMC_SCSR) Programmable Clock 2 Output Status */ +/* -------- PMC_PCER0 : (PMC Offset: 0x0010) Peripheral Clock Enable Register 0 -------- */ +#define PMC_PCER0_PID9 (0x1u << 9) /**< \brief (PMC_PCER0) Peripheral Clock 9 Enable */ +#define PMC_PCER0_PID10 (0x1u << 10) /**< \brief (PMC_PCER0) Peripheral Clock 10 Enable */ +#define PMC_PCER0_PID11 (0x1u << 11) /**< \brief (PMC_PCER0) Peripheral Clock 11 Enable */ +#define PMC_PCER0_PID12 (0x1u << 12) /**< \brief (PMC_PCER0) Peripheral Clock 12 Enable */ +#define PMC_PCER0_PID13 (0x1u << 13) /**< \brief (PMC_PCER0) Peripheral Clock 13 Enable */ +#define PMC_PCER0_PID14 (0x1u << 14) /**< \brief (PMC_PCER0) Peripheral Clock 14 Enable */ +#define PMC_PCER0_PID15 (0x1u << 15) /**< \brief (PMC_PCER0) Peripheral Clock 15 Enable */ +#define PMC_PCER0_PID16 (0x1u << 16) /**< \brief (PMC_PCER0) Peripheral Clock 16 Enable */ +#define PMC_PCER0_PID17 (0x1u << 17) /**< \brief (PMC_PCER0) Peripheral Clock 17 Enable */ +#define PMC_PCER0_PID18 (0x1u << 18) /**< \brief (PMC_PCER0) Peripheral Clock 18 Enable */ +#define PMC_PCER0_PID19 (0x1u << 19) /**< \brief (PMC_PCER0) Peripheral Clock 19 Enable */ +#define PMC_PCER0_PID20 (0x1u << 20) /**< \brief (PMC_PCER0) Peripheral Clock 20 Enable */ +#define PMC_PCER0_PID21 (0x1u << 21) /**< \brief (PMC_PCER0) Peripheral Clock 21 Enable */ +#define PMC_PCER0_PID22 (0x1u << 22) /**< \brief (PMC_PCER0) Peripheral Clock 22 Enable */ +#define PMC_PCER0_PID23 (0x1u << 23) /**< \brief (PMC_PCER0) Peripheral Clock 23 Enable */ +#define PMC_PCER0_PID24 (0x1u << 24) /**< \brief (PMC_PCER0) Peripheral Clock 24 Enable */ +#define PMC_PCER0_PID25 (0x1u << 25) /**< \brief (PMC_PCER0) Peripheral Clock 25 Enable */ +#define PMC_PCER0_PID26 (0x1u << 26) /**< \brief (PMC_PCER0) Peripheral Clock 26 Enable */ +#define PMC_PCER0_PID27 (0x1u << 27) /**< \brief (PMC_PCER0) Peripheral Clock 27 Enable */ +#define PMC_PCER0_PID28 (0x1u << 28) /**< \brief (PMC_PCER0) Peripheral Clock 28 Enable */ +#define PMC_PCER0_PID29 (0x1u << 29) /**< \brief (PMC_PCER0) Peripheral Clock 29 Enable */ +#define PMC_PCER0_PID30 (0x1u << 30) /**< \brief (PMC_PCER0) Peripheral Clock 30 Enable */ +#define PMC_PCER0_PID31 (0x1u << 31) /**< \brief (PMC_PCER0) Peripheral Clock 31 Enable */ +/* -------- PMC_PCDR0 : (PMC Offset: 0x0014) Peripheral Clock Disable Register 0 -------- */ +#define PMC_PCDR0_PID9 (0x1u << 9) /**< \brief (PMC_PCDR0) Peripheral Clock 9 Disable */ +#define PMC_PCDR0_PID10 (0x1u << 10) /**< \brief (PMC_PCDR0) Peripheral Clock 10 Disable */ +#define PMC_PCDR0_PID11 (0x1u << 11) /**< \brief (PMC_PCDR0) Peripheral Clock 11 Disable */ +#define PMC_PCDR0_PID12 (0x1u << 12) /**< \brief (PMC_PCDR0) Peripheral Clock 12 Disable */ +#define PMC_PCDR0_PID13 (0x1u << 13) /**< \brief (PMC_PCDR0) Peripheral Clock 13 Disable */ +#define PMC_PCDR0_PID14 (0x1u << 14) /**< \brief (PMC_PCDR0) Peripheral Clock 14 Disable */ +#define PMC_PCDR0_PID15 (0x1u << 15) /**< \brief (PMC_PCDR0) Peripheral Clock 15 Disable */ +#define PMC_PCDR0_PID16 (0x1u << 16) /**< \brief (PMC_PCDR0) Peripheral Clock 16 Disable */ +#define PMC_PCDR0_PID17 (0x1u << 17) /**< \brief (PMC_PCDR0) Peripheral Clock 17 Disable */ +#define PMC_PCDR0_PID18 (0x1u << 18) /**< \brief (PMC_PCDR0) Peripheral Clock 18 Disable */ +#define PMC_PCDR0_PID19 (0x1u << 19) /**< \brief (PMC_PCDR0) Peripheral Clock 19 Disable */ +#define PMC_PCDR0_PID20 (0x1u << 20) /**< \brief (PMC_PCDR0) Peripheral Clock 20 Disable */ +#define PMC_PCDR0_PID21 (0x1u << 21) /**< \brief (PMC_PCDR0) Peripheral Clock 21 Disable */ +#define PMC_PCDR0_PID22 (0x1u << 22) /**< \brief (PMC_PCDR0) Peripheral Clock 22 Disable */ +#define PMC_PCDR0_PID23 (0x1u << 23) /**< \brief (PMC_PCDR0) Peripheral Clock 23 Disable */ +#define PMC_PCDR0_PID24 (0x1u << 24) /**< \brief (PMC_PCDR0) Peripheral Clock 24 Disable */ +#define PMC_PCDR0_PID25 (0x1u << 25) /**< \brief (PMC_PCDR0) Peripheral Clock 25 Disable */ +#define PMC_PCDR0_PID26 (0x1u << 26) /**< \brief (PMC_PCDR0) Peripheral Clock 26 Disable */ +#define PMC_PCDR0_PID27 (0x1u << 27) /**< \brief (PMC_PCDR0) Peripheral Clock 27 Disable */ +#define PMC_PCDR0_PID28 (0x1u << 28) /**< \brief (PMC_PCDR0) Peripheral Clock 28 Disable */ +#define PMC_PCDR0_PID29 (0x1u << 29) /**< \brief (PMC_PCDR0) Peripheral Clock 29 Disable */ +#define PMC_PCDR0_PID30 (0x1u << 30) /**< \brief (PMC_PCDR0) Peripheral Clock 30 Disable */ +#define PMC_PCDR0_PID31 (0x1u << 31) /**< \brief (PMC_PCDR0) Peripheral Clock 31 Disable */ +/* -------- PMC_PCSR0 : (PMC Offset: 0x0018) Peripheral Clock Status Register 0 -------- */ +#define PMC_PCSR0_PID9 (0x1u << 9) /**< \brief (PMC_PCSR0) Peripheral Clock 9 Status */ +#define PMC_PCSR0_PID10 (0x1u << 10) /**< \brief (PMC_PCSR0) Peripheral Clock 10 Status */ +#define PMC_PCSR0_PID11 (0x1u << 11) /**< \brief (PMC_PCSR0) Peripheral Clock 11 Status */ +#define PMC_PCSR0_PID12 (0x1u << 12) /**< \brief (PMC_PCSR0) Peripheral Clock 12 Status */ +#define PMC_PCSR0_PID13 (0x1u << 13) /**< \brief (PMC_PCSR0) Peripheral Clock 13 Status */ +#define PMC_PCSR0_PID14 (0x1u << 14) /**< \brief (PMC_PCSR0) Peripheral Clock 14 Status */ +#define PMC_PCSR0_PID15 (0x1u << 15) /**< \brief (PMC_PCSR0) Peripheral Clock 15 Status */ +#define PMC_PCSR0_PID16 (0x1u << 16) /**< \brief (PMC_PCSR0) Peripheral Clock 16 Status */ +#define PMC_PCSR0_PID17 (0x1u << 17) /**< \brief (PMC_PCSR0) Peripheral Clock 17 Status */ +#define PMC_PCSR0_PID18 (0x1u << 18) /**< \brief (PMC_PCSR0) Peripheral Clock 18 Status */ +#define PMC_PCSR0_PID19 (0x1u << 19) /**< \brief (PMC_PCSR0) Peripheral Clock 19 Status */ +#define PMC_PCSR0_PID20 (0x1u << 20) /**< \brief (PMC_PCSR0) Peripheral Clock 20 Status */ +#define PMC_PCSR0_PID21 (0x1u << 21) /**< \brief (PMC_PCSR0) Peripheral Clock 21 Status */ +#define PMC_PCSR0_PID22 (0x1u << 22) /**< \brief (PMC_PCSR0) Peripheral Clock 22 Status */ +#define PMC_PCSR0_PID23 (0x1u << 23) /**< \brief (PMC_PCSR0) Peripheral Clock 23 Status */ +#define PMC_PCSR0_PID24 (0x1u << 24) /**< \brief (PMC_PCSR0) Peripheral Clock 24 Status */ +#define PMC_PCSR0_PID25 (0x1u << 25) /**< \brief (PMC_PCSR0) Peripheral Clock 25 Status */ +#define PMC_PCSR0_PID26 (0x1u << 26) /**< \brief (PMC_PCSR0) Peripheral Clock 26 Status */ +#define PMC_PCSR0_PID27 (0x1u << 27) /**< \brief (PMC_PCSR0) Peripheral Clock 27 Status */ +#define PMC_PCSR0_PID28 (0x1u << 28) /**< \brief (PMC_PCSR0) Peripheral Clock 28 Status */ +#define PMC_PCSR0_PID29 (0x1u << 29) /**< \brief (PMC_PCSR0) Peripheral Clock 29 Status */ +#define PMC_PCSR0_PID30 (0x1u << 30) /**< \brief (PMC_PCSR0) Peripheral Clock 30 Status */ +#define PMC_PCSR0_PID31 (0x1u << 31) /**< \brief (PMC_PCSR0) Peripheral Clock 31 Status */ +/* -------- CKGR_MOR : (PMC Offset: 0x0020) Main Oscillator Register -------- */ +#define CKGR_MOR_MOSCXTEN (0x1u << 0) /**< \brief (CKGR_MOR) Main Crystal Oscillator Enable */ +#define CKGR_MOR_MOSCXTBY (0x1u << 1) /**< \brief (CKGR_MOR) Main Crystal Oscillator Bypass */ +#define CKGR_MOR_WAITMODE (0x1u << 2) /**< \brief (CKGR_MOR) Wait Mode Command */ +#define CKGR_MOR_MOSCRCEN (0x1u << 3) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Enable */ +#define CKGR_MOR_MOSCRCF_Pos 4 +#define CKGR_MOR_MOSCRCF_Msk (0x7u << CKGR_MOR_MOSCRCF_Pos) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Frequency Selection */ +#define CKGR_MOR_MOSCRCF_4_MHz (0x0u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 4 MHz (default) */ +#define CKGR_MOR_MOSCRCF_8_MHz (0x1u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 8 MHz */ +#define CKGR_MOR_MOSCRCF_12_MHz (0x2u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 12 MHz */ +#define CKGR_MOR_MOSCXTST_Pos 8 +#define CKGR_MOR_MOSCXTST_Msk (0xffu << CKGR_MOR_MOSCXTST_Pos) /**< \brief (CKGR_MOR) Main Crystal Oscillator Start-up Time */ +#define CKGR_MOR_MOSCXTST(value) ((CKGR_MOR_MOSCXTST_Msk & ((value) << CKGR_MOR_MOSCXTST_Pos))) +#define CKGR_MOR_KEY_Pos 16 +#define CKGR_MOR_KEY_Msk (0xffu << CKGR_MOR_KEY_Pos) /**< \brief (CKGR_MOR) Password */ +#define CKGR_MOR_KEY(value) ((CKGR_MOR_KEY_Msk & ((value) << CKGR_MOR_KEY_Pos))) +#define CKGR_MOR_MOSCSEL (0x1u << 24) /**< \brief (CKGR_MOR) Main Oscillator Selection */ +#define CKGR_MOR_CFDEN (0x1u << 25) /**< \brief (CKGR_MOR) Clock Failure Detector Enable */ +/* -------- CKGR_MCFR : (PMC Offset: 0x0024) Main Clock Frequency Register -------- */ +#define CKGR_MCFR_MAINF_Pos 0 +#define CKGR_MCFR_MAINF_Msk (0xffffu << CKGR_MCFR_MAINF_Pos) /**< \brief (CKGR_MCFR) Main Clock Frequency */ +#define CKGR_MCFR_MAINF(value) ((CKGR_MCFR_MAINF_Msk & ((value) << CKGR_MCFR_MAINF_Pos))) +#define CKGR_MCFR_MAINFRDY (0x1u << 16) /**< \brief (CKGR_MCFR) Main Clock Ready */ +#define CKGR_MCFR_RCMEAS (0x1u << 20) /**< \brief (CKGR_MCFR) RC Oscillator Frequency Measure (write-only) */ +/* -------- CKGR_PLLAR : (PMC Offset: 0x0028) PLLA Register -------- */ +#define CKGR_PLLAR_DIVA_Pos 0 +#define CKGR_PLLAR_DIVA_Msk (0xffu << CKGR_PLLAR_DIVA_Pos) /**< \brief (CKGR_PLLAR) Divider */ +#define CKGR_PLLAR_DIVA(value) ((CKGR_PLLAR_DIVA_Msk & ((value) << CKGR_PLLAR_DIVA_Pos))) +#define CKGR_PLLAR_PLLACOUNT_Pos 8 +#define CKGR_PLLAR_PLLACOUNT_Msk (0x3fu << CKGR_PLLAR_PLLACOUNT_Pos) /**< \brief (CKGR_PLLAR) PLLA Counter */ +#define CKGR_PLLAR_PLLACOUNT(value) ((CKGR_PLLAR_PLLACOUNT_Msk & ((value) << CKGR_PLLAR_PLLACOUNT_Pos))) +#define CKGR_PLLAR_MULA_Pos 16 +#define CKGR_PLLAR_MULA_Msk (0x7ffu << CKGR_PLLAR_MULA_Pos) /**< \brief (CKGR_PLLAR) PLLA Multiplier */ +#define CKGR_PLLAR_MULA(value) ((CKGR_PLLAR_MULA_Msk & ((value) << CKGR_PLLAR_MULA_Pos))) +#define CKGR_PLLAR_ONE (0x1u << 29) /**< \brief (CKGR_PLLAR) Must Be Set to 1 */ +/* -------- PMC_MCKR : (PMC Offset: 0x0030) Master Clock Register -------- */ +#define PMC_MCKR_CSS_Pos 0 +#define PMC_MCKR_CSS_Msk (0x3u << PMC_MCKR_CSS_Pos) /**< \brief (PMC_MCKR) Master Clock Source Selection */ +#define PMC_MCKR_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_MCKR) Slow Clock is selected */ +#define PMC_MCKR_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_MCKR) Main Clock is selected */ +#define PMC_MCKR_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_MCKR) PLLA Clock is selected */ +#define PMC_MCKR_PRES_Pos 4 +#define PMC_MCKR_PRES_Msk (0x7u << PMC_MCKR_PRES_Pos) /**< \brief (PMC_MCKR) Processor Clock Prescaler */ +#define PMC_MCKR_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_MCKR) Selected clock */ +#define PMC_MCKR_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 2 */ +#define PMC_MCKR_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 4 */ +#define PMC_MCKR_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 8 */ +#define PMC_MCKR_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 16 */ +#define PMC_MCKR_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 32 */ +#define PMC_MCKR_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 64 */ +#define PMC_MCKR_PRES_CLK_3 (0x7u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 3 */ +#define PMC_MCKR_PLLADIV2 (0x1u << 12) /**< \brief (PMC_MCKR) PLLA Divisor by 2 */ +/* -------- PMC_USB : (PMC Offset: 0x0038) USB Clock Register -------- */ +#define PMC_USB_USBDIV_Pos 8 +#define PMC_USB_USBDIV_Msk (0xfu << PMC_USB_USBDIV_Pos) /**< \brief (PMC_USB) Divider for USB Clock. */ +#define PMC_USB_USBDIV(value) ((PMC_USB_USBDIV_Msk & ((value) << PMC_USB_USBDIV_Pos))) +/* -------- PMC_PCK[3] : (PMC Offset: 0x0040) Programmable Clock 0 Register -------- */ +#define PMC_PCK_CSS_Pos 0 +#define PMC_PCK_CSS_Msk (0x7u << PMC_PCK_CSS_Pos) /**< \brief (PMC_PCK[3]) Master Clock Source Selection */ +#define PMC_PCK_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_PCK[3]) Slow Clock is selected */ +#define PMC_PCK_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_PCK[3]) Main Clock is selected */ +#define PMC_PCK_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_PCK[3]) PLLA Clock is selected */ +#define PMC_PCK_CSS_MCK (0x4u << 0) /**< \brief (PMC_PCK[3]) Master Clock is selected */ +#define PMC_PCK_PRES_Pos 4 +#define PMC_PCK_PRES_Msk (0x7u << PMC_PCK_PRES_Pos) /**< \brief (PMC_PCK[3]) Programmable Clock Prescaler */ +#define PMC_PCK_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_PCK[3]) Selected clock */ +#define PMC_PCK_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 2 */ +#define PMC_PCK_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 4 */ +#define PMC_PCK_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 8 */ +#define PMC_PCK_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 16 */ +#define PMC_PCK_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 32 */ +#define PMC_PCK_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 64 */ +/* -------- PMC_IER : (PMC Offset: 0x0060) Interrupt Enable Register -------- */ +#define PMC_IER_MOSCXTS (0x1u << 0) /**< \brief (PMC_IER) Main Crystal Oscillator Status Interrupt Enable */ +#define PMC_IER_LOCKA (0x1u << 1) /**< \brief (PMC_IER) PLLA Lock Interrupt Enable */ +#define PMC_IER_MCKRDY (0x1u << 3) /**< \brief (PMC_IER) Master Clock Ready Interrupt Enable */ +#define PMC_IER_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IER) Programmable Clock Ready 0 Interrupt Enable */ +#define PMC_IER_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IER) Programmable Clock Ready 1 Interrupt Enable */ +#define PMC_IER_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IER) Programmable Clock Ready 2 Interrupt Enable */ +#define PMC_IER_MOSCSELS (0x1u << 16) /**< \brief (PMC_IER) Main Oscillator Selection Status Interrupt Enable */ +#define PMC_IER_MOSCRCS (0x1u << 17) /**< \brief (PMC_IER) Main On-Chip RC Status Interrupt Enable */ +#define PMC_IER_CFDEV (0x1u << 18) /**< \brief (PMC_IER) Clock Failure Detector Event Interrupt Enable */ +/* -------- PMC_IDR : (PMC Offset: 0x0064) Interrupt Disable Register -------- */ +#define PMC_IDR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IDR) Main Crystal Oscillator Status Interrupt Disable */ +#define PMC_IDR_LOCKA (0x1u << 1) /**< \brief (PMC_IDR) PLLA Lock Interrupt Disable */ +#define PMC_IDR_MCKRDY (0x1u << 3) /**< \brief (PMC_IDR) Master Clock Ready Interrupt Disable */ +#define PMC_IDR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IDR) Programmable Clock Ready 0 Interrupt Disable */ +#define PMC_IDR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IDR) Programmable Clock Ready 1 Interrupt Disable */ +#define PMC_IDR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IDR) Programmable Clock Ready 2 Interrupt Disable */ +#define PMC_IDR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IDR) Main Oscillator Selection Status Interrupt Disable */ +#define PMC_IDR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IDR) Main On-Chip RC Status Interrupt Disable */ +#define PMC_IDR_CFDEV (0x1u << 18) /**< \brief (PMC_IDR) Clock Failure Detector Event Interrupt Disable */ +/* -------- PMC_SR : (PMC Offset: 0x0068) Status Register -------- */ +#define PMC_SR_MOSCXTS (0x1u << 0) /**< \brief (PMC_SR) Main XTAL Oscillator Status */ +#define PMC_SR_LOCKA (0x1u << 1) /**< \brief (PMC_SR) PLLA Lock Status */ +#define PMC_SR_MCKRDY (0x1u << 3) /**< \brief (PMC_SR) Master Clock Status */ +#define PMC_SR_OSCSELS (0x1u << 7) /**< \brief (PMC_SR) Slow Clock Oscillator Selection */ +#define PMC_SR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_MOSCSELS (0x1u << 16) /**< \brief (PMC_SR) Main Oscillator Selection Status */ +#define PMC_SR_MOSCRCS (0x1u << 17) /**< \brief (PMC_SR) Main On-Chip RC Oscillator Status */ +#define PMC_SR_CFDEV (0x1u << 18) /**< \brief (PMC_SR) Clock Failure Detector Event */ +#define PMC_SR_CFDS (0x1u << 19) /**< \brief (PMC_SR) Clock Failure Detector Status */ +#define PMC_SR_FOS (0x1u << 20) /**< \brief (PMC_SR) Clock Failure Detector Fault Output Status */ +/* -------- PMC_IMR : (PMC Offset: 0x006C) Interrupt Mask Register -------- */ +#define PMC_IMR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IMR) Main Crystal Oscillator Status Interrupt Mask */ +#define PMC_IMR_LOCKA (0x1u << 1) /**< \brief (PMC_IMR) PLLA Lock Interrupt Mask */ +#define PMC_IMR_MCKRDY (0x1u << 3) /**< \brief (PMC_IMR) Master Clock Ready Interrupt Mask */ +#define PMC_IMR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IMR) Programmable Clock Ready 0 Interrupt Mask */ +#define PMC_IMR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IMR) Programmable Clock Ready 1 Interrupt Mask */ +#define PMC_IMR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IMR) Programmable Clock Ready 2 Interrupt Mask */ +#define PMC_IMR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IMR) Main Oscillator Selection Status Interrupt Mask */ +#define PMC_IMR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IMR) Main On-Chip RC Status Interrupt Mask */ +#define PMC_IMR_CFDEV (0x1u << 18) /**< \brief (PMC_IMR) Clock Failure Detector Event Interrupt Mask */ +/* -------- PMC_FSMR : (PMC Offset: 0x0070) Fast Start-up Mode Register -------- */ +#define PMC_FSMR_FSTT0 (0x1u << 0) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 0 */ +#define PMC_FSMR_FSTT1 (0x1u << 1) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 1 */ +#define PMC_FSMR_FSTT2 (0x1u << 2) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 2 */ +#define PMC_FSMR_FSTT3 (0x1u << 3) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 3 */ +#define PMC_FSMR_FSTT4 (0x1u << 4) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 4 */ +#define PMC_FSMR_FSTT5 (0x1u << 5) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 5 */ +#define PMC_FSMR_FSTT6 (0x1u << 6) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 6 */ +#define PMC_FSMR_FSTT7 (0x1u << 7) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 7 */ +#define PMC_FSMR_FSTT8 (0x1u << 8) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 8 */ +#define PMC_FSMR_FSTT9 (0x1u << 9) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 9 */ +#define PMC_FSMR_FSTT10 (0x1u << 10) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 10 */ +#define PMC_FSMR_FSTT11 (0x1u << 11) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 11 */ +#define PMC_FSMR_FSTT12 (0x1u << 12) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 12 */ +#define PMC_FSMR_FSTT13 (0x1u << 13) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 13 */ +#define PMC_FSMR_FSTT14 (0x1u << 14) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 14 */ +#define PMC_FSMR_FSTT15 (0x1u << 15) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 15 */ +#define PMC_FSMR_RTTAL (0x1u << 16) /**< \brief (PMC_FSMR) RTT Alarm Enable */ +#define PMC_FSMR_RTCAL (0x1u << 17) /**< \brief (PMC_FSMR) RTC Alarm Enable */ +#define PMC_FSMR_USBAL (0x1u << 18) /**< \brief (PMC_FSMR) USB Alarm Enable */ +#define PMC_FSMR_FLPM_Pos 21 +#define PMC_FSMR_FLPM_Msk (0x3u << PMC_FSMR_FLPM_Pos) /**< \brief (PMC_FSMR) Flash Low Power Mode */ +#define PMC_FSMR_FLPM_FLASH_STANDBY (0x0u << 21) /**< \brief (PMC_FSMR) Flash is in Standby Mode when system enters Wait Mode */ +#define PMC_FSMR_FLPM_FLASH_DEEP_POWERDOWN (0x1u << 21) /**< \brief (PMC_FSMR) Flash is in deep power down mode when system enters Wait Mode */ +#define PMC_FSMR_FLPM_FLASH_IDLE (0x2u << 21) /**< \brief (PMC_FSMR) idle mode */ +/* -------- PMC_FSPR : (PMC Offset: 0x0074) Fast Start-up Polarity Register -------- */ +#define PMC_FSPR_FSTP0 (0x1u << 0) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP1 (0x1u << 1) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP2 (0x1u << 2) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP3 (0x1u << 3) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP4 (0x1u << 4) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP5 (0x1u << 5) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP6 (0x1u << 6) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP7 (0x1u << 7) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP8 (0x1u << 8) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP9 (0x1u << 9) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP10 (0x1u << 10) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP11 (0x1u << 11) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP12 (0x1u << 12) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP13 (0x1u << 13) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP14 (0x1u << 14) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +#define PMC_FSPR_FSTP15 (0x1u << 15) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ +/* -------- PMC_FOCR : (PMC Offset: 0x0078) Fault Output Clear Register -------- */ +#define PMC_FOCR_FOCLR (0x1u << 0) /**< \brief (PMC_FOCR) Fault Output Clear */ +/* -------- PMC_WPMR : (PMC Offset: 0x00E4) Write Protect Mode Register -------- */ +#define PMC_WPMR_WPEN (0x1u << 0) /**< \brief (PMC_WPMR) Write Protect Enable */ +#define PMC_WPMR_WPKEY_Pos 8 +#define PMC_WPMR_WPKEY_Msk (0xffffffu << PMC_WPMR_WPKEY_Pos) /**< \brief (PMC_WPMR) Write Protect KEY */ +#define PMC_WPMR_WPKEY(value) ((PMC_WPMR_WPKEY_Msk & ((value) << PMC_WPMR_WPKEY_Pos))) +/* -------- PMC_WPSR : (PMC Offset: 0x00E8) Write Protect Status Register -------- */ +#define PMC_WPSR_WPVS (0x1u << 0) /**< \brief (PMC_WPSR) Write Protect Violation Status */ +#define PMC_WPSR_WPVSRC_Pos 8 +#define PMC_WPSR_WPVSRC_Msk (0xffffu << PMC_WPSR_WPVSRC_Pos) /**< \brief (PMC_WPSR) Write Protect Violation Source */ +/* -------- PMC_PCER1 : (PMC Offset: 0x0100) Peripheral Clock Enable Register 1 -------- */ +#define PMC_PCER1_PID32 (0x1u << 0) /**< \brief (PMC_PCER1) Peripheral Clock 32 Enable */ +#define PMC_PCER1_PID33 (0x1u << 1) /**< \brief (PMC_PCER1) Peripheral Clock 33 Enable */ +#define PMC_PCER1_PID34 (0x1u << 2) /**< \brief (PMC_PCER1) Peripheral Clock 34 Enable */ +#define PMC_PCER1_PID35 (0x1u << 3) /**< \brief (PMC_PCER1) Peripheral Clock 35 Enable */ +#define PMC_PCER1_PID36 (0x1u << 4) /**< \brief (PMC_PCER1) Peripheral Clock 36 Enable */ +#define PMC_PCER1_PID37 (0x1u << 5) /**< \brief (PMC_PCER1) Peripheral Clock 37 Enable */ +#define PMC_PCER1_PID38 (0x1u << 6) /**< \brief (PMC_PCER1) Peripheral Clock 38 Enable */ +#define PMC_PCER1_PID39 (0x1u << 7) /**< \brief (PMC_PCER1) Peripheral Clock 39 Enable */ +#define PMC_PCER1_PID40 (0x1u << 8) /**< \brief (PMC_PCER1) Peripheral Clock 40 Enable */ +#define PMC_PCER1_PID41 (0x1u << 9) /**< \brief (PMC_PCER1) Peripheral Clock 41 Enable */ +#define PMC_PCER1_PID42 (0x1u << 10) /**< \brief (PMC_PCER1) Peripheral Clock 42 Enable */ +#define PMC_PCER1_PID43 (0x1u << 11) /**< \brief (PMC_PCER1) Peripheral Clock 43 Enable */ +#define PMC_PCER1_PID44 (0x1u << 12) /**< \brief (PMC_PCER1) Peripheral Clock 44 Enable */ +#define PMC_PCER1_PID45 (0x1u << 13) /**< \brief (PMC_PCER1) Peripheral Clock 45 Enable */ +#define PMC_PCER1_PID46 (0x1u << 14) /**< \brief (PMC_PCER1) Peripheral Clock 46 Enable */ +#define PMC_PCER1_PID47 (0x1u << 15) /**< \brief (PMC_PCER1) Peripheral Clock 47 Enable */ +/* -------- PMC_PCDR1 : (PMC Offset: 0x0104) Peripheral Clock Disable Register 1 -------- */ +#define PMC_PCDR1_PID32 (0x1u << 0) /**< \brief (PMC_PCDR1) Peripheral Clock 32 Disable */ +#define PMC_PCDR1_PID33 (0x1u << 1) /**< \brief (PMC_PCDR1) Peripheral Clock 33 Disable */ +#define PMC_PCDR1_PID34 (0x1u << 2) /**< \brief (PMC_PCDR1) Peripheral Clock 34 Disable */ +#define PMC_PCDR1_PID35 (0x1u << 3) /**< \brief (PMC_PCDR1) Peripheral Clock 35 Disable */ +#define PMC_PCDR1_PID36 (0x1u << 4) /**< \brief (PMC_PCDR1) Peripheral Clock 36 Disable */ +#define PMC_PCDR1_PID37 (0x1u << 5) /**< \brief (PMC_PCDR1) Peripheral Clock 37 Disable */ +#define PMC_PCDR1_PID38 (0x1u << 6) /**< \brief (PMC_PCDR1) Peripheral Clock 38 Disable */ +#define PMC_PCDR1_PID39 (0x1u << 7) /**< \brief (PMC_PCDR1) Peripheral Clock 39 Disable */ +#define PMC_PCDR1_PID40 (0x1u << 8) /**< \brief (PMC_PCDR1) Peripheral Clock 40 Disable */ +#define PMC_PCDR1_PID41 (0x1u << 9) /**< \brief (PMC_PCDR1) Peripheral Clock 41 Disable */ +#define PMC_PCDR1_PID42 (0x1u << 10) /**< \brief (PMC_PCDR1) Peripheral Clock 42 Disable */ +#define PMC_PCDR1_PID43 (0x1u << 11) /**< \brief (PMC_PCDR1) Peripheral Clock 43 Disable */ +#define PMC_PCDR1_PID44 (0x1u << 12) /**< \brief (PMC_PCDR1) Peripheral Clock 44 Disable */ +#define PMC_PCDR1_PID45 (0x1u << 13) /**< \brief (PMC_PCDR1) Peripheral Clock 45 Disable */ +#define PMC_PCDR1_PID46 (0x1u << 14) /**< \brief (PMC_PCDR1) Peripheral Clock 46 Disable */ +#define PMC_PCDR1_PID47 (0x1u << 15) /**< \brief (PMC_PCDR1) Peripheral Clock 47 Disable */ +/* -------- PMC_PCSR1 : (PMC Offset: 0x0108) Peripheral Clock Status Register 1 -------- */ +#define PMC_PCSR1_PID32 (0x1u << 0) /**< \brief (PMC_PCSR1) Peripheral Clock 32 Status */ +#define PMC_PCSR1_PID33 (0x1u << 1) /**< \brief (PMC_PCSR1) Peripheral Clock 33 Status */ +#define PMC_PCSR1_PID34 (0x1u << 2) /**< \brief (PMC_PCSR1) Peripheral Clock 34 Status */ +#define PMC_PCSR1_PID35 (0x1u << 3) /**< \brief (PMC_PCSR1) Peripheral Clock 35 Status */ +#define PMC_PCSR1_PID36 (0x1u << 4) /**< \brief (PMC_PCSR1) Peripheral Clock 36 Status */ +#define PMC_PCSR1_PID37 (0x1u << 5) /**< \brief (PMC_PCSR1) Peripheral Clock 37 Status */ +#define PMC_PCSR1_PID38 (0x1u << 6) /**< \brief (PMC_PCSR1) Peripheral Clock 38 Status */ +#define PMC_PCSR1_PID39 (0x1u << 7) /**< \brief (PMC_PCSR1) Peripheral Clock 39 Status */ +#define PMC_PCSR1_PID40 (0x1u << 8) /**< \brief (PMC_PCSR1) Peripheral Clock 40 Status */ +#define PMC_PCSR1_PID41 (0x1u << 9) /**< \brief (PMC_PCSR1) Peripheral Clock 41 Status */ +#define PMC_PCSR1_PID42 (0x1u << 10) /**< \brief (PMC_PCSR1) Peripheral Clock 42 Status */ +#define PMC_PCSR1_PID43 (0x1u << 11) /**< \brief (PMC_PCSR1) Peripheral Clock 43 Status */ +#define PMC_PCSR1_PID44 (0x1u << 12) /**< \brief (PMC_PCSR1) Peripheral Clock 44 Status */ +#define PMC_PCSR1_PID45 (0x1u << 13) /**< \brief (PMC_PCSR1) Peripheral Clock 45 Status */ +#define PMC_PCSR1_PID46 (0x1u << 14) /**< \brief (PMC_PCSR1) Peripheral Clock 46 Status */ +#define PMC_PCSR1_PID47 (0x1u << 15) /**< \brief (PMC_PCSR1) Peripheral Clock 47 Status */ +/* -------- PMC_OCR : (PMC Offset: 0x0110) Oscillator Calibration Register -------- */ +#define PMC_OCR_CAL4_Pos 0 +#define PMC_OCR_CAL4_Msk (0x7fu << PMC_OCR_CAL4_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 4 MHz */ +#define PMC_OCR_CAL4(value) ((PMC_OCR_CAL4_Msk & ((value) << PMC_OCR_CAL4_Pos))) +#define PMC_OCR_SEL4 (0x1u << 7) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 4 MHz */ +#define PMC_OCR_CAL8_Pos 8 +#define PMC_OCR_CAL8_Msk (0x7fu << PMC_OCR_CAL8_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 8 MHz */ +#define PMC_OCR_CAL8(value) ((PMC_OCR_CAL8_Msk & ((value) << PMC_OCR_CAL8_Pos))) +#define PMC_OCR_SEL8 (0x1u << 15) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 8 MHz */ +#define PMC_OCR_CAL12_Pos 16 +#define PMC_OCR_CAL12_Msk (0x7fu << PMC_OCR_CAL12_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 12 MHz */ +#define PMC_OCR_CAL12(value) ((PMC_OCR_CAL12_Msk & ((value) << PMC_OCR_CAL12_Pos))) +#define PMC_OCR_SEL12 (0x1u << 23) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 12 MHz */ + +/*@}*/ + + +#endif /* _SAM4E_PMC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pwm.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pwm.h new file mode 100644 index 000000000..4a164d403 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pwm.h @@ -0,0 +1,612 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_PWM_COMPONENT_ +#define _SAM4E_PWM_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Pulse Width Modulation Controller */ +/* ============================================================================= */ +/** \addtogroup SAM4E_PWM Pulse Width Modulation Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief PwmCh_num hardware registers */ +typedef struct { + RwReg PWM_CMR; /**< \brief (PwmCh_num Offset: 0x0) PWM Channel Mode Register */ + RwReg PWM_CDTY; /**< \brief (PwmCh_num Offset: 0x4) PWM Channel Duty Cycle Register */ + RwReg PWM_CDTYUPD; /**< \brief (PwmCh_num Offset: 0x8) PWM Channel Duty Cycle Update Register */ + RwReg PWM_CPRD; /**< \brief (PwmCh_num Offset: 0xC) PWM Channel Period Register */ + RwReg PWM_CPRDUPD; /**< \brief (PwmCh_num Offset: 0x10) PWM Channel Period Update Register */ + RwReg PWM_CCNT; /**< \brief (PwmCh_num Offset: 0x14) PWM Channel Counter Register */ + RwReg PWM_DT; /**< \brief (PwmCh_num Offset: 0x18) PWM Channel Dead Time Register */ + RwReg PWM_DTUPD; /**< \brief (PwmCh_num Offset: 0x1C) PWM Channel Dead Time Update Register */ +} PwmCh_num; +/** \brief PwmCh_num_0x400 hardware registers */ +typedef struct { + RwReg PWM_CMUPD; /**< \brief (PwmCh_num_0x400 Offset: 0x0) PWM Channel Mode Update Register */ + RwReg PWM_CAE; /**< \brief (PwmCh_num_0x400 Offset: 0x4) PWM Channel Additional Edge Register */ + RwReg PWM_CAEUPD; /**< \brief (PwmCh_num_0x400 Offset: 0x8) PWM Channel Additional Edge Update Register */ + RoReg Reserved1[5]; +} PwmCh_num_0x400; +/** \brief PwmCmp hardware registers */ +typedef struct { + RwReg PWM_CMPV; /**< \brief (PwmCmp Offset: 0x0) PWM Comparison 0 Value Register */ + RwReg PWM_CMPVUPD; /**< \brief (PwmCmp Offset: 0x4) PWM Comparison 0 Value Update Register */ + RwReg PWM_CMPM; /**< \brief (PwmCmp Offset: 0x8) PWM Comparison 0 Mode Register */ + RwReg PWM_CMPMUPD; /**< \brief (PwmCmp Offset: 0xC) PWM Comparison 0 Mode Update Register */ +} PwmCmp; +/** \brief Pwm hardware registers */ +#define PWMCMP_NUMBER 8 +#define PWMCH_NUM_NUMBER 4 +#define PWMCH_NUM_0X400_NUMBER 4 +typedef struct { + RwReg PWM_CLK; /**< \brief (Pwm Offset: 0x00) PWM Clock Register */ + WoReg PWM_ENA; /**< \brief (Pwm Offset: 0x04) PWM Enable Register */ + WoReg PWM_DIS; /**< \brief (Pwm Offset: 0x08) PWM Disable Register */ + RoReg PWM_SR; /**< \brief (Pwm Offset: 0x0C) PWM Status Register */ + WoReg PWM_IER1; /**< \brief (Pwm Offset: 0x10) PWM Interrupt Enable Register 1 */ + WoReg PWM_IDR1; /**< \brief (Pwm Offset: 0x14) PWM Interrupt Disable Register 1 */ + RoReg PWM_IMR1; /**< \brief (Pwm Offset: 0x18) PWM Interrupt Mask Register 1 */ + RoReg PWM_ISR1; /**< \brief (Pwm Offset: 0x1C) PWM Interrupt Status Register 1 */ + RwReg PWM_SCM; /**< \brief (Pwm Offset: 0x20) PWM Sync Channels Mode Register */ + RoReg Reserved1[1]; + RwReg PWM_SCUC; /**< \brief (Pwm Offset: 0x28) PWM Sync Channels Update Control Register */ + RwReg PWM_SCUP; /**< \brief (Pwm Offset: 0x2C) PWM Sync Channels Update Period Register */ + WoReg PWM_SCUPUPD; /**< \brief (Pwm Offset: 0x30) PWM Sync Channels Update Period Update Register */ + WoReg PWM_IER2; /**< \brief (Pwm Offset: 0x34) PWM Interrupt Enable Register 2 */ + WoReg PWM_IDR2; /**< \brief (Pwm Offset: 0x38) PWM Interrupt Disable Register 2 */ + RoReg PWM_IMR2; /**< \brief (Pwm Offset: 0x3C) PWM Interrupt Mask Register 2 */ + RoReg PWM_ISR2; /**< \brief (Pwm Offset: 0x40) PWM Interrupt Status Register 2 */ + RwReg PWM_OOV; /**< \brief (Pwm Offset: 0x44) PWM Output Override Value Register */ + RwReg PWM_OS; /**< \brief (Pwm Offset: 0x48) PWM Output Selection Register */ + WoReg PWM_OSS; /**< \brief (Pwm Offset: 0x4C) PWM Output Selection Set Register */ + WoReg PWM_OSC; /**< \brief (Pwm Offset: 0x50) PWM Output Selection Clear Register */ + WoReg PWM_OSSUPD; /**< \brief (Pwm Offset: 0x54) PWM Output Selection Set Update Register */ + WoReg PWM_OSCUPD; /**< \brief (Pwm Offset: 0x58) PWM Output Selection Clear Update Register */ + RwReg PWM_FMR; /**< \brief (Pwm Offset: 0x5C) PWM Fault Mode Register */ + RoReg PWM_FSR; /**< \brief (Pwm Offset: 0x60) PWM Fault Status Register */ + WoReg PWM_FCR; /**< \brief (Pwm Offset: 0x64) PWM Fault Clear Register */ + RwReg PWM_FPV1; /**< \brief (Pwm Offset: 0x68) PWM Fault Protection Value Register 1 */ + RwReg PWM_FPE; /**< \brief (Pwm Offset: 0x6C) PWM Fault Protection Enable Register */ + RoReg Reserved2[3]; + RwReg PWM_ELMR[2]; /**< \brief (Pwm Offset: 0x7C) PWM Event Line 0 Mode Register */ + RoReg Reserved3[7]; + RwReg PWM_SSPR; /**< \brief (Pwm Offset: 0xA0) PWM Spread Spectrum Register */ + WoReg PWM_SSPUP; /**< \brief (Pwm Offset: 0xA4) PWM Spread Spectrum Update Register */ + RoReg Reserved4[2]; + RwReg PWM_SMMR; /**< \brief (Pwm Offset: 0xB0) PWM Stepper Motor Mode Register */ + RoReg Reserved5[3]; + RwReg PWM_FPV2; /**< \brief (Pwm Offset: 0xC0) PWM Fault Protection Value 2 Register */ + RoReg Reserved6[8]; + WoReg PWM_WPCR; /**< \brief (Pwm Offset: 0xE4) PWM Write Protect Control Register */ + RoReg PWM_WPSR; /**< \brief (Pwm Offset: 0xE8) PWM Write Protect Status Register */ + RoReg Reserved7[7]; + RwReg PWM_TPR; /**< \brief (Pwm Offset: 0x108) Transmit Pointer Register */ + RwReg PWM_TCR; /**< \brief (Pwm Offset: 0x10C) Transmit Counter Register */ + RoReg Reserved8[2]; + RwReg PWM_TNPR; /**< \brief (Pwm Offset: 0x118) Transmit Next Pointer Register */ + RwReg PWM_TNCR; /**< \brief (Pwm Offset: 0x11C) Transmit Next Counter Register */ + WoReg PWM_PTCR; /**< \brief (Pwm Offset: 0x120) Transfer Control Register */ + RoReg PWM_PTSR; /**< \brief (Pwm Offset: 0x124) Transfer Status Register */ + RoReg Reserved9[2]; + PwmCmp PWM_CMP[PWMCMP_NUMBER]; /**< \brief (Pwm Offset: 0x130) 0 .. 7 */ + RoReg Reserved10[20]; + PwmCh_num PWM_CH_NUM[PWMCH_NUM_NUMBER]; /**< \brief (Pwm Offset: 0x200) ch_num = 0 .. 3 */ + RoReg Reserved11[96]; + PwmCh_num_0x400 PWM_CH_NUM_0X400[PWMCH_NUM_0X400_NUMBER]; /**< \brief (Pwm Offset: 0x400) ch_num = 0 .. 3 */ +} Pwm; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- PWM_CLK : (PWM Offset: 0x00) PWM Clock Register -------- */ +#define PWM_CLK_DIVA_Pos 0 +#define PWM_CLK_DIVA_Msk (0xffu << PWM_CLK_DIVA_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Divide Factor */ +#define PWM_CLK_DIVA(value) ((PWM_CLK_DIVA_Msk & ((value) << PWM_CLK_DIVA_Pos))) +#define PWM_CLK_PREA_Pos 8 +#define PWM_CLK_PREA_Msk (0xfu << PWM_CLK_PREA_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Source Clock Selection */ +#define PWM_CLK_PREA(value) ((PWM_CLK_PREA_Msk & ((value) << PWM_CLK_PREA_Pos))) +#define PWM_CLK_DIVB_Pos 16 +#define PWM_CLK_DIVB_Msk (0xffu << PWM_CLK_DIVB_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Divide Factor */ +#define PWM_CLK_DIVB(value) ((PWM_CLK_DIVB_Msk & ((value) << PWM_CLK_DIVB_Pos))) +#define PWM_CLK_PREB_Pos 24 +#define PWM_CLK_PREB_Msk (0xfu << PWM_CLK_PREB_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Source Clock Selection */ +#define PWM_CLK_PREB(value) ((PWM_CLK_PREB_Msk & ((value) << PWM_CLK_PREB_Pos))) +/* -------- PWM_ENA : (PWM Offset: 0x04) PWM Enable Register -------- */ +#define PWM_ENA_CHID0 (0x1u << 0) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID1 (0x1u << 1) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID2 (0x1u << 2) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID3 (0x1u << 3) /**< \brief (PWM_ENA) Channel ID */ +/* -------- PWM_DIS : (PWM Offset: 0x08) PWM Disable Register -------- */ +#define PWM_DIS_CHID0 (0x1u << 0) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID1 (0x1u << 1) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID2 (0x1u << 2) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID3 (0x1u << 3) /**< \brief (PWM_DIS) Channel ID */ +/* -------- PWM_SR : (PWM Offset: 0x0C) PWM Status Register -------- */ +#define PWM_SR_CHID0 (0x1u << 0) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID1 (0x1u << 1) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID2 (0x1u << 2) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID3 (0x1u << 3) /**< \brief (PWM_SR) Channel ID */ +/* -------- PWM_IER1 : (PWM Offset: 0x10) PWM Interrupt Enable Register 1 -------- */ +#define PWM_IER1_CHID0 (0x1u << 0) /**< \brief (PWM_IER1) Counter Event on Channel 0 Interrupt Enable */ +#define PWM_IER1_CHID1 (0x1u << 1) /**< \brief (PWM_IER1) Counter Event on Channel 1 Interrupt Enable */ +#define PWM_IER1_CHID2 (0x1u << 2) /**< \brief (PWM_IER1) Counter Event on Channel 2 Interrupt Enable */ +#define PWM_IER1_CHID3 (0x1u << 3) /**< \brief (PWM_IER1) Counter Event on Channel 3 Interrupt Enable */ +#define PWM_IER1_FCHID0 (0x1u << 16) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 0 Interrupt Enable */ +#define PWM_IER1_FCHID1 (0x1u << 17) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 1 Interrupt Enable */ +#define PWM_IER1_FCHID2 (0x1u << 18) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 2 Interrupt Enable */ +#define PWM_IER1_FCHID3 (0x1u << 19) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 3 Interrupt Enable */ +/* -------- PWM_IDR1 : (PWM Offset: 0x14) PWM Interrupt Disable Register 1 -------- */ +#define PWM_IDR1_CHID0 (0x1u << 0) /**< \brief (PWM_IDR1) Counter Event on Channel 0 Interrupt Disable */ +#define PWM_IDR1_CHID1 (0x1u << 1) /**< \brief (PWM_IDR1) Counter Event on Channel 1 Interrupt Disable */ +#define PWM_IDR1_CHID2 (0x1u << 2) /**< \brief (PWM_IDR1) Counter Event on Channel 2 Interrupt Disable */ +#define PWM_IDR1_CHID3 (0x1u << 3) /**< \brief (PWM_IDR1) Counter Event on Channel 3 Interrupt Disable */ +#define PWM_IDR1_FCHID0 (0x1u << 16) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 0 Interrupt Disable */ +#define PWM_IDR1_FCHID1 (0x1u << 17) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 1 Interrupt Disable */ +#define PWM_IDR1_FCHID2 (0x1u << 18) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 2 Interrupt Disable */ +#define PWM_IDR1_FCHID3 (0x1u << 19) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 3 Interrupt Disable */ +/* -------- PWM_IMR1 : (PWM Offset: 0x18) PWM Interrupt Mask Register 1 -------- */ +#define PWM_IMR1_CHID0 (0x1u << 0) /**< \brief (PWM_IMR1) Counter Event on Channel 0 Interrupt Mask */ +#define PWM_IMR1_CHID1 (0x1u << 1) /**< \brief (PWM_IMR1) Counter Event on Channel 1 Interrupt Mask */ +#define PWM_IMR1_CHID2 (0x1u << 2) /**< \brief (PWM_IMR1) Counter Event on Channel 2 Interrupt Mask */ +#define PWM_IMR1_CHID3 (0x1u << 3) /**< \brief (PWM_IMR1) Counter Event on Channel 3 Interrupt Mask */ +#define PWM_IMR1_FCHID0 (0x1u << 16) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 0 Interrupt Mask */ +#define PWM_IMR1_FCHID1 (0x1u << 17) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 1 Interrupt Mask */ +#define PWM_IMR1_FCHID2 (0x1u << 18) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 2 Interrupt Mask */ +#define PWM_IMR1_FCHID3 (0x1u << 19) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 3 Interrupt Mask */ +/* -------- PWM_ISR1 : (PWM Offset: 0x1C) PWM Interrupt Status Register 1 -------- */ +#define PWM_ISR1_CHID0 (0x1u << 0) /**< \brief (PWM_ISR1) Counter Event on Channel 0 */ +#define PWM_ISR1_CHID1 (0x1u << 1) /**< \brief (PWM_ISR1) Counter Event on Channel 1 */ +#define PWM_ISR1_CHID2 (0x1u << 2) /**< \brief (PWM_ISR1) Counter Event on Channel 2 */ +#define PWM_ISR1_CHID3 (0x1u << 3) /**< \brief (PWM_ISR1) Counter Event on Channel 3 */ +#define PWM_ISR1_FCHID0 (0x1u << 16) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 0 */ +#define PWM_ISR1_FCHID1 (0x1u << 17) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 1 */ +#define PWM_ISR1_FCHID2 (0x1u << 18) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 2 */ +#define PWM_ISR1_FCHID3 (0x1u << 19) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 3 */ +/* -------- PWM_SCM : (PWM Offset: 0x20) PWM Sync Channels Mode Register -------- */ +#define PWM_SCM_SYNC0 (0x1u << 0) /**< \brief (PWM_SCM) Synchronous Channel 0 */ +#define PWM_SCM_SYNC1 (0x1u << 1) /**< \brief (PWM_SCM) Synchronous Channel 1 */ +#define PWM_SCM_SYNC2 (0x1u << 2) /**< \brief (PWM_SCM) Synchronous Channel 2 */ +#define PWM_SCM_SYNC3 (0x1u << 3) /**< \brief (PWM_SCM) Synchronous Channel 3 */ +#define PWM_SCM_UPDM_Pos 16 +#define PWM_SCM_UPDM_Msk (0x3u << PWM_SCM_UPDM_Pos) /**< \brief (PWM_SCM) Synchronous Channels Update Mode */ +#define PWM_SCM_UPDM_MODE0 (0x0u << 16) /**< \brief (PWM_SCM) Manual write of double buffer registers and manual update of synchronous channels */ +#define PWM_SCM_UPDM_MODE1 (0x1u << 16) /**< \brief (PWM_SCM) Manual write of double buffer registers and automatic update of synchronous channels */ +#define PWM_SCM_UPDM_MODE2 (0x2u << 16) /**< \brief (PWM_SCM) Automatic write of duty-cycle update registers by the PDC and automatic update of synchronous channels */ +#define PWM_SCM_PTRM (0x1u << 20) /**< \brief (PWM_SCM) PDC Transfer Request Mode */ +#define PWM_SCM_PTRCS_Pos 21 +#define PWM_SCM_PTRCS_Msk (0x7u << PWM_SCM_PTRCS_Pos) /**< \brief (PWM_SCM) PDC Transfer Request Comparison Selection */ +#define PWM_SCM_PTRCS(value) ((PWM_SCM_PTRCS_Msk & ((value) << PWM_SCM_PTRCS_Pos))) +/* -------- PWM_SCUC : (PWM Offset: 0x28) PWM Sync Channels Update Control Register -------- */ +#define PWM_SCUC_UPDULOCK (0x1u << 0) /**< \brief (PWM_SCUC) Synchronous Channels Update Unlock */ +/* -------- PWM_SCUP : (PWM Offset: 0x2C) PWM Sync Channels Update Period Register -------- */ +#define PWM_SCUP_UPR_Pos 0 +#define PWM_SCUP_UPR_Msk (0xfu << PWM_SCUP_UPR_Pos) /**< \brief (PWM_SCUP) Update Period */ +#define PWM_SCUP_UPR(value) ((PWM_SCUP_UPR_Msk & ((value) << PWM_SCUP_UPR_Pos))) +#define PWM_SCUP_UPRCNT_Pos 4 +#define PWM_SCUP_UPRCNT_Msk (0xfu << PWM_SCUP_UPRCNT_Pos) /**< \brief (PWM_SCUP) Update Period Counter */ +#define PWM_SCUP_UPRCNT(value) ((PWM_SCUP_UPRCNT_Msk & ((value) << PWM_SCUP_UPRCNT_Pos))) +/* -------- PWM_SCUPUPD : (PWM Offset: 0x30) PWM Sync Channels Update Period Update Register -------- */ +#define PWM_SCUPUPD_UPRUPD_Pos 0 +#define PWM_SCUPUPD_UPRUPD_Msk (0xfu << PWM_SCUPUPD_UPRUPD_Pos) /**< \brief (PWM_SCUPUPD) Update Period Update */ +#define PWM_SCUPUPD_UPRUPD(value) ((PWM_SCUPUPD_UPRUPD_Msk & ((value) << PWM_SCUPUPD_UPRUPD_Pos))) +/* -------- PWM_IER2 : (PWM Offset: 0x34) PWM Interrupt Enable Register 2 -------- */ +#define PWM_IER2_WRDY (0x1u << 0) /**< \brief (PWM_IER2) Write Ready for Synchronous Channels Update Interrupt Enable */ +#define PWM_IER2_ENDTX (0x1u << 1) /**< \brief (PWM_IER2) PDC End of TX Buffer Interrupt Enable */ +#define PWM_IER2_TXBUFE (0x1u << 2) /**< \brief (PWM_IER2) PDC TX Buffer Empty Interrupt Enable */ +#define PWM_IER2_UNRE (0x1u << 3) /**< \brief (PWM_IER2) Synchronous Channels Update Underrun Error Interrupt Enable */ +#define PWM_IER2_CMPM0 (0x1u << 8) /**< \brief (PWM_IER2) Comparison 0 Match Interrupt Enable */ +#define PWM_IER2_CMPM1 (0x1u << 9) /**< \brief (PWM_IER2) Comparison 1 Match Interrupt Enable */ +#define PWM_IER2_CMPM2 (0x1u << 10) /**< \brief (PWM_IER2) Comparison 2 Match Interrupt Enable */ +#define PWM_IER2_CMPM3 (0x1u << 11) /**< \brief (PWM_IER2) Comparison 3 Match Interrupt Enable */ +#define PWM_IER2_CMPM4 (0x1u << 12) /**< \brief (PWM_IER2) Comparison 4 Match Interrupt Enable */ +#define PWM_IER2_CMPM5 (0x1u << 13) /**< \brief (PWM_IER2) Comparison 5 Match Interrupt Enable */ +#define PWM_IER2_CMPM6 (0x1u << 14) /**< \brief (PWM_IER2) Comparison 6 Match Interrupt Enable */ +#define PWM_IER2_CMPM7 (0x1u << 15) /**< \brief (PWM_IER2) Comparison 7 Match Interrupt Enable */ +#define PWM_IER2_CMPU0 (0x1u << 16) /**< \brief (PWM_IER2) Comparison 0 Update Interrupt Enable */ +#define PWM_IER2_CMPU1 (0x1u << 17) /**< \brief (PWM_IER2) Comparison 1 Update Interrupt Enable */ +#define PWM_IER2_CMPU2 (0x1u << 18) /**< \brief (PWM_IER2) Comparison 2 Update Interrupt Enable */ +#define PWM_IER2_CMPU3 (0x1u << 19) /**< \brief (PWM_IER2) Comparison 3 Update Interrupt Enable */ +#define PWM_IER2_CMPU4 (0x1u << 20) /**< \brief (PWM_IER2) Comparison 4 Update Interrupt Enable */ +#define PWM_IER2_CMPU5 (0x1u << 21) /**< \brief (PWM_IER2) Comparison 5 Update Interrupt Enable */ +#define PWM_IER2_CMPU6 (0x1u << 22) /**< \brief (PWM_IER2) Comparison 6 Update Interrupt Enable */ +#define PWM_IER2_CMPU7 (0x1u << 23) /**< \brief (PWM_IER2) Comparison 7 Update Interrupt Enable */ +/* -------- PWM_IDR2 : (PWM Offset: 0x38) PWM Interrupt Disable Register 2 -------- */ +#define PWM_IDR2_WRDY (0x1u << 0) /**< \brief (PWM_IDR2) Write Ready for Synchronous Channels Update Interrupt Disable */ +#define PWM_IDR2_ENDTX (0x1u << 1) /**< \brief (PWM_IDR2) PDC End of TX Buffer Interrupt Disable */ +#define PWM_IDR2_TXBUFE (0x1u << 2) /**< \brief (PWM_IDR2) PDC TX Buffer Empty Interrupt Disable */ +#define PWM_IDR2_UNRE (0x1u << 3) /**< \brief (PWM_IDR2) Synchronous Channels Update Underrun Error Interrupt Disable */ +#define PWM_IDR2_CMPM0 (0x1u << 8) /**< \brief (PWM_IDR2) Comparison 0 Match Interrupt Disable */ +#define PWM_IDR2_CMPM1 (0x1u << 9) /**< \brief (PWM_IDR2) Comparison 1 Match Interrupt Disable */ +#define PWM_IDR2_CMPM2 (0x1u << 10) /**< \brief (PWM_IDR2) Comparison 2 Match Interrupt Disable */ +#define PWM_IDR2_CMPM3 (0x1u << 11) /**< \brief (PWM_IDR2) Comparison 3 Match Interrupt Disable */ +#define PWM_IDR2_CMPM4 (0x1u << 12) /**< \brief (PWM_IDR2) Comparison 4 Match Interrupt Disable */ +#define PWM_IDR2_CMPM5 (0x1u << 13) /**< \brief (PWM_IDR2) Comparison 5 Match Interrupt Disable */ +#define PWM_IDR2_CMPM6 (0x1u << 14) /**< \brief (PWM_IDR2) Comparison 6 Match Interrupt Disable */ +#define PWM_IDR2_CMPM7 (0x1u << 15) /**< \brief (PWM_IDR2) Comparison 7 Match Interrupt Disable */ +#define PWM_IDR2_CMPU0 (0x1u << 16) /**< \brief (PWM_IDR2) Comparison 0 Update Interrupt Disable */ +#define PWM_IDR2_CMPU1 (0x1u << 17) /**< \brief (PWM_IDR2) Comparison 1 Update Interrupt Disable */ +#define PWM_IDR2_CMPU2 (0x1u << 18) /**< \brief (PWM_IDR2) Comparison 2 Update Interrupt Disable */ +#define PWM_IDR2_CMPU3 (0x1u << 19) /**< \brief (PWM_IDR2) Comparison 3 Update Interrupt Disable */ +#define PWM_IDR2_CMPU4 (0x1u << 20) /**< \brief (PWM_IDR2) Comparison 4 Update Interrupt Disable */ +#define PWM_IDR2_CMPU5 (0x1u << 21) /**< \brief (PWM_IDR2) Comparison 5 Update Interrupt Disable */ +#define PWM_IDR2_CMPU6 (0x1u << 22) /**< \brief (PWM_IDR2) Comparison 6 Update Interrupt Disable */ +#define PWM_IDR2_CMPU7 (0x1u << 23) /**< \brief (PWM_IDR2) Comparison 7 Update Interrupt Disable */ +/* -------- PWM_IMR2 : (PWM Offset: 0x3C) PWM Interrupt Mask Register 2 -------- */ +#define PWM_IMR2_WRDY (0x1u << 0) /**< \brief (PWM_IMR2) Write Ready for Synchronous Channels Update Interrupt Mask */ +#define PWM_IMR2_ENDTX (0x1u << 1) /**< \brief (PWM_IMR2) PDC End of TX Buffer Interrupt Mask */ +#define PWM_IMR2_TXBUFE (0x1u << 2) /**< \brief (PWM_IMR2) PDC TX Buffer Empty Interrupt Mask */ +#define PWM_IMR2_UNRE (0x1u << 3) /**< \brief (PWM_IMR2) Synchronous Channels Update Underrun Error Interrupt Mask */ +#define PWM_IMR2_CMPM0 (0x1u << 8) /**< \brief (PWM_IMR2) Comparison 0 Match Interrupt Mask */ +#define PWM_IMR2_CMPM1 (0x1u << 9) /**< \brief (PWM_IMR2) Comparison 1 Match Interrupt Mask */ +#define PWM_IMR2_CMPM2 (0x1u << 10) /**< \brief (PWM_IMR2) Comparison 2 Match Interrupt Mask */ +#define PWM_IMR2_CMPM3 (0x1u << 11) /**< \brief (PWM_IMR2) Comparison 3 Match Interrupt Mask */ +#define PWM_IMR2_CMPM4 (0x1u << 12) /**< \brief (PWM_IMR2) Comparison 4 Match Interrupt Mask */ +#define PWM_IMR2_CMPM5 (0x1u << 13) /**< \brief (PWM_IMR2) Comparison 5 Match Interrupt Mask */ +#define PWM_IMR2_CMPM6 (0x1u << 14) /**< \brief (PWM_IMR2) Comparison 6 Match Interrupt Mask */ +#define PWM_IMR2_CMPM7 (0x1u << 15) /**< \brief (PWM_IMR2) Comparison 7 Match Interrupt Mask */ +#define PWM_IMR2_CMPU0 (0x1u << 16) /**< \brief (PWM_IMR2) Comparison 0 Update Interrupt Mask */ +#define PWM_IMR2_CMPU1 (0x1u << 17) /**< \brief (PWM_IMR2) Comparison 1 Update Interrupt Mask */ +#define PWM_IMR2_CMPU2 (0x1u << 18) /**< \brief (PWM_IMR2) Comparison 2 Update Interrupt Mask */ +#define PWM_IMR2_CMPU3 (0x1u << 19) /**< \brief (PWM_IMR2) Comparison 3 Update Interrupt Mask */ +#define PWM_IMR2_CMPU4 (0x1u << 20) /**< \brief (PWM_IMR2) Comparison 4 Update Interrupt Mask */ +#define PWM_IMR2_CMPU5 (0x1u << 21) /**< \brief (PWM_IMR2) Comparison 5 Update Interrupt Mask */ +#define PWM_IMR2_CMPU6 (0x1u << 22) /**< \brief (PWM_IMR2) Comparison 6 Update Interrupt Mask */ +#define PWM_IMR2_CMPU7 (0x1u << 23) /**< \brief (PWM_IMR2) Comparison 7 Update Interrupt Mask */ +/* -------- PWM_ISR2 : (PWM Offset: 0x40) PWM Interrupt Status Register 2 -------- */ +#define PWM_ISR2_WRDY (0x1u << 0) /**< \brief (PWM_ISR2) Write Ready for Synchronous Channels Update */ +#define PWM_ISR2_ENDTX (0x1u << 1) /**< \brief (PWM_ISR2) PDC End of TX Buffer */ +#define PWM_ISR2_TXBUFE (0x1u << 2) /**< \brief (PWM_ISR2) PDC TX Buffer Empty */ +#define PWM_ISR2_UNRE (0x1u << 3) /**< \brief (PWM_ISR2) Synchronous Channels Update Underrun Error */ +#define PWM_ISR2_CMPM0 (0x1u << 8) /**< \brief (PWM_ISR2) Comparison 0 Match */ +#define PWM_ISR2_CMPM1 (0x1u << 9) /**< \brief (PWM_ISR2) Comparison 1 Match */ +#define PWM_ISR2_CMPM2 (0x1u << 10) /**< \brief (PWM_ISR2) Comparison 2 Match */ +#define PWM_ISR2_CMPM3 (0x1u << 11) /**< \brief (PWM_ISR2) Comparison 3 Match */ +#define PWM_ISR2_CMPM4 (0x1u << 12) /**< \brief (PWM_ISR2) Comparison 4 Match */ +#define PWM_ISR2_CMPM5 (0x1u << 13) /**< \brief (PWM_ISR2) Comparison 5 Match */ +#define PWM_ISR2_CMPM6 (0x1u << 14) /**< \brief (PWM_ISR2) Comparison 6 Match */ +#define PWM_ISR2_CMPM7 (0x1u << 15) /**< \brief (PWM_ISR2) Comparison 7 Match */ +#define PWM_ISR2_CMPU0 (0x1u << 16) /**< \brief (PWM_ISR2) Comparison 0 Update */ +#define PWM_ISR2_CMPU1 (0x1u << 17) /**< \brief (PWM_ISR2) Comparison 1 Update */ +#define PWM_ISR2_CMPU2 (0x1u << 18) /**< \brief (PWM_ISR2) Comparison 2 Update */ +#define PWM_ISR2_CMPU3 (0x1u << 19) /**< \brief (PWM_ISR2) Comparison 3 Update */ +#define PWM_ISR2_CMPU4 (0x1u << 20) /**< \brief (PWM_ISR2) Comparison 4 Update */ +#define PWM_ISR2_CMPU5 (0x1u << 21) /**< \brief (PWM_ISR2) Comparison 5 Update */ +#define PWM_ISR2_CMPU6 (0x1u << 22) /**< \brief (PWM_ISR2) Comparison 6 Update */ +#define PWM_ISR2_CMPU7 (0x1u << 23) /**< \brief (PWM_ISR2) Comparison 7 Update */ +/* -------- PWM_OOV : (PWM Offset: 0x44) PWM Output Override Value Register -------- */ +#define PWM_OOV_OOVH0 (0x1u << 0) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 0 */ +#define PWM_OOV_OOVH1 (0x1u << 1) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 1 */ +#define PWM_OOV_OOVH2 (0x1u << 2) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 2 */ +#define PWM_OOV_OOVH3 (0x1u << 3) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 3 */ +#define PWM_OOV_OOVL0 (0x1u << 16) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 0 */ +#define PWM_OOV_OOVL1 (0x1u << 17) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 1 */ +#define PWM_OOV_OOVL2 (0x1u << 18) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 2 */ +#define PWM_OOV_OOVL3 (0x1u << 19) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 3 */ +/* -------- PWM_OS : (PWM Offset: 0x48) PWM Output Selection Register -------- */ +#define PWM_OS_OSH0 (0x1u << 0) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 0 */ +#define PWM_OS_OSH1 (0x1u << 1) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 1 */ +#define PWM_OS_OSH2 (0x1u << 2) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 2 */ +#define PWM_OS_OSH3 (0x1u << 3) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 3 */ +#define PWM_OS_OSL0 (0x1u << 16) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 0 */ +#define PWM_OS_OSL1 (0x1u << 17) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 1 */ +#define PWM_OS_OSL2 (0x1u << 18) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 2 */ +#define PWM_OS_OSL3 (0x1u << 19) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 3 */ +/* -------- PWM_OSS : (PWM Offset: 0x4C) PWM Output Selection Set Register -------- */ +#define PWM_OSS_OSSH0 (0x1u << 0) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 0 */ +#define PWM_OSS_OSSH1 (0x1u << 1) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 1 */ +#define PWM_OSS_OSSH2 (0x1u << 2) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 2 */ +#define PWM_OSS_OSSH3 (0x1u << 3) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 3 */ +#define PWM_OSS_OSSL0 (0x1u << 16) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 0 */ +#define PWM_OSS_OSSL1 (0x1u << 17) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 1 */ +#define PWM_OSS_OSSL2 (0x1u << 18) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 2 */ +#define PWM_OSS_OSSL3 (0x1u << 19) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 3 */ +/* -------- PWM_OSC : (PWM Offset: 0x50) PWM Output Selection Clear Register -------- */ +#define PWM_OSC_OSCH0 (0x1u << 0) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 0 */ +#define PWM_OSC_OSCH1 (0x1u << 1) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 1 */ +#define PWM_OSC_OSCH2 (0x1u << 2) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 2 */ +#define PWM_OSC_OSCH3 (0x1u << 3) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 3 */ +#define PWM_OSC_OSCL0 (0x1u << 16) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 0 */ +#define PWM_OSC_OSCL1 (0x1u << 17) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 1 */ +#define PWM_OSC_OSCL2 (0x1u << 18) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 2 */ +#define PWM_OSC_OSCL3 (0x1u << 19) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 3 */ +/* -------- PWM_OSSUPD : (PWM Offset: 0x54) PWM Output Selection Set Update Register -------- */ +#define PWM_OSSUPD_OSSUPH0 (0x1u << 0) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 0 */ +#define PWM_OSSUPD_OSSUPH1 (0x1u << 1) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 1 */ +#define PWM_OSSUPD_OSSUPH2 (0x1u << 2) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 2 */ +#define PWM_OSSUPD_OSSUPH3 (0x1u << 3) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 3 */ +#define PWM_OSSUPD_OSSUPL0 (0x1u << 16) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 0 */ +#define PWM_OSSUPD_OSSUPL1 (0x1u << 17) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 1 */ +#define PWM_OSSUPD_OSSUPL2 (0x1u << 18) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 2 */ +#define PWM_OSSUPD_OSSUPL3 (0x1u << 19) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 3 */ +/* -------- PWM_OSCUPD : (PWM Offset: 0x58) PWM Output Selection Clear Update Register -------- */ +#define PWM_OSCUPD_OSCUPH0 (0x1u << 0) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 0 */ +#define PWM_OSCUPD_OSCUPH1 (0x1u << 1) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 1 */ +#define PWM_OSCUPD_OSCUPH2 (0x1u << 2) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 2 */ +#define PWM_OSCUPD_OSCUPH3 (0x1u << 3) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 3 */ +#define PWM_OSCUPD_OSCUPL0 (0x1u << 16) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 0 */ +#define PWM_OSCUPD_OSCUPL1 (0x1u << 17) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 1 */ +#define PWM_OSCUPD_OSCUPL2 (0x1u << 18) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 2 */ +#define PWM_OSCUPD_OSCUPL3 (0x1u << 19) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 3 */ +/* -------- PWM_FMR : (PWM Offset: 0x5C) PWM Fault Mode Register -------- */ +#define PWM_FMR_FPOL_Pos 0 +#define PWM_FMR_FPOL_Msk (0xffu << PWM_FMR_FPOL_Pos) /**< \brief (PWM_FMR) Fault Polarity (fault input bit varies from 0 to 7) */ +#define PWM_FMR_FPOL(value) ((PWM_FMR_FPOL_Msk & ((value) << PWM_FMR_FPOL_Pos))) +#define PWM_FMR_FMOD_Pos 8 +#define PWM_FMR_FMOD_Msk (0xffu << PWM_FMR_FMOD_Pos) /**< \brief (PWM_FMR) Fault Activation Mode (fault input bit varies from 0 to 7) */ +#define PWM_FMR_FMOD(value) ((PWM_FMR_FMOD_Msk & ((value) << PWM_FMR_FMOD_Pos))) +#define PWM_FMR_FFIL_Pos 16 +#define PWM_FMR_FFIL_Msk (0xffu << PWM_FMR_FFIL_Pos) /**< \brief (PWM_FMR) Fault Filtering (fault input bit varies from 0 to 7) */ +#define PWM_FMR_FFIL(value) ((PWM_FMR_FFIL_Msk & ((value) << PWM_FMR_FFIL_Pos))) +/* -------- PWM_FSR : (PWM Offset: 0x60) PWM Fault Status Register -------- */ +#define PWM_FSR_FIV_Pos 0 +#define PWM_FSR_FIV_Msk (0xffu << PWM_FSR_FIV_Pos) /**< \brief (PWM_FSR) Fault Input Value (fault input bit varies from 0 to 7) */ +#define PWM_FSR_FS_Pos 8 +#define PWM_FSR_FS_Msk (0xffu << PWM_FSR_FS_Pos) /**< \brief (PWM_FSR) Fault Status (fault input bit varies from 0 to 7) */ +/* -------- PWM_FCR : (PWM Offset: 0x64) PWM Fault Clear Register -------- */ +#define PWM_FCR_FCLR_Pos 0 +#define PWM_FCR_FCLR_Msk (0xffu << PWM_FCR_FCLR_Pos) /**< \brief (PWM_FCR) Fault Clear (fault input bit varies from 0 to 7) */ +#define PWM_FCR_FCLR(value) ((PWM_FCR_FCLR_Msk & ((value) << PWM_FCR_FCLR_Pos))) +/* -------- PWM_FPV1 : (PWM Offset: 0x68) PWM Fault Protection Value Register 1 -------- */ +#define PWM_FPV1_FPVH0 (0x1u << 0) /**< \brief (PWM_FPV1) Fault Protection Value for PWMH output on channel 0 */ +#define PWM_FPV1_FPVH1 (0x1u << 1) /**< \brief (PWM_FPV1) Fault Protection Value for PWMH output on channel 1 */ +#define PWM_FPV1_FPVH2 (0x1u << 2) /**< \brief (PWM_FPV1) Fault Protection Value for PWMH output on channel 2 */ +#define PWM_FPV1_FPVH3 (0x1u << 3) /**< \brief (PWM_FPV1) Fault Protection Value for PWMH output on channel 3 */ +#define PWM_FPV1_FPVL0 (0x1u << 16) /**< \brief (PWM_FPV1) Fault Protection Value for PWML output on channel 0 */ +#define PWM_FPV1_FPVL1 (0x1u << 17) /**< \brief (PWM_FPV1) Fault Protection Value for PWML output on channel 1 */ +#define PWM_FPV1_FPVL2 (0x1u << 18) /**< \brief (PWM_FPV1) Fault Protection Value for PWML output on channel 2 */ +#define PWM_FPV1_FPVL3 (0x1u << 19) /**< \brief (PWM_FPV1) Fault Protection Value for PWML output on channel 3 */ +/* -------- PWM_FPE : (PWM Offset: 0x6C) PWM Fault Protection Enable Register -------- */ +#define PWM_FPE_FPE0_Pos 0 +#define PWM_FPE_FPE0_Msk (0xffu << PWM_FPE_FPE0_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 0 (fault input bit varies from 0 to 7) */ +#define PWM_FPE_FPE0(value) ((PWM_FPE_FPE0_Msk & ((value) << PWM_FPE_FPE0_Pos))) +#define PWM_FPE_FPE1_Pos 8 +#define PWM_FPE_FPE1_Msk (0xffu << PWM_FPE_FPE1_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 1 (fault input bit varies from 0 to 7) */ +#define PWM_FPE_FPE1(value) ((PWM_FPE_FPE1_Msk & ((value) << PWM_FPE_FPE1_Pos))) +#define PWM_FPE_FPE2_Pos 16 +#define PWM_FPE_FPE2_Msk (0xffu << PWM_FPE_FPE2_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 2 (fault input bit varies from 0 to 7) */ +#define PWM_FPE_FPE2(value) ((PWM_FPE_FPE2_Msk & ((value) << PWM_FPE_FPE2_Pos))) +#define PWM_FPE_FPE3_Pos 24 +#define PWM_FPE_FPE3_Msk (0xffu << PWM_FPE_FPE3_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 3 (fault input bit varies from 0 to 7) */ +#define PWM_FPE_FPE3(value) ((PWM_FPE_FPE3_Msk & ((value) << PWM_FPE_FPE3_Pos))) +/* -------- PWM_ELMR[2] : (PWM Offset: 0x7C) PWM Event Line 0 Mode Register -------- */ +#define PWM_ELMR_CSEL0 (0x1u << 0) /**< \brief (PWM_ELMR[2]) Comparison 0 Selection */ +#define PWM_ELMR_CSEL1 (0x1u << 1) /**< \brief (PWM_ELMR[2]) Comparison 1 Selection */ +#define PWM_ELMR_CSEL2 (0x1u << 2) /**< \brief (PWM_ELMR[2]) Comparison 2 Selection */ +#define PWM_ELMR_CSEL3 (0x1u << 3) /**< \brief (PWM_ELMR[2]) Comparison 3 Selection */ +#define PWM_ELMR_CSEL4 (0x1u << 4) /**< \brief (PWM_ELMR[2]) Comparison 4 Selection */ +#define PWM_ELMR_CSEL5 (0x1u << 5) /**< \brief (PWM_ELMR[2]) Comparison 5 Selection */ +#define PWM_ELMR_CSEL6 (0x1u << 6) /**< \brief (PWM_ELMR[2]) Comparison 6 Selection */ +#define PWM_ELMR_CSEL7 (0x1u << 7) /**< \brief (PWM_ELMR[2]) Comparison 7 Selection */ +/* -------- PWM_SSPR : (PWM Offset: 0xA0) PWM Spread Spectrum Register -------- */ +#define PWM_SSPR_SPRD_Pos 0 +#define PWM_SSPR_SPRD_Msk (0xffffffu << PWM_SSPR_SPRD_Pos) /**< \brief (PWM_SSPR) Spread Spectrum Limit Value */ +#define PWM_SSPR_SPRD(value) ((PWM_SSPR_SPRD_Msk & ((value) << PWM_SSPR_SPRD_Pos))) +#define PWM_SSPR_SPRDM (0x1u << 24) /**< \brief (PWM_SSPR) Spread Spectrum Counter Mode */ +/* -------- PWM_SSPUP : (PWM Offset: 0xA4) PWM Spread Spectrum Update Register -------- */ +#define PWM_SSPUP_SPRDUP_Pos 0 +#define PWM_SSPUP_SPRDUP_Msk (0xffffffu << PWM_SSPUP_SPRDUP_Pos) /**< \brief (PWM_SSPUP) Spread Spectrum Limit Value Update */ +#define PWM_SSPUP_SPRDUP(value) ((PWM_SSPUP_SPRDUP_Msk & ((value) << PWM_SSPUP_SPRDUP_Pos))) +/* -------- PWM_SMMR : (PWM Offset: 0xB0) PWM Stepper Motor Mode Register -------- */ +#define PWM_SMMR_GCEN0 (0x1u << 0) /**< \brief (PWM_SMMR) Gray Count ENable */ +#define PWM_SMMR_GCEN1 (0x1u << 1) /**< \brief (PWM_SMMR) Gray Count ENable */ +#define PWM_SMMR_DOWN0 (0x1u << 16) /**< \brief (PWM_SMMR) DOWN Count */ +#define PWM_SMMR_DOWN1 (0x1u << 17) /**< \brief (PWM_SMMR) DOWN Count */ +/* -------- PWM_FPV2 : (PWM Offset: 0xC0) PWM Fault Protection Value 2 Register -------- */ +#define PWM_FPV2_FPZH0 (0x1u << 0) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWMH output on channel 0 */ +#define PWM_FPV2_FPZH1 (0x1u << 1) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWMH output on channel 1 */ +#define PWM_FPV2_FPZH2 (0x1u << 2) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWMH output on channel 2 */ +#define PWM_FPV2_FPZH3 (0x1u << 3) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWMH output on channel 3 */ +#define PWM_FPV2_FPZL0 (0x1u << 16) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWML output on channel 0 */ +#define PWM_FPV2_FPZL1 (0x1u << 17) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWML output on channel 1 */ +#define PWM_FPV2_FPZL2 (0x1u << 18) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWML output on channel 2 */ +#define PWM_FPV2_FPZL3 (0x1u << 19) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWML output on channel 3 */ +/* -------- PWM_WPCR : (PWM Offset: 0xE4) PWM Write Protect Control Register -------- */ +#define PWM_WPCR_WPCMD_Pos 0 +#define PWM_WPCR_WPCMD_Msk (0x3u << PWM_WPCR_WPCMD_Pos) /**< \brief (PWM_WPCR) Write Protect Command */ +#define PWM_WPCR_WPCMD(value) ((PWM_WPCR_WPCMD_Msk & ((value) << PWM_WPCR_WPCMD_Pos))) +#define PWM_WPCR_WPRG0 (0x1u << 2) /**< \brief (PWM_WPCR) Write Protect Register Group 0 */ +#define PWM_WPCR_WPRG1 (0x1u << 3) /**< \brief (PWM_WPCR) Write Protect Register Group 1 */ +#define PWM_WPCR_WPRG2 (0x1u << 4) /**< \brief (PWM_WPCR) Write Protect Register Group 2 */ +#define PWM_WPCR_WPRG3 (0x1u << 5) /**< \brief (PWM_WPCR) Write Protect Register Group 3 */ +#define PWM_WPCR_WPRG4 (0x1u << 6) /**< \brief (PWM_WPCR) Write Protect Register Group 4 */ +#define PWM_WPCR_WPRG5 (0x1u << 7) /**< \brief (PWM_WPCR) Write Protect Register Group 5 */ +#define PWM_WPCR_WPKEY_Pos 8 +#define PWM_WPCR_WPKEY_Msk (0xffffffu << PWM_WPCR_WPKEY_Pos) /**< \brief (PWM_WPCR) Write Protect Key */ +#define PWM_WPCR_WPKEY(value) ((PWM_WPCR_WPKEY_Msk & ((value) << PWM_WPCR_WPKEY_Pos))) +/* -------- PWM_WPSR : (PWM Offset: 0xE8) PWM Write Protect Status Register -------- */ +#define PWM_WPSR_WPSWS0 (0x1u << 0) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS1 (0x1u << 1) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS2 (0x1u << 2) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS3 (0x1u << 3) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS4 (0x1u << 4) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS5 (0x1u << 5) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPVS (0x1u << 7) /**< \brief (PWM_WPSR) Write Protect Violation Status */ +#define PWM_WPSR_WPHWS0 (0x1u << 8) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS1 (0x1u << 9) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS2 (0x1u << 10) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS3 (0x1u << 11) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS4 (0x1u << 12) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS5 (0x1u << 13) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPVSRC_Pos 16 +#define PWM_WPSR_WPVSRC_Msk (0xffffu << PWM_WPSR_WPVSRC_Pos) /**< \brief (PWM_WPSR) Write Protect Violation Source */ +/* -------- PWM_TPR : (PWM Offset: 0x108) Transmit Pointer Register -------- */ +#define PWM_TPR_TXPTR_Pos 0 +#define PWM_TPR_TXPTR_Msk (0xffffffffu << PWM_TPR_TXPTR_Pos) /**< \brief (PWM_TPR) Transmit Counter Register */ +#define PWM_TPR_TXPTR(value) ((PWM_TPR_TXPTR_Msk & ((value) << PWM_TPR_TXPTR_Pos))) +/* -------- PWM_TCR : (PWM Offset: 0x10C) Transmit Counter Register -------- */ +#define PWM_TCR_TXCTR_Pos 0 +#define PWM_TCR_TXCTR_Msk (0xffffu << PWM_TCR_TXCTR_Pos) /**< \brief (PWM_TCR) Transmit Counter Register */ +#define PWM_TCR_TXCTR(value) ((PWM_TCR_TXCTR_Msk & ((value) << PWM_TCR_TXCTR_Pos))) +/* -------- PWM_TNPR : (PWM Offset: 0x118) Transmit Next Pointer Register -------- */ +#define PWM_TNPR_TXNPTR_Pos 0 +#define PWM_TNPR_TXNPTR_Msk (0xffffffffu << PWM_TNPR_TXNPTR_Pos) /**< \brief (PWM_TNPR) Transmit Next Pointer */ +#define PWM_TNPR_TXNPTR(value) ((PWM_TNPR_TXNPTR_Msk & ((value) << PWM_TNPR_TXNPTR_Pos))) +/* -------- PWM_TNCR : (PWM Offset: 0x11C) Transmit Next Counter Register -------- */ +#define PWM_TNCR_TXNCTR_Pos 0 +#define PWM_TNCR_TXNCTR_Msk (0xffffu << PWM_TNCR_TXNCTR_Pos) /**< \brief (PWM_TNCR) Transmit Counter Next */ +#define PWM_TNCR_TXNCTR(value) ((PWM_TNCR_TXNCTR_Msk & ((value) << PWM_TNCR_TXNCTR_Pos))) +/* -------- PWM_PTCR : (PWM Offset: 0x120) Transfer Control Register -------- */ +#define PWM_PTCR_RXTEN (0x1u << 0) /**< \brief (PWM_PTCR) Receiver Transfer Enable */ +#define PWM_PTCR_RXTDIS (0x1u << 1) /**< \brief (PWM_PTCR) Receiver Transfer Disable */ +#define PWM_PTCR_TXTEN (0x1u << 8) /**< \brief (PWM_PTCR) Transmitter Transfer Enable */ +#define PWM_PTCR_TXTDIS (0x1u << 9) /**< \brief (PWM_PTCR) Transmitter Transfer Disable */ +/* -------- PWM_PTSR : (PWM Offset: 0x124) Transfer Status Register -------- */ +#define PWM_PTSR_RXTEN (0x1u << 0) /**< \brief (PWM_PTSR) Receiver Transfer Enable */ +#define PWM_PTSR_TXTEN (0x1u << 8) /**< \brief (PWM_PTSR) Transmitter Transfer Enable */ +/* -------- PWM_CMPV : (PWM Offset: N/A) PWM Comparison 0 Value Register -------- */ +#define PWM_CMPV_CV_Pos 0 +#define PWM_CMPV_CV_Msk (0xffffffu << PWM_CMPV_CV_Pos) /**< \brief (PWM_CMPV) Comparison x Value */ +#define PWM_CMPV_CV(value) ((PWM_CMPV_CV_Msk & ((value) << PWM_CMPV_CV_Pos))) +#define PWM_CMPV_CVM (0x1u << 24) /**< \brief (PWM_CMPV) Comparison x Value Mode */ +/* -------- PWM_CMPVUPD : (PWM Offset: N/A) PWM Comparison 0 Value Update Register -------- */ +#define PWM_CMPVUPD_CVUPD_Pos 0 +#define PWM_CMPVUPD_CVUPD_Msk (0xffffffu << PWM_CMPVUPD_CVUPD_Pos) /**< \brief (PWM_CMPVUPD) Comparison x Value Update */ +#define PWM_CMPVUPD_CVUPD(value) ((PWM_CMPVUPD_CVUPD_Msk & ((value) << PWM_CMPVUPD_CVUPD_Pos))) +#define PWM_CMPVUPD_CVMUPD (0x1u << 24) /**< \brief (PWM_CMPVUPD) Comparison x Value Mode Update */ +/* -------- PWM_CMPM : (PWM Offset: N/A) PWM Comparison 0 Mode Register -------- */ +#define PWM_CMPM_CEN (0x1u << 0) /**< \brief (PWM_CMPM) Comparison x Enable */ +#define PWM_CMPM_CTR_Pos 4 +#define PWM_CMPM_CTR_Msk (0xfu << PWM_CMPM_CTR_Pos) /**< \brief (PWM_CMPM) Comparison x Trigger */ +#define PWM_CMPM_CTR(value) ((PWM_CMPM_CTR_Msk & ((value) << PWM_CMPM_CTR_Pos))) +#define PWM_CMPM_CPR_Pos 8 +#define PWM_CMPM_CPR_Msk (0xfu << PWM_CMPM_CPR_Pos) /**< \brief (PWM_CMPM) Comparison x Period */ +#define PWM_CMPM_CPR(value) ((PWM_CMPM_CPR_Msk & ((value) << PWM_CMPM_CPR_Pos))) +#define PWM_CMPM_CPRCNT_Pos 12 +#define PWM_CMPM_CPRCNT_Msk (0xfu << PWM_CMPM_CPRCNT_Pos) /**< \brief (PWM_CMPM) Comparison x Period Counter */ +#define PWM_CMPM_CPRCNT(value) ((PWM_CMPM_CPRCNT_Msk & ((value) << PWM_CMPM_CPRCNT_Pos))) +#define PWM_CMPM_CUPR_Pos 16 +#define PWM_CMPM_CUPR_Msk (0xfu << PWM_CMPM_CUPR_Pos) /**< \brief (PWM_CMPM) Comparison x Update Period */ +#define PWM_CMPM_CUPR(value) ((PWM_CMPM_CUPR_Msk & ((value) << PWM_CMPM_CUPR_Pos))) +#define PWM_CMPM_CUPRCNT_Pos 20 +#define PWM_CMPM_CUPRCNT_Msk (0xfu << PWM_CMPM_CUPRCNT_Pos) /**< \brief (PWM_CMPM) Comparison x Update Period Counter */ +#define PWM_CMPM_CUPRCNT(value) ((PWM_CMPM_CUPRCNT_Msk & ((value) << PWM_CMPM_CUPRCNT_Pos))) +/* -------- PWM_CMPMUPD : (PWM Offset: N/A) PWM Comparison 0 Mode Update Register -------- */ +#define PWM_CMPMUPD_CENUPD (0x1u << 0) /**< \brief (PWM_CMPMUPD) Comparison x Enable Update */ +#define PWM_CMPMUPD_CTRUPD_Pos 4 +#define PWM_CMPMUPD_CTRUPD_Msk (0xfu << PWM_CMPMUPD_CTRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Trigger Update */ +#define PWM_CMPMUPD_CTRUPD(value) ((PWM_CMPMUPD_CTRUPD_Msk & ((value) << PWM_CMPMUPD_CTRUPD_Pos))) +#define PWM_CMPMUPD_CPRUPD_Pos 8 +#define PWM_CMPMUPD_CPRUPD_Msk (0xfu << PWM_CMPMUPD_CPRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Period Update */ +#define PWM_CMPMUPD_CPRUPD(value) ((PWM_CMPMUPD_CPRUPD_Msk & ((value) << PWM_CMPMUPD_CPRUPD_Pos))) +#define PWM_CMPMUPD_CUPRUPD_Pos 16 +#define PWM_CMPMUPD_CUPRUPD_Msk (0xfu << PWM_CMPMUPD_CUPRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Update Period Update */ +#define PWM_CMPMUPD_CUPRUPD(value) ((PWM_CMPMUPD_CUPRUPD_Msk & ((value) << PWM_CMPMUPD_CUPRUPD_Pos))) +/* -------- PWM_CMR : (PWM Offset: N/A) PWM Channel Mode Register -------- */ +#define PWM_CMR_CPRE_Pos 0 +#define PWM_CMR_CPRE_Msk (0xfu << PWM_CMR_CPRE_Pos) /**< \brief (PWM_CMR) Channel Pre-scaler */ +#define PWM_CMR_CPRE_MCK (0x0u << 0) /**< \brief (PWM_CMR) Master clock */ +#define PWM_CMR_CPRE_MCK_DIV_2 (0x1u << 0) /**< \brief (PWM_CMR) Master clock/2 */ +#define PWM_CMR_CPRE_MCK_DIV_4 (0x2u << 0) /**< \brief (PWM_CMR) Master clock/4 */ +#define PWM_CMR_CPRE_MCK_DIV_8 (0x3u << 0) /**< \brief (PWM_CMR) Master clock/8 */ +#define PWM_CMR_CPRE_MCK_DIV_16 (0x4u << 0) /**< \brief (PWM_CMR) Master clock/16 */ +#define PWM_CMR_CPRE_MCK_DIV_32 (0x5u << 0) /**< \brief (PWM_CMR) Master clock/32 */ +#define PWM_CMR_CPRE_MCK_DIV_64 (0x6u << 0) /**< \brief (PWM_CMR) Master clock/64 */ +#define PWM_CMR_CPRE_MCK_DIV_128 (0x7u << 0) /**< \brief (PWM_CMR) Master clock/128 */ +#define PWM_CMR_CPRE_MCK_DIV_256 (0x8u << 0) /**< \brief (PWM_CMR) Master clock/256 */ +#define PWM_CMR_CPRE_MCK_DIV_512 (0x9u << 0) /**< \brief (PWM_CMR) Master clock/512 */ +#define PWM_CMR_CPRE_MCK_DIV_1024 (0xAu << 0) /**< \brief (PWM_CMR) Master clock/1024 */ +#define PWM_CMR_CPRE_CLKA (0xBu << 0) /**< \brief (PWM_CMR) Clock A */ +#define PWM_CMR_CPRE_CLKB (0xCu << 0) /**< \brief (PWM_CMR) Clock B */ +#define PWM_CMR_CALG (0x1u << 8) /**< \brief (PWM_CMR) Channel Alignment */ +#define PWM_CMR_CPOL (0x1u << 9) /**< \brief (PWM_CMR) Channel Polarity */ +#define PWM_CMR_CES (0x1u << 10) /**< \brief (PWM_CMR) Counter Event Selection */ +#define PWM_CMR_UPDS (0x1u << 11) /**< \brief (PWM_CMR) Update Selection */ +#define PWM_CMR_DTE (0x1u << 16) /**< \brief (PWM_CMR) Dead-Time Generator Enable */ +#define PWM_CMR_DTHI (0x1u << 17) /**< \brief (PWM_CMR) Dead-Time PWMHx Output Inverted */ +#define PWM_CMR_DTLI (0x1u << 18) /**< \brief (PWM_CMR) Dead-Time PWMLx Output Inverted */ +/* -------- PWM_CDTY : (PWM Offset: N/A) PWM Channel Duty Cycle Register -------- */ +#define PWM_CDTY_CDTY_Pos 0 +#define PWM_CDTY_CDTY_Msk (0xffffffu << PWM_CDTY_CDTY_Pos) /**< \brief (PWM_CDTY) Channel Duty-Cycle */ +#define PWM_CDTY_CDTY(value) ((PWM_CDTY_CDTY_Msk & ((value) << PWM_CDTY_CDTY_Pos))) +/* -------- PWM_CDTYUPD : (PWM Offset: N/A) PWM Channel Duty Cycle Update Register -------- */ +#define PWM_CDTYUPD_CDTYUPD_Pos 0 +#define PWM_CDTYUPD_CDTYUPD_Msk (0xffffffu << PWM_CDTYUPD_CDTYUPD_Pos) /**< \brief (PWM_CDTYUPD) Channel Duty-Cycle Update */ +#define PWM_CDTYUPD_CDTYUPD(value) ((PWM_CDTYUPD_CDTYUPD_Msk & ((value) << PWM_CDTYUPD_CDTYUPD_Pos))) +/* -------- PWM_CPRD : (PWM Offset: N/A) PWM Channel Period Register -------- */ +#define PWM_CPRD_CPRD_Pos 0 +#define PWM_CPRD_CPRD_Msk (0xffffffu << PWM_CPRD_CPRD_Pos) /**< \brief (PWM_CPRD) Channel Period */ +#define PWM_CPRD_CPRD(value) ((PWM_CPRD_CPRD_Msk & ((value) << PWM_CPRD_CPRD_Pos))) +/* -------- PWM_CPRDUPD : (PWM Offset: N/A) PWM Channel Period Update Register -------- */ +#define PWM_CPRDUPD_CPRDUPD_Pos 0 +#define PWM_CPRDUPD_CPRDUPD_Msk (0xffffffu << PWM_CPRDUPD_CPRDUPD_Pos) /**< \brief (PWM_CPRDUPD) Channel Period Update */ +#define PWM_CPRDUPD_CPRDUPD(value) ((PWM_CPRDUPD_CPRDUPD_Msk & ((value) << PWM_CPRDUPD_CPRDUPD_Pos))) +/* -------- PWM_CCNT : (PWM Offset: N/A) PWM Channel Counter Register -------- */ +#define PWM_CCNT_CNT_Pos 0 +#define PWM_CCNT_CNT_Msk (0xffffffu << PWM_CCNT_CNT_Pos) /**< \brief (PWM_CCNT) Channel Counter Register */ +/* -------- PWM_DT : (PWM Offset: N/A) PWM Channel Dead Time Register -------- */ +#define PWM_DT_DTH_Pos 0 +#define PWM_DT_DTH_Msk (0xffffu << PWM_DT_DTH_Pos) /**< \brief (PWM_DT) Dead-Time Value for PWMHx Output */ +#define PWM_DT_DTH(value) ((PWM_DT_DTH_Msk & ((value) << PWM_DT_DTH_Pos))) +#define PWM_DT_DTL_Pos 16 +#define PWM_DT_DTL_Msk (0xffffu << PWM_DT_DTL_Pos) /**< \brief (PWM_DT) Dead-Time Value for PWMLx Output */ +#define PWM_DT_DTL(value) ((PWM_DT_DTL_Msk & ((value) << PWM_DT_DTL_Pos))) +/* -------- PWM_DTUPD : (PWM Offset: N/A) PWM Channel Dead Time Update Register -------- */ +#define PWM_DTUPD_DTHUPD_Pos 0 +#define PWM_DTUPD_DTHUPD_Msk (0xffffu << PWM_DTUPD_DTHUPD_Pos) /**< \brief (PWM_DTUPD) Dead-Time Value Update for PWMHx Output */ +#define PWM_DTUPD_DTHUPD(value) ((PWM_DTUPD_DTHUPD_Msk & ((value) << PWM_DTUPD_DTHUPD_Pos))) +#define PWM_DTUPD_DTLUPD_Pos 16 +#define PWM_DTUPD_DTLUPD_Msk (0xffffu << PWM_DTUPD_DTLUPD_Pos) /**< \brief (PWM_DTUPD) Dead-Time Value Update for PWMLx Output */ +#define PWM_DTUPD_DTLUPD(value) ((PWM_DTUPD_DTLUPD_Msk & ((value) << PWM_DTUPD_DTLUPD_Pos))) +/* -------- PWM_CMUPD : (PWM Offset: N/A) PWM Channel Mode Update Register -------- */ +#define PWM_CMUPD_CPOLUP (0x1u << 9) /**< \brief (PWM_CMUPD) Channel Polarity Update */ +#define PWM_CMUPD_CPOLINVUP (0x1u << 13) /**< \brief (PWM_CMUPD) Channel Polarity Inversion Update */ +/* -------- PWM_CAE : (PWM Offset: N/A) PWM Channel Additional Edge Register -------- */ +#define PWM_CAE_ADEDGV_Pos 0 +#define PWM_CAE_ADEDGV_Msk (0xffffffu << PWM_CAE_ADEDGV_Pos) /**< \brief (PWM_CAE) Channel Additional Edge Value */ +#define PWM_CAE_ADEDGV(value) ((PWM_CAE_ADEDGV_Msk & ((value) << PWM_CAE_ADEDGV_Pos))) +#define PWM_CAE_ADEDGM_Pos 24 +#define PWM_CAE_ADEDGM_Msk (0x3u << PWM_CAE_ADEDGM_Pos) /**< \brief (PWM_CAE) Channel Additional Edge Mode */ +#define PWM_CAE_ADEDGM_INC (0x0u << 24) /**< \brief (PWM_CAE) The additional edge of the channel x output waveform occurs when CCNTx reaches ADEDGV and the counter of the channel x is incrementing. */ +#define PWM_CAE_ADEDGM_DEC (0x1u << 24) /**< \brief (PWM_CAE) The additional edge of the channel x output waveform occurs when CCNTx reaches ADEDGV and the counter of the channel x is incrementing. */ +#define PWM_CAE_ADEDGM_BOTH (0x2u << 24) /**< \brief (PWM_CAE) The additional edge of the channel x output waveform occurs when CCNTx reaches ADEDGV, whether the counter is incrementing or not. */ +/* -------- PWM_CAEUPD : (PWM Offset: N/A) PWM Channel Additional Edge Update Register -------- */ +#define PWM_CAEUPD_ADEDGVUP_Pos 0 +#define PWM_CAEUPD_ADEDGVUP_Msk (0xffffffu << PWM_CAEUPD_ADEDGVUP_Pos) /**< \brief (PWM_CAEUPD) Channel Additional Edge Value Update */ +#define PWM_CAEUPD_ADEDGVUP(value) ((PWM_CAEUPD_ADEDGVUP_Msk & ((value) << PWM_CAEUPD_ADEDGVUP_Pos))) +#define PWM_CAEUPD_ADEDGMUP_Pos 24 +#define PWM_CAEUPD_ADEDGMUP_Msk (0x3u << PWM_CAEUPD_ADEDGMUP_Pos) /**< \brief (PWM_CAEUPD) Channel Additional Edge Mode Update */ +#define PWM_CAEUPD_ADEDGMUP_INC (0x0u << 24) /**< \brief (PWM_CAEUPD) The additional edge of the channel x output waveform occurs when CCNTx reaches ADEDGVUP and the counter of the channel x is incrementing. */ +#define PWM_CAEUPD_ADEDGMUP_DEC (0x1u << 24) /**< \brief (PWM_CAEUPD) The additional edge of the channel x output waveform occurs when CCNTx reaches ADEDGVUP and the counter of the channel x is incrementing. */ +#define PWM_CAEUPD_ADEDGMUP_BOTH (0x2u << 24) /**< \brief (PWM_CAEUPD) The additional edge of the channel x output waveform occurs when CCNTx reaches ADEDGVUP, whether the counter is incrementing or not. */ + +/*@}*/ + + +#endif /* _SAM4E_PWM_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rstc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rstc.h new file mode 100644 index 000000000..abc1b6350 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rstc.h @@ -0,0 +1,85 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_RSTC_COMPONENT_ +#define _SAM4E_RSTC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Reset Controller */ +/* ============================================================================= */ +/** \addtogroup SAM4E_RSTC Reset Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Rstc hardware registers */ +typedef struct { + WoReg RSTC_CR; /**< \brief (Rstc Offset: 0x00) Control Register */ + RoReg RSTC_SR; /**< \brief (Rstc Offset: 0x04) Status Register */ + RwReg RSTC_MR; /**< \brief (Rstc Offset: 0x08) Mode Register */ +} Rstc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- RSTC_CR : (RSTC Offset: 0x00) Control Register -------- */ +#define RSTC_CR_PROCRST (0x1u << 0) /**< \brief (RSTC_CR) Processor Reset */ +#define RSTC_CR_PERRST (0x1u << 2) /**< \brief (RSTC_CR) Peripheral Reset */ +#define RSTC_CR_EXTRST (0x1u << 3) /**< \brief (RSTC_CR) External Reset */ +#define RSTC_CR_KEY_Pos 24 +#define RSTC_CR_KEY_Msk (0xffu << RSTC_CR_KEY_Pos) /**< \brief (RSTC_CR) System Reset Key */ +#define RSTC_CR_KEY(value) ((RSTC_CR_KEY_Msk & ((value) << RSTC_CR_KEY_Pos))) +/* -------- RSTC_SR : (RSTC Offset: 0x04) Status Register -------- */ +#define RSTC_SR_URSTS (0x1u << 0) /**< \brief (RSTC_SR) User Reset Status */ +#define RSTC_SR_RSTTYP_Pos 8 +#define RSTC_SR_RSTTYP_Msk (0x7u << RSTC_SR_RSTTYP_Pos) /**< \brief (RSTC_SR) Reset Type */ +#define RSTC_SR_NRSTL (0x1u << 16) /**< \brief (RSTC_SR) NRST Pin Level */ +#define RSTC_SR_SRCMP (0x1u << 17) /**< \brief (RSTC_SR) Software Reset Command in Progress */ +/* -------- RSTC_MR : (RSTC Offset: 0x08) Mode Register -------- */ +#define RSTC_MR_URSTEN (0x1u << 0) /**< \brief (RSTC_MR) User Reset Enable */ +#define RSTC_MR_URSTIEN (0x1u << 4) /**< \brief (RSTC_MR) User Reset Interrupt Enable */ +#define RSTC_MR_ERSTL_Pos 8 +#define RSTC_MR_ERSTL_Msk (0xfu << RSTC_MR_ERSTL_Pos) /**< \brief (RSTC_MR) External Reset Length */ +#define RSTC_MR_ERSTL(value) ((RSTC_MR_ERSTL_Msk & ((value) << RSTC_MR_ERSTL_Pos))) +#define RSTC_MR_KEY_Pos 24 +#define RSTC_MR_KEY_Msk (0xffu << RSTC_MR_KEY_Pos) /**< \brief (RSTC_MR) Password */ +#define RSTC_MR_KEY(value) ((RSTC_MR_KEY_Msk & ((value) << RSTC_MR_KEY_Pos))) + +/*@}*/ + + +#endif /* _SAM4E_RSTC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rswdt.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rswdt.h new file mode 100644 index 000000000..2f728db10 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rswdt.h @@ -0,0 +1,84 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_RSWDT_COMPONENT_ +#define _SAM4E_RSWDT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Reinforced Safety Watchdog Timer */ +/* ============================================================================= */ +/** \addtogroup SAM4E_RSWDT Reinforced Safety Watchdog Timer */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Rswdt hardware registers */ +typedef struct { + WoReg RSWDT_CR; /**< \brief (Rswdt Offset: 0x00) Control Register */ + RwReg RSWDT_MR; /**< \brief (Rswdt Offset: 0x04) Mode Register */ + RoReg RSWDT_SR; /**< \brief (Rswdt Offset: 0x08) Status Register */ +} Rswdt; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- RSWDT_CR : (RSWDT Offset: 0x00) Control Register -------- */ +#define RSWDT_CR_WDRSTT (0x1u << 0) /**< \brief (RSWDT_CR) Watchdog Restart */ +#define RSWDT_CR_KEY_Pos 24 +#define RSWDT_CR_KEY_Msk (0xffu << RSWDT_CR_KEY_Pos) /**< \brief (RSWDT_CR) Password */ +#define RSWDT_CR_KEY(value) ((RSWDT_CR_KEY_Msk & ((value) << RSWDT_CR_KEY_Pos))) +/* -------- RSWDT_MR : (RSWDT Offset: 0x04) Mode Register -------- */ +#define RSWDT_MR_WDV_Pos 0 +#define RSWDT_MR_WDV_Msk (0xfffu << RSWDT_MR_WDV_Pos) /**< \brief (RSWDT_MR) Watchdog Counter Value */ +#define RSWDT_MR_WDV(value) ((RSWDT_MR_WDV_Msk & ((value) << RSWDT_MR_WDV_Pos))) +#define RSWDT_MR_WDFIEN (0x1u << 12) /**< \brief (RSWDT_MR) Watchdog Fault Interrupt Enable */ +#define RSWDT_MR_WDRSTEN (0x1u << 13) /**< \brief (RSWDT_MR) Watchdog Reset Enable */ +#define RSWDT_MR_WDRPROC (0x1u << 14) /**< \brief (RSWDT_MR) Watchdog Reset Processor */ +#define RSWDT_MR_WDDIS (0x1u << 15) /**< \brief (RSWDT_MR) Watchdog Disable */ +#define RSWDT_MR_WDD_Pos 16 +#define RSWDT_MR_WDD_Msk (0xfffu << RSWDT_MR_WDD_Pos) /**< \brief (RSWDT_MR) Watchdog Delta Value */ +#define RSWDT_MR_WDD(value) ((RSWDT_MR_WDD_Msk & ((value) << RSWDT_MR_WDD_Pos))) +#define RSWDT_MR_WDDBGHLT (0x1u << 28) /**< \brief (RSWDT_MR) Watchdog Debug Halt */ +#define RSWDT_MR_WDIDLEHLT (0x1u << 29) /**< \brief (RSWDT_MR) Watchdog Idle Halt */ +/* -------- RSWDT_SR : (RSWDT Offset: 0x08) Status Register -------- */ +#define RSWDT_SR_WDUNF (0x1u << 0) /**< \brief (RSWDT_SR) Watchdog Underflow */ +#define RSWDT_SR_WDERR (0x1u << 1) /**< \brief (RSWDT_SR) Watchdog Error */ + +/*@}*/ + + +#endif /* _SAM4E_RSWDT_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rtc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rtc.h new file mode 100644 index 000000000..94d9303fa --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rtc.h @@ -0,0 +1,231 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_RTC_COMPONENT_ +#define _SAM4E_RTC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Real-time Clock */ +/* ============================================================================= */ +/** \addtogroup SAM4E_RTC Real-time Clock */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Rtc hardware registers */ +typedef struct { + RwReg RTC_CR; /**< \brief (Rtc Offset: 0x00) Control Register */ + RwReg RTC_MR; /**< \brief (Rtc Offset: 0x04) Mode Register */ + RwReg RTC_TIMR; /**< \brief (Rtc Offset: 0x08) Time Register */ + RwReg RTC_CALR; /**< \brief (Rtc Offset: 0x0C) Calendar Register */ + RwReg RTC_TIMALR; /**< \brief (Rtc Offset: 0x10) Time Alarm Register */ + RwReg RTC_CALALR; /**< \brief (Rtc Offset: 0x14) Calendar Alarm Register */ + RoReg RTC_SR; /**< \brief (Rtc Offset: 0x18) Status Register */ + WoReg RTC_SCCR; /**< \brief (Rtc Offset: 0x1C) Status Clear Command Register */ + WoReg RTC_IER; /**< \brief (Rtc Offset: 0x20) Interrupt Enable Register */ + WoReg RTC_IDR; /**< \brief (Rtc Offset: 0x24) Interrupt Disable Register */ + RoReg RTC_IMR; /**< \brief (Rtc Offset: 0x28) Interrupt Mask Register */ + RoReg RTC_VER; /**< \brief (Rtc Offset: 0x2C) Valid Entry Register */ +} Rtc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- RTC_CR : (RTC Offset: 0x00) Control Register -------- */ +#define RTC_CR_UPDTIM (0x1u << 0) /**< \brief (RTC_CR) Update Request Time Register */ +#define RTC_CR_UPDCAL (0x1u << 1) /**< \brief (RTC_CR) Update Request Calendar Register */ +#define RTC_CR_TIMEVSEL_Pos 8 +#define RTC_CR_TIMEVSEL_Msk (0x3u << RTC_CR_TIMEVSEL_Pos) /**< \brief (RTC_CR) Time Event Selection */ +#define RTC_CR_TIMEVSEL_MINUTE (0x0u << 8) /**< \brief (RTC_CR) Minute change */ +#define RTC_CR_TIMEVSEL_HOUR (0x1u << 8) /**< \brief (RTC_CR) Hour change */ +#define RTC_CR_TIMEVSEL_MIDNIGHT (0x2u << 8) /**< \brief (RTC_CR) Every day at midnight */ +#define RTC_CR_TIMEVSEL_NOON (0x3u << 8) /**< \brief (RTC_CR) Every day at noon */ +#define RTC_CR_CALEVSEL_Pos 16 +#define RTC_CR_CALEVSEL_Msk (0x3u << RTC_CR_CALEVSEL_Pos) /**< \brief (RTC_CR) Calendar Event Selection */ +#define RTC_CR_CALEVSEL_WEEK (0x0u << 16) /**< \brief (RTC_CR) Week change (every Monday at time 00:00:00) */ +#define RTC_CR_CALEVSEL_MONTH (0x1u << 16) /**< \brief (RTC_CR) Month change (every 01 of each month at time 00:00:00) */ +#define RTC_CR_CALEVSEL_YEAR (0x2u << 16) /**< \brief (RTC_CR) Year change (every January 1 at time 00:00:00) */ +/* -------- RTC_MR : (RTC Offset: 0x04) Mode Register -------- */ +#define RTC_MR_HRMOD (0x1u << 0) /**< \brief (RTC_MR) 12-/24-hour Mode */ +#define RTC_MR_PERSIAN (0x1u << 1) /**< \brief (RTC_MR) PERSIAN Calendar */ +#define RTC_MR_NEGPPM (0x1u << 4) /**< \brief (RTC_MR) NEGative PPM Correction */ +#define RTC_MR_CORRECTION_Pos 8 +#define RTC_MR_CORRECTION_Msk (0x7fu << RTC_MR_CORRECTION_Pos) /**< \brief (RTC_MR) Slow Clock Correction */ +#define RTC_MR_CORRECTION(value) ((RTC_MR_CORRECTION_Msk & ((value) << RTC_MR_CORRECTION_Pos))) +#define RTC_MR_HIGHPPM (0x1u << 15) /**< \brief (RTC_MR) HIGH PPM Correction */ +#define RTC_MR_OUT0_Pos 16 +#define RTC_MR_OUT0_Msk (0x7u << RTC_MR_OUT0_Pos) /**< \brief (RTC_MR) RTCOUT0 OutputSource Selection */ +#define RTC_MR_OUT0_NO_WAVE (0x0u << 16) /**< \brief (RTC_MR) no waveform, stuck at '0' */ +#define RTC_MR_OUT0_FREQ1HZ (0x1u << 16) /**< \brief (RTC_MR) 1 Hz square wave */ +#define RTC_MR_OUT0_FREQ32HZ (0x2u << 16) /**< \brief (RTC_MR) 32 Hz square wave */ +#define RTC_MR_OUT0_FREQ64HZ (0x3u << 16) /**< \brief (RTC_MR) 64 Hz square wave */ +#define RTC_MR_OUT0_FREQ512HZ (0x4u << 16) /**< \brief (RTC_MR) 512 Hz square wave */ +#define RTC_MR_OUT0_ALARM_TOGGLE (0x5u << 16) /**< \brief (RTC_MR) output toggles when alarm flag rises */ +#define RTC_MR_OUT0_ALARM_FLAG (0x6u << 16) /**< \brief (RTC_MR) output is a copy of the alarm flag */ +#define RTC_MR_OUT0_PROG_PULSE (0x7u << 16) /**< \brief (RTC_MR) duty cycle programmable pulse */ +#define RTC_MR_OUT1_Pos 20 +#define RTC_MR_OUT1_Msk (0x7u << RTC_MR_OUT1_Pos) /**< \brief (RTC_MR) RTCOUT1 Output Source Selection */ +#define RTC_MR_OUT1_NO_WAVE (0x0u << 20) /**< \brief (RTC_MR) no waveform, stuck at '0' */ +#define RTC_MR_OUT1_FREQ1HZ (0x1u << 20) /**< \brief (RTC_MR) 1 Hz square wave */ +#define RTC_MR_OUT1_FREQ32HZ (0x2u << 20) /**< \brief (RTC_MR) 32 Hz square wave */ +#define RTC_MR_OUT1_FREQ64HZ (0x3u << 20) /**< \brief (RTC_MR) 64 Hz square wave */ +#define RTC_MR_OUT1_FREQ512HZ (0x4u << 20) /**< \brief (RTC_MR) 512 Hz square wave */ +#define RTC_MR_OUT1_ALARM_TOGGLE (0x5u << 20) /**< \brief (RTC_MR) output toggles when alarm flag rises */ +#define RTC_MR_OUT1_ALARM_FLAG (0x6u << 20) /**< \brief (RTC_MR) output is a copy of the alarm flag */ +#define RTC_MR_OUT1_PROG_PULSE (0x7u << 20) /**< \brief (RTC_MR) duty cycle programmable pulse */ +#define RTC_MR_THIGH_Pos 24 +#define RTC_MR_THIGH_Msk (0x7u << RTC_MR_THIGH_Pos) /**< \brief (RTC_MR) High Duration of the Output Pulse */ +#define RTC_MR_THIGH_H_31MS (0x0u << 24) /**< \brief (RTC_MR) 31.2 ms */ +#define RTC_MR_THIGH_H_16MS (0x1u << 24) /**< \brief (RTC_MR) 15.6 ms */ +#define RTC_MR_THIGH_H_4MS (0x2u << 24) /**< \brief (RTC_MR) 3.91 Mms */ +#define RTC_MR_THIGH_H_976US (0x3u << 24) /**< \brief (RTC_MR) 976 us */ +#define RTC_MR_THIGH_H_488US (0x4u << 24) /**< \brief (RTC_MR) 488 us */ +#define RTC_MR_THIGH_H_122US (0x5u << 24) /**< \brief (RTC_MR) 122 us */ +#define RTC_MR_THIGH_H_30US (0x6u << 24) /**< \brief (RTC_MR) 30.5 us */ +#define RTC_MR_THIGH_H_15US (0x7u << 24) /**< \brief (RTC_MR) 15.2 us */ +#define RTC_MR_TPERIOD_Pos 28 +#define RTC_MR_TPERIOD_Msk (0x3u << RTC_MR_TPERIOD_Pos) /**< \brief (RTC_MR) Period of the Output Pulse */ +#define RTC_MR_TPERIOD_P_1S (0x0u << 28) /**< \brief (RTC_MR) 1 second */ +#define RTC_MR_TPERIOD_P_500MS (0x1u << 28) /**< \brief (RTC_MR) 500 ms */ +#define RTC_MR_TPERIOD_P_250MS (0x2u << 28) /**< \brief (RTC_MR) 250 ms */ +#define RTC_MR_TPERIOD_P_125MS (0x3u << 28) /**< \brief (RTC_MR) 125 ms */ +/* -------- RTC_TIMR : (RTC Offset: 0x08) Time Register -------- */ +#define RTC_TIMR_SEC_Pos 0 +#define RTC_TIMR_SEC_Msk (0x7fu << RTC_TIMR_SEC_Pos) /**< \brief (RTC_TIMR) Current Second */ +#define RTC_TIMR_SEC(value) ((RTC_TIMR_SEC_Msk & ((value) << RTC_TIMR_SEC_Pos))) +#define RTC_TIMR_MIN_Pos 8 +#define RTC_TIMR_MIN_Msk (0x7fu << RTC_TIMR_MIN_Pos) /**< \brief (RTC_TIMR) Current Minute */ +#define RTC_TIMR_MIN(value) ((RTC_TIMR_MIN_Msk & ((value) << RTC_TIMR_MIN_Pos))) +#define RTC_TIMR_HOUR_Pos 16 +#define RTC_TIMR_HOUR_Msk (0x3fu << RTC_TIMR_HOUR_Pos) /**< \brief (RTC_TIMR) Current Hour */ +#define RTC_TIMR_HOUR(value) ((RTC_TIMR_HOUR_Msk & ((value) << RTC_TIMR_HOUR_Pos))) +#define RTC_TIMR_AMPM (0x1u << 22) /**< \brief (RTC_TIMR) Ante Meridiem Post Meridiem Indicator */ +/* -------- RTC_CALR : (RTC Offset: 0x0C) Calendar Register -------- */ +#define RTC_CALR_CENT_Pos 0 +#define RTC_CALR_CENT_Msk (0x7fu << RTC_CALR_CENT_Pos) /**< \brief (RTC_CALR) Current Century */ +#define RTC_CALR_CENT(value) ((RTC_CALR_CENT_Msk & ((value) << RTC_CALR_CENT_Pos))) +#define RTC_CALR_YEAR_Pos 8 +#define RTC_CALR_YEAR_Msk (0xffu << RTC_CALR_YEAR_Pos) /**< \brief (RTC_CALR) Current Year */ +#define RTC_CALR_YEAR(value) ((RTC_CALR_YEAR_Msk & ((value) << RTC_CALR_YEAR_Pos))) +#define RTC_CALR_MONTH_Pos 16 +#define RTC_CALR_MONTH_Msk (0x1fu << RTC_CALR_MONTH_Pos) /**< \brief (RTC_CALR) Current Month */ +#define RTC_CALR_MONTH(value) ((RTC_CALR_MONTH_Msk & ((value) << RTC_CALR_MONTH_Pos))) +#define RTC_CALR_DAY_Pos 21 +#define RTC_CALR_DAY_Msk (0x7u << RTC_CALR_DAY_Pos) /**< \brief (RTC_CALR) Current Day in Current Week */ +#define RTC_CALR_DAY(value) ((RTC_CALR_DAY_Msk & ((value) << RTC_CALR_DAY_Pos))) +#define RTC_CALR_DATE_Pos 24 +#define RTC_CALR_DATE_Msk (0x3fu << RTC_CALR_DATE_Pos) /**< \brief (RTC_CALR) Current Day in Current Month */ +#define RTC_CALR_DATE(value) ((RTC_CALR_DATE_Msk & ((value) << RTC_CALR_DATE_Pos))) +/* -------- RTC_TIMALR : (RTC Offset: 0x10) Time Alarm Register -------- */ +#define RTC_TIMALR_SEC_Pos 0 +#define RTC_TIMALR_SEC_Msk (0x7fu << RTC_TIMALR_SEC_Pos) /**< \brief (RTC_TIMALR) Second Alarm */ +#define RTC_TIMALR_SEC(value) ((RTC_TIMALR_SEC_Msk & ((value) << RTC_TIMALR_SEC_Pos))) +#define RTC_TIMALR_SECEN (0x1u << 7) /**< \brief (RTC_TIMALR) Second Alarm Enable */ +#define RTC_TIMALR_MIN_Pos 8 +#define RTC_TIMALR_MIN_Msk (0x7fu << RTC_TIMALR_MIN_Pos) /**< \brief (RTC_TIMALR) Minute Alarm */ +#define RTC_TIMALR_MIN(value) ((RTC_TIMALR_MIN_Msk & ((value) << RTC_TIMALR_MIN_Pos))) +#define RTC_TIMALR_MINEN (0x1u << 15) /**< \brief (RTC_TIMALR) Minute Alarm Enable */ +#define RTC_TIMALR_HOUR_Pos 16 +#define RTC_TIMALR_HOUR_Msk (0x3fu << RTC_TIMALR_HOUR_Pos) /**< \brief (RTC_TIMALR) Hour Alarm */ +#define RTC_TIMALR_HOUR(value) ((RTC_TIMALR_HOUR_Msk & ((value) << RTC_TIMALR_HOUR_Pos))) +#define RTC_TIMALR_AMPM (0x1u << 22) /**< \brief (RTC_TIMALR) AM/PM Indicator */ +#define RTC_TIMALR_HOUREN (0x1u << 23) /**< \brief (RTC_TIMALR) Hour Alarm Enable */ +/* -------- RTC_CALALR : (RTC Offset: 0x14) Calendar Alarm Register -------- */ +#define RTC_CALALR_MONTH_Pos 16 +#define RTC_CALALR_MONTH_Msk (0x1fu << RTC_CALALR_MONTH_Pos) /**< \brief (RTC_CALALR) Month Alarm */ +#define RTC_CALALR_MONTH(value) ((RTC_CALALR_MONTH_Msk & ((value) << RTC_CALALR_MONTH_Pos))) +#define RTC_CALALR_MTHEN (0x1u << 23) /**< \brief (RTC_CALALR) Month Alarm Enable */ +#define RTC_CALALR_DATE_Pos 24 +#define RTC_CALALR_DATE_Msk (0x3fu << RTC_CALALR_DATE_Pos) /**< \brief (RTC_CALALR) Date Alarm */ +#define RTC_CALALR_DATE(value) ((RTC_CALALR_DATE_Msk & ((value) << RTC_CALALR_DATE_Pos))) +#define RTC_CALALR_DATEEN (0x1u << 31) /**< \brief (RTC_CALALR) Date Alarm Enable */ +/* -------- RTC_SR : (RTC Offset: 0x18) Status Register -------- */ +#define RTC_SR_ACKUPD (0x1u << 0) /**< \brief (RTC_SR) Acknowledge for Update */ +#define RTC_SR_ACKUPD_FREERUN (0x0u << 0) /**< \brief (RTC_SR) Time and calendar registers cannot be updated. */ +#define RTC_SR_ACKUPD_UPDATE (0x1u << 0) /**< \brief (RTC_SR) Time and calendar registers can be updated. */ +#define RTC_SR_ALARM (0x1u << 1) /**< \brief (RTC_SR) Alarm Flag */ +#define RTC_SR_ALARM_NO_ALARMEVENT (0x0u << 1) /**< \brief (RTC_SR) No alarm matching condition occurred. */ +#define RTC_SR_ALARM_ALARMEVENT (0x1u << 1) /**< \brief (RTC_SR) An alarm matching condition has occurred. */ +#define RTC_SR_SEC (0x1u << 2) /**< \brief (RTC_SR) Second Event */ +#define RTC_SR_SEC_NO_SECEVENT (0x0u << 2) /**< \brief (RTC_SR) No second event has occurred since the last clear. */ +#define RTC_SR_SEC_SECEVENT (0x1u << 2) /**< \brief (RTC_SR) At least one second event has occurred since the last clear. */ +#define RTC_SR_TIMEV (0x1u << 3) /**< \brief (RTC_SR) Time Event */ +#define RTC_SR_TIMEV_NO_TIMEVENT (0x0u << 3) /**< \brief (RTC_SR) No time event has occurred since the last clear. */ +#define RTC_SR_TIMEV_TIMEVENT (0x1u << 3) /**< \brief (RTC_SR) At least one time event has occurred since the last clear. */ +#define RTC_SR_CALEV (0x1u << 4) /**< \brief (RTC_SR) Calendar Event */ +#define RTC_SR_CALEV_NO_CALEVENT (0x0u << 4) /**< \brief (RTC_SR) No calendar event has occurred since the last clear. */ +#define RTC_SR_CALEV_CALEVENT (0x1u << 4) /**< \brief (RTC_SR) At least one calendar event has occurred since the last clear. */ +#define RTC_SR_TDERR (0x1u << 5) /**< \brief (RTC_SR) Time and/or Date Free Running Error */ +#define RTC_SR_TDERR_CORRECT (0x0u << 5) /**< \brief (RTC_SR) The internal free running counters are carrying valid values since the last read of RTC_SR. */ +#define RTC_SR_TDERR_ERR_TIMEDATE (0x1u << 5) /**< \brief (RTC_SR) The internal free running counters have been corrupted (invalid date or time, non-BCD values) since the last read and/or they are still invalid. */ +/* -------- RTC_SCCR : (RTC Offset: 0x1C) Status Clear Command Register -------- */ +#define RTC_SCCR_ACKCLR (0x1u << 0) /**< \brief (RTC_SCCR) Acknowledge Clear */ +#define RTC_SCCR_ALRCLR (0x1u << 1) /**< \brief (RTC_SCCR) Alarm Clear */ +#define RTC_SCCR_SECCLR (0x1u << 2) /**< \brief (RTC_SCCR) Second Clear */ +#define RTC_SCCR_TIMCLR (0x1u << 3) /**< \brief (RTC_SCCR) Time Clear */ +#define RTC_SCCR_CALCLR (0x1u << 4) /**< \brief (RTC_SCCR) Calendar Clear */ +#define RTC_SCCR_TDERRCLR (0x1u << 5) /**< \brief (RTC_SCCR) Time and/or Date Free Running Error Clear */ +/* -------- RTC_IER : (RTC Offset: 0x20) Interrupt Enable Register -------- */ +#define RTC_IER_ACKEN (0x1u << 0) /**< \brief (RTC_IER) Acknowledge Update Interrupt Enable */ +#define RTC_IER_ALREN (0x1u << 1) /**< \brief (RTC_IER) Alarm Interrupt Enable */ +#define RTC_IER_SECEN (0x1u << 2) /**< \brief (RTC_IER) Second Event Interrupt Enable */ +#define RTC_IER_TIMEN (0x1u << 3) /**< \brief (RTC_IER) Time Event Interrupt Enable */ +#define RTC_IER_CALEN (0x1u << 4) /**< \brief (RTC_IER) Calendar Event Interrupt Enable */ +#define RTC_IER_TDERREN (0x1u << 5) /**< \brief (RTC_IER) Time and/or Date Error Interrupt Enable */ +/* -------- RTC_IDR : (RTC Offset: 0x24) Interrupt Disable Register -------- */ +#define RTC_IDR_ACKDIS (0x1u << 0) /**< \brief (RTC_IDR) Acknowledge Update Interrupt Disable */ +#define RTC_IDR_ALRDIS (0x1u << 1) /**< \brief (RTC_IDR) Alarm Interrupt Disable */ +#define RTC_IDR_SECDIS (0x1u << 2) /**< \brief (RTC_IDR) Second Event Interrupt Disable */ +#define RTC_IDR_TIMDIS (0x1u << 3) /**< \brief (RTC_IDR) Time Event Interrupt Disable */ +#define RTC_IDR_CALDIS (0x1u << 4) /**< \brief (RTC_IDR) Calendar Event Interrupt Disable */ +#define RTC_IDR_TDERRDIS (0x1u << 5) /**< \brief (RTC_IDR) Time and/or Date Error Interrupt Disable */ +/* -------- RTC_IMR : (RTC Offset: 0x28) Interrupt Mask Register -------- */ +#define RTC_IMR_ACK (0x1u << 0) /**< \brief (RTC_IMR) Acknowledge Update Interrupt Mask */ +#define RTC_IMR_ALR (0x1u << 1) /**< \brief (RTC_IMR) Alarm Interrupt Mask */ +#define RTC_IMR_SEC (0x1u << 2) /**< \brief (RTC_IMR) Second Event Interrupt Mask */ +#define RTC_IMR_TIM (0x1u << 3) /**< \brief (RTC_IMR) Time Event Interrupt Mask */ +#define RTC_IMR_CAL (0x1u << 4) /**< \brief (RTC_IMR) Calendar Event Interrupt Mask */ +/* -------- RTC_VER : (RTC Offset: 0x2C) Valid Entry Register -------- */ +#define RTC_VER_NVTIM (0x1u << 0) /**< \brief (RTC_VER) Non-valid Time */ +#define RTC_VER_NVCAL (0x1u << 1) /**< \brief (RTC_VER) Non-valid Calendar */ +#define RTC_VER_NVTIMALR (0x1u << 2) /**< \brief (RTC_VER) Non-valid Time Alarm */ +#define RTC_VER_NVCALALR (0x1u << 3) /**< \brief (RTC_VER) Non-valid Calendar Alarm */ + +/*@}*/ + + +#endif /* _SAM4E_RTC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rtt.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rtt.h new file mode 100644 index 000000000..c22057a31 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rtt.h @@ -0,0 +1,83 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_RTT_COMPONENT_ +#define _SAM4E_RTT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Real-time Timer */ +/* ============================================================================= */ +/** \addtogroup SAM4E_RTT Real-time Timer */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Rtt hardware registers */ +typedef struct { + RwReg RTT_MR; /**< \brief (Rtt Offset: 0x00) Mode Register */ + RwReg RTT_AR; /**< \brief (Rtt Offset: 0x04) Alarm Register */ + RoReg RTT_VR; /**< \brief (Rtt Offset: 0x08) Value Register */ + RoReg RTT_SR; /**< \brief (Rtt Offset: 0x0C) Status Register */ +} Rtt; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- RTT_MR : (RTT Offset: 0x00) Mode Register -------- */ +#define RTT_MR_RTPRES_Pos 0 +#define RTT_MR_RTPRES_Msk (0xffffu << RTT_MR_RTPRES_Pos) /**< \brief (RTT_MR) Real-time Timer Prescaler Value */ +#define RTT_MR_RTPRES(value) ((RTT_MR_RTPRES_Msk & ((value) << RTT_MR_RTPRES_Pos))) +#define RTT_MR_ALMIEN (0x1u << 16) /**< \brief (RTT_MR) Alarm Interrupt Enable */ +#define RTT_MR_RTTINCIEN (0x1u << 17) /**< \brief (RTT_MR) Real-time Timer Increment Interrupt Enable */ +#define RTT_MR_RTTRST (0x1u << 18) /**< \brief (RTT_MR) Real-time Timer Restart */ +#define RTT_MR_RTTDIS (0x1u << 20) /**< \brief (RTT_MR) Real-time Timer Disable */ +#define RTT_MR_RTC1HZ (0x1u << 24) /**< \brief (RTT_MR) Real-Time Clock 1Hz Clock Selection */ +/* -------- RTT_AR : (RTT Offset: 0x04) Alarm Register -------- */ +#define RTT_AR_ALMV_Pos 0 +#define RTT_AR_ALMV_Msk (0xffffffffu << RTT_AR_ALMV_Pos) /**< \brief (RTT_AR) Alarm Value */ +#define RTT_AR_ALMV(value) ((RTT_AR_ALMV_Msk & ((value) << RTT_AR_ALMV_Pos))) +/* -------- RTT_VR : (RTT Offset: 0x08) Value Register -------- */ +#define RTT_VR_CRTV_Pos 0 +#define RTT_VR_CRTV_Msk (0xffffffffu << RTT_VR_CRTV_Pos) /**< \brief (RTT_VR) Current Real-time Value */ +/* -------- RTT_SR : (RTT Offset: 0x0C) Status Register -------- */ +#define RTT_SR_ALMS (0x1u << 0) /**< \brief (RTT_SR) Real-time Alarm Status */ +#define RTT_SR_RTTINC (0x1u << 1) /**< \brief (RTT_SR) Real-time Timer Increment */ + +/*@}*/ + + +#endif /* _SAM4E_RTT_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/smc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/smc.h new file mode 100644 index 000000000..93dbf7510 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/smc.h @@ -0,0 +1,151 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_SMC_COMPONENT_ +#define _SAM4E_SMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Static Memory Controller */ +/* ============================================================================= */ +/** \addtogroup SAM4E_SMC Static Memory Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief SmcCs_number hardware registers */ +typedef struct { + RwReg SMC_SETUP; /**< \brief (SmcCs_number Offset: 0x0) SMC Setup Register */ + RwReg SMC_PULSE; /**< \brief (SmcCs_number Offset: 0x4) SMC Pulse Register */ + RwReg SMC_CYCLE; /**< \brief (SmcCs_number Offset: 0x8) SMC Cycle Register */ + RwReg SMC_MODE; /**< \brief (SmcCs_number Offset: 0xC) SMC Mode Register */ +} SmcCs_number; +/** \brief Smc hardware registers */ +#define SMCCS_NUMBER_NUMBER 4 +typedef struct { + SmcCs_number SMC_CS_NUMBER[SMCCS_NUMBER_NUMBER]; /**< \brief (Smc Offset: 0x0) CS_number = 0 .. 3 */ + RoReg Reserved1[16]; + RwReg SMC_OCMS; /**< \brief (Smc Offset: 0x80) SMC OCMS MODE Register */ + WoReg SMC_KEY1; /**< \brief (Smc Offset: 0x84) SMC OCMS KEY1 Register */ + WoReg SMC_KEY2; /**< \brief (Smc Offset: 0x88) SMC OCMS KEY2 Register */ + RoReg Reserved2[22]; + RwReg SMC_WPMR; /**< \brief (Smc Offset: 0xE4) SMC Write Protect Mode Register */ + RoReg SMC_WPSR; /**< \brief (Smc Offset: 0xE8) SMC Write Protect Status Register */ +} Smc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- SMC_SETUP : (SMC Offset: N/A) SMC Setup Register -------- */ +#define SMC_SETUP_NWE_SETUP_Pos 0 +#define SMC_SETUP_NWE_SETUP_Msk (0x3fu << SMC_SETUP_NWE_SETUP_Pos) /**< \brief (SMC_SETUP) NWE Setup Length */ +#define SMC_SETUP_NWE_SETUP(value) ((SMC_SETUP_NWE_SETUP_Msk & ((value) << SMC_SETUP_NWE_SETUP_Pos))) +#define SMC_SETUP_NCS_WR_SETUP_Pos 8 +#define SMC_SETUP_NCS_WR_SETUP_Msk (0x3fu << SMC_SETUP_NCS_WR_SETUP_Pos) /**< \brief (SMC_SETUP) NCS Setup Length in WRITE Access */ +#define SMC_SETUP_NCS_WR_SETUP(value) ((SMC_SETUP_NCS_WR_SETUP_Msk & ((value) << SMC_SETUP_NCS_WR_SETUP_Pos))) +#define SMC_SETUP_NRD_SETUP_Pos 16 +#define SMC_SETUP_NRD_SETUP_Msk (0x3fu << SMC_SETUP_NRD_SETUP_Pos) /**< \brief (SMC_SETUP) NRD Setup Length */ +#define SMC_SETUP_NRD_SETUP(value) ((SMC_SETUP_NRD_SETUP_Msk & ((value) << SMC_SETUP_NRD_SETUP_Pos))) +#define SMC_SETUP_NCS_RD_SETUP_Pos 24 +#define SMC_SETUP_NCS_RD_SETUP_Msk (0x3fu << SMC_SETUP_NCS_RD_SETUP_Pos) /**< \brief (SMC_SETUP) NCS Setup Length in READ Access */ +#define SMC_SETUP_NCS_RD_SETUP(value) ((SMC_SETUP_NCS_RD_SETUP_Msk & ((value) << SMC_SETUP_NCS_RD_SETUP_Pos))) +/* -------- SMC_PULSE : (SMC Offset: N/A) SMC Pulse Register -------- */ +#define SMC_PULSE_NWE_PULSE_Pos 0 +#define SMC_PULSE_NWE_PULSE_Msk (0x7fu << SMC_PULSE_NWE_PULSE_Pos) /**< \brief (SMC_PULSE) NWE Pulse Length */ +#define SMC_PULSE_NWE_PULSE(value) ((SMC_PULSE_NWE_PULSE_Msk & ((value) << SMC_PULSE_NWE_PULSE_Pos))) +#define SMC_PULSE_NCS_WR_PULSE_Pos 8 +#define SMC_PULSE_NCS_WR_PULSE_Msk (0x7fu << SMC_PULSE_NCS_WR_PULSE_Pos) /**< \brief (SMC_PULSE) NCS Pulse Length in WRITE Access */ +#define SMC_PULSE_NCS_WR_PULSE(value) ((SMC_PULSE_NCS_WR_PULSE_Msk & ((value) << SMC_PULSE_NCS_WR_PULSE_Pos))) +#define SMC_PULSE_NRD_PULSE_Pos 16 +#define SMC_PULSE_NRD_PULSE_Msk (0x7fu << SMC_PULSE_NRD_PULSE_Pos) /**< \brief (SMC_PULSE) NRD Pulse Length */ +#define SMC_PULSE_NRD_PULSE(value) ((SMC_PULSE_NRD_PULSE_Msk & ((value) << SMC_PULSE_NRD_PULSE_Pos))) +#define SMC_PULSE_NCS_RD_PULSE_Pos 24 +#define SMC_PULSE_NCS_RD_PULSE_Msk (0x7fu << SMC_PULSE_NCS_RD_PULSE_Pos) /**< \brief (SMC_PULSE) NCS Pulse Length in READ Access */ +#define SMC_PULSE_NCS_RD_PULSE(value) ((SMC_PULSE_NCS_RD_PULSE_Msk & ((value) << SMC_PULSE_NCS_RD_PULSE_Pos))) +/* -------- SMC_CYCLE : (SMC Offset: N/A) SMC Cycle Register -------- */ +#define SMC_CYCLE_NWE_CYCLE_Pos 0 +#define SMC_CYCLE_NWE_CYCLE_Msk (0x1ffu << SMC_CYCLE_NWE_CYCLE_Pos) /**< \brief (SMC_CYCLE) Total Write Cycle Length */ +#define SMC_CYCLE_NWE_CYCLE(value) ((SMC_CYCLE_NWE_CYCLE_Msk & ((value) << SMC_CYCLE_NWE_CYCLE_Pos))) +#define SMC_CYCLE_NRD_CYCLE_Pos 16 +#define SMC_CYCLE_NRD_CYCLE_Msk (0x1ffu << SMC_CYCLE_NRD_CYCLE_Pos) /**< \brief (SMC_CYCLE) Total Read Cycle Length */ +#define SMC_CYCLE_NRD_CYCLE(value) ((SMC_CYCLE_NRD_CYCLE_Msk & ((value) << SMC_CYCLE_NRD_CYCLE_Pos))) +/* -------- SMC_MODE : (SMC Offset: N/A) SMC Mode Register -------- */ +#define SMC_MODE_READ_MODE (0x1u << 0) /**< \brief (SMC_MODE) */ +#define SMC_MODE_WRITE_MODE (0x1u << 1) /**< \brief (SMC_MODE) */ +#define SMC_MODE_EXNW_MODE_Pos 4 +#define SMC_MODE_EXNW_MODE_Msk (0x3u << SMC_MODE_EXNW_MODE_Pos) /**< \brief (SMC_MODE) NWAIT Mode */ +#define SMC_MODE_EXNW_MODE_DISABLED (0x0u << 4) /**< \brief (SMC_MODE) Disabled */ +#define SMC_MODE_EXNW_MODE_FROZEN (0x2u << 4) /**< \brief (SMC_MODE) Frozen Mode */ +#define SMC_MODE_EXNW_MODE_READY (0x3u << 4) /**< \brief (SMC_MODE) Ready Mode */ +#define SMC_MODE_TDF_CYCLES_Pos 16 +#define SMC_MODE_TDF_CYCLES_Msk (0xfu << SMC_MODE_TDF_CYCLES_Pos) /**< \brief (SMC_MODE) Data Float Time */ +#define SMC_MODE_TDF_CYCLES(value) ((SMC_MODE_TDF_CYCLES_Msk & ((value) << SMC_MODE_TDF_CYCLES_Pos))) +#define SMC_MODE_TDF_MODE (0x1u << 20) /**< \brief (SMC_MODE) TDF Optimization */ +#define SMC_MODE_PMEN (0x1u << 24) /**< \brief (SMC_MODE) Page Mode Enabled */ +#define SMC_MODE_PS_Pos 28 +#define SMC_MODE_PS_Msk (0x3u << SMC_MODE_PS_Pos) /**< \brief (SMC_MODE) Page Size */ +#define SMC_MODE_PS_4_BYTE (0x0u << 28) /**< \brief (SMC_MODE) 4-byte page */ +#define SMC_MODE_PS_8_BYTE (0x1u << 28) /**< \brief (SMC_MODE) 8-byte page */ +#define SMC_MODE_PS_16_BYTE (0x2u << 28) /**< \brief (SMC_MODE) 16-byte page */ +#define SMC_MODE_PS_32_BYTE (0x3u << 28) /**< \brief (SMC_MODE) 32-byte page */ +/* -------- SMC_OCMS : (SMC Offset: 0x80) SMC OCMS MODE Register -------- */ +#define SMC_OCMS_SMSE (0x1u << 0) /**< \brief (SMC_OCMS) Static Memory Controller Scrambling Enable */ +#define SMC_OCMS_CS0SE (0x1u << 16) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +#define SMC_OCMS_CS1SE (0x1u << 17) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +#define SMC_OCMS_CS2SE (0x1u << 18) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +#define SMC_OCMS_CS3SE (0x1u << 19) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +/* -------- SMC_KEY1 : (SMC Offset: 0x84) SMC OCMS KEY1 Register -------- */ +#define SMC_KEY1_KEY1_Pos 0 +#define SMC_KEY1_KEY1_Msk (0xffffffffu << SMC_KEY1_KEY1_Pos) /**< \brief (SMC_KEY1) Off Chip Memory Scrambling (OCMS) Key Part 1 */ +#define SMC_KEY1_KEY1(value) ((SMC_KEY1_KEY1_Msk & ((value) << SMC_KEY1_KEY1_Pos))) +/* -------- SMC_KEY2 : (SMC Offset: 0x88) SMC OCMS KEY2 Register -------- */ +#define SMC_KEY2_KEY2_Pos 0 +#define SMC_KEY2_KEY2_Msk (0xffffffffu << SMC_KEY2_KEY2_Pos) /**< \brief (SMC_KEY2) Off Chip Memory Scrambling (OCMS) Key Part 2 */ +#define SMC_KEY2_KEY2(value) ((SMC_KEY2_KEY2_Msk & ((value) << SMC_KEY2_KEY2_Pos))) +/* -------- SMC_WPMR : (SMC Offset: 0xE4) SMC Write Protect Mode Register -------- */ +#define SMC_WPMR_WPEN (0x1u << 0) /**< \brief (SMC_WPMR) Write Protect Enable */ +#define SMC_WPMR_WPKEY_Pos 8 +#define SMC_WPMR_WPKEY_Msk (0xffffffu << SMC_WPMR_WPKEY_Pos) /**< \brief (SMC_WPMR) Write Protect KEY */ +#define SMC_WPMR_WPKEY(value) ((SMC_WPMR_WPKEY_Msk & ((value) << SMC_WPMR_WPKEY_Pos))) +/* -------- SMC_WPSR : (SMC Offset: 0xE8) SMC Write Protect Status Register -------- */ +#define SMC_WPSR_WPVS (0x1u << 0) /**< \brief (SMC_WPSR) Write Protect Enable */ +#define SMC_WPSR_WPVSRC_Pos 8 +#define SMC_WPSR_WPVSRC_Msk (0xffffu << SMC_WPSR_WPVSRC_Pos) /**< \brief (SMC_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM4E_SMC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/spi.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/spi.h new file mode 100644 index 000000000..e42695864 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/spi.h @@ -0,0 +1,238 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_SPI_COMPONENT_ +#define _SAM4E_SPI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Serial Peripheral Interface */ +/* ============================================================================= */ +/** \addtogroup SAM4E_SPI Serial Peripheral Interface */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Spi hardware registers */ +typedef struct { + WoReg SPI_CR; /**< \brief (Spi Offset: 0x00) Control Register */ + RwReg SPI_MR; /**< \brief (Spi Offset: 0x04) Mode Register */ + RoReg SPI_RDR; /**< \brief (Spi Offset: 0x08) Receive Data Register */ + WoReg SPI_TDR; /**< \brief (Spi Offset: 0x0C) Transmit Data Register */ + RoReg SPI_SR; /**< \brief (Spi Offset: 0x10) Status Register */ + WoReg SPI_IER; /**< \brief (Spi Offset: 0x14) Interrupt Enable Register */ + WoReg SPI_IDR; /**< \brief (Spi Offset: 0x18) Interrupt Disable Register */ + RoReg SPI_IMR; /**< \brief (Spi Offset: 0x1C) Interrupt Mask Register */ + RoReg Reserved1[4]; + RwReg SPI_CSR[4]; /**< \brief (Spi Offset: 0x30) Chip Select Register */ + RoReg Reserved2[41]; + RwReg SPI_WPMR; /**< \brief (Spi Offset: 0xE4) Write Protection Control Register */ + RoReg SPI_WPSR; /**< \brief (Spi Offset: 0xE8) Write Protection Status Register */ + RoReg Reserved3[5]; + RwReg SPI_RPR; /**< \brief (Spi Offset: 0x100) Receive Pointer Register */ + RwReg SPI_RCR; /**< \brief (Spi Offset: 0x104) Receive Counter Register */ + RwReg SPI_TPR; /**< \brief (Spi Offset: 0x108) Transmit Pointer Register */ + RwReg SPI_TCR; /**< \brief (Spi Offset: 0x10C) Transmit Counter Register */ + RwReg SPI_RNPR; /**< \brief (Spi Offset: 0x110) Receive Next Pointer Register */ + RwReg SPI_RNCR; /**< \brief (Spi Offset: 0x114) Receive Next Counter Register */ + RwReg SPI_TNPR; /**< \brief (Spi Offset: 0x118) Transmit Next Pointer Register */ + RwReg SPI_TNCR; /**< \brief (Spi Offset: 0x11C) Transmit Next Counter Register */ + WoReg SPI_PTCR; /**< \brief (Spi Offset: 0x120) Transfer Control Register */ + RoReg SPI_PTSR; /**< \brief (Spi Offset: 0x124) Transfer Status Register */ +} Spi; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- SPI_CR : (SPI Offset: 0x00) Control Register -------- */ +#define SPI_CR_SPIEN (0x1u << 0) /**< \brief (SPI_CR) SPI Enable */ +#define SPI_CR_SPIDIS (0x1u << 1) /**< \brief (SPI_CR) SPI Disable */ +#define SPI_CR_SWRST (0x1u << 7) /**< \brief (SPI_CR) SPI Software Reset */ +#define SPI_CR_LASTXFER (0x1u << 24) /**< \brief (SPI_CR) Last Transfer */ +/* -------- SPI_MR : (SPI Offset: 0x04) Mode Register -------- */ +#define SPI_MR_MSTR (0x1u << 0) /**< \brief (SPI_MR) Master/Slave Mode */ +#define SPI_MR_PS (0x1u << 1) /**< \brief (SPI_MR) Peripheral Select */ +#define SPI_MR_PCSDEC (0x1u << 2) /**< \brief (SPI_MR) Chip Select Decode */ +#define SPI_MR_MODFDIS (0x1u << 4) /**< \brief (SPI_MR) Mode Fault Detection */ +#define SPI_MR_WDRBT (0x1u << 5) /**< \brief (SPI_MR) Wait Data Read Before Transfer */ +#define SPI_MR_LLB (0x1u << 7) /**< \brief (SPI_MR) Local Loopback Enable */ +#define SPI_MR_PCS_Pos 16 +#define SPI_MR_PCS_Msk (0xfu << SPI_MR_PCS_Pos) /**< \brief (SPI_MR) Peripheral Chip Select */ +#define SPI_MR_PCS(value) ((SPI_MR_PCS_Msk & ((value) << SPI_MR_PCS_Pos))) +#define SPI_MR_DLYBCS_Pos 24 +#define SPI_MR_DLYBCS_Msk (0xffu << SPI_MR_DLYBCS_Pos) /**< \brief (SPI_MR) Delay Between Chip Selects */ +#define SPI_MR_DLYBCS(value) ((SPI_MR_DLYBCS_Msk & ((value) << SPI_MR_DLYBCS_Pos))) +/* -------- SPI_RDR : (SPI Offset: 0x08) Receive Data Register -------- */ +#define SPI_RDR_RD_Pos 0 +#define SPI_RDR_RD_Msk (0xffffu << SPI_RDR_RD_Pos) /**< \brief (SPI_RDR) Receive Data */ +#define SPI_RDR_PCS_Pos 16 +#define SPI_RDR_PCS_Msk (0xfu << SPI_RDR_PCS_Pos) /**< \brief (SPI_RDR) Peripheral Chip Select */ +/* -------- SPI_TDR : (SPI Offset: 0x0C) Transmit Data Register -------- */ +#define SPI_TDR_TD_Pos 0 +#define SPI_TDR_TD_Msk (0xffffu << SPI_TDR_TD_Pos) /**< \brief (SPI_TDR) Transmit Data */ +#define SPI_TDR_TD(value) ((SPI_TDR_TD_Msk & ((value) << SPI_TDR_TD_Pos))) +#define SPI_TDR_PCS_Pos 16 +#define SPI_TDR_PCS_Msk (0xfu << SPI_TDR_PCS_Pos) /**< \brief (SPI_TDR) Peripheral Chip Select */ +#define SPI_TDR_PCS(value) ((SPI_TDR_PCS_Msk & ((value) << SPI_TDR_PCS_Pos))) +#define SPI_TDR_LASTXFER (0x1u << 24) /**< \brief (SPI_TDR) Last Transfer */ +/* -------- SPI_SR : (SPI Offset: 0x10) Status Register -------- */ +#define SPI_SR_RDRF (0x1u << 0) /**< \brief (SPI_SR) Receive Data Register Full */ +#define SPI_SR_TDRE (0x1u << 1) /**< \brief (SPI_SR) Transmit Data Register Empty */ +#define SPI_SR_MODF (0x1u << 2) /**< \brief (SPI_SR) Mode Fault Error */ +#define SPI_SR_OVRES (0x1u << 3) /**< \brief (SPI_SR) Overrun Error Status */ +#define SPI_SR_ENDRX (0x1u << 4) /**< \brief (SPI_SR) End of RX buffer */ +#define SPI_SR_ENDTX (0x1u << 5) /**< \brief (SPI_SR) End of TX buffer */ +#define SPI_SR_RXBUFF (0x1u << 6) /**< \brief (SPI_SR) RX Buffer Full */ +#define SPI_SR_TXBUFE (0x1u << 7) /**< \brief (SPI_SR) TX Buffer Empty */ +#define SPI_SR_NSSR (0x1u << 8) /**< \brief (SPI_SR) NSS Rising */ +#define SPI_SR_TXEMPTY (0x1u << 9) /**< \brief (SPI_SR) Transmission Registers Empty */ +#define SPI_SR_UNDES (0x1u << 10) /**< \brief (SPI_SR) Underrun Error Status (Slave Mode Only) */ +#define SPI_SR_SPIENS (0x1u << 16) /**< \brief (SPI_SR) SPI Enable Status */ +/* -------- SPI_IER : (SPI Offset: 0x14) Interrupt Enable Register -------- */ +#define SPI_IER_RDRF (0x1u << 0) /**< \brief (SPI_IER) Receive Data Register Full Interrupt Enable */ +#define SPI_IER_TDRE (0x1u << 1) /**< \brief (SPI_IER) SPI Transmit Data Register Empty Interrupt Enable */ +#define SPI_IER_MODF (0x1u << 2) /**< \brief (SPI_IER) Mode Fault Error Interrupt Enable */ +#define SPI_IER_OVRES (0x1u << 3) /**< \brief (SPI_IER) Overrun Error Interrupt Enable */ +#define SPI_IER_ENDRX (0x1u << 4) /**< \brief (SPI_IER) End of Receive Buffer Interrupt Enable */ +#define SPI_IER_ENDTX (0x1u << 5) /**< \brief (SPI_IER) End of Transmit Buffer Interrupt Enable */ +#define SPI_IER_RXBUFF (0x1u << 6) /**< \brief (SPI_IER) Receive Buffer Full Interrupt Enable */ +#define SPI_IER_TXBUFE (0x1u << 7) /**< \brief (SPI_IER) Transmit Buffer Empty Interrupt Enable */ +#define SPI_IER_NSSR (0x1u << 8) /**< \brief (SPI_IER) NSS Rising Interrupt Enable */ +#define SPI_IER_TXEMPTY (0x1u << 9) /**< \brief (SPI_IER) Transmission Registers Empty Enable */ +#define SPI_IER_UNDES (0x1u << 10) /**< \brief (SPI_IER) Underrun Error Interrupt Enable */ +/* -------- SPI_IDR : (SPI Offset: 0x18) Interrupt Disable Register -------- */ +#define SPI_IDR_RDRF (0x1u << 0) /**< \brief (SPI_IDR) Receive Data Register Full Interrupt Disable */ +#define SPI_IDR_TDRE (0x1u << 1) /**< \brief (SPI_IDR) SPI Transmit Data Register Empty Interrupt Disable */ +#define SPI_IDR_MODF (0x1u << 2) /**< \brief (SPI_IDR) Mode Fault Error Interrupt Disable */ +#define SPI_IDR_OVRES (0x1u << 3) /**< \brief (SPI_IDR) Overrun Error Interrupt Disable */ +#define SPI_IDR_ENDRX (0x1u << 4) /**< \brief (SPI_IDR) End of Receive Buffer Interrupt Disable */ +#define SPI_IDR_ENDTX (0x1u << 5) /**< \brief (SPI_IDR) End of Transmit Buffer Interrupt Disable */ +#define SPI_IDR_RXBUFF (0x1u << 6) /**< \brief (SPI_IDR) Receive Buffer Full Interrupt Disable */ +#define SPI_IDR_TXBUFE (0x1u << 7) /**< \brief (SPI_IDR) Transmit Buffer Empty Interrupt Disable */ +#define SPI_IDR_NSSR (0x1u << 8) /**< \brief (SPI_IDR) NSS Rising Interrupt Disable */ +#define SPI_IDR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IDR) Transmission Registers Empty Disable */ +#define SPI_IDR_UNDES (0x1u << 10) /**< \brief (SPI_IDR) Underrun Error Interrupt Disable */ +/* -------- SPI_IMR : (SPI Offset: 0x1C) Interrupt Mask Register -------- */ +#define SPI_IMR_RDRF (0x1u << 0) /**< \brief (SPI_IMR) Receive Data Register Full Interrupt Mask */ +#define SPI_IMR_TDRE (0x1u << 1) /**< \brief (SPI_IMR) SPI Transmit Data Register Empty Interrupt Mask */ +#define SPI_IMR_MODF (0x1u << 2) /**< \brief (SPI_IMR) Mode Fault Error Interrupt Mask */ +#define SPI_IMR_OVRES (0x1u << 3) /**< \brief (SPI_IMR) Overrun Error Interrupt Mask */ +#define SPI_IMR_ENDRX (0x1u << 4) /**< \brief (SPI_IMR) End of Receive Buffer Interrupt Mask */ +#define SPI_IMR_ENDTX (0x1u << 5) /**< \brief (SPI_IMR) End of Transmit Buffer Interrupt Mask */ +#define SPI_IMR_RXBUFF (0x1u << 6) /**< \brief (SPI_IMR) Receive Buffer Full Interrupt Mask */ +#define SPI_IMR_TXBUFE (0x1u << 7) /**< \brief (SPI_IMR) Transmit Buffer Empty Interrupt Mask */ +#define SPI_IMR_NSSR (0x1u << 8) /**< \brief (SPI_IMR) NSS Rising Interrupt Mask */ +#define SPI_IMR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IMR) Transmission Registers Empty Mask */ +#define SPI_IMR_UNDES (0x1u << 10) /**< \brief (SPI_IMR) Underrun Error Interrupt Mask */ +/* -------- SPI_CSR[4] : (SPI Offset: 0x30) Chip Select Register -------- */ +#define SPI_CSR_CPOL (0x1u << 0) /**< \brief (SPI_CSR[4]) Clock Polarity */ +#define SPI_CSR_NCPHA (0x1u << 1) /**< \brief (SPI_CSR[4]) Clock Phase */ +#define SPI_CSR_CSNAAT (0x1u << 2) /**< \brief (SPI_CSR[4]) Chip Select Not Active After Transfer (Ignored if CSAAT = 1) */ +#define SPI_CSR_CSAAT (0x1u << 3) /**< \brief (SPI_CSR[4]) Chip Select Active After Transfer */ +#define SPI_CSR_BITS_Pos 4 +#define SPI_CSR_BITS_Msk (0xfu << SPI_CSR_BITS_Pos) /**< \brief (SPI_CSR[4]) Bits Per Transfer */ +#define SPI_CSR_BITS_8_BIT (0x0u << 4) /**< \brief (SPI_CSR[4]) 8 bits for transfer */ +#define SPI_CSR_BITS_9_BIT (0x1u << 4) /**< \brief (SPI_CSR[4]) 9 bits for transfer */ +#define SPI_CSR_BITS_10_BIT (0x2u << 4) /**< \brief (SPI_CSR[4]) 10 bits for transfer */ +#define SPI_CSR_BITS_11_BIT (0x3u << 4) /**< \brief (SPI_CSR[4]) 11 bits for transfer */ +#define SPI_CSR_BITS_12_BIT (0x4u << 4) /**< \brief (SPI_CSR[4]) 12 bits for transfer */ +#define SPI_CSR_BITS_13_BIT (0x5u << 4) /**< \brief (SPI_CSR[4]) 13 bits for transfer */ +#define SPI_CSR_BITS_14_BIT (0x6u << 4) /**< \brief (SPI_CSR[4]) 14 bits for transfer */ +#define SPI_CSR_BITS_15_BIT (0x7u << 4) /**< \brief (SPI_CSR[4]) 15 bits for transfer */ +#define SPI_CSR_BITS_16_BIT (0x8u << 4) /**< \brief (SPI_CSR[4]) 16 bits for transfer */ +#define SPI_CSR_SCBR_Pos 8 +#define SPI_CSR_SCBR_Msk (0xffu << SPI_CSR_SCBR_Pos) /**< \brief (SPI_CSR[4]) Serial Clock Baud Rate */ +#define SPI_CSR_SCBR(value) ((SPI_CSR_SCBR_Msk & ((value) << SPI_CSR_SCBR_Pos))) +#define SPI_CSR_DLYBS_Pos 16 +#define SPI_CSR_DLYBS_Msk (0xffu << SPI_CSR_DLYBS_Pos) /**< \brief (SPI_CSR[4]) Delay Before SPCK */ +#define SPI_CSR_DLYBS(value) ((SPI_CSR_DLYBS_Msk & ((value) << SPI_CSR_DLYBS_Pos))) +#define SPI_CSR_DLYBCT_Pos 24 +#define SPI_CSR_DLYBCT_Msk (0xffu << SPI_CSR_DLYBCT_Pos) /**< \brief (SPI_CSR[4]) Delay Between Consecutive Transfers */ +#define SPI_CSR_DLYBCT(value) ((SPI_CSR_DLYBCT_Msk & ((value) << SPI_CSR_DLYBCT_Pos))) +/* -------- SPI_WPMR : (SPI Offset: 0xE4) Write Protection Control Register -------- */ +#define SPI_WPMR_WPEN (0x1u << 0) /**< \brief (SPI_WPMR) Write Protection Enable */ +#define SPI_WPMR_WPKEY_Pos 8 +#define SPI_WPMR_WPKEY_Msk (0xffffffu << SPI_WPMR_WPKEY_Pos) /**< \brief (SPI_WPMR) Write Protection Key Password */ +#define SPI_WPMR_WPKEY(value) ((SPI_WPMR_WPKEY_Msk & ((value) << SPI_WPMR_WPKEY_Pos))) +/* -------- SPI_WPSR : (SPI Offset: 0xE8) Write Protection Status Register -------- */ +#define SPI_WPSR_WPVS (0x1u << 0) /**< \brief (SPI_WPSR) Write Protection Violation Status */ +#define SPI_WPSR_WPVSRC_Pos 8 +#define SPI_WPSR_WPVSRC_Msk (0xffu << SPI_WPSR_WPVSRC_Pos) /**< \brief (SPI_WPSR) Write Protection Violation Source */ +/* -------- SPI_RPR : (SPI Offset: 0x100) Receive Pointer Register -------- */ +#define SPI_RPR_RXPTR_Pos 0 +#define SPI_RPR_RXPTR_Msk (0xffffffffu << SPI_RPR_RXPTR_Pos) /**< \brief (SPI_RPR) Receive Pointer Register */ +#define SPI_RPR_RXPTR(value) ((SPI_RPR_RXPTR_Msk & ((value) << SPI_RPR_RXPTR_Pos))) +/* -------- SPI_RCR : (SPI Offset: 0x104) Receive Counter Register -------- */ +#define SPI_RCR_RXCTR_Pos 0 +#define SPI_RCR_RXCTR_Msk (0xffffu << SPI_RCR_RXCTR_Pos) /**< \brief (SPI_RCR) Receive Counter Register */ +#define SPI_RCR_RXCTR(value) ((SPI_RCR_RXCTR_Msk & ((value) << SPI_RCR_RXCTR_Pos))) +/* -------- SPI_TPR : (SPI Offset: 0x108) Transmit Pointer Register -------- */ +#define SPI_TPR_TXPTR_Pos 0 +#define SPI_TPR_TXPTR_Msk (0xffffffffu << SPI_TPR_TXPTR_Pos) /**< \brief (SPI_TPR) Transmit Counter Register */ +#define SPI_TPR_TXPTR(value) ((SPI_TPR_TXPTR_Msk & ((value) << SPI_TPR_TXPTR_Pos))) +/* -------- SPI_TCR : (SPI Offset: 0x10C) Transmit Counter Register -------- */ +#define SPI_TCR_TXCTR_Pos 0 +#define SPI_TCR_TXCTR_Msk (0xffffu << SPI_TCR_TXCTR_Pos) /**< \brief (SPI_TCR) Transmit Counter Register */ +#define SPI_TCR_TXCTR(value) ((SPI_TCR_TXCTR_Msk & ((value) << SPI_TCR_TXCTR_Pos))) +/* -------- SPI_RNPR : (SPI Offset: 0x110) Receive Next Pointer Register -------- */ +#define SPI_RNPR_RXNPTR_Pos 0 +#define SPI_RNPR_RXNPTR_Msk (0xffffffffu << SPI_RNPR_RXNPTR_Pos) /**< \brief (SPI_RNPR) Receive Next Pointer */ +#define SPI_RNPR_RXNPTR(value) ((SPI_RNPR_RXNPTR_Msk & ((value) << SPI_RNPR_RXNPTR_Pos))) +/* -------- SPI_RNCR : (SPI Offset: 0x114) Receive Next Counter Register -------- */ +#define SPI_RNCR_RXNCTR_Pos 0 +#define SPI_RNCR_RXNCTR_Msk (0xffffu << SPI_RNCR_RXNCTR_Pos) /**< \brief (SPI_RNCR) Receive Next Counter */ +#define SPI_RNCR_RXNCTR(value) ((SPI_RNCR_RXNCTR_Msk & ((value) << SPI_RNCR_RXNCTR_Pos))) +/* -------- SPI_TNPR : (SPI Offset: 0x118) Transmit Next Pointer Register -------- */ +#define SPI_TNPR_TXNPTR_Pos 0 +#define SPI_TNPR_TXNPTR_Msk (0xffffffffu << SPI_TNPR_TXNPTR_Pos) /**< \brief (SPI_TNPR) Transmit Next Pointer */ +#define SPI_TNPR_TXNPTR(value) ((SPI_TNPR_TXNPTR_Msk & ((value) << SPI_TNPR_TXNPTR_Pos))) +/* -------- SPI_TNCR : (SPI Offset: 0x11C) Transmit Next Counter Register -------- */ +#define SPI_TNCR_TXNCTR_Pos 0 +#define SPI_TNCR_TXNCTR_Msk (0xffffu << SPI_TNCR_TXNCTR_Pos) /**< \brief (SPI_TNCR) Transmit Counter Next */ +#define SPI_TNCR_TXNCTR(value) ((SPI_TNCR_TXNCTR_Msk & ((value) << SPI_TNCR_TXNCTR_Pos))) +/* -------- SPI_PTCR : (SPI Offset: 0x120) Transfer Control Register -------- */ +#define SPI_PTCR_RXTEN (0x1u << 0) /**< \brief (SPI_PTCR) Receiver Transfer Enable */ +#define SPI_PTCR_RXTDIS (0x1u << 1) /**< \brief (SPI_PTCR) Receiver Transfer Disable */ +#define SPI_PTCR_TXTEN (0x1u << 8) /**< \brief (SPI_PTCR) Transmitter Transfer Enable */ +#define SPI_PTCR_TXTDIS (0x1u << 9) /**< \brief (SPI_PTCR) Transmitter Transfer Disable */ +/* -------- SPI_PTSR : (SPI Offset: 0x124) Transfer Status Register -------- */ +#define SPI_PTSR_RXTEN (0x1u << 0) /**< \brief (SPI_PTSR) Receiver Transfer Enable */ +#define SPI_PTSR_TXTEN (0x1u << 8) /**< \brief (SPI_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM4E_SPI_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/supc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/supc.h new file mode 100644 index 000000000..903ab9c8c --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/supc.h @@ -0,0 +1,336 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_SUPC_COMPONENT_ +#define _SAM4E_SUPC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Supply Controller */ +/* ============================================================================= */ +/** \addtogroup SAM4E_SUPC Supply Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Supc hardware registers */ +typedef struct { + WoReg SUPC_CR; /**< \brief (Supc Offset: 0x00) Supply Controller Control Register */ + RwReg SUPC_SMMR; /**< \brief (Supc Offset: 0x04) Supply Controller Supply Monitor Mode Register */ + RwReg SUPC_MR; /**< \brief (Supc Offset: 0x08) Supply Controller Mode Register */ + RwReg SUPC_WUMR; /**< \brief (Supc Offset: 0x0C) Supply Controller Wake-up Mode Register */ + RwReg SUPC_WUIR; /**< \brief (Supc Offset: 0x10) Supply Controller Wake-up Inputs Register */ + RoReg SUPC_SR; /**< \brief (Supc Offset: 0x14) Supply Controller Status Register */ +} Supc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- SUPC_CR : (SUPC Offset: 0x00) Supply Controller Control Register -------- */ +#define SUPC_CR_VROFF (0x1u << 2) /**< \brief (SUPC_CR) Voltage Regulator Off */ +#define SUPC_CR_VROFF_NO_EFFECT (0x0u << 2) /**< \brief (SUPC_CR) no effect. */ +#define SUPC_CR_VROFF_STOP_VREG (0x1u << 2) /**< \brief (SUPC_CR) if KEY is correct, asserts the vddcore_nreset and stops the voltage regulator. */ +#define SUPC_CR_XTALSEL (0x1u << 3) /**< \brief (SUPC_CR) Crystal Oscillator Select */ +#define SUPC_CR_XTALSEL_NO_EFFECT (0x0u << 3) /**< \brief (SUPC_CR) no effect. */ +#define SUPC_CR_XTALSEL_CRYSTAL_SEL (0x1u << 3) /**< \brief (SUPC_CR) if KEY is correct, switches the slow clock on the crystal oscillator output. */ +#define SUPC_CR_KEY_Pos 24 +#define SUPC_CR_KEY_Msk (0xffu << SUPC_CR_KEY_Pos) /**< \brief (SUPC_CR) Password */ +#define SUPC_CR_KEY(value) ((SUPC_CR_KEY_Msk & ((value) << SUPC_CR_KEY_Pos))) +/* -------- SUPC_SMMR : (SUPC Offset: 0x04) Supply Controller Supply Monitor Mode Register -------- */ +#define SUPC_SMMR_SMTH_Pos 0 +#define SUPC_SMMR_SMTH_Msk (0xfu << SUPC_SMMR_SMTH_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Threshold */ +#define SUPC_SMMR_SMTH(value) ((SUPC_SMMR_SMTH_Msk & ((value) << SUPC_SMMR_SMTH_Pos))) +#define SUPC_SMMR_SMSMPL_Pos 8 +#define SUPC_SMMR_SMSMPL_Msk (0x7u << SUPC_SMMR_SMSMPL_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Sampling Period */ +#define SUPC_SMMR_SMSMPL_SMD (0x0u << 8) /**< \brief (SUPC_SMMR) Supply Monitor disabled */ +#define SUPC_SMMR_SMSMPL_CSM (0x1u << 8) /**< \brief (SUPC_SMMR) Continuous Supply Monitor */ +#define SUPC_SMMR_SMSMPL_32SLCK (0x2u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 32 SLCK periods */ +#define SUPC_SMMR_SMSMPL_256SLCK (0x3u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 256 SLCK periods */ +#define SUPC_SMMR_SMSMPL_2048SLCK (0x4u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 2,048 SLCK periods */ +#define SUPC_SMMR_SMRSTEN (0x1u << 12) /**< \brief (SUPC_SMMR) Supply Monitor Reset Enable */ +#define SUPC_SMMR_SMRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_SMMR) the core reset signal "vddcore_nreset" is not affected when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_SMMR) the core reset signal, vddcore_nreset is asserted when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMIEN (0x1u << 13) /**< \brief (SUPC_SMMR) Supply Monitor Interrupt Enable */ +#define SUPC_SMMR_SMIEN_NOT_ENABLE (0x0u << 13) /**< \brief (SUPC_SMMR) the SUPC interrupt signal is not affected when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMIEN_ENABLE (0x1u << 13) /**< \brief (SUPC_SMMR) the SUPC interrupt signal is asserted when a supply monitor detection occurs. */ +/* -------- SUPC_MR : (SUPC Offset: 0x08) Supply Controller Mode Register -------- */ +#define SUPC_MR_BODRSTEN (0x1u << 12) /**< \brief (SUPC_MR) Brownout Detector Reset Enable */ +#define SUPC_MR_BODRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_MR) the core reset signal "vddcore_nreset" is not affected when a brownout detection occurs. */ +#define SUPC_MR_BODRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_MR) the core reset signal, vddcore_nreset is asserted when a brownout detection occurs. */ +#define SUPC_MR_BODDIS (0x1u << 13) /**< \brief (SUPC_MR) Brownout Detector Disable */ +#define SUPC_MR_BODDIS_ENABLE (0x0u << 13) /**< \brief (SUPC_MR) the core brownout detector is enabled. */ +#define SUPC_MR_BODDIS_DISABLE (0x1u << 13) /**< \brief (SUPC_MR) the core brownout detector is disabled. */ +#define SUPC_MR_ONREG (0x1u << 14) /**< \brief (SUPC_MR) Voltage Regulator enable */ +#define SUPC_MR_ONREG_ONREG_UNUSED (0x0u << 14) /**< \brief (SUPC_MR) Internal voltage regulator is not used (external power supply is used) */ +#define SUPC_MR_ONREG_ONREG_USED (0x1u << 14) /**< \brief (SUPC_MR) internal voltage regulator is used */ +#define SUPC_MR_OSCBYPASS (0x1u << 20) /**< \brief (SUPC_MR) Oscillator Bypass */ +#define SUPC_MR_OSCBYPASS_NO_EFFECT (0x0u << 20) /**< \brief (SUPC_MR) no effect. Clock selection depends on XTALSEL value. */ +#define SUPC_MR_OSCBYPASS_BYPASS (0x1u << 20) /**< \brief (SUPC_MR) the 32-KHz XTAL oscillator is selected and is put in bypass mode. */ +#define SUPC_MR_KEY_Pos 24 +#define SUPC_MR_KEY_Msk (0xffu << SUPC_MR_KEY_Pos) /**< \brief (SUPC_MR) Password Key */ +#define SUPC_MR_KEY(value) ((SUPC_MR_KEY_Msk & ((value) << SUPC_MR_KEY_Pos))) +/* -------- SUPC_WUMR : (SUPC Offset: 0x0C) Supply Controller Wake-up Mode Register -------- */ +#define SUPC_WUMR_FWUPEN (0x1u << 0) /**< \brief (SUPC_WUMR) Force Wake-up Enable */ +#define SUPC_WUMR_FWUPEN_NOT_ENABLE (0x0u << 0) /**< \brief (SUPC_WUMR) the Force Wake-up pin has no wake-up effect. */ +#define SUPC_WUMR_FWUPEN_ENABLE (0x1u << 0) /**< \brief (SUPC_WUMR) the Force Wake-up pin low forces the wake-up of the core power supply. */ +#define SUPC_WUMR_SMEN (0x1u << 1) /**< \brief (SUPC_WUMR) Supply Monitor Wake-up Enable */ +#define SUPC_WUMR_SMEN_NOT_ENABLE (0x0u << 1) /**< \brief (SUPC_WUMR) the supply monitor detection has no wake-up effect. */ +#define SUPC_WUMR_SMEN_ENABLE (0x1u << 1) /**< \brief (SUPC_WUMR) the supply monitor detection forces the wake-up of the core power supply. */ +#define SUPC_WUMR_RTTEN (0x1u << 2) /**< \brief (SUPC_WUMR) Real Time Timer Wake-up Enable */ +#define SUPC_WUMR_RTTEN_NOT_ENABLE (0x0u << 2) /**< \brief (SUPC_WUMR) the RTT alarm signal has no wake-up effect. */ +#define SUPC_WUMR_RTTEN_ENABLE (0x1u << 2) /**< \brief (SUPC_WUMR) the RTT alarm signal forces the wake-up of the core power supply. */ +#define SUPC_WUMR_RTCEN (0x1u << 3) /**< \brief (SUPC_WUMR) Real Time Clock Wake-up Enable */ +#define SUPC_WUMR_RTCEN_NOT_ENABLE (0x0u << 3) /**< \brief (SUPC_WUMR) the RTC alarm signal has no wake-up effect. */ +#define SUPC_WUMR_RTCEN_ENABLE (0x1u << 3) /**< \brief (SUPC_WUMR) the RTC alarm signal forces the wake-up of the core power supply. */ +#define SUPC_WUMR_LPDBCEN0 (0x1u << 5) /**< \brief (SUPC_WUMR) Low power Debouncer ENable WKUP0 */ +#define SUPC_WUMR_LPDBCEN0_NOT_ENABLE (0x0u << 5) /**< \brief (SUPC_WUMR) the WKUP0 input pin is not connected with low power debouncer. */ +#define SUPC_WUMR_LPDBCEN0_ENABLE (0x1u << 5) /**< \brief (SUPC_WUMR) the WKUP0 input pin is connected with low power debouncer and can force a core wake-up. */ +#define SUPC_WUMR_LPDBCEN1 (0x1u << 6) /**< \brief (SUPC_WUMR) Low power Debouncer ENable WKUP1 */ +#define SUPC_WUMR_LPDBCEN1_NOT_ENABLE (0x0u << 6) /**< \brief (SUPC_WUMR) the WKUP1input pin is not connected with low power debouncer. */ +#define SUPC_WUMR_LPDBCEN1_ENABLE (0x1u << 6) /**< \brief (SUPC_WUMR) the WKUP1 input pin is connected with low power debouncer and can force a core wake-up. */ +#define SUPC_WUMR_LPDBCCLR (0x1u << 7) /**< \brief (SUPC_WUMR) Low power Debouncer Clear */ +#define SUPC_WUMR_LPDBCCLR_NOT_ENABLE (0x0u << 7) /**< \brief (SUPC_WUMR) a low power debounce event does not create an immediate clear on first half GPBR registers. */ +#define SUPC_WUMR_LPDBCCLR_ENABLE (0x1u << 7) /**< \brief (SUPC_WUMR) a low power debounce event on WKUP0 or WKUP1 generates an immediate clear on first half GPBR registers. */ +#define SUPC_WUMR_FWUPDBC_Pos 8 +#define SUPC_WUMR_FWUPDBC_Msk (0x7u << SUPC_WUMR_FWUPDBC_Pos) /**< \brief (SUPC_WUMR) Force Wake-up Debouncer Period */ +#define SUPC_WUMR_FWUPDBC_IMMEDIATE (0x0u << 8) /**< \brief (SUPC_WUMR) Immediate, no debouncing, detected active at least on one Slow Clock edge. */ +#define SUPC_WUMR_FWUPDBC_3_SCLK (0x1u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 3 SLCK periods */ +#define SUPC_WUMR_FWUPDBC_32_SCLK (0x2u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 32 SLCK periods */ +#define SUPC_WUMR_FWUPDBC_512_SCLK (0x3u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 512 SLCK periods */ +#define SUPC_WUMR_FWUPDBC_4096_SCLK (0x4u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 4,096 SLCK periods */ +#define SUPC_WUMR_FWUPDBC_32768_SCLK (0x5u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 32,768 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_Pos 12 +#define SUPC_WUMR_WKUPDBC_Msk (0x7u << SUPC_WUMR_WKUPDBC_Pos) /**< \brief (SUPC_WUMR) Wake-up Inputs Debouncer Period */ +#define SUPC_WUMR_WKUPDBC_IMMEDIATE (0x0u << 12) /**< \brief (SUPC_WUMR) Immediate, no debouncing, detected active at least on one Slow Clock edge. */ +#define SUPC_WUMR_WKUPDBC_3_SCLK (0x1u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 3 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_32_SCLK (0x2u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_512_SCLK (0x3u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 512 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_4096_SCLK (0x4u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 4,096 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_32768_SCLK (0x5u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32,768 SLCK periods */ +#define SUPC_WUMR_LPDBC_Pos 16 +#define SUPC_WUMR_LPDBC_Msk (0x7u << SUPC_WUMR_LPDBC_Pos) /**< \brief (SUPC_WUMR) Low Power DeBounCer Period */ +#define SUPC_WUMR_LPDBC_DISABLE (0x0u << 16) /**< \brief (SUPC_WUMR) Disable the low power debouncer. */ +#define SUPC_WUMR_LPDBC_2_RTCOUT0 (0x1u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 2 RTCOUT0 periods */ +#define SUPC_WUMR_LPDBC_3_RTCOUT0 (0x2u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 3 RTCOUT0 periods */ +#define SUPC_WUMR_LPDBC_4_RTCOUT0 (0x3u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 4 RTCOUT0 periods */ +#define SUPC_WUMR_LPDBC_5_RTCOUT0 (0x4u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 5 RTCOUT0 periods */ +#define SUPC_WUMR_LPDBC_6_RTCOUT0 (0x5u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 6 RTCOUT0 periods */ +#define SUPC_WUMR_LPDBC_7_RTCOUT0 (0x6u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 7 RTCOUT0 periods */ +#define SUPC_WUMR_LPDBC_8_RTCOUT0 (0x7u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 8 RTCOUT0 periods */ +/* -------- SUPC_WUIR : (SUPC Offset: 0x10) Supply Controller Wake-up Inputs Register -------- */ +#define SUPC_WUIR_WKUPEN0 (0x1u << 0) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 */ +#define SUPC_WUIR_WKUPEN0_DISABLE (0x0u << 0) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN0_ENABLE (0x1u << 0) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN1 (0x1u << 1) /**< \brief (SUPC_WUIR) Wake-up Input Enable 1 */ +#define SUPC_WUIR_WKUPEN1_DISABLE (0x0u << 1) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN1_ENABLE (0x1u << 1) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN2 (0x1u << 2) /**< \brief (SUPC_WUIR) Wake-up Input Enable 2 */ +#define SUPC_WUIR_WKUPEN2_DISABLE (0x0u << 2) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN2_ENABLE (0x1u << 2) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN3 (0x1u << 3) /**< \brief (SUPC_WUIR) Wake-up Input Enable 3 */ +#define SUPC_WUIR_WKUPEN3_DISABLE (0x0u << 3) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN3_ENABLE (0x1u << 3) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN4 (0x1u << 4) /**< \brief (SUPC_WUIR) Wake-up Input Enable 4 */ +#define SUPC_WUIR_WKUPEN4_DISABLE (0x0u << 4) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN4_ENABLE (0x1u << 4) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN5 (0x1u << 5) /**< \brief (SUPC_WUIR) Wake-up Input Enable 5 */ +#define SUPC_WUIR_WKUPEN5_DISABLE (0x0u << 5) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN5_ENABLE (0x1u << 5) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN6 (0x1u << 6) /**< \brief (SUPC_WUIR) Wake-up Input Enable 6 */ +#define SUPC_WUIR_WKUPEN6_DISABLE (0x0u << 6) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN6_ENABLE (0x1u << 6) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN7 (0x1u << 7) /**< \brief (SUPC_WUIR) Wake-up Input Enable 7 */ +#define SUPC_WUIR_WKUPEN7_DISABLE (0x0u << 7) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN7_ENABLE (0x1u << 7) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN8 (0x1u << 8) /**< \brief (SUPC_WUIR) Wake-up Input Enable 8 */ +#define SUPC_WUIR_WKUPEN8_DISABLE (0x0u << 8) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN8_ENABLE (0x1u << 8) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN9 (0x1u << 9) /**< \brief (SUPC_WUIR) Wake-up Input Enable 9 */ +#define SUPC_WUIR_WKUPEN9_DISABLE (0x0u << 9) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN9_ENABLE (0x1u << 9) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN10 (0x1u << 10) /**< \brief (SUPC_WUIR) Wake-up Input Enable 10 */ +#define SUPC_WUIR_WKUPEN10_DISABLE (0x0u << 10) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN10_ENABLE (0x1u << 10) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN11 (0x1u << 11) /**< \brief (SUPC_WUIR) Wake-up Input Enable 11 */ +#define SUPC_WUIR_WKUPEN11_DISABLE (0x0u << 11) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN11_ENABLE (0x1u << 11) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN12 (0x1u << 12) /**< \brief (SUPC_WUIR) Wake-up Input Enable 12 */ +#define SUPC_WUIR_WKUPEN12_DISABLE (0x0u << 12) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN12_ENABLE (0x1u << 12) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN13 (0x1u << 13) /**< \brief (SUPC_WUIR) Wake-up Input Enable 13 */ +#define SUPC_WUIR_WKUPEN13_DISABLE (0x0u << 13) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN13_ENABLE (0x1u << 13) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN14 (0x1u << 14) /**< \brief (SUPC_WUIR) Wake-up Input Enable 14 */ +#define SUPC_WUIR_WKUPEN14_DISABLE (0x0u << 14) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN14_ENABLE (0x1u << 14) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN15 (0x1u << 15) /**< \brief (SUPC_WUIR) Wake-up Input Enable 15 */ +#define SUPC_WUIR_WKUPEN15_DISABLE (0x0u << 15) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN15_ENABLE (0x1u << 15) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT0 (0x1u << 16) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 */ +#define SUPC_WUIR_WKUPT0_LOW (0x0u << 16) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT0_HIGH (0x1u << 16) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT1 (0x1u << 17) /**< \brief (SUPC_WUIR) Wake-up Input Type 1 */ +#define SUPC_WUIR_WKUPT1_LOW (0x0u << 17) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT1_HIGH (0x1u << 17) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT2 (0x1u << 18) /**< \brief (SUPC_WUIR) Wake-up Input Type 2 */ +#define SUPC_WUIR_WKUPT2_LOW (0x0u << 18) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT2_HIGH (0x1u << 18) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT3 (0x1u << 19) /**< \brief (SUPC_WUIR) Wake-up Input Type 3 */ +#define SUPC_WUIR_WKUPT3_LOW (0x0u << 19) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT3_HIGH (0x1u << 19) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT4 (0x1u << 20) /**< \brief (SUPC_WUIR) Wake-up Input Type 4 */ +#define SUPC_WUIR_WKUPT4_LOW (0x0u << 20) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT4_HIGH (0x1u << 20) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT5 (0x1u << 21) /**< \brief (SUPC_WUIR) Wake-up Input Type 5 */ +#define SUPC_WUIR_WKUPT5_LOW (0x0u << 21) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT5_HIGH (0x1u << 21) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT6 (0x1u << 22) /**< \brief (SUPC_WUIR) Wake-up Input Type 6 */ +#define SUPC_WUIR_WKUPT6_LOW (0x0u << 22) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT6_HIGH (0x1u << 22) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT7 (0x1u << 23) /**< \brief (SUPC_WUIR) Wake-up Input Type 7 */ +#define SUPC_WUIR_WKUPT7_LOW (0x0u << 23) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT7_HIGH (0x1u << 23) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT8 (0x1u << 24) /**< \brief (SUPC_WUIR) Wake-up Input Type 8 */ +#define SUPC_WUIR_WKUPT8_LOW (0x0u << 24) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT8_HIGH (0x1u << 24) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT9 (0x1u << 25) /**< \brief (SUPC_WUIR) Wake-up Input Type 9 */ +#define SUPC_WUIR_WKUPT9_LOW (0x0u << 25) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT9_HIGH (0x1u << 25) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT10 (0x1u << 26) /**< \brief (SUPC_WUIR) Wake-up Input Type 10 */ +#define SUPC_WUIR_WKUPT10_LOW (0x0u << 26) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT10_HIGH (0x1u << 26) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT11 (0x1u << 27) /**< \brief (SUPC_WUIR) Wake-up Input Type 11 */ +#define SUPC_WUIR_WKUPT11_LOW (0x0u << 27) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT11_HIGH (0x1u << 27) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT12 (0x1u << 28) /**< \brief (SUPC_WUIR) Wake-up Input Type 12 */ +#define SUPC_WUIR_WKUPT12_LOW (0x0u << 28) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT12_HIGH (0x1u << 28) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT13 (0x1u << 29) /**< \brief (SUPC_WUIR) Wake-up Input Type 13 */ +#define SUPC_WUIR_WKUPT13_LOW (0x0u << 29) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT13_HIGH (0x1u << 29) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT14 (0x1u << 30) /**< \brief (SUPC_WUIR) Wake-up Input Type 14 */ +#define SUPC_WUIR_WKUPT14_LOW (0x0u << 30) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT14_HIGH (0x1u << 30) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT15 (0x1u << 31) /**< \brief (SUPC_WUIR) Wake-up Input Type 15 */ +#define SUPC_WUIR_WKUPT15_LOW (0x0u << 31) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT15_HIGH (0x1u << 31) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ +/* -------- SUPC_SR : (SUPC Offset: 0x14) Supply Controller Status Register -------- */ +#define SUPC_SR_FWUPS (0x1u << 0) /**< \brief (SUPC_SR) FWUP Wake-up Status */ +#define SUPC_SR_FWUPS_NO (0x0u << 0) /**< \brief (SUPC_SR) no wake-up due to the assertion of the FWUP pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_FWUPS_PRESENT (0x1u << 0) /**< \brief (SUPC_SR) at least one wake-up due to the assertion of the FWUP pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPS (0x1u << 1) /**< \brief (SUPC_SR) WKUP Wake-up Status */ +#define SUPC_SR_WKUPS_NO (0x0u << 1) /**< \brief (SUPC_SR) no wake-up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPS_PRESENT (0x1u << 1) /**< \brief (SUPC_SR) at least one wake-up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_SMWS (0x1u << 2) /**< \brief (SUPC_SR) Supply Monitor Detection Wake-up Status */ +#define SUPC_SR_SMWS_NO (0x0u << 2) /**< \brief (SUPC_SR) no wake-up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_SMWS_PRESENT (0x1u << 2) /**< \brief (SUPC_SR) at least one wake-up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_BODRSTS (0x1u << 3) /**< \brief (SUPC_SR) Brownout Detector Reset Status */ +#define SUPC_SR_BODRSTS_NO (0x0u << 3) /**< \brief (SUPC_SR) no core brownout rising edge event has been detected since the last read of the SUPC_SR. */ +#define SUPC_SR_BODRSTS_PRESENT (0x1u << 3) /**< \brief (SUPC_SR) at least one brownout output rising edge event has been detected since the last read of the SUPC_SR. */ +#define SUPC_SR_SMRSTS (0x1u << 4) /**< \brief (SUPC_SR) Supply Monitor Reset Status */ +#define SUPC_SR_SMRSTS_NO (0x0u << 4) /**< \brief (SUPC_SR) no supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ +#define SUPC_SR_SMRSTS_PRESENT (0x1u << 4) /**< \brief (SUPC_SR) at least one supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ +#define SUPC_SR_SMS (0x1u << 5) /**< \brief (SUPC_SR) Supply Monitor Status */ +#define SUPC_SR_SMS_NO (0x0u << 5) /**< \brief (SUPC_SR) no supply monitor detection since the last read of SUPC_SR. */ +#define SUPC_SR_SMS_PRESENT (0x1u << 5) /**< \brief (SUPC_SR) at least one supply monitor detection since the last read of SUPC_SR. */ +#define SUPC_SR_SMOS (0x1u << 6) /**< \brief (SUPC_SR) Supply Monitor Output Status */ +#define SUPC_SR_SMOS_HIGH (0x0u << 6) /**< \brief (SUPC_SR) the supply monitor detected VDDIO higher than its threshold at its last measurement. */ +#define SUPC_SR_SMOS_LOW (0x1u << 6) /**< \brief (SUPC_SR) the supply monitor detected VDDIO lower than its threshold at its last measurement. */ +#define SUPC_SR_OSCSEL (0x1u << 7) /**< \brief (SUPC_SR) 32-kHz Oscillator Selection Status */ +#define SUPC_SR_OSCSEL_RC (0x0u << 7) /**< \brief (SUPC_SR) the slow clock, SLCK is generated by the embedded 32-kHz RC oscillator. */ +#define SUPC_SR_OSCSEL_CRYST (0x1u << 7) /**< \brief (SUPC_SR) the slow clock, SLCK is generated by the 32-kHz crystal oscillator. */ +#define SUPC_SR_FWUPIS (0x1u << 12) /**< \brief (SUPC_SR) FWUP Input Status */ +#define SUPC_SR_FWUPIS_LOW (0x0u << 12) /**< \brief (SUPC_SR) FWUP input is tied low. */ +#define SUPC_SR_FWUPIS_HIGH (0x1u << 12) /**< \brief (SUPC_SR) FWUP input is tied high. */ +#define SUPC_SR_LPDBCS0 (0x1u << 13) /**< \brief (SUPC_SR) Low Power Debouncer Wake-up Status on WKUP0 */ +#define SUPC_SR_LPDBCS0_NO (0x0u << 13) /**< \brief (SUPC_SR) no wake-up due to the assertion of the WKUP0 pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_LPDBCS0_PRESENT (0x1u << 13) /**< \brief (SUPC_SR) at least one wake-up due to the assertion of the WKUP0 pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_LPDBCS1 (0x1u << 14) /**< \brief (SUPC_SR) Low Power Debouncer Wake-up Status on WKUP1 */ +#define SUPC_SR_LPDBCS1_NO (0x0u << 14) /**< \brief (SUPC_SR) no wake-up due to the assertion of the WKUP1 pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_LPDBCS1_PRESENT (0x1u << 14) /**< \brief (SUPC_SR) at least one wake-up due to the assertion of the WKUP1 pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS0 (0x1u << 16) /**< \brief (SUPC_SR) WKUP Input Status 0 */ +#define SUPC_SR_WKUPIS0_DIS (0x0u << 16) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS0_EN (0x1u << 16) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS1 (0x1u << 17) /**< \brief (SUPC_SR) WKUP Input Status 1 */ +#define SUPC_SR_WKUPIS1_DIS (0x0u << 17) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS1_EN (0x1u << 17) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS2 (0x1u << 18) /**< \brief (SUPC_SR) WKUP Input Status 2 */ +#define SUPC_SR_WKUPIS2_DIS (0x0u << 18) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS2_EN (0x1u << 18) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS3 (0x1u << 19) /**< \brief (SUPC_SR) WKUP Input Status 3 */ +#define SUPC_SR_WKUPIS3_DIS (0x0u << 19) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS3_EN (0x1u << 19) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS4 (0x1u << 20) /**< \brief (SUPC_SR) WKUP Input Status 4 */ +#define SUPC_SR_WKUPIS4_DIS (0x0u << 20) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS4_EN (0x1u << 20) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS5 (0x1u << 21) /**< \brief (SUPC_SR) WKUP Input Status 5 */ +#define SUPC_SR_WKUPIS5_DIS (0x0u << 21) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS5_EN (0x1u << 21) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS6 (0x1u << 22) /**< \brief (SUPC_SR) WKUP Input Status 6 */ +#define SUPC_SR_WKUPIS6_DIS (0x0u << 22) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS6_EN (0x1u << 22) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS7 (0x1u << 23) /**< \brief (SUPC_SR) WKUP Input Status 7 */ +#define SUPC_SR_WKUPIS7_DIS (0x0u << 23) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS7_EN (0x1u << 23) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS8 (0x1u << 24) /**< \brief (SUPC_SR) WKUP Input Status 8 */ +#define SUPC_SR_WKUPIS8_DIS (0x0u << 24) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS8_EN (0x1u << 24) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS9 (0x1u << 25) /**< \brief (SUPC_SR) WKUP Input Status 9 */ +#define SUPC_SR_WKUPIS9_DIS (0x0u << 25) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS9_EN (0x1u << 25) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS10 (0x1u << 26) /**< \brief (SUPC_SR) WKUP Input Status 10 */ +#define SUPC_SR_WKUPIS10_DIS (0x0u << 26) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS10_EN (0x1u << 26) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS11 (0x1u << 27) /**< \brief (SUPC_SR) WKUP Input Status 11 */ +#define SUPC_SR_WKUPIS11_DIS (0x0u << 27) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS11_EN (0x1u << 27) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS12 (0x1u << 28) /**< \brief (SUPC_SR) WKUP Input Status 12 */ +#define SUPC_SR_WKUPIS12_DIS (0x0u << 28) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS12_EN (0x1u << 28) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS13 (0x1u << 29) /**< \brief (SUPC_SR) WKUP Input Status 13 */ +#define SUPC_SR_WKUPIS13_DIS (0x0u << 29) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS13_EN (0x1u << 29) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS14 (0x1u << 30) /**< \brief (SUPC_SR) WKUP Input Status 14 */ +#define SUPC_SR_WKUPIS14_DIS (0x0u << 30) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS14_EN (0x1u << 30) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS15 (0x1u << 31) /**< \brief (SUPC_SR) WKUP Input Status 15 */ +#define SUPC_SR_WKUPIS15_DIS (0x0u << 31) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS15_EN (0x1u << 31) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ + +/*@}*/ + + +#endif /* _SAM4E_SUPC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/tc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/tc.h new file mode 100644 index 000000000..6f7e607df --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/tc.h @@ -0,0 +1,383 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_TC_COMPONENT_ +#define _SAM4E_TC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Timer Counter */ +/* ============================================================================= */ +/** \addtogroup SAM4E_TC Timer Counter */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief TcChannel hardware registers */ +typedef struct { + RwReg TC_CCR; /**< \brief (TcChannel Offset: 0x0) Channel Control Register */ + RwReg TC_CMR; /**< \brief (TcChannel Offset: 0x4) Channel Mode Register */ + RwReg TC_SMMR; /**< \brief (TcChannel Offset: 0x8) Stepper Motor Mode Register */ + RwReg TC_RAB; /**< \brief (TcChannel Offset: 0xC) Register AB */ + RwReg TC_CV; /**< \brief (TcChannel Offset: 0x10) Counter Value */ + RwReg TC_RA; /**< \brief (TcChannel Offset: 0x14) Register A */ + RwReg TC_RB; /**< \brief (TcChannel Offset: 0x18) Register B */ + RwReg TC_RC; /**< \brief (TcChannel Offset: 0x1C) Register C */ + RwReg TC_SR; /**< \brief (TcChannel Offset: 0x20) Status Register */ + RwReg TC_IER; /**< \brief (TcChannel Offset: 0x24) Interrupt Enable Register */ + RwReg TC_IDR; /**< \brief (TcChannel Offset: 0x28) Interrupt Disable Register */ + RwReg TC_IMR; /**< \brief (TcChannel Offset: 0x2C) Interrupt Mask Register */ + RwReg TC_EMR; /**< \brief (TcChannel Offset: 0x30) Extended Mode Register */ + RoReg Reserved1[3]; +} TcChannel; +/** \brief TcPdc hardware registers */ +typedef struct { + RwReg TC_RPR; /**< \brief (TcPdc Offset: 0x0) Receive Pointer Register */ + RwReg TC_RCR; /**< \brief (TcPdc Offset: 0x4) Receive Counter Register */ + RoReg Reserved2[2]; + RwReg TC_RNPR; /**< \brief (TcPdc Offset: 0x10) Receive Next Pointer Register */ + RwReg TC_RNCR; /**< \brief (TcPdc Offset: 0x14) Receive Next Counter Register */ + RoReg Reserved3[2]; + RwReg TC_PTCR; /**< \brief (TcPdc Offset: 0x20) Transfer Control Register */ + RwReg TC_PTSR; /**< \brief (TcPdc Offset: 0x24) Transfer Status Register */ + RoReg Reserved4[6]; +} TcPdc; +/** \brief Tc hardware registers */ +#define TCCHANNEL_NUMBER 3 +#define TCPDC_NUMBER 3 +typedef struct { + TcChannel TC_CHANNEL[TCCHANNEL_NUMBER]; /**< \brief (Tc Offset: 0x0) channel = 0 .. 2 */ + WoReg TC_BCR; /**< \brief (Tc Offset: 0xC0) Block Control Register */ + RwReg TC_BMR; /**< \brief (Tc Offset: 0xC4) Block Mode Register */ + WoReg TC_QIER; /**< \brief (Tc Offset: 0xC8) QDEC Interrupt Enable Register */ + WoReg TC_QIDR; /**< \brief (Tc Offset: 0xCC) QDEC Interrupt Disable Register */ + RoReg TC_QIMR; /**< \brief (Tc Offset: 0xD0) QDEC Interrupt Mask Register */ + RoReg TC_QISR; /**< \brief (Tc Offset: 0xD4) QDEC Interrupt Status Register */ + RwReg TC_FMR; /**< \brief (Tc Offset: 0xD8) Fault Mode Register */ + RoReg Reserved1[2]; + RwReg TC_WPMR; /**< \brief (Tc Offset: 0xE4) Write Protect Mode Register */ + RoReg Reserved2[6]; + TcPdc TC_PDC[TCPDC_NUMBER]; /**< \brief (Tc Offset: 0x100) pdc = 0 .. 2 */ +} Tc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- TC_CCR : (TC Offset: N/A) Channel Control Register -------- */ +#define TC_CCR_CLKEN (0x1u << 0) /**< \brief (TC_CCR) Counter Clock Enable Command */ +#define TC_CCR_CLKDIS (0x1u << 1) /**< \brief (TC_CCR) Counter Clock Disable Command */ +#define TC_CCR_SWTRG (0x1u << 2) /**< \brief (TC_CCR) Software Trigger Command */ +/* -------- TC_CMR : (TC Offset: N/A) Channel Mode Register -------- */ +#define TC_CMR_TCCLKS_Pos 0 +#define TC_CMR_TCCLKS_Msk (0x7u << TC_CMR_TCCLKS_Pos) /**< \brief (TC_CMR) Clock Selection */ +#define TC_CMR_TCCLKS_TIMER_CLOCK1 (0x0u << 0) /**< \brief (TC_CMR) Clock selected: TCLK1 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK2 (0x1u << 0) /**< \brief (TC_CMR) Clock selected: TCLK2 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK3 (0x2u << 0) /**< \brief (TC_CMR) Clock selected: TCLK3 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK4 (0x3u << 0) /**< \brief (TC_CMR) Clock selected: TCLK4 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK5 (0x4u << 0) /**< \brief (TC_CMR) Clock selected: TCLK5 */ +#define TC_CMR_TCCLKS_XC0 (0x5u << 0) /**< \brief (TC_CMR) Clock selected: XC0 */ +#define TC_CMR_TCCLKS_XC1 (0x6u << 0) /**< \brief (TC_CMR) Clock selected: XC1 */ +#define TC_CMR_TCCLKS_XC2 (0x7u << 0) /**< \brief (TC_CMR) Clock selected: XC2 */ +#define TC_CMR_CLKI (0x1u << 3) /**< \brief (TC_CMR) Clock Invert */ +#define TC_CMR_BURST_Pos 4 +#define TC_CMR_BURST_Msk (0x3u << TC_CMR_BURST_Pos) /**< \brief (TC_CMR) Burst Signal Selection */ +#define TC_CMR_BURST_NONE (0x0u << 4) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ +#define TC_CMR_BURST_XC0 (0x1u << 4) /**< \brief (TC_CMR) XC0 is ANDed with the selected clock. */ +#define TC_CMR_BURST_XC1 (0x2u << 4) /**< \brief (TC_CMR) XC1 is ANDed with the selected clock. */ +#define TC_CMR_BURST_XC2 (0x3u << 4) /**< \brief (TC_CMR) XC2 is ANDed with the selected clock. */ +#define TC_CMR_LDBSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RB Loading */ +#define TC_CMR_LDBDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RB Loading */ +#define TC_CMR_ETRGEDG_Pos 8 +#define TC_CMR_ETRGEDG_Msk (0x3u << TC_CMR_ETRGEDG_Pos) /**< \brief (TC_CMR) External Trigger Edge Selection */ +#define TC_CMR_ETRGEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ +#define TC_CMR_ETRGEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ +#define TC_CMR_ETRGEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ +#define TC_CMR_ETRGEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ +#define TC_CMR_ABETRG (0x1u << 10) /**< \brief (TC_CMR) TIOA or TIOB External Trigger Selection */ +#define TC_CMR_CPCTRG (0x1u << 14) /**< \brief (TC_CMR) RC Compare Trigger Enable */ +#define TC_CMR_WAVE (0x1u << 15) /**< \brief (TC_CMR) Waveform Mode */ +#define TC_CMR_LDRA_Pos 16 +#define TC_CMR_LDRA_Msk (0x3u << TC_CMR_LDRA_Pos) /**< \brief (TC_CMR) RA Loading Edge Selection */ +#define TC_CMR_LDRA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ +#define TC_CMR_LDRA_RISING (0x1u << 16) /**< \brief (TC_CMR) Rising edge of TIOA */ +#define TC_CMR_LDRA_FALLING (0x2u << 16) /**< \brief (TC_CMR) Falling edge of TIOA */ +#define TC_CMR_LDRA_EDGE (0x3u << 16) /**< \brief (TC_CMR) Each edge of TIOA */ +#define TC_CMR_LDRB_Pos 18 +#define TC_CMR_LDRB_Msk (0x3u << TC_CMR_LDRB_Pos) /**< \brief (TC_CMR) RB Loading Edge Selection */ +#define TC_CMR_LDRB_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ +#define TC_CMR_LDRB_RISING (0x1u << 18) /**< \brief (TC_CMR) Rising edge of TIOA */ +#define TC_CMR_LDRB_FALLING (0x2u << 18) /**< \brief (TC_CMR) Falling edge of TIOA */ +#define TC_CMR_LDRB_EDGE (0x3u << 18) /**< \brief (TC_CMR) Each edge of TIOA */ +#define TC_CMR_SBSMPLR_Pos 20 +#define TC_CMR_SBSMPLR_Msk (0x7u << TC_CMR_SBSMPLR_Pos) /**< \brief (TC_CMR) Loading Edge Subsampling Ratio */ +#define TC_CMR_SBSMPLR_ONE (0x0u << 20) /**< \brief (TC_CMR) Load a Capture Register each selected edge */ +#define TC_CMR_SBSMPLR_HALF (0x1u << 20) /**< \brief (TC_CMR) Load a Capture Register every 2 selected edges */ +#define TC_CMR_SBSMPLR_FOURTH (0x2u << 20) /**< \brief (TC_CMR) Load a Capture Register every 4 selected edges */ +#define TC_CMR_SBSMPLR_EIGHTH (0x3u << 20) /**< \brief (TC_CMR) Load a Capture Register every 8 selected edges */ +#define TC_CMR_SBSMPLR_SIXTEENTH (0x4u << 20) /**< \brief (TC_CMR) Load a Capture Register every 16 selected edges */ +#define TC_CMR_CPCSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RC Compare */ +#define TC_CMR_CPCDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RC Compare */ +#define TC_CMR_EEVTEDG_Pos 8 +#define TC_CMR_EEVTEDG_Msk (0x3u << TC_CMR_EEVTEDG_Pos) /**< \brief (TC_CMR) External Event Edge Selection */ +#define TC_CMR_EEVTEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) None */ +#define TC_CMR_EEVTEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ +#define TC_CMR_EEVTEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ +#define TC_CMR_EEVTEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ +#define TC_CMR_EEVT_Pos 10 +#define TC_CMR_EEVT_Msk (0x3u << TC_CMR_EEVT_Pos) /**< \brief (TC_CMR) External Event Selection */ +#define TC_CMR_EEVT_TIOB (0x0u << 10) /**< \brief (TC_CMR) TIOB */ +#define TC_CMR_EEVT_XC0 (0x1u << 10) /**< \brief (TC_CMR) XC0 */ +#define TC_CMR_EEVT_XC1 (0x2u << 10) /**< \brief (TC_CMR) XC1 */ +#define TC_CMR_EEVT_XC2 (0x3u << 10) /**< \brief (TC_CMR) XC2 */ +#define TC_CMR_ENETRG (0x1u << 12) /**< \brief (TC_CMR) External Event Trigger Enable */ +#define TC_CMR_WAVSEL_Pos 13 +#define TC_CMR_WAVSEL_Msk (0x3u << TC_CMR_WAVSEL_Pos) /**< \brief (TC_CMR) Waveform Selection */ +#define TC_CMR_WAVSEL_UP (0x0u << 13) /**< \brief (TC_CMR) UP mode without automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UPDOWN (0x1u << 13) /**< \brief (TC_CMR) UPDOWN mode without automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UP_RC (0x2u << 13) /**< \brief (TC_CMR) UP mode with automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UPDOWN_RC (0x3u << 13) /**< \brief (TC_CMR) UPDOWN mode with automatic trigger on RC Compare */ +#define TC_CMR_ACPA_Pos 16 +#define TC_CMR_ACPA_Msk (0x3u << TC_CMR_ACPA_Pos) /**< \brief (TC_CMR) RA Compare Effect on TIOA */ +#define TC_CMR_ACPA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ +#define TC_CMR_ACPA_SET (0x1u << 16) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ACPA_CLEAR (0x2u << 16) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ACPA_TOGGLE (0x3u << 16) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_ACPC_Pos 18 +#define TC_CMR_ACPC_Msk (0x3u << TC_CMR_ACPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOA */ +#define TC_CMR_ACPC_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ +#define TC_CMR_ACPC_SET (0x1u << 18) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ACPC_CLEAR (0x2u << 18) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ACPC_TOGGLE (0x3u << 18) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_AEEVT_Pos 20 +#define TC_CMR_AEEVT_Msk (0x3u << TC_CMR_AEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOA */ +#define TC_CMR_AEEVT_NONE (0x0u << 20) /**< \brief (TC_CMR) None */ +#define TC_CMR_AEEVT_SET (0x1u << 20) /**< \brief (TC_CMR) Set */ +#define TC_CMR_AEEVT_CLEAR (0x2u << 20) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_AEEVT_TOGGLE (0x3u << 20) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_ASWTRG_Pos 22 +#define TC_CMR_ASWTRG_Msk (0x3u << TC_CMR_ASWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOA */ +#define TC_CMR_ASWTRG_NONE (0x0u << 22) /**< \brief (TC_CMR) None */ +#define TC_CMR_ASWTRG_SET (0x1u << 22) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ASWTRG_CLEAR (0x2u << 22) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ASWTRG_TOGGLE (0x3u << 22) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BCPB_Pos 24 +#define TC_CMR_BCPB_Msk (0x3u << TC_CMR_BCPB_Pos) /**< \brief (TC_CMR) RB Compare Effect on TIOB */ +#define TC_CMR_BCPB_NONE (0x0u << 24) /**< \brief (TC_CMR) None */ +#define TC_CMR_BCPB_SET (0x1u << 24) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BCPB_CLEAR (0x2u << 24) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BCPB_TOGGLE (0x3u << 24) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BCPC_Pos 26 +#define TC_CMR_BCPC_Msk (0x3u << TC_CMR_BCPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOB */ +#define TC_CMR_BCPC_NONE (0x0u << 26) /**< \brief (TC_CMR) None */ +#define TC_CMR_BCPC_SET (0x1u << 26) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BCPC_CLEAR (0x2u << 26) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BCPC_TOGGLE (0x3u << 26) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BEEVT_Pos 28 +#define TC_CMR_BEEVT_Msk (0x3u << TC_CMR_BEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOB */ +#define TC_CMR_BEEVT_NONE (0x0u << 28) /**< \brief (TC_CMR) None */ +#define TC_CMR_BEEVT_SET (0x1u << 28) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BEEVT_CLEAR (0x2u << 28) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BEEVT_TOGGLE (0x3u << 28) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BSWTRG_Pos 30 +#define TC_CMR_BSWTRG_Msk (0x3u << TC_CMR_BSWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOB */ +#define TC_CMR_BSWTRG_NONE (0x0u << 30) /**< \brief (TC_CMR) None */ +#define TC_CMR_BSWTRG_SET (0x1u << 30) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BSWTRG_CLEAR (0x2u << 30) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BSWTRG_TOGGLE (0x3u << 30) /**< \brief (TC_CMR) Toggle */ +/* -------- TC_SMMR : (TC Offset: N/A) Stepper Motor Mode Register -------- */ +#define TC_SMMR_GCEN (0x1u << 0) /**< \brief (TC_SMMR) Gray Count Enable */ +#define TC_SMMR_DOWN (0x1u << 1) /**< \brief (TC_SMMR) DOWN Count */ +/* -------- TC_RAB : (TC Offset: N/A) Register AB -------- */ +#define TC_RAB_RAB_Pos 0 +#define TC_RAB_RAB_Msk (0xffffffffu << TC_RAB_RAB_Pos) /**< \brief (TC_RAB) Register A or Register B */ +/* -------- TC_CV : (TC Offset: N/A) Counter Value -------- */ +#define TC_CV_CV_Pos 0 +#define TC_CV_CV_Msk (0xffffffffu << TC_CV_CV_Pos) /**< \brief (TC_CV) Counter Value */ +/* -------- TC_RA : (TC Offset: N/A) Register A -------- */ +#define TC_RA_RA_Pos 0 +#define TC_RA_RA_Msk (0xffffffffu << TC_RA_RA_Pos) /**< \brief (TC_RA) Register A */ +#define TC_RA_RA(value) ((TC_RA_RA_Msk & ((value) << TC_RA_RA_Pos))) +/* -------- TC_RB : (TC Offset: N/A) Register B -------- */ +#define TC_RB_RB_Pos 0 +#define TC_RB_RB_Msk (0xffffffffu << TC_RB_RB_Pos) /**< \brief (TC_RB) Register B */ +#define TC_RB_RB(value) ((TC_RB_RB_Msk & ((value) << TC_RB_RB_Pos))) +/* -------- TC_RC : (TC Offset: N/A) Register C -------- */ +#define TC_RC_RC_Pos 0 +#define TC_RC_RC_Msk (0xffffffffu << TC_RC_RC_Pos) /**< \brief (TC_RC) Register C */ +#define TC_RC_RC(value) ((TC_RC_RC_Msk & ((value) << TC_RC_RC_Pos))) +/* -------- TC_SR : (TC Offset: N/A) Status Register -------- */ +#define TC_SR_COVFS (0x1u << 0) /**< \brief (TC_SR) Counter Overflow Status */ +#define TC_SR_LOVRS (0x1u << 1) /**< \brief (TC_SR) Load Overrun Status */ +#define TC_SR_CPAS (0x1u << 2) /**< \brief (TC_SR) RA Compare Status */ +#define TC_SR_CPBS (0x1u << 3) /**< \brief (TC_SR) RB Compare Status */ +#define TC_SR_CPCS (0x1u << 4) /**< \brief (TC_SR) RC Compare Status */ +#define TC_SR_LDRAS (0x1u << 5) /**< \brief (TC_SR) RA Loading Status */ +#define TC_SR_LDRBS (0x1u << 6) /**< \brief (TC_SR) RB Loading Status */ +#define TC_SR_ETRGS (0x1u << 7) /**< \brief (TC_SR) External Trigger Status */ +#define TC_SR_ENDRX (0x1u << 8) /**< \brief (TC_SR) End of Receiver Transfer */ +#define TC_SR_RXBUFF (0x1u << 9) /**< \brief (TC_SR) Reception Buffer Full */ +#define TC_SR_CLKSTA (0x1u << 16) /**< \brief (TC_SR) Clock Enabling Status */ +#define TC_SR_MTIOA (0x1u << 17) /**< \brief (TC_SR) TIOA Mirror */ +#define TC_SR_MTIOB (0x1u << 18) /**< \brief (TC_SR) TIOB Mirror */ +/* -------- TC_IER : (TC Offset: N/A) Interrupt Enable Register -------- */ +#define TC_IER_COVFS (0x1u << 0) /**< \brief (TC_IER) Counter Overflow */ +#define TC_IER_LOVRS (0x1u << 1) /**< \brief (TC_IER) Load Overrun */ +#define TC_IER_CPAS (0x1u << 2) /**< \brief (TC_IER) RA Compare */ +#define TC_IER_CPBS (0x1u << 3) /**< \brief (TC_IER) RB Compare */ +#define TC_IER_CPCS (0x1u << 4) /**< \brief (TC_IER) RC Compare */ +#define TC_IER_LDRAS (0x1u << 5) /**< \brief (TC_IER) RA Loading */ +#define TC_IER_LDRBS (0x1u << 6) /**< \brief (TC_IER) RB Loading */ +#define TC_IER_ETRGS (0x1u << 7) /**< \brief (TC_IER) External Trigger */ +#define TC_IER_ENDRX (0x1u << 8) /**< \brief (TC_IER) End of Receiver Transfer */ +#define TC_IER_RXBUFF (0x1u << 9) /**< \brief (TC_IER) Reception Buffer Full */ +/* -------- TC_IDR : (TC Offset: N/A) Interrupt Disable Register -------- */ +#define TC_IDR_COVFS (0x1u << 0) /**< \brief (TC_IDR) Counter Overflow */ +#define TC_IDR_LOVRS (0x1u << 1) /**< \brief (TC_IDR) Load Overrun */ +#define TC_IDR_CPAS (0x1u << 2) /**< \brief (TC_IDR) RA Compare */ +#define TC_IDR_CPBS (0x1u << 3) /**< \brief (TC_IDR) RB Compare */ +#define TC_IDR_CPCS (0x1u << 4) /**< \brief (TC_IDR) RC Compare */ +#define TC_IDR_LDRAS (0x1u << 5) /**< \brief (TC_IDR) RA Loading */ +#define TC_IDR_LDRBS (0x1u << 6) /**< \brief (TC_IDR) RB Loading */ +#define TC_IDR_ETRGS (0x1u << 7) /**< \brief (TC_IDR) External Trigger */ +#define TC_IDR_ENDRX (0x1u << 8) /**< \brief (TC_IDR) End of Receiver Transfer */ +#define TC_IDR_RXBUFF (0x1u << 9) /**< \brief (TC_IDR) Reception Buffer Full */ +/* -------- TC_IMR : (TC Offset: N/A) Interrupt Mask Register -------- */ +#define TC_IMR_COVFS (0x1u << 0) /**< \brief (TC_IMR) Counter Overflow */ +#define TC_IMR_LOVRS (0x1u << 1) /**< \brief (TC_IMR) Load Overrun */ +#define TC_IMR_CPAS (0x1u << 2) /**< \brief (TC_IMR) RA Compare */ +#define TC_IMR_CPBS (0x1u << 3) /**< \brief (TC_IMR) RB Compare */ +#define TC_IMR_CPCS (0x1u << 4) /**< \brief (TC_IMR) RC Compare */ +#define TC_IMR_LDRAS (0x1u << 5) /**< \brief (TC_IMR) RA Loading */ +#define TC_IMR_LDRBS (0x1u << 6) /**< \brief (TC_IMR) RB Loading */ +#define TC_IMR_ETRGS (0x1u << 7) /**< \brief (TC_IMR) External Trigger */ +#define TC_IMR_ENDRX (0x1u << 8) /**< \brief (TC_IMR) End of Receiver Transfer */ +#define TC_IMR_RXBUFF (0x1u << 9) /**< \brief (TC_IMR) Reception Buffer Full */ +/* -------- TC_EMR : (TC Offset: N/A) Extended Mode Register -------- */ +#define TC_EMR_TRIGSRCA_Pos 0 +#define TC_EMR_TRIGSRCA_Msk (0x3u << TC_EMR_TRIGSRCA_Pos) /**< \brief (TC_EMR) TRIGger SouRCe for input A */ +#define TC_EMR_TRIGSRCA_EXTERNAL_TIOAx (0x0u << 0) /**< \brief (TC_EMR) the trigger/capture input A is driven by external pin TIOAx */ +#define TC_EMR_TRIGSRCA_PWMx (0x1u << 0) /**< \brief (TC_EMR) the trigger/capture input A is driven internally by PWMx */ +#define TC_EMR_TRIGSRCB_Pos 4 +#define TC_EMR_TRIGSRCB_Msk (0x3u << TC_EMR_TRIGSRCB_Pos) /**< \brief (TC_EMR) TRIGger SouRCe for input B */ +#define TC_EMR_TRIGSRCB_EXTERNAL_TIOBx (0x0u << 4) /**< \brief (TC_EMR) the trigger/capture input B is driven by external pin TIOBx */ +#define TC_EMR_TRIGSRCB_PWMx (0x1u << 4) /**< \brief (TC_EMR) the trigger/capture input B is driven internally by PWMx */ +#define TC_EMR_NODIVCLK (0x1u << 8) /**< \brief (TC_EMR) NO DIVided CLocK */ +/* -------- TC_BCR : (TC Offset: 0xC0) Block Control Register -------- */ +#define TC_BCR_SYNC (0x1u << 0) /**< \brief (TC_BCR) Synchro Command */ +/* -------- TC_BMR : (TC Offset: 0xC4) Block Mode Register -------- */ +#define TC_BMR_TC0XC0S_Pos 0 +#define TC_BMR_TC0XC0S_Msk (0x3u << TC_BMR_TC0XC0S_Pos) /**< \brief (TC_BMR) External Clock Signal 0 Selection */ +#define TC_BMR_TC0XC0S_TCLK0 (0x0u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TCLK0 */ +#define TC_BMR_TC0XC0S_TIOA1 (0x2u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA1 */ +#define TC_BMR_TC0XC0S_TIOA2 (0x3u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA2 */ +#define TC_BMR_TC1XC1S_Pos 2 +#define TC_BMR_TC1XC1S_Msk (0x3u << TC_BMR_TC1XC1S_Pos) /**< \brief (TC_BMR) External Clock Signal 1 Selection */ +#define TC_BMR_TC1XC1S_TCLK1 (0x0u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TCLK1 */ +#define TC_BMR_TC1XC1S_TIOA0 (0x2u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA0 */ +#define TC_BMR_TC1XC1S_TIOA2 (0x3u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA2 */ +#define TC_BMR_TC2XC2S_Pos 4 +#define TC_BMR_TC2XC2S_Msk (0x3u << TC_BMR_TC2XC2S_Pos) /**< \brief (TC_BMR) External Clock Signal 2 Selection */ +#define TC_BMR_TC2XC2S_TCLK2 (0x0u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TCLK2 */ +#define TC_BMR_TC2XC2S_TIOA1 (0x2u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA1 */ +#define TC_BMR_TC2XC2S_TIOA2 (0x3u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA2 */ +#define TC_BMR_QDEN (0x1u << 8) /**< \brief (TC_BMR) Quadrature Decoder ENabled */ +#define TC_BMR_POSEN (0x1u << 9) /**< \brief (TC_BMR) POSition ENabled */ +#define TC_BMR_SPEEDEN (0x1u << 10) /**< \brief (TC_BMR) SPEED ENabled */ +#define TC_BMR_QDTRANS (0x1u << 11) /**< \brief (TC_BMR) Quadrature Decoding TRANSparent */ +#define TC_BMR_EDGPHA (0x1u << 12) /**< \brief (TC_BMR) EDGe on PHA count mode */ +#define TC_BMR_INVA (0x1u << 13) /**< \brief (TC_BMR) INVerted phA */ +#define TC_BMR_INVB (0x1u << 14) /**< \brief (TC_BMR) INVerted phB */ +#define TC_BMR_INVIDX (0x1u << 15) /**< \brief (TC_BMR) INVerted InDeX */ +#define TC_BMR_SWAP (0x1u << 16) /**< \brief (TC_BMR) SWAP PHA and PHB */ +#define TC_BMR_IDXPHB (0x1u << 17) /**< \brief (TC_BMR) InDeX pin is PHB pin */ +#define TC_BMR_FILTER (0x1u << 19) /**< \brief (TC_BMR) */ +#define TC_BMR_MAXFILT_Pos 20 +#define TC_BMR_MAXFILT_Msk (0x3fu << TC_BMR_MAXFILT_Pos) /**< \brief (TC_BMR) MAXimum FILTer */ +#define TC_BMR_MAXFILT(value) ((TC_BMR_MAXFILT_Msk & ((value) << TC_BMR_MAXFILT_Pos))) +/* -------- TC_QIER : (TC Offset: 0xC8) QDEC Interrupt Enable Register -------- */ +#define TC_QIER_IDX (0x1u << 0) /**< \brief (TC_QIER) InDeX */ +#define TC_QIER_DIRCHG (0x1u << 1) /**< \brief (TC_QIER) DIRection CHanGe */ +#define TC_QIER_QERR (0x1u << 2) /**< \brief (TC_QIER) Quadrature ERRor */ +/* -------- TC_QIDR : (TC Offset: 0xCC) QDEC Interrupt Disable Register -------- */ +#define TC_QIDR_IDX (0x1u << 0) /**< \brief (TC_QIDR) InDeX */ +#define TC_QIDR_DIRCHG (0x1u << 1) /**< \brief (TC_QIDR) DIRection CHanGe */ +#define TC_QIDR_QERR (0x1u << 2) /**< \brief (TC_QIDR) Quadrature ERRor */ +/* -------- TC_QIMR : (TC Offset: 0xD0) QDEC Interrupt Mask Register -------- */ +#define TC_QIMR_IDX (0x1u << 0) /**< \brief (TC_QIMR) InDeX */ +#define TC_QIMR_DIRCHG (0x1u << 1) /**< \brief (TC_QIMR) DIRection CHanGe */ +#define TC_QIMR_QERR (0x1u << 2) /**< \brief (TC_QIMR) Quadrature ERRor */ +/* -------- TC_QISR : (TC Offset: 0xD4) QDEC Interrupt Status Register -------- */ +#define TC_QISR_IDX (0x1u << 0) /**< \brief (TC_QISR) InDeX */ +#define TC_QISR_DIRCHG (0x1u << 1) /**< \brief (TC_QISR) DIRection CHanGe */ +#define TC_QISR_QERR (0x1u << 2) /**< \brief (TC_QISR) Quadrature ERRor */ +#define TC_QISR_DIR (0x1u << 8) /**< \brief (TC_QISR) DIRection */ +/* -------- TC_FMR : (TC Offset: 0xD8) Fault Mode Register -------- */ +#define TC_FMR_ENCF0 (0x1u << 0) /**< \brief (TC_FMR) ENable Compare Fault Channel 0 */ +#define TC_FMR_ENCF1 (0x1u << 1) /**< \brief (TC_FMR) ENable Compare Fault Channel 1 */ +/* -------- TC_WPMR : (TC Offset: 0xE4) Write Protect Mode Register -------- */ +#define TC_WPMR_WPEN (0x1u << 0) /**< \brief (TC_WPMR) Write Protect Enable */ +#define TC_WPMR_WPKEY_Pos 8 +#define TC_WPMR_WPKEY_Msk (0xffffffu << TC_WPMR_WPKEY_Pos) /**< \brief (TC_WPMR) Write Protect KEY */ +#define TC_WPMR_WPKEY(value) ((TC_WPMR_WPKEY_Msk & ((value) << TC_WPMR_WPKEY_Pos))) +/* -------- TC_RPR : (TC Offset: N/A) Receive Pointer Register -------- */ +#define TC_RPR_RXPTR_Pos 0 +#define TC_RPR_RXPTR_Msk (0xffffffffu << TC_RPR_RXPTR_Pos) /**< \brief (TC_RPR) Receive Pointer Register */ +#define TC_RPR_RXPTR(value) ((TC_RPR_RXPTR_Msk & ((value) << TC_RPR_RXPTR_Pos))) +/* -------- TC_RCR : (TC Offset: N/A) Receive Counter Register -------- */ +#define TC_RCR_RXCTR_Pos 0 +#define TC_RCR_RXCTR_Msk (0xffffu << TC_RCR_RXCTR_Pos) /**< \brief (TC_RCR) Receive Counter Register */ +#define TC_RCR_RXCTR(value) ((TC_RCR_RXCTR_Msk & ((value) << TC_RCR_RXCTR_Pos))) +/* -------- TC_RNPR : (TC Offset: N/A) Receive Next Pointer Register -------- */ +#define TC_RNPR_RXNPTR_Pos 0 +#define TC_RNPR_RXNPTR_Msk (0xffffffffu << TC_RNPR_RXNPTR_Pos) /**< \brief (TC_RNPR) Receive Next Pointer */ +#define TC_RNPR_RXNPTR(value) ((TC_RNPR_RXNPTR_Msk & ((value) << TC_RNPR_RXNPTR_Pos))) +/* -------- TC_RNCR : (TC Offset: N/A) Receive Next Counter Register -------- */ +#define TC_RNCR_RXNCTR_Pos 0 +#define TC_RNCR_RXNCTR_Msk (0xffffu << TC_RNCR_RXNCTR_Pos) /**< \brief (TC_RNCR) Receive Next Counter */ +#define TC_RNCR_RXNCTR(value) ((TC_RNCR_RXNCTR_Msk & ((value) << TC_RNCR_RXNCTR_Pos))) +/* -------- TC_PTCR : (TC Offset: N/A) Transfer Control Register -------- */ +#define TC_PTCR_RXTEN (0x1u << 0) /**< \brief (TC_PTCR) Receiver Transfer Enable */ +#define TC_PTCR_RXTDIS (0x1u << 1) /**< \brief (TC_PTCR) Receiver Transfer Disable */ +#define TC_PTCR_TXTEN (0x1u << 8) /**< \brief (TC_PTCR) Transmitter Transfer Enable */ +#define TC_PTCR_TXTDIS (0x1u << 9) /**< \brief (TC_PTCR) Transmitter Transfer Disable */ +/* -------- TC_PTSR : (TC Offset: N/A) Transfer Status Register -------- */ +#define TC_PTSR_RXTEN (0x1u << 0) /**< \brief (TC_PTSR) Receiver Transfer Enable */ +#define TC_PTSR_TXTEN (0x1u << 8) /**< \brief (TC_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM4E_TC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/twi.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/twi.h new file mode 100644 index 000000000..f340cad05 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/twi.h @@ -0,0 +1,241 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_TWI_COMPONENT_ +#define _SAM4E_TWI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Two-wire Interface */ +/* ============================================================================= */ +/** \addtogroup SAM4E_TWI Two-wire Interface */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Twi hardware registers */ +typedef struct { + WoReg TWI_CR; /**< \brief (Twi Offset: 0x00) Control Register */ + RwReg TWI_MMR; /**< \brief (Twi Offset: 0x04) Master Mode Register */ + RwReg TWI_SMR; /**< \brief (Twi Offset: 0x08) Slave Mode Register */ + RwReg TWI_IADR; /**< \brief (Twi Offset: 0x0C) Internal Address Register */ + RwReg TWI_CWGR; /**< \brief (Twi Offset: 0x10) Clock Waveform Generator Register */ + RoReg Reserved1[3]; + RoReg TWI_SR; /**< \brief (Twi Offset: 0x20) Status Register */ + WoReg TWI_IER; /**< \brief (Twi Offset: 0x24) Interrupt Enable Register */ + WoReg TWI_IDR; /**< \brief (Twi Offset: 0x28) Interrupt Disable Register */ + RoReg TWI_IMR; /**< \brief (Twi Offset: 0x2C) Interrupt Mask Register */ + RoReg TWI_RHR; /**< \brief (Twi Offset: 0x30) Receive Holding Register */ + WoReg TWI_THR; /**< \brief (Twi Offset: 0x34) Transmit Holding Register */ + RoReg Reserved2[43]; + RwReg TWI_WPROT_MODE; /**< \brief (Twi Offset: 0xE4) Protection Mode Register */ + RoReg TWI_WPROT_STATUS; /**< \brief (Twi Offset: 0xE8) Protection Status Register */ + RoReg Reserved3[5]; + RwReg TWI_RPR; /**< \brief (Twi Offset: 0x100) Receive Pointer Register */ + RwReg TWI_RCR; /**< \brief (Twi Offset: 0x104) Receive Counter Register */ + RwReg TWI_TPR; /**< \brief (Twi Offset: 0x108) Transmit Pointer Register */ + RwReg TWI_TCR; /**< \brief (Twi Offset: 0x10C) Transmit Counter Register */ + RwReg TWI_RNPR; /**< \brief (Twi Offset: 0x110) Receive Next Pointer Register */ + RwReg TWI_RNCR; /**< \brief (Twi Offset: 0x114) Receive Next Counter Register */ + RwReg TWI_TNPR; /**< \brief (Twi Offset: 0x118) Transmit Next Pointer Register */ + RwReg TWI_TNCR; /**< \brief (Twi Offset: 0x11C) Transmit Next Counter Register */ + WoReg TWI_PTCR; /**< \brief (Twi Offset: 0x120) Transfer Control Register */ + RoReg TWI_PTSR; /**< \brief (Twi Offset: 0x124) Transfer Status Register */ +} Twi; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- TWI_CR : (TWI Offset: 0x00) Control Register -------- */ +#define TWI_CR_START (0x1u << 0) /**< \brief (TWI_CR) Send a START Condition */ +#define TWI_CR_STOP (0x1u << 1) /**< \brief (TWI_CR) Send a STOP Condition */ +#define TWI_CR_MSEN (0x1u << 2) /**< \brief (TWI_CR) TWI Master Mode Enabled */ +#define TWI_CR_MSDIS (0x1u << 3) /**< \brief (TWI_CR) TWI Master Mode Disabled */ +#define TWI_CR_SVEN (0x1u << 4) /**< \brief (TWI_CR) TWI Slave Mode Enabled */ +#define TWI_CR_SVDIS (0x1u << 5) /**< \brief (TWI_CR) TWI Slave Mode Disabled */ +#define TWI_CR_QUICK (0x1u << 6) /**< \brief (TWI_CR) SMBUS Quick Command */ +#define TWI_CR_SWRST (0x1u << 7) /**< \brief (TWI_CR) Software Reset */ +/* -------- TWI_MMR : (TWI Offset: 0x04) Master Mode Register -------- */ +#define TWI_MMR_IADRSZ_Pos 8 +#define TWI_MMR_IADRSZ_Msk (0x3u << TWI_MMR_IADRSZ_Pos) /**< \brief (TWI_MMR) Internal Device Address Size */ +#define TWI_MMR_IADRSZ_NONE (0x0u << 8) /**< \brief (TWI_MMR) No internal device address */ +#define TWI_MMR_IADRSZ_1_BYTE (0x1u << 8) /**< \brief (TWI_MMR) One-byte internal device address */ +#define TWI_MMR_IADRSZ_2_BYTE (0x2u << 8) /**< \brief (TWI_MMR) Two-byte internal device address */ +#define TWI_MMR_IADRSZ_3_BYTE (0x3u << 8) /**< \brief (TWI_MMR) Three-byte internal device address */ +#define TWI_MMR_MREAD (0x1u << 12) /**< \brief (TWI_MMR) Master Read Direction */ +#define TWI_MMR_DADR_Pos 16 +#define TWI_MMR_DADR_Msk (0x7fu << TWI_MMR_DADR_Pos) /**< \brief (TWI_MMR) Device Address */ +#define TWI_MMR_DADR(value) ((TWI_MMR_DADR_Msk & ((value) << TWI_MMR_DADR_Pos))) +/* -------- TWI_SMR : (TWI Offset: 0x08) Slave Mode Register -------- */ +#define TWI_SMR_SADR_Pos 16 +#define TWI_SMR_SADR_Msk (0x7fu << TWI_SMR_SADR_Pos) /**< \brief (TWI_SMR) Slave Address */ +#define TWI_SMR_SADR(value) ((TWI_SMR_SADR_Msk & ((value) << TWI_SMR_SADR_Pos))) +/* -------- TWI_IADR : (TWI Offset: 0x0C) Internal Address Register -------- */ +#define TWI_IADR_IADR_Pos 0 +#define TWI_IADR_IADR_Msk (0xffffffu << TWI_IADR_IADR_Pos) /**< \brief (TWI_IADR) Internal Address */ +#define TWI_IADR_IADR(value) ((TWI_IADR_IADR_Msk & ((value) << TWI_IADR_IADR_Pos))) +/* -------- TWI_CWGR : (TWI Offset: 0x10) Clock Waveform Generator Register -------- */ +#define TWI_CWGR_CLDIV_Pos 0 +#define TWI_CWGR_CLDIV_Msk (0xffu << TWI_CWGR_CLDIV_Pos) /**< \brief (TWI_CWGR) Clock Low Divider */ +#define TWI_CWGR_CLDIV(value) ((TWI_CWGR_CLDIV_Msk & ((value) << TWI_CWGR_CLDIV_Pos))) +#define TWI_CWGR_CHDIV_Pos 8 +#define TWI_CWGR_CHDIV_Msk (0xffu << TWI_CWGR_CHDIV_Pos) /**< \brief (TWI_CWGR) Clock High Divider */ +#define TWI_CWGR_CHDIV(value) ((TWI_CWGR_CHDIV_Msk & ((value) << TWI_CWGR_CHDIV_Pos))) +#define TWI_CWGR_CKDIV_Pos 16 +#define TWI_CWGR_CKDIV_Msk (0x7u << TWI_CWGR_CKDIV_Pos) /**< \brief (TWI_CWGR) Clock Divider */ +#define TWI_CWGR_CKDIV(value) ((TWI_CWGR_CKDIV_Msk & ((value) << TWI_CWGR_CKDIV_Pos))) +/* -------- TWI_SR : (TWI Offset: 0x20) Status Register -------- */ +#define TWI_SR_TXCOMP (0x1u << 0) /**< \brief (TWI_SR) Transmission Completed (automatically set / reset) */ +#define TWI_SR_RXRDY (0x1u << 1) /**< \brief (TWI_SR) Receive Holding Register Ready (automatically set / reset) */ +#define TWI_SR_TXRDY (0x1u << 2) /**< \brief (TWI_SR) Transmit Holding Register Ready (automatically set / reset) */ +#define TWI_SR_SVREAD (0x1u << 3) /**< \brief (TWI_SR) Slave Read (automatically set / reset) */ +#define TWI_SR_SVACC (0x1u << 4) /**< \brief (TWI_SR) Slave Access (automatically set / reset) */ +#define TWI_SR_GACC (0x1u << 5) /**< \brief (TWI_SR) General Call Access (clear on read) */ +#define TWI_SR_OVRE (0x1u << 6) /**< \brief (TWI_SR) Overrun Error (clear on read) */ +#define TWI_SR_NACK (0x1u << 8) /**< \brief (TWI_SR) Not Acknowledged (clear on read) */ +#define TWI_SR_ARBLST (0x1u << 9) /**< \brief (TWI_SR) Arbitration Lost (clear on read) */ +#define TWI_SR_SCLWS (0x1u << 10) /**< \brief (TWI_SR) Clock Wait State (automatically set / reset) */ +#define TWI_SR_EOSACC (0x1u << 11) /**< \brief (TWI_SR) End Of Slave Access (clear on read) */ +#define TWI_SR_ENDRX (0x1u << 12) /**< \brief (TWI_SR) End of RX buffer */ +#define TWI_SR_ENDTX (0x1u << 13) /**< \brief (TWI_SR) End of TX buffer */ +#define TWI_SR_RXBUFF (0x1u << 14) /**< \brief (TWI_SR) RX Buffer Full */ +#define TWI_SR_TXBUFE (0x1u << 15) /**< \brief (TWI_SR) TX Buffer Empty */ +/* -------- TWI_IER : (TWI Offset: 0x24) Interrupt Enable Register -------- */ +#define TWI_IER_TXCOMP (0x1u << 0) /**< \brief (TWI_IER) Transmission Completed Interrupt Enable */ +#define TWI_IER_RXRDY (0x1u << 1) /**< \brief (TWI_IER) Receive Holding Register Ready Interrupt Enable */ +#define TWI_IER_TXRDY (0x1u << 2) /**< \brief (TWI_IER) Transmit Holding Register Ready Interrupt Enable */ +#define TWI_IER_SVACC (0x1u << 4) /**< \brief (TWI_IER) Slave Access Interrupt Enable */ +#define TWI_IER_GACC (0x1u << 5) /**< \brief (TWI_IER) General Call Access Interrupt Enable */ +#define TWI_IER_OVRE (0x1u << 6) /**< \brief (TWI_IER) Overrun Error Interrupt Enable */ +#define TWI_IER_NACK (0x1u << 8) /**< \brief (TWI_IER) Not Acknowledge Interrupt Enable */ +#define TWI_IER_ARBLST (0x1u << 9) /**< \brief (TWI_IER) Arbitration Lost Interrupt Enable */ +#define TWI_IER_SCL_WS (0x1u << 10) /**< \brief (TWI_IER) Clock Wait State Interrupt Enable */ +#define TWI_IER_EOSACC (0x1u << 11) /**< \brief (TWI_IER) End Of Slave Access Interrupt Enable */ +#define TWI_IER_ENDRX (0x1u << 12) /**< \brief (TWI_IER) End of Receive Buffer Interrupt Enable */ +#define TWI_IER_ENDTX (0x1u << 13) /**< \brief (TWI_IER) End of Transmit Buffer Interrupt Enable */ +#define TWI_IER_RXBUFF (0x1u << 14) /**< \brief (TWI_IER) Receive Buffer Full Interrupt Enable */ +#define TWI_IER_TXBUFE (0x1u << 15) /**< \brief (TWI_IER) Transmit Buffer Empty Interrupt Enable */ +/* -------- TWI_IDR : (TWI Offset: 0x28) Interrupt Disable Register -------- */ +#define TWI_IDR_TXCOMP (0x1u << 0) /**< \brief (TWI_IDR) Transmission Completed Interrupt Disable */ +#define TWI_IDR_RXRDY (0x1u << 1) /**< \brief (TWI_IDR) Receive Holding Register Ready Interrupt Disable */ +#define TWI_IDR_TXRDY (0x1u << 2) /**< \brief (TWI_IDR) Transmit Holding Register Ready Interrupt Disable */ +#define TWI_IDR_SVACC (0x1u << 4) /**< \brief (TWI_IDR) Slave Access Interrupt Disable */ +#define TWI_IDR_GACC (0x1u << 5) /**< \brief (TWI_IDR) General Call Access Interrupt Disable */ +#define TWI_IDR_OVRE (0x1u << 6) /**< \brief (TWI_IDR) Overrun Error Interrupt Disable */ +#define TWI_IDR_NACK (0x1u << 8) /**< \brief (TWI_IDR) Not Acknowledge Interrupt Disable */ +#define TWI_IDR_ARBLST (0x1u << 9) /**< \brief (TWI_IDR) Arbitration Lost Interrupt Disable */ +#define TWI_IDR_SCL_WS (0x1u << 10) /**< \brief (TWI_IDR) Clock Wait State Interrupt Disable */ +#define TWI_IDR_EOSACC (0x1u << 11) /**< \brief (TWI_IDR) End Of Slave Access Interrupt Disable */ +#define TWI_IDR_ENDRX (0x1u << 12) /**< \brief (TWI_IDR) End of Receive Buffer Interrupt Disable */ +#define TWI_IDR_ENDTX (0x1u << 13) /**< \brief (TWI_IDR) End of Transmit Buffer Interrupt Disable */ +#define TWI_IDR_RXBUFF (0x1u << 14) /**< \brief (TWI_IDR) Receive Buffer Full Interrupt Disable */ +#define TWI_IDR_TXBUFE (0x1u << 15) /**< \brief (TWI_IDR) Transmit Buffer Empty Interrupt Disable */ +/* -------- TWI_IMR : (TWI Offset: 0x2C) Interrupt Mask Register -------- */ +#define TWI_IMR_TXCOMP (0x1u << 0) /**< \brief (TWI_IMR) Transmission Completed Interrupt Mask */ +#define TWI_IMR_RXRDY (0x1u << 1) /**< \brief (TWI_IMR) Receive Holding Register Ready Interrupt Mask */ +#define TWI_IMR_TXRDY (0x1u << 2) /**< \brief (TWI_IMR) Transmit Holding Register Ready Interrupt Mask */ +#define TWI_IMR_SVACC (0x1u << 4) /**< \brief (TWI_IMR) Slave Access Interrupt Mask */ +#define TWI_IMR_GACC (0x1u << 5) /**< \brief (TWI_IMR) General Call Access Interrupt Mask */ +#define TWI_IMR_OVRE (0x1u << 6) /**< \brief (TWI_IMR) Overrun Error Interrupt Mask */ +#define TWI_IMR_NACK (0x1u << 8) /**< \brief (TWI_IMR) Not Acknowledge Interrupt Mask */ +#define TWI_IMR_ARBLST (0x1u << 9) /**< \brief (TWI_IMR) Arbitration Lost Interrupt Mask */ +#define TWI_IMR_SCL_WS (0x1u << 10) /**< \brief (TWI_IMR) Clock Wait State Interrupt Mask */ +#define TWI_IMR_EOSACC (0x1u << 11) /**< \brief (TWI_IMR) End Of Slave Access Interrupt Mask */ +#define TWI_IMR_ENDRX (0x1u << 12) /**< \brief (TWI_IMR) End of Receive Buffer Interrupt Mask */ +#define TWI_IMR_ENDTX (0x1u << 13) /**< \brief (TWI_IMR) End of Transmit Buffer Interrupt Mask */ +#define TWI_IMR_RXBUFF (0x1u << 14) /**< \brief (TWI_IMR) Receive Buffer Full Interrupt Mask */ +#define TWI_IMR_TXBUFE (0x1u << 15) /**< \brief (TWI_IMR) Transmit Buffer Empty Interrupt Mask */ +/* -------- TWI_RHR : (TWI Offset: 0x30) Receive Holding Register -------- */ +#define TWI_RHR_RXDATA_Pos 0 +#define TWI_RHR_RXDATA_Msk (0xffu << TWI_RHR_RXDATA_Pos) /**< \brief (TWI_RHR) Master or Slave Receive Holding Data */ +/* -------- TWI_THR : (TWI Offset: 0x34) Transmit Holding Register -------- */ +#define TWI_THR_TXDATA_Pos 0 +#define TWI_THR_TXDATA_Msk (0xffu << TWI_THR_TXDATA_Pos) /**< \brief (TWI_THR) Master or Slave Transmit Holding Data */ +#define TWI_THR_TXDATA(value) ((TWI_THR_TXDATA_Msk & ((value) << TWI_THR_TXDATA_Pos))) +/* -------- TWI_WPROT_MODE : (TWI Offset: 0xE4) Protection Mode Register -------- */ +#define TWI_WPROT_MODE_WPROT (0x1u << 0) /**< \brief (TWI_WPROT_MODE) Write protection bit */ +#define TWI_WPROT_MODE_SECURITY_CODE_Pos 8 +#define TWI_WPROT_MODE_SECURITY_CODE_Msk (0xffffffu << TWI_WPROT_MODE_SECURITY_CODE_Pos) /**< \brief (TWI_WPROT_MODE) Write protection mode security code */ +#define TWI_WPROT_MODE_SECURITY_CODE(value) ((TWI_WPROT_MODE_SECURITY_CODE_Msk & ((value) << TWI_WPROT_MODE_SECURITY_CODE_Pos))) +/* -------- TWI_WPROT_STATUS : (TWI Offset: 0xE8) Protection Status Register -------- */ +#define TWI_WPROT_STATUS_WPROTERR (0x1u << 0) /**< \brief (TWI_WPROT_STATUS) Write Protection Error */ +#define TWI_WPROT_STATUS_WPROTADDR_Pos 8 +#define TWI_WPROT_STATUS_WPROTADDR_Msk (0xffffffu << TWI_WPROT_STATUS_WPROTADDR_Pos) /**< \brief (TWI_WPROT_STATUS) Write Protection Error Address */ +/* -------- TWI_RPR : (TWI Offset: 0x100) Receive Pointer Register -------- */ +#define TWI_RPR_RXPTR_Pos 0 +#define TWI_RPR_RXPTR_Msk (0xffffffffu << TWI_RPR_RXPTR_Pos) /**< \brief (TWI_RPR) Receive Pointer Register */ +#define TWI_RPR_RXPTR(value) ((TWI_RPR_RXPTR_Msk & ((value) << TWI_RPR_RXPTR_Pos))) +/* -------- TWI_RCR : (TWI Offset: 0x104) Receive Counter Register -------- */ +#define TWI_RCR_RXCTR_Pos 0 +#define TWI_RCR_RXCTR_Msk (0xffffu << TWI_RCR_RXCTR_Pos) /**< \brief (TWI_RCR) Receive Counter Register */ +#define TWI_RCR_RXCTR(value) ((TWI_RCR_RXCTR_Msk & ((value) << TWI_RCR_RXCTR_Pos))) +/* -------- TWI_TPR : (TWI Offset: 0x108) Transmit Pointer Register -------- */ +#define TWI_TPR_TXPTR_Pos 0 +#define TWI_TPR_TXPTR_Msk (0xffffffffu << TWI_TPR_TXPTR_Pos) /**< \brief (TWI_TPR) Transmit Counter Register */ +#define TWI_TPR_TXPTR(value) ((TWI_TPR_TXPTR_Msk & ((value) << TWI_TPR_TXPTR_Pos))) +/* -------- TWI_TCR : (TWI Offset: 0x10C) Transmit Counter Register -------- */ +#define TWI_TCR_TXCTR_Pos 0 +#define TWI_TCR_TXCTR_Msk (0xffffu << TWI_TCR_TXCTR_Pos) /**< \brief (TWI_TCR) Transmit Counter Register */ +#define TWI_TCR_TXCTR(value) ((TWI_TCR_TXCTR_Msk & ((value) << TWI_TCR_TXCTR_Pos))) +/* -------- TWI_RNPR : (TWI Offset: 0x110) Receive Next Pointer Register -------- */ +#define TWI_RNPR_RXNPTR_Pos 0 +#define TWI_RNPR_RXNPTR_Msk (0xffffffffu << TWI_RNPR_RXNPTR_Pos) /**< \brief (TWI_RNPR) Receive Next Pointer */ +#define TWI_RNPR_RXNPTR(value) ((TWI_RNPR_RXNPTR_Msk & ((value) << TWI_RNPR_RXNPTR_Pos))) +/* -------- TWI_RNCR : (TWI Offset: 0x114) Receive Next Counter Register -------- */ +#define TWI_RNCR_RXNCTR_Pos 0 +#define TWI_RNCR_RXNCTR_Msk (0xffffu << TWI_RNCR_RXNCTR_Pos) /**< \brief (TWI_RNCR) Receive Next Counter */ +#define TWI_RNCR_RXNCTR(value) ((TWI_RNCR_RXNCTR_Msk & ((value) << TWI_RNCR_RXNCTR_Pos))) +/* -------- TWI_TNPR : (TWI Offset: 0x118) Transmit Next Pointer Register -------- */ +#define TWI_TNPR_TXNPTR_Pos 0 +#define TWI_TNPR_TXNPTR_Msk (0xffffffffu << TWI_TNPR_TXNPTR_Pos) /**< \brief (TWI_TNPR) Transmit Next Pointer */ +#define TWI_TNPR_TXNPTR(value) ((TWI_TNPR_TXNPTR_Msk & ((value) << TWI_TNPR_TXNPTR_Pos))) +/* -------- TWI_TNCR : (TWI Offset: 0x11C) Transmit Next Counter Register -------- */ +#define TWI_TNCR_TXNCTR_Pos 0 +#define TWI_TNCR_TXNCTR_Msk (0xffffu << TWI_TNCR_TXNCTR_Pos) /**< \brief (TWI_TNCR) Transmit Counter Next */ +#define TWI_TNCR_TXNCTR(value) ((TWI_TNCR_TXNCTR_Msk & ((value) << TWI_TNCR_TXNCTR_Pos))) +/* -------- TWI_PTCR : (TWI Offset: 0x120) Transfer Control Register -------- */ +#define TWI_PTCR_RXTEN (0x1u << 0) /**< \brief (TWI_PTCR) Receiver Transfer Enable */ +#define TWI_PTCR_RXTDIS (0x1u << 1) /**< \brief (TWI_PTCR) Receiver Transfer Disable */ +#define TWI_PTCR_TXTEN (0x1u << 8) /**< \brief (TWI_PTCR) Transmitter Transfer Enable */ +#define TWI_PTCR_TXTDIS (0x1u << 9) /**< \brief (TWI_PTCR) Transmitter Transfer Disable */ +/* -------- TWI_PTSR : (TWI Offset: 0x124) Transfer Status Register -------- */ +#define TWI_PTSR_RXTEN (0x1u << 0) /**< \brief (TWI_PTSR) Receiver Transfer Enable */ +#define TWI_PTSR_TXTEN (0x1u << 8) /**< \brief (TWI_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM4E_TWI_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/uart.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/uart.h new file mode 100644 index 000000000..663624fe2 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/uart.h @@ -0,0 +1,197 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_UART_COMPONENT_ +#define _SAM4E_UART_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Universal Asynchronous Receiver Transmitter */ +/* ============================================================================= */ +/** \addtogroup SAM4E_UART Universal Asynchronous Receiver Transmitter */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Uart hardware registers */ +typedef struct { + WoReg UART_CR; /**< \brief (Uart Offset: 0x0000) Control Register */ + RwReg UART_MR; /**< \brief (Uart Offset: 0x0004) Mode Register */ + WoReg UART_IER; /**< \brief (Uart Offset: 0x0008) Interrupt Enable Register */ + WoReg UART_IDR; /**< \brief (Uart Offset: 0x000C) Interrupt Disable Register */ + RoReg UART_IMR; /**< \brief (Uart Offset: 0x0010) Interrupt Mask Register */ + RoReg UART_SR; /**< \brief (Uart Offset: 0x0014) Status Register */ + RoReg UART_RHR; /**< \brief (Uart Offset: 0x0018) Receive Holding Register */ + WoReg UART_THR; /**< \brief (Uart Offset: 0x001C) Transmit Holding Register */ + RwReg UART_BRGR; /**< \brief (Uart Offset: 0x0020) Baud Rate Generator Register */ + RoReg Reserved1[55]; + RwReg UART_RPR; /**< \brief (Uart Offset: 0x100) Receive Pointer Register */ + RwReg UART_RCR; /**< \brief (Uart Offset: 0x104) Receive Counter Register */ + RwReg UART_TPR; /**< \brief (Uart Offset: 0x108) Transmit Pointer Register */ + RwReg UART_TCR; /**< \brief (Uart Offset: 0x10C) Transmit Counter Register */ + RwReg UART_RNPR; /**< \brief (Uart Offset: 0x110) Receive Next Pointer Register */ + RwReg UART_RNCR; /**< \brief (Uart Offset: 0x114) Receive Next Counter Register */ + RwReg UART_TNPR; /**< \brief (Uart Offset: 0x118) Transmit Next Pointer Register */ + RwReg UART_TNCR; /**< \brief (Uart Offset: 0x11C) Transmit Next Counter Register */ + WoReg UART_PTCR; /**< \brief (Uart Offset: 0x120) Transfer Control Register */ + RoReg UART_PTSR; /**< \brief (Uart Offset: 0x124) Transfer Status Register */ +} Uart; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- UART_CR : (UART Offset: 0x0000) Control Register -------- */ +#define UART_CR_RSTRX (0x1u << 2) /**< \brief (UART_CR) Reset Receiver */ +#define UART_CR_RSTTX (0x1u << 3) /**< \brief (UART_CR) Reset Transmitter */ +#define UART_CR_RXEN (0x1u << 4) /**< \brief (UART_CR) Receiver Enable */ +#define UART_CR_RXDIS (0x1u << 5) /**< \brief (UART_CR) Receiver Disable */ +#define UART_CR_TXEN (0x1u << 6) /**< \brief (UART_CR) Transmitter Enable */ +#define UART_CR_TXDIS (0x1u << 7) /**< \brief (UART_CR) Transmitter Disable */ +#define UART_CR_RSTSTA (0x1u << 8) /**< \brief (UART_CR) Reset Status Bits */ +/* -------- UART_MR : (UART Offset: 0x0004) Mode Register -------- */ +#define UART_MR_PAR_Pos 9 +#define UART_MR_PAR_Msk (0x7u << UART_MR_PAR_Pos) /**< \brief (UART_MR) Parity Type */ +#define UART_MR_PAR_EVEN (0x0u << 9) /**< \brief (UART_MR) Even Parity */ +#define UART_MR_PAR_ODD (0x1u << 9) /**< \brief (UART_MR) Odd Parity */ +#define UART_MR_PAR_SPACE (0x2u << 9) /**< \brief (UART_MR) Space: parity forced to 0 */ +#define UART_MR_PAR_MARK (0x3u << 9) /**< \brief (UART_MR) Mark: parity forced to 1 */ +#define UART_MR_PAR_NO (0x4u << 9) /**< \brief (UART_MR) No Parity */ +#define UART_MR_CHMODE_Pos 14 +#define UART_MR_CHMODE_Msk (0x3u << UART_MR_CHMODE_Pos) /**< \brief (UART_MR) Channel Mode */ +#define UART_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (UART_MR) Normal Mode */ +#define UART_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (UART_MR) Automatic Echo */ +#define UART_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (UART_MR) Local Loopback */ +#define UART_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (UART_MR) Remote Loopback */ +/* -------- UART_IER : (UART Offset: 0x0008) Interrupt Enable Register -------- */ +#define UART_IER_RXRDY (0x1u << 0) /**< \brief (UART_IER) Enable RXRDY Interrupt */ +#define UART_IER_TXRDY (0x1u << 1) /**< \brief (UART_IER) Enable TXRDY Interrupt */ +#define UART_IER_ENDRX (0x1u << 3) /**< \brief (UART_IER) Enable End of Receive Transfer Interrupt */ +#define UART_IER_ENDTX (0x1u << 4) /**< \brief (UART_IER) Enable End of Transmit Interrupt */ +#define UART_IER_OVRE (0x1u << 5) /**< \brief (UART_IER) Enable Overrun Error Interrupt */ +#define UART_IER_FRAME (0x1u << 6) /**< \brief (UART_IER) Enable Framing Error Interrupt */ +#define UART_IER_PARE (0x1u << 7) /**< \brief (UART_IER) Enable Parity Error Interrupt */ +#define UART_IER_TXEMPTY (0x1u << 9) /**< \brief (UART_IER) Enable TXEMPTY Interrupt */ +#define UART_IER_TXBUFE (0x1u << 11) /**< \brief (UART_IER) Enable Buffer Empty Interrupt */ +#define UART_IER_RXBUFF (0x1u << 12) /**< \brief (UART_IER) Enable Buffer Full Interrupt */ +/* -------- UART_IDR : (UART Offset: 0x000C) Interrupt Disable Register -------- */ +#define UART_IDR_RXRDY (0x1u << 0) /**< \brief (UART_IDR) Disable RXRDY Interrupt */ +#define UART_IDR_TXRDY (0x1u << 1) /**< \brief (UART_IDR) Disable TXRDY Interrupt */ +#define UART_IDR_ENDRX (0x1u << 3) /**< \brief (UART_IDR) Disable End of Receive Transfer Interrupt */ +#define UART_IDR_ENDTX (0x1u << 4) /**< \brief (UART_IDR) Disable End of Transmit Interrupt */ +#define UART_IDR_OVRE (0x1u << 5) /**< \brief (UART_IDR) Disable Overrun Error Interrupt */ +#define UART_IDR_FRAME (0x1u << 6) /**< \brief (UART_IDR) Disable Framing Error Interrupt */ +#define UART_IDR_PARE (0x1u << 7) /**< \brief (UART_IDR) Disable Parity Error Interrupt */ +#define UART_IDR_TXEMPTY (0x1u << 9) /**< \brief (UART_IDR) Disable TXEMPTY Interrupt */ +#define UART_IDR_TXBUFE (0x1u << 11) /**< \brief (UART_IDR) Disable Buffer Empty Interrupt */ +#define UART_IDR_RXBUFF (0x1u << 12) /**< \brief (UART_IDR) Disable Buffer Full Interrupt */ +/* -------- UART_IMR : (UART Offset: 0x0010) Interrupt Mask Register -------- */ +#define UART_IMR_RXRDY (0x1u << 0) /**< \brief (UART_IMR) Mask RXRDY Interrupt */ +#define UART_IMR_TXRDY (0x1u << 1) /**< \brief (UART_IMR) Disable TXRDY Interrupt */ +#define UART_IMR_ENDRX (0x1u << 3) /**< \brief (UART_IMR) Mask End of Receive Transfer Interrupt */ +#define UART_IMR_ENDTX (0x1u << 4) /**< \brief (UART_IMR) Mask End of Transmit Interrupt */ +#define UART_IMR_OVRE (0x1u << 5) /**< \brief (UART_IMR) Mask Overrun Error Interrupt */ +#define UART_IMR_FRAME (0x1u << 6) /**< \brief (UART_IMR) Mask Framing Error Interrupt */ +#define UART_IMR_PARE (0x1u << 7) /**< \brief (UART_IMR) Mask Parity Error Interrupt */ +#define UART_IMR_TXEMPTY (0x1u << 9) /**< \brief (UART_IMR) Mask TXEMPTY Interrupt */ +#define UART_IMR_TXBUFE (0x1u << 11) /**< \brief (UART_IMR) Mask TXBUFE Interrupt */ +#define UART_IMR_RXBUFF (0x1u << 12) /**< \brief (UART_IMR) Mask RXBUFF Interrupt */ +/* -------- UART_SR : (UART Offset: 0x0014) Status Register -------- */ +#define UART_SR_RXRDY (0x1u << 0) /**< \brief (UART_SR) Receiver Ready */ +#define UART_SR_TXRDY (0x1u << 1) /**< \brief (UART_SR) Transmitter Ready */ +#define UART_SR_ENDRX (0x1u << 3) /**< \brief (UART_SR) End of Receiver Transfer */ +#define UART_SR_ENDTX (0x1u << 4) /**< \brief (UART_SR) End of Transmitter Transfer */ +#define UART_SR_OVRE (0x1u << 5) /**< \brief (UART_SR) Overrun Error */ +#define UART_SR_FRAME (0x1u << 6) /**< \brief (UART_SR) Framing Error */ +#define UART_SR_PARE (0x1u << 7) /**< \brief (UART_SR) Parity Error */ +#define UART_SR_TXEMPTY (0x1u << 9) /**< \brief (UART_SR) Transmitter Empty */ +#define UART_SR_TXBUFE (0x1u << 11) /**< \brief (UART_SR) Transmission Buffer Empty */ +#define UART_SR_RXBUFF (0x1u << 12) /**< \brief (UART_SR) Receive Buffer Full */ +/* -------- UART_RHR : (UART Offset: 0x0018) Receive Holding Register -------- */ +#define UART_RHR_RXCHR_Pos 0 +#define UART_RHR_RXCHR_Msk (0xffu << UART_RHR_RXCHR_Pos) /**< \brief (UART_RHR) Received Character */ +/* -------- UART_THR : (UART Offset: 0x001C) Transmit Holding Register -------- */ +#define UART_THR_TXCHR_Pos 0 +#define UART_THR_TXCHR_Msk (0xffu << UART_THR_TXCHR_Pos) /**< \brief (UART_THR) Character to be Transmitted */ +#define UART_THR_TXCHR(value) ((UART_THR_TXCHR_Msk & ((value) << UART_THR_TXCHR_Pos))) +/* -------- UART_BRGR : (UART Offset: 0x0020) Baud Rate Generator Register -------- */ +#define UART_BRGR_CD_Pos 0 +#define UART_BRGR_CD_Msk (0xffffu << UART_BRGR_CD_Pos) /**< \brief (UART_BRGR) Clock Divisor */ +#define UART_BRGR_CD(value) ((UART_BRGR_CD_Msk & ((value) << UART_BRGR_CD_Pos))) +/* -------- UART_RPR : (UART Offset: 0x100) Receive Pointer Register -------- */ +#define UART_RPR_RXPTR_Pos 0 +#define UART_RPR_RXPTR_Msk (0xffffffffu << UART_RPR_RXPTR_Pos) /**< \brief (UART_RPR) Receive Pointer Register */ +#define UART_RPR_RXPTR(value) ((UART_RPR_RXPTR_Msk & ((value) << UART_RPR_RXPTR_Pos))) +/* -------- UART_RCR : (UART Offset: 0x104) Receive Counter Register -------- */ +#define UART_RCR_RXCTR_Pos 0 +#define UART_RCR_RXCTR_Msk (0xffffu << UART_RCR_RXCTR_Pos) /**< \brief (UART_RCR) Receive Counter Register */ +#define UART_RCR_RXCTR(value) ((UART_RCR_RXCTR_Msk & ((value) << UART_RCR_RXCTR_Pos))) +/* -------- UART_TPR : (UART Offset: 0x108) Transmit Pointer Register -------- */ +#define UART_TPR_TXPTR_Pos 0 +#define UART_TPR_TXPTR_Msk (0xffffffffu << UART_TPR_TXPTR_Pos) /**< \brief (UART_TPR) Transmit Counter Register */ +#define UART_TPR_TXPTR(value) ((UART_TPR_TXPTR_Msk & ((value) << UART_TPR_TXPTR_Pos))) +/* -------- UART_TCR : (UART Offset: 0x10C) Transmit Counter Register -------- */ +#define UART_TCR_TXCTR_Pos 0 +#define UART_TCR_TXCTR_Msk (0xffffu << UART_TCR_TXCTR_Pos) /**< \brief (UART_TCR) Transmit Counter Register */ +#define UART_TCR_TXCTR(value) ((UART_TCR_TXCTR_Msk & ((value) << UART_TCR_TXCTR_Pos))) +/* -------- UART_RNPR : (UART Offset: 0x110) Receive Next Pointer Register -------- */ +#define UART_RNPR_RXNPTR_Pos 0 +#define UART_RNPR_RXNPTR_Msk (0xffffffffu << UART_RNPR_RXNPTR_Pos) /**< \brief (UART_RNPR) Receive Next Pointer */ +#define UART_RNPR_RXNPTR(value) ((UART_RNPR_RXNPTR_Msk & ((value) << UART_RNPR_RXNPTR_Pos))) +/* -------- UART_RNCR : (UART Offset: 0x114) Receive Next Counter Register -------- */ +#define UART_RNCR_RXNCTR_Pos 0 +#define UART_RNCR_RXNCTR_Msk (0xffffu << UART_RNCR_RXNCTR_Pos) /**< \brief (UART_RNCR) Receive Next Counter */ +#define UART_RNCR_RXNCTR(value) ((UART_RNCR_RXNCTR_Msk & ((value) << UART_RNCR_RXNCTR_Pos))) +/* -------- UART_TNPR : (UART Offset: 0x118) Transmit Next Pointer Register -------- */ +#define UART_TNPR_TXNPTR_Pos 0 +#define UART_TNPR_TXNPTR_Msk (0xffffffffu << UART_TNPR_TXNPTR_Pos) /**< \brief (UART_TNPR) Transmit Next Pointer */ +#define UART_TNPR_TXNPTR(value) ((UART_TNPR_TXNPTR_Msk & ((value) << UART_TNPR_TXNPTR_Pos))) +/* -------- UART_TNCR : (UART Offset: 0x11C) Transmit Next Counter Register -------- */ +#define UART_TNCR_TXNCTR_Pos 0 +#define UART_TNCR_TXNCTR_Msk (0xffffu << UART_TNCR_TXNCTR_Pos) /**< \brief (UART_TNCR) Transmit Counter Next */ +#define UART_TNCR_TXNCTR(value) ((UART_TNCR_TXNCTR_Msk & ((value) << UART_TNCR_TXNCTR_Pos))) +/* -------- UART_PTCR : (UART Offset: 0x120) Transfer Control Register -------- */ +#define UART_PTCR_RXTEN (0x1u << 0) /**< \brief (UART_PTCR) Receiver Transfer Enable */ +#define UART_PTCR_RXTDIS (0x1u << 1) /**< \brief (UART_PTCR) Receiver Transfer Disable */ +#define UART_PTCR_TXTEN (0x1u << 8) /**< \brief (UART_PTCR) Transmitter Transfer Enable */ +#define UART_PTCR_TXTDIS (0x1u << 9) /**< \brief (UART_PTCR) Transmitter Transfer Disable */ +/* -------- UART_PTSR : (UART Offset: 0x124) Transfer Status Register -------- */ +#define UART_PTSR_RXTEN (0x1u << 0) /**< \brief (UART_PTSR) Receiver Transfer Enable */ +#define UART_PTSR_TXTEN (0x1u << 8) /**< \brief (UART_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM4E_UART_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/udp.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/udp.h new file mode 100644 index 000000000..e7928061f --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/udp.h @@ -0,0 +1,197 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_UDP_COMPONENT_ +#define _SAM4E_UDP_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR USB Device Port */ +/* ============================================================================= */ +/** \addtogroup SAM4E_UDP USB Device Port */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Udp hardware registers */ +typedef struct { + RoReg UDP_FRM_NUM; /**< \brief (Udp Offset: 0x000) Frame Number Register */ + RwReg UDP_GLB_STAT; /**< \brief (Udp Offset: 0x004) Global State Register */ + RwReg UDP_FADDR; /**< \brief (Udp Offset: 0x008) Function Address Register */ + RoReg Reserved1[1]; + WoReg UDP_IER; /**< \brief (Udp Offset: 0x010) Interrupt Enable Register */ + WoReg UDP_IDR; /**< \brief (Udp Offset: 0x014) Interrupt Disable Register */ + RoReg UDP_IMR; /**< \brief (Udp Offset: 0x018) Interrupt Mask Register */ + RoReg UDP_ISR; /**< \brief (Udp Offset: 0x01C) Interrupt Status Register */ + WoReg UDP_ICR; /**< \brief (Udp Offset: 0x020) Interrupt Clear Register */ + RoReg Reserved2[1]; + RwReg UDP_RST_EP; /**< \brief (Udp Offset: 0x028) Reset Endpoint Register */ + RoReg Reserved3[1]; + RwReg UDP_CSR[8]; /**< \brief (Udp Offset: 0x030) Endpoint Control and Status Register */ + RwReg UDP_FDR[8]; /**< \brief (Udp Offset: 0x050) Endpoint FIFO Data Register */ + RoReg Reserved4[1]; + RwReg UDP_TXVC; /**< \brief (Udp Offset: 0x074) Transceiver Control Register */ +} Udp; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- UDP_FRM_NUM : (UDP Offset: 0x000) Frame Number Register -------- */ +#define UDP_FRM_NUM_FRM_NUM_Pos 0 +#define UDP_FRM_NUM_FRM_NUM_Msk (0x7ffu << UDP_FRM_NUM_FRM_NUM_Pos) /**< \brief (UDP_FRM_NUM) Frame Number as Defined in the Packet Field Formats */ +#define UDP_FRM_NUM_FRM_ERR (0x1u << 16) /**< \brief (UDP_FRM_NUM) Frame Error */ +#define UDP_FRM_NUM_FRM_OK (0x1u << 17) /**< \brief (UDP_FRM_NUM) Frame OK */ +/* -------- UDP_GLB_STAT : (UDP Offset: 0x004) Global State Register -------- */ +#define UDP_GLB_STAT_FADDEN (0x1u << 0) /**< \brief (UDP_GLB_STAT) Function Address Enable */ +#define UDP_GLB_STAT_CONFG (0x1u << 1) /**< \brief (UDP_GLB_STAT) Configured */ +#define UDP_GLB_STAT_ESR (0x1u << 2) /**< \brief (UDP_GLB_STAT) Enable Send Resume */ +#define UDP_GLB_STAT_RSMINPR (0x1u << 3) /**< \brief (UDP_GLB_STAT) */ +#define UDP_GLB_STAT_RMWUPE (0x1u << 4) /**< \brief (UDP_GLB_STAT) Remote Wake Up Enable */ +/* -------- UDP_FADDR : (UDP Offset: 0x008) Function Address Register -------- */ +#define UDP_FADDR_FADD_Pos 0 +#define UDP_FADDR_FADD_Msk (0x7fu << UDP_FADDR_FADD_Pos) /**< \brief (UDP_FADDR) Function Address Value */ +#define UDP_FADDR_FADD(value) ((UDP_FADDR_FADD_Msk & ((value) << UDP_FADDR_FADD_Pos))) +#define UDP_FADDR_FEN (0x1u << 8) /**< \brief (UDP_FADDR) Function Enable */ +/* -------- UDP_IER : (UDP Offset: 0x010) Interrupt Enable Register -------- */ +#define UDP_IER_EP0INT (0x1u << 0) /**< \brief (UDP_IER) Enable Endpoint 0 Interrupt */ +#define UDP_IER_EP1INT (0x1u << 1) /**< \brief (UDP_IER) Enable Endpoint 1 Interrupt */ +#define UDP_IER_EP2INT (0x1u << 2) /**< \brief (UDP_IER) Enable Endpoint 2Interrupt */ +#define UDP_IER_EP3INT (0x1u << 3) /**< \brief (UDP_IER) Enable Endpoint 3 Interrupt */ +#define UDP_IER_EP4INT (0x1u << 4) /**< \brief (UDP_IER) Enable Endpoint 4 Interrupt */ +#define UDP_IER_EP5INT (0x1u << 5) /**< \brief (UDP_IER) Enable Endpoint 5 Interrupt */ +#define UDP_IER_EP6INT (0x1u << 6) /**< \brief (UDP_IER) Enable Endpoint 6 Interrupt */ +#define UDP_IER_EP7INT (0x1u << 7) /**< \brief (UDP_IER) Enable Endpoint 7 Interrupt */ +#define UDP_IER_RXSUSP (0x1u << 8) /**< \brief (UDP_IER) Enable UDP Suspend Interrupt */ +#define UDP_IER_RXRSM (0x1u << 9) /**< \brief (UDP_IER) Enable UDP Resume Interrupt */ +#define UDP_IER_EXTRSM (0x1u << 10) /**< \brief (UDP_IER) */ +#define UDP_IER_SOFINT (0x1u << 11) /**< \brief (UDP_IER) Enable Start Of Frame Interrupt */ +#define UDP_IER_WAKEUP (0x1u << 13) /**< \brief (UDP_IER) Enable UDP bus Wakeup Interrupt */ +/* -------- UDP_IDR : (UDP Offset: 0x014) Interrupt Disable Register -------- */ +#define UDP_IDR_EP0INT (0x1u << 0) /**< \brief (UDP_IDR) Disable Endpoint 0 Interrupt */ +#define UDP_IDR_EP1INT (0x1u << 1) /**< \brief (UDP_IDR) Disable Endpoint 1 Interrupt */ +#define UDP_IDR_EP2INT (0x1u << 2) /**< \brief (UDP_IDR) Disable Endpoint 2 Interrupt */ +#define UDP_IDR_EP3INT (0x1u << 3) /**< \brief (UDP_IDR) Disable Endpoint 3 Interrupt */ +#define UDP_IDR_EP4INT (0x1u << 4) /**< \brief (UDP_IDR) Disable Endpoint 4 Interrupt */ +#define UDP_IDR_EP5INT (0x1u << 5) /**< \brief (UDP_IDR) Disable Endpoint 5 Interrupt */ +#define UDP_IDR_EP6INT (0x1u << 6) /**< \brief (UDP_IDR) Disable Endpoint 6 Interrupt */ +#define UDP_IDR_EP7INT (0x1u << 7) /**< \brief (UDP_IDR) Disable Endpoint 7 Interrupt */ +#define UDP_IDR_RXSUSP (0x1u << 8) /**< \brief (UDP_IDR) Disable UDP Suspend Interrupt */ +#define UDP_IDR_RXRSM (0x1u << 9) /**< \brief (UDP_IDR) Disable UDP Resume Interrupt */ +#define UDP_IDR_EXTRSM (0x1u << 10) /**< \brief (UDP_IDR) */ +#define UDP_IDR_SOFINT (0x1u << 11) /**< \brief (UDP_IDR) Disable Start Of Frame Interrupt */ +#define UDP_IDR_WAKEUP (0x1u << 13) /**< \brief (UDP_IDR) Disable USB Bus Interrupt */ +/* -------- UDP_IMR : (UDP Offset: 0x018) Interrupt Mask Register -------- */ +#define UDP_IMR_EP0INT (0x1u << 0) /**< \brief (UDP_IMR) Mask Endpoint 0 Interrupt */ +#define UDP_IMR_EP1INT (0x1u << 1) /**< \brief (UDP_IMR) Mask Endpoint 1 Interrupt */ +#define UDP_IMR_EP2INT (0x1u << 2) /**< \brief (UDP_IMR) Mask Endpoint 2 Interrupt */ +#define UDP_IMR_EP3INT (0x1u << 3) /**< \brief (UDP_IMR) Mask Endpoint 3 Interrupt */ +#define UDP_IMR_EP4INT (0x1u << 4) /**< \brief (UDP_IMR) Mask Endpoint 4 Interrupt */ +#define UDP_IMR_EP5INT (0x1u << 5) /**< \brief (UDP_IMR) Mask Endpoint 5 Interrupt */ +#define UDP_IMR_EP6INT (0x1u << 6) /**< \brief (UDP_IMR) Mask Endpoint 6 Interrupt */ +#define UDP_IMR_EP7INT (0x1u << 7) /**< \brief (UDP_IMR) Mask Endpoint 7 Interrupt */ +#define UDP_IMR_RXSUSP (0x1u << 8) /**< \brief (UDP_IMR) Mask UDP Suspend Interrupt */ +#define UDP_IMR_RXRSM (0x1u << 9) /**< \brief (UDP_IMR) Mask UDP Resume Interrupt. */ +#define UDP_IMR_EXTRSM (0x1u << 10) /**< \brief (UDP_IMR) */ +#define UDP_IMR_SOFINT (0x1u << 11) /**< \brief (UDP_IMR) Mask Start Of Frame Interrupt */ +#define UDP_IMR_BIT12 (0x1u << 12) /**< \brief (UDP_IMR) UDP_IMR Bit 12 */ +#define UDP_IMR_WAKEUP (0x1u << 13) /**< \brief (UDP_IMR) USB Bus WAKEUP Interrupt */ +/* -------- UDP_ISR : (UDP Offset: 0x01C) Interrupt Status Register -------- */ +#define UDP_ISR_EP0INT (0x1u << 0) /**< \brief (UDP_ISR) Endpoint 0 Interrupt Status */ +#define UDP_ISR_EP1INT (0x1u << 1) /**< \brief (UDP_ISR) Endpoint 1 Interrupt Status */ +#define UDP_ISR_EP2INT (0x1u << 2) /**< \brief (UDP_ISR) Endpoint 2 Interrupt Status */ +#define UDP_ISR_EP3INT (0x1u << 3) /**< \brief (UDP_ISR) Endpoint 3 Interrupt Status */ +#define UDP_ISR_EP4INT (0x1u << 4) /**< \brief (UDP_ISR) Endpoint 4 Interrupt Status */ +#define UDP_ISR_EP5INT (0x1u << 5) /**< \brief (UDP_ISR) Endpoint 5 Interrupt Status */ +#define UDP_ISR_EP6INT (0x1u << 6) /**< \brief (UDP_ISR) Endpoint 6 Interrupt Status */ +#define UDP_ISR_EP7INT (0x1u << 7) /**< \brief (UDP_ISR) Endpoint 7Interrupt Status */ +#define UDP_ISR_RXSUSP (0x1u << 8) /**< \brief (UDP_ISR) UDP Suspend Interrupt Status */ +#define UDP_ISR_RXRSM (0x1u << 9) /**< \brief (UDP_ISR) UDP Resume Interrupt Status */ +#define UDP_ISR_EXTRSM (0x1u << 10) /**< \brief (UDP_ISR) */ +#define UDP_ISR_SOFINT (0x1u << 11) /**< \brief (UDP_ISR) Start of Frame Interrupt Status */ +#define UDP_ISR_ENDBUSRES (0x1u << 12) /**< \brief (UDP_ISR) End of BUS Reset Interrupt Status */ +#define UDP_ISR_WAKEUP (0x1u << 13) /**< \brief (UDP_ISR) UDP Resume Interrupt Status */ +/* -------- UDP_ICR : (UDP Offset: 0x020) Interrupt Clear Register -------- */ +#define UDP_ICR_RXSUSP (0x1u << 8) /**< \brief (UDP_ICR) Clear UDP Suspend Interrupt */ +#define UDP_ICR_RXRSM (0x1u << 9) /**< \brief (UDP_ICR) Clear UDP Resume Interrupt */ +#define UDP_ICR_EXTRSM (0x1u << 10) /**< \brief (UDP_ICR) */ +#define UDP_ICR_SOFINT (0x1u << 11) /**< \brief (UDP_ICR) Clear Start Of Frame Interrupt */ +#define UDP_ICR_ENDBUSRES (0x1u << 12) /**< \brief (UDP_ICR) Clear End of Bus Reset Interrupt */ +#define UDP_ICR_WAKEUP (0x1u << 13) /**< \brief (UDP_ICR) Clear Wakeup Interrupt */ +/* -------- UDP_RST_EP : (UDP Offset: 0x028) Reset Endpoint Register -------- */ +#define UDP_RST_EP_EP0 (0x1u << 0) /**< \brief (UDP_RST_EP) Reset Endpoint 0 */ +#define UDP_RST_EP_EP1 (0x1u << 1) /**< \brief (UDP_RST_EP) Reset Endpoint 1 */ +#define UDP_RST_EP_EP2 (0x1u << 2) /**< \brief (UDP_RST_EP) Reset Endpoint 2 */ +#define UDP_RST_EP_EP3 (0x1u << 3) /**< \brief (UDP_RST_EP) Reset Endpoint 3 */ +#define UDP_RST_EP_EP4 (0x1u << 4) /**< \brief (UDP_RST_EP) Reset Endpoint 4 */ +#define UDP_RST_EP_EP5 (0x1u << 5) /**< \brief (UDP_RST_EP) Reset Endpoint 5 */ +#define UDP_RST_EP_EP6 (0x1u << 6) /**< \brief (UDP_RST_EP) Reset Endpoint 6 */ +#define UDP_RST_EP_EP7 (0x1u << 7) /**< \brief (UDP_RST_EP) Reset Endpoint 7 */ +/* -------- UDP_CSR[8] : (UDP Offset: 0x030) Endpoint Control and Status Register -------- */ +#define UDP_CSR_TXCOMP (0x1u << 0) /**< \brief (UDP_CSR[8]) Generates an IN Packet with Data Previously Written in the DPR */ +#define UDP_CSR_RX_DATA_BK0 (0x1u << 1) /**< \brief (UDP_CSR[8]) Receive Data Bank 0 */ +#define UDP_CSR_RXSETUP (0x1u << 2) /**< \brief (UDP_CSR[8]) Received Setup */ +#define UDP_CSR_STALLSENT (0x1u << 3) /**< \brief (UDP_CSR[8]) Stall Sent */ +#define UDP_CSR_TXPKTRDY (0x1u << 4) /**< \brief (UDP_CSR[8]) Transmit Packet Ready */ +#define UDP_CSR_FORCESTALL (0x1u << 5) /**< \brief (UDP_CSR[8]) Force Stall (used by Control, Bulk and Isochronous Endpoints) */ +#define UDP_CSR_RX_DATA_BK1 (0x1u << 6) /**< \brief (UDP_CSR[8]) Receive Data Bank 1 (only used by endpoints with ping-pong attributes) */ +#define UDP_CSR_DIR (0x1u << 7) /**< \brief (UDP_CSR[8]) Transfer Direction (only available for control endpoints) */ +#define UDP_CSR_EPTYPE_Pos 8 +#define UDP_CSR_EPTYPE_Msk (0x7u << UDP_CSR_EPTYPE_Pos) /**< \brief (UDP_CSR[8]) Endpoint Type */ +#define UDP_CSR_EPTYPE_CTRL (0x0u << 8) /**< \brief (UDP_CSR[8]) Control */ +#define UDP_CSR_EPTYPE_ISO_OUT (0x1u << 8) /**< \brief (UDP_CSR[8]) Isochronous OUT */ +#define UDP_CSR_EPTYPE_BULK_OUT (0x2u << 8) /**< \brief (UDP_CSR[8]) Bulk OUT */ +#define UDP_CSR_EPTYPE_INT_OUT (0x3u << 8) /**< \brief (UDP_CSR[8]) Interrupt OUT */ +#define UDP_CSR_EPTYPE_ISO_IN (0x5u << 8) /**< \brief (UDP_CSR[8]) Isochronous IN */ +#define UDP_CSR_EPTYPE_BULK_IN (0x6u << 8) /**< \brief (UDP_CSR[8]) Bulk IN */ +#define UDP_CSR_EPTYPE_INT_IN (0x7u << 8) /**< \brief (UDP_CSR[8]) Interrupt IN */ +#define UDP_CSR_DTGLE (0x1u << 11) /**< \brief (UDP_CSR[8]) Data Toggle */ +#define UDP_CSR_EPEDS (0x1u << 15) /**< \brief (UDP_CSR[8]) Endpoint Enable Disable */ +#define UDP_CSR_RXBYTECNT_Pos 16 +#define UDP_CSR_RXBYTECNT_Msk (0x7ffu << UDP_CSR_RXBYTECNT_Pos) /**< \brief (UDP_CSR[8]) Number of Bytes Available in the FIFO */ +#define UDP_CSR_RXBYTECNT(value) ((UDP_CSR_RXBYTECNT_Msk & ((value) << UDP_CSR_RXBYTECNT_Pos))) +#define UDP_CSR_ISOERROR (0x1u << 3) /**< \brief (UDP_CSR[8]) A CRC error has been detected in an isochronous transfer */ +/* -------- UDP_FDR[8] : (UDP Offset: 0x050) Endpoint FIFO Data Register -------- */ +#define UDP_FDR_FIFO_DATA_Pos 0 +#define UDP_FDR_FIFO_DATA_Msk (0xffu << UDP_FDR_FIFO_DATA_Pos) /**< \brief (UDP_FDR[8]) FIFO Data Value */ +#define UDP_FDR_FIFO_DATA(value) ((UDP_FDR_FIFO_DATA_Msk & ((value) << UDP_FDR_FIFO_DATA_Pos))) +/* -------- UDP_TXVC : (UDP Offset: 0x074) Transceiver Control Register -------- */ +#define UDP_TXVC_TXVDIS (0x1u << 8) /**< \brief (UDP_TXVC) Transceiver Disable */ +#define UDP_TXVC_PUON (0x1u << 9) /**< \brief (UDP_TXVC) Pull-up On */ + +/*@}*/ + + +#endif /* _SAM4E_UDP_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/usart.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/usart.h new file mode 100644 index 000000000..159142e94 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/usart.h @@ -0,0 +1,368 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_USART_COMPONENT_ +#define _SAM4E_USART_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Universal Synchronous Asynchronous Receiver Transmitter */ +/* ============================================================================= */ +/** \addtogroup SAM4E_USART Universal Synchronous Asynchronous Receiver Transmitter */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Usart hardware registers */ +typedef struct { + WoReg US_CR; /**< \brief (Usart Offset: 0x0000) Control Register */ + RwReg US_MR; /**< \brief (Usart Offset: 0x0004) Mode Register */ + WoReg US_IER; /**< \brief (Usart Offset: 0x0008) Interrupt Enable Register */ + WoReg US_IDR; /**< \brief (Usart Offset: 0x000C) Interrupt Disable Register */ + RoReg US_IMR; /**< \brief (Usart Offset: 0x0010) Interrupt Mask Register */ + RoReg US_CSR; /**< \brief (Usart Offset: 0x0014) Channel Status Register */ + RoReg US_RHR; /**< \brief (Usart Offset: 0x0018) Receiver Holding Register */ + WoReg US_THR; /**< \brief (Usart Offset: 0x001C) Transmitter Holding Register */ + RwReg US_BRGR; /**< \brief (Usart Offset: 0x0020) Baud Rate Generator Register */ + RwReg US_RTOR; /**< \brief (Usart Offset: 0x0024) Receiver Time-out Register */ + RwReg US_TTGR; /**< \brief (Usart Offset: 0x0028) Transmitter Timeguard Register */ + RoReg Reserved1[5]; + RwReg US_FIDI; /**< \brief (Usart Offset: 0x0040) FI DI Ratio Register */ + RoReg US_NER; /**< \brief (Usart Offset: 0x0044) Number of Errors Register */ + RoReg Reserved2[1]; + RwReg US_IF; /**< \brief (Usart Offset: 0x004C) IrDA Filter Register */ + RwReg US_MAN; /**< \brief (Usart Offset: 0x0050) Manchester Encoder Decoder Register */ + RoReg Reserved3[36]; + RwReg US_WPMR; /**< \brief (Usart Offset: 0xE4) Write Protect Mode Register */ + RoReg US_WPSR; /**< \brief (Usart Offset: 0xE8) Write Protect Status Register */ + RoReg Reserved4[5]; + RwReg US_RPR; /**< \brief (Usart Offset: 0x100) Receive Pointer Register */ + RwReg US_RCR; /**< \brief (Usart Offset: 0x104) Receive Counter Register */ + RwReg US_TPR; /**< \brief (Usart Offset: 0x108) Transmit Pointer Register */ + RwReg US_TCR; /**< \brief (Usart Offset: 0x10C) Transmit Counter Register */ + RwReg US_RNPR; /**< \brief (Usart Offset: 0x110) Receive Next Pointer Register */ + RwReg US_RNCR; /**< \brief (Usart Offset: 0x114) Receive Next Counter Register */ + RwReg US_TNPR; /**< \brief (Usart Offset: 0x118) Transmit Next Pointer Register */ + RwReg US_TNCR; /**< \brief (Usart Offset: 0x11C) Transmit Next Counter Register */ + WoReg US_PTCR; /**< \brief (Usart Offset: 0x120) Transfer Control Register */ + RoReg US_PTSR; /**< \brief (Usart Offset: 0x124) Transfer Status Register */ +} Usart; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- US_CR : (USART Offset: 0x0000) Control Register -------- */ +#define US_CR_RSTRX (0x1u << 2) /**< \brief (US_CR) Reset Receiver */ +#define US_CR_RSTTX (0x1u << 3) /**< \brief (US_CR) Reset Transmitter */ +#define US_CR_RXEN (0x1u << 4) /**< \brief (US_CR) Receiver Enable */ +#define US_CR_RXDIS (0x1u << 5) /**< \brief (US_CR) Receiver Disable */ +#define US_CR_TXEN (0x1u << 6) /**< \brief (US_CR) Transmitter Enable */ +#define US_CR_TXDIS (0x1u << 7) /**< \brief (US_CR) Transmitter Disable */ +#define US_CR_RSTSTA (0x1u << 8) /**< \brief (US_CR) Reset Status Bits */ +#define US_CR_STTBRK (0x1u << 9) /**< \brief (US_CR) Start Break */ +#define US_CR_STPBRK (0x1u << 10) /**< \brief (US_CR) Stop Break */ +#define US_CR_STTTO (0x1u << 11) /**< \brief (US_CR) Start Time-out */ +#define US_CR_SENDA (0x1u << 12) /**< \brief (US_CR) Send Address */ +#define US_CR_RSTIT (0x1u << 13) /**< \brief (US_CR) Reset Iterations */ +#define US_CR_RSTNACK (0x1u << 14) /**< \brief (US_CR) Reset Non Acknowledge */ +#define US_CR_RETTO (0x1u << 15) /**< \brief (US_CR) Rearm Time-out */ +#define US_CR_DTREN (0x1u << 16) /**< \brief (US_CR) Data Terminal Ready Enable */ +#define US_CR_DTRDIS (0x1u << 17) /**< \brief (US_CR) Data Terminal Ready Disable */ +#define US_CR_RTSEN (0x1u << 18) /**< \brief (US_CR) Request to Send Enable */ +#define US_CR_RTSDIS (0x1u << 19) /**< \brief (US_CR) Request to Send Disable */ +#define US_CR_FCS (0x1u << 18) /**< \brief (US_CR) Force SPI Chip Select */ +#define US_CR_RCS (0x1u << 19) /**< \brief (US_CR) Release SPI Chip Select */ +/* -------- US_MR : (USART Offset: 0x0004) Mode Register -------- */ +#define US_MR_USART_MODE_Pos 0 +#define US_MR_USART_MODE_Msk (0xfu << US_MR_USART_MODE_Pos) /**< \brief (US_MR) USART Mode of Operation */ +#define US_MR_USART_MODE_NORMAL (0x0u << 0) /**< \brief (US_MR) Normal mode */ +#define US_MR_USART_MODE_RS485 (0x1u << 0) /**< \brief (US_MR) RS485 */ +#define US_MR_USART_MODE_HW_HANDSHAKING (0x2u << 0) /**< \brief (US_MR) Hardware Handshaking */ +#define US_MR_USART_MODE_MODEM (0x3u << 0) /**< \brief (US_MR) Modem */ +#define US_MR_USART_MODE_IS07816_T_0 (0x4u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 0 */ +#define US_MR_USART_MODE_IS07816_T_1 (0x6u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 1 */ +#define US_MR_USART_MODE_IRDA (0x8u << 0) /**< \brief (US_MR) IrDA */ +#define US_MR_USART_MODE_SPI_MASTER (0xEu << 0) /**< \brief (US_MR) SPI Master */ +#define US_MR_USART_MODE_SPI_SLAVE (0xFu << 0) /**< \brief (US_MR) SPI Slave */ +#define US_MR_USCLKS_Pos 4 +#define US_MR_USCLKS_Msk (0x3u << US_MR_USCLKS_Pos) /**< \brief (US_MR) Clock Selection */ +#define US_MR_USCLKS_MCK (0x0u << 4) /**< \brief (US_MR) Master Clock MCK is selected */ +#define US_MR_USCLKS_DIV (0x1u << 4) /**< \brief (US_MR) Internal Clock Divided MCK/DIV (DIV=8) is selected */ +#define US_MR_USCLKS_SCK (0x3u << 4) /**< \brief (US_MR) Serial Clock SLK is selected */ +#define US_MR_CHRL_Pos 6 +#define US_MR_CHRL_Msk (0x3u << US_MR_CHRL_Pos) /**< \brief (US_MR) Character Length. */ +#define US_MR_CHRL_5_BIT (0x0u << 6) /**< \brief (US_MR) Character length is 5 bits */ +#define US_MR_CHRL_6_BIT (0x1u << 6) /**< \brief (US_MR) Character length is 6 bits */ +#define US_MR_CHRL_7_BIT (0x2u << 6) /**< \brief (US_MR) Character length is 7 bits */ +#define US_MR_CHRL_8_BIT (0x3u << 6) /**< \brief (US_MR) Character length is 8 bits */ +#define US_MR_SYNC (0x1u << 8) /**< \brief (US_MR) Synchronous Mode Select */ +#define US_MR_PAR_Pos 9 +#define US_MR_PAR_Msk (0x7u << US_MR_PAR_Pos) /**< \brief (US_MR) Parity Type */ +#define US_MR_PAR_EVEN (0x0u << 9) /**< \brief (US_MR) Even parity */ +#define US_MR_PAR_ODD (0x1u << 9) /**< \brief (US_MR) Odd parity */ +#define US_MR_PAR_SPACE (0x2u << 9) /**< \brief (US_MR) Parity forced to 0 (Space) */ +#define US_MR_PAR_MARK (0x3u << 9) /**< \brief (US_MR) Parity forced to 1 (Mark) */ +#define US_MR_PAR_NO (0x4u << 9) /**< \brief (US_MR) No parity */ +#define US_MR_PAR_MULTIDROP (0x6u << 9) /**< \brief (US_MR) Multidrop mode */ +#define US_MR_NBSTOP_Pos 12 +#define US_MR_NBSTOP_Msk (0x3u << US_MR_NBSTOP_Pos) /**< \brief (US_MR) Number of Stop Bits */ +#define US_MR_NBSTOP_1_BIT (0x0u << 12) /**< \brief (US_MR) 1 stop bit */ +#define US_MR_NBSTOP_1_5_BIT (0x1u << 12) /**< \brief (US_MR) 1.5 stop bit (SYNC = 0) or reserved (SYNC = 1) */ +#define US_MR_NBSTOP_2_BIT (0x2u << 12) /**< \brief (US_MR) 2 stop bits */ +#define US_MR_CHMODE_Pos 14 +#define US_MR_CHMODE_Msk (0x3u << US_MR_CHMODE_Pos) /**< \brief (US_MR) Channel Mode */ +#define US_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (US_MR) Normal Mode */ +#define US_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (US_MR) Automatic Echo. Receiver input is connected to the TXD pin. */ +#define US_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (US_MR) Local Loopback. Transmitter output is connected to the Receiver Input. */ +#define US_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (US_MR) Remote Loopback. RXD pin is internally connected to the TXD pin. */ +#define US_MR_MSBF (0x1u << 16) /**< \brief (US_MR) Bit Order */ +#define US_MR_MODE9 (0x1u << 17) /**< \brief (US_MR) 9-bit Character Length */ +#define US_MR_CLKO (0x1u << 18) /**< \brief (US_MR) Clock Output Select */ +#define US_MR_OVER (0x1u << 19) /**< \brief (US_MR) Oversampling Mode */ +#define US_MR_INACK (0x1u << 20) /**< \brief (US_MR) Inhibit Non Acknowledge */ +#define US_MR_DSNACK (0x1u << 21) /**< \brief (US_MR) Disable Successive NACK */ +#define US_MR_VAR_SYNC (0x1u << 22) /**< \brief (US_MR) Variable Synchronization of Command/Data Sync Start Frame Delimiter */ +#define US_MR_INVDATA (0x1u << 23) /**< \brief (US_MR) Inverted Data */ +#define US_MR_MAX_ITERATION_Pos 24 +#define US_MR_MAX_ITERATION_Msk (0x7u << US_MR_MAX_ITERATION_Pos) /**< \brief (US_MR) Maximum Number of Automatic Iteration */ +#define US_MR_MAX_ITERATION(value) ((US_MR_MAX_ITERATION_Msk & ((value) << US_MR_MAX_ITERATION_Pos))) +#define US_MR_FILTER (0x1u << 28) /**< \brief (US_MR) Infrared Receive Line Filter */ +#define US_MR_MAN (0x1u << 29) /**< \brief (US_MR) Manchester Encoder/Decoder Enable */ +#define US_MR_MODSYNC (0x1u << 30) /**< \brief (US_MR) Manchester Synchronization Mode */ +#define US_MR_ONEBIT (0x1u << 31) /**< \brief (US_MR) Start Frame Delimiter Selector */ +#define US_MR_CPHA (0x1u << 8) /**< \brief (US_MR) SPI Clock Phase */ +#define US_MR_CPOL (0x1u << 16) /**< \brief (US_MR) SPI Clock Polarity */ +#define US_MR_WRDBT (0x1u << 20) /**< \brief (US_MR) Wait Read Data Before Transfer */ +/* -------- US_IER : (USART Offset: 0x0008) Interrupt Enable Register -------- */ +#define US_IER_RXRDY (0x1u << 0) /**< \brief (US_IER) RXRDY Interrupt Enable */ +#define US_IER_TXRDY (0x1u << 1) /**< \brief (US_IER) TXRDY Interrupt Enable */ +#define US_IER_RXBRK (0x1u << 2) /**< \brief (US_IER) Receiver Break Interrupt Enable */ +#define US_IER_ENDRX (0x1u << 3) /**< \brief (US_IER) End of Receive Transfer Interrupt Enable (available in all USART modes of operation) */ +#define US_IER_ENDTX (0x1u << 4) /**< \brief (US_IER) End of Transmit Interrupt Enable (available in all USART modes of operation) */ +#define US_IER_OVRE (0x1u << 5) /**< \brief (US_IER) Overrun Error Interrupt Enable */ +#define US_IER_FRAME (0x1u << 6) /**< \brief (US_IER) Framing Error Interrupt Enable */ +#define US_IER_PARE (0x1u << 7) /**< \brief (US_IER) Parity Error Interrupt Enable */ +#define US_IER_TIMEOUT (0x1u << 8) /**< \brief (US_IER) Time-out Interrupt Enable */ +#define US_IER_TXEMPTY (0x1u << 9) /**< \brief (US_IER) TXEMPTY Interrupt Enable */ +#define US_IER_ITER (0x1u << 10) /**< \brief (US_IER) Max number of Repetitions Reached Interrupt Enable */ +#define US_IER_TXBUFE (0x1u << 11) /**< \brief (US_IER) Buffer Empty Interrupt Enable (available in all USART modes of operation) */ +#define US_IER_RXBUFF (0x1u << 12) /**< \brief (US_IER) Buffer Full Interrupt Enable (available in all USART modes of operation) */ +#define US_IER_NACK (0x1u << 13) /**< \brief (US_IER) Non AcknowledgeInterrupt Enable */ +#define US_IER_RIIC (0x1u << 16) /**< \brief (US_IER) Ring Indicator Input Change Enable */ +#define US_IER_DSRIC (0x1u << 17) /**< \brief (US_IER) Data Set Ready Input Change Enable */ +#define US_IER_DCDIC (0x1u << 18) /**< \brief (US_IER) Data Carrier Detect Input Change Interrupt Enable */ +#define US_IER_CTSIC (0x1u << 19) /**< \brief (US_IER) Clear to Send Input Change Interrupt Enable */ +#define US_IER_MANE (0x1u << 24) /**< \brief (US_IER) Manchester Error Interrupt Enable */ +#define US_IER_UNRE (0x1u << 10) /**< \brief (US_IER) SPI Underrun Error Interrupt Enable */ +/* -------- US_IDR : (USART Offset: 0x000C) Interrupt Disable Register -------- */ +#define US_IDR_RXRDY (0x1u << 0) /**< \brief (US_IDR) RXRDY Interrupt Disable */ +#define US_IDR_TXRDY (0x1u << 1) /**< \brief (US_IDR) TXRDY Interrupt Disable */ +#define US_IDR_RXBRK (0x1u << 2) /**< \brief (US_IDR) Receiver Break Interrupt Disable */ +#define US_IDR_ENDRX (0x1u << 3) /**< \brief (US_IDR) End of Receive Transfer Interrupt Disable (available in all USART modes of operation) */ +#define US_IDR_ENDTX (0x1u << 4) /**< \brief (US_IDR) End of Transmit Interrupt Disable (available in all USART modes of operation) */ +#define US_IDR_OVRE (0x1u << 5) /**< \brief (US_IDR) Overrun Error Interrupt Enable */ +#define US_IDR_FRAME (0x1u << 6) /**< \brief (US_IDR) Framing Error Interrupt Disable */ +#define US_IDR_PARE (0x1u << 7) /**< \brief (US_IDR) Parity Error Interrupt Disable */ +#define US_IDR_TIMEOUT (0x1u << 8) /**< \brief (US_IDR) Time-out Interrupt Disable */ +#define US_IDR_TXEMPTY (0x1u << 9) /**< \brief (US_IDR) TXEMPTY Interrupt Disable */ +#define US_IDR_ITER (0x1u << 10) /**< \brief (US_IDR) Max Number of Repetitions Reached Interrupt Disable */ +#define US_IDR_TXBUFE (0x1u << 11) /**< \brief (US_IDR) Buffer Empty Interrupt Disable (available in all USART modes of operation) */ +#define US_IDR_RXBUFF (0x1u << 12) /**< \brief (US_IDR) Buffer Full Interrupt Disable (available in all USART modes of operation) */ +#define US_IDR_NACK (0x1u << 13) /**< \brief (US_IDR) Non AcknowledgeInterrupt Disable */ +#define US_IDR_RIIC (0x1u << 16) /**< \brief (US_IDR) Ring Indicator Input Change Disable */ +#define US_IDR_DSRIC (0x1u << 17) /**< \brief (US_IDR) Data Set Ready Input Change Disable */ +#define US_IDR_DCDIC (0x1u << 18) /**< \brief (US_IDR) Data Carrier Detect Input Change Interrupt Disable */ +#define US_IDR_CTSIC (0x1u << 19) /**< \brief (US_IDR) Clear to Send Input Change Interrupt Disable */ +#define US_IDR_MANE (0x1u << 24) /**< \brief (US_IDR) Manchester Error Interrupt Disable */ +#define US_IDR_UNRE (0x1u << 10) /**< \brief (US_IDR) SPI Underrun Error Interrupt Disable */ +/* -------- US_IMR : (USART Offset: 0x0010) Interrupt Mask Register -------- */ +#define US_IMR_RXRDY (0x1u << 0) /**< \brief (US_IMR) RXRDY Interrupt Mask */ +#define US_IMR_TXRDY (0x1u << 1) /**< \brief (US_IMR) TXRDY Interrupt Mask */ +#define US_IMR_RXBRK (0x1u << 2) /**< \brief (US_IMR) Receiver Break Interrupt Mask */ +#define US_IMR_ENDRX (0x1u << 3) /**< \brief (US_IMR) End of Receive Transfer Interrupt Mask (available in all USART modes of operation) */ +#define US_IMR_ENDTX (0x1u << 4) /**< \brief (US_IMR) End of Transmit Interrupt Mask (available in all USART modes of operation) */ +#define US_IMR_OVRE (0x1u << 5) /**< \brief (US_IMR) Overrun Error Interrupt Mask */ +#define US_IMR_FRAME (0x1u << 6) /**< \brief (US_IMR) Framing Error Interrupt Mask */ +#define US_IMR_PARE (0x1u << 7) /**< \brief (US_IMR) Parity Error Interrupt Mask */ +#define US_IMR_TIMEOUT (0x1u << 8) /**< \brief (US_IMR) Time-out Interrupt Mask */ +#define US_IMR_TXEMPTY (0x1u << 9) /**< \brief (US_IMR) TXEMPTY Interrupt Mask */ +#define US_IMR_ITER (0x1u << 10) /**< \brief (US_IMR) Max Number of Repetitions Reached Interrupt Mask */ +#define US_IMR_TXBUFE (0x1u << 11) /**< \brief (US_IMR) Buffer Empty Interrupt Mask (available in all USART modes of operation) */ +#define US_IMR_RXBUFF (0x1u << 12) /**< \brief (US_IMR) Buffer Full Interrupt Mask (available in all USART modes of operation) */ +#define US_IMR_NACK (0x1u << 13) /**< \brief (US_IMR) Non AcknowledgeInterrupt Mask */ +#define US_IMR_RIIC (0x1u << 16) /**< \brief (US_IMR) Ring Indicator Input Change Mask */ +#define US_IMR_DSRIC (0x1u << 17) /**< \brief (US_IMR) Data Set Ready Input Change Mask */ +#define US_IMR_DCDIC (0x1u << 18) /**< \brief (US_IMR) Data Carrier Detect Input Change Interrupt Mask */ +#define US_IMR_CTSIC (0x1u << 19) /**< \brief (US_IMR) Clear to Send Input Change Interrupt Mask */ +#define US_IMR_MANE (0x1u << 24) /**< \brief (US_IMR) Manchester Error Interrupt Mask */ +#define US_IMR_UNRE (0x1u << 10) /**< \brief (US_IMR) SPI Underrun Error Interrupt Mask */ +/* -------- US_CSR : (USART Offset: 0x0014) Channel Status Register -------- */ +#define US_CSR_RXRDY (0x1u << 0) /**< \brief (US_CSR) Receiver Ready */ +#define US_CSR_TXRDY (0x1u << 1) /**< \brief (US_CSR) Transmitter Ready */ +#define US_CSR_RXBRK (0x1u << 2) /**< \brief (US_CSR) Break Received/End of Break */ +#define US_CSR_ENDRX (0x1u << 3) /**< \brief (US_CSR) End of Receiver Transfer */ +#define US_CSR_ENDTX (0x1u << 4) /**< \brief (US_CSR) End of Transmitter Transfer */ +#define US_CSR_OVRE (0x1u << 5) /**< \brief (US_CSR) Overrun Error */ +#define US_CSR_FRAME (0x1u << 6) /**< \brief (US_CSR) Framing Error */ +#define US_CSR_PARE (0x1u << 7) /**< \brief (US_CSR) Parity Error */ +#define US_CSR_TIMEOUT (0x1u << 8) /**< \brief (US_CSR) Receiver Time-out */ +#define US_CSR_TXEMPTY (0x1u << 9) /**< \brief (US_CSR) Transmitter Empty */ +#define US_CSR_ITER (0x1u << 10) /**< \brief (US_CSR) MaxNumber of Repetitions Reached */ +#define US_CSR_TXBUFE (0x1u << 11) /**< \brief (US_CSR) Transmission Buffer Empty */ +#define US_CSR_RXBUFF (0x1u << 12) /**< \brief (US_CSR) Reception Buffer Full */ +#define US_CSR_NACK (0x1u << 13) /**< \brief (US_CSR) Non AcknowledgeInterrupt */ +#define US_CSR_RIIC (0x1u << 16) /**< \brief (US_CSR) Ring Indicator Input Change Flag */ +#define US_CSR_DSRIC (0x1u << 17) /**< \brief (US_CSR) Data Set Ready Input Change Flag */ +#define US_CSR_DCDIC (0x1u << 18) /**< \brief (US_CSR) Data Carrier Detect Input Change Flag */ +#define US_CSR_CTSIC (0x1u << 19) /**< \brief (US_CSR) Clear to Send Input Change Flag */ +#define US_CSR_RI (0x1u << 20) /**< \brief (US_CSR) Image of RI Input */ +#define US_CSR_DSR (0x1u << 21) /**< \brief (US_CSR) Image of DSR Input */ +#define US_CSR_DCD (0x1u << 22) /**< \brief (US_CSR) Image of DCD Input */ +#define US_CSR_CTS (0x1u << 23) /**< \brief (US_CSR) Image of CTS Input */ +#define US_CSR_MANERR (0x1u << 24) /**< \brief (US_CSR) Manchester Error */ +#define US_CSR_UNRE (0x1u << 10) /**< \brief (US_CSR) Underrun Error */ +/* -------- US_RHR : (USART Offset: 0x0018) Receiver Holding Register -------- */ +#define US_RHR_RXCHR_Pos 0 +#define US_RHR_RXCHR_Msk (0x1ffu << US_RHR_RXCHR_Pos) /**< \brief (US_RHR) Received Character */ +#define US_RHR_RXSYNH (0x1u << 15) /**< \brief (US_RHR) Received Sync */ +/* -------- US_THR : (USART Offset: 0x001C) Transmitter Holding Register -------- */ +#define US_THR_TXCHR_Pos 0 +#define US_THR_TXCHR_Msk (0x1ffu << US_THR_TXCHR_Pos) /**< \brief (US_THR) Character to be Transmitted */ +#define US_THR_TXCHR(value) ((US_THR_TXCHR_Msk & ((value) << US_THR_TXCHR_Pos))) +#define US_THR_TXSYNH (0x1u << 15) /**< \brief (US_THR) Sync Field to be Transmitted */ +/* -------- US_BRGR : (USART Offset: 0x0020) Baud Rate Generator Register -------- */ +#define US_BRGR_CD_Pos 0 +#define US_BRGR_CD_Msk (0xffffu << US_BRGR_CD_Pos) /**< \brief (US_BRGR) Clock Divider */ +#define US_BRGR_CD(value) ((US_BRGR_CD_Msk & ((value) << US_BRGR_CD_Pos))) +#define US_BRGR_FP_Pos 16 +#define US_BRGR_FP_Msk (0x7u << US_BRGR_FP_Pos) /**< \brief (US_BRGR) Fractional Part */ +#define US_BRGR_FP(value) ((US_BRGR_FP_Msk & ((value) << US_BRGR_FP_Pos))) +/* -------- US_RTOR : (USART Offset: 0x0024) Receiver Time-out Register -------- */ +#define US_RTOR_TO_Pos 0 +#define US_RTOR_TO_Msk (0xffffu << US_RTOR_TO_Pos) /**< \brief (US_RTOR) Time-out Value */ +#define US_RTOR_TO(value) ((US_RTOR_TO_Msk & ((value) << US_RTOR_TO_Pos))) +/* -------- US_TTGR : (USART Offset: 0x0028) Transmitter Timeguard Register -------- */ +#define US_TTGR_TG_Pos 0 +#define US_TTGR_TG_Msk (0xffu << US_TTGR_TG_Pos) /**< \brief (US_TTGR) Timeguard Value */ +#define US_TTGR_TG(value) ((US_TTGR_TG_Msk & ((value) << US_TTGR_TG_Pos))) +/* -------- US_FIDI : (USART Offset: 0x0040) FI DI Ratio Register -------- */ +#define US_FIDI_FI_DI_RATIO_Pos 0 +#define US_FIDI_FI_DI_RATIO_Msk (0x7ffu << US_FIDI_FI_DI_RATIO_Pos) /**< \brief (US_FIDI) FI Over DI Ratio Value */ +#define US_FIDI_FI_DI_RATIO(value) ((US_FIDI_FI_DI_RATIO_Msk & ((value) << US_FIDI_FI_DI_RATIO_Pos))) +/* -------- US_NER : (USART Offset: 0x0044) Number of Errors Register -------- */ +#define US_NER_NB_ERRORS_Pos 0 +#define US_NER_NB_ERRORS_Msk (0xffu << US_NER_NB_ERRORS_Pos) /**< \brief (US_NER) Number of Errors */ +/* -------- US_IF : (USART Offset: 0x004C) IrDA Filter Register -------- */ +#define US_IF_IRDA_FILTER_Pos 0 +#define US_IF_IRDA_FILTER_Msk (0xffu << US_IF_IRDA_FILTER_Pos) /**< \brief (US_IF) IrDA Filter */ +#define US_IF_IRDA_FILTER(value) ((US_IF_IRDA_FILTER_Msk & ((value) << US_IF_IRDA_FILTER_Pos))) +/* -------- US_MAN : (USART Offset: 0x0050) Manchester Encoder Decoder Register -------- */ +#define US_MAN_TX_PL_Pos 0 +#define US_MAN_TX_PL_Msk (0xfu << US_MAN_TX_PL_Pos) /**< \brief (US_MAN) Transmitter Preamble Length */ +#define US_MAN_TX_PL(value) ((US_MAN_TX_PL_Msk & ((value) << US_MAN_TX_PL_Pos))) +#define US_MAN_TX_PP_Pos 8 +#define US_MAN_TX_PP_Msk (0x3u << US_MAN_TX_PP_Pos) /**< \brief (US_MAN) Transmitter Preamble Pattern */ +#define US_MAN_TX_PP_ALL_ONE (0x0u << 8) /**< \brief (US_MAN) The preamble is composed of '1's */ +#define US_MAN_TX_PP_ALL_ZERO (0x1u << 8) /**< \brief (US_MAN) The preamble is composed of '0's */ +#define US_MAN_TX_PP_ZERO_ONE (0x2u << 8) /**< \brief (US_MAN) The preamble is composed of '01's */ +#define US_MAN_TX_PP_ONE_ZERO (0x3u << 8) /**< \brief (US_MAN) The preamble is composed of '10's */ +#define US_MAN_TX_MPOL (0x1u << 12) /**< \brief (US_MAN) Transmitter Manchester Polarity */ +#define US_MAN_RX_PL_Pos 16 +#define US_MAN_RX_PL_Msk (0xfu << US_MAN_RX_PL_Pos) /**< \brief (US_MAN) Receiver Preamble Length */ +#define US_MAN_RX_PL(value) ((US_MAN_RX_PL_Msk & ((value) << US_MAN_RX_PL_Pos))) +#define US_MAN_RX_PP_Pos 24 +#define US_MAN_RX_PP_Msk (0x3u << US_MAN_RX_PP_Pos) /**< \brief (US_MAN) Receiver Preamble Pattern detected */ +#define US_MAN_RX_PP_ALL_ONE (0x0u << 24) /**< \brief (US_MAN) The preamble is composed of '1's */ +#define US_MAN_RX_PP_ALL_ZERO (0x1u << 24) /**< \brief (US_MAN) The preamble is composed of '0's */ +#define US_MAN_RX_PP_ZERO_ONE (0x2u << 24) /**< \brief (US_MAN) The preamble is composed of '01's */ +#define US_MAN_RX_PP_ONE_ZERO (0x3u << 24) /**< \brief (US_MAN) The preamble is composed of '10's */ +#define US_MAN_RX_MPOL (0x1u << 28) /**< \brief (US_MAN) Receiver Manchester Polarity */ +#define US_MAN_ONE (0x1u << 29) /**< \brief (US_MAN) Must Be Set to 1 */ +#define US_MAN_DRIFT (0x1u << 30) /**< \brief (US_MAN) Drift Compensation */ +/* -------- US_WPMR : (USART Offset: 0xE4) Write Protect Mode Register -------- */ +#define US_WPMR_WPEN (0x1u << 0) /**< \brief (US_WPMR) Write Protect Enable */ +#define US_WPMR_WPKEY_Pos 8 +#define US_WPMR_WPKEY_Msk (0xffffffu << US_WPMR_WPKEY_Pos) /**< \brief (US_WPMR) Write Protect KEY */ +#define US_WPMR_WPKEY(value) ((US_WPMR_WPKEY_Msk & ((value) << US_WPMR_WPKEY_Pos))) +/* -------- US_WPSR : (USART Offset: 0xE8) Write Protect Status Register -------- */ +#define US_WPSR_WPVS (0x1u << 0) /**< \brief (US_WPSR) Write Protect Violation Status */ +#define US_WPSR_WPVSRC_Pos 8 +#define US_WPSR_WPVSRC_Msk (0xffffu << US_WPSR_WPVSRC_Pos) /**< \brief (US_WPSR) Write Protect Violation Source */ +/* -------- US_RPR : (USART Offset: 0x100) Receive Pointer Register -------- */ +#define US_RPR_RXPTR_Pos 0 +#define US_RPR_RXPTR_Msk (0xffffffffu << US_RPR_RXPTR_Pos) /**< \brief (US_RPR) Receive Pointer Register */ +#define US_RPR_RXPTR(value) ((US_RPR_RXPTR_Msk & ((value) << US_RPR_RXPTR_Pos))) +/* -------- US_RCR : (USART Offset: 0x104) Receive Counter Register -------- */ +#define US_RCR_RXCTR_Pos 0 +#define US_RCR_RXCTR_Msk (0xffffu << US_RCR_RXCTR_Pos) /**< \brief (US_RCR) Receive Counter Register */ +#define US_RCR_RXCTR(value) ((US_RCR_RXCTR_Msk & ((value) << US_RCR_RXCTR_Pos))) +/* -------- US_TPR : (USART Offset: 0x108) Transmit Pointer Register -------- */ +#define US_TPR_TXPTR_Pos 0 +#define US_TPR_TXPTR_Msk (0xffffffffu << US_TPR_TXPTR_Pos) /**< \brief (US_TPR) Transmit Counter Register */ +#define US_TPR_TXPTR(value) ((US_TPR_TXPTR_Msk & ((value) << US_TPR_TXPTR_Pos))) +/* -------- US_TCR : (USART Offset: 0x10C) Transmit Counter Register -------- */ +#define US_TCR_TXCTR_Pos 0 +#define US_TCR_TXCTR_Msk (0xffffu << US_TCR_TXCTR_Pos) /**< \brief (US_TCR) Transmit Counter Register */ +#define US_TCR_TXCTR(value) ((US_TCR_TXCTR_Msk & ((value) << US_TCR_TXCTR_Pos))) +/* -------- US_RNPR : (USART Offset: 0x110) Receive Next Pointer Register -------- */ +#define US_RNPR_RXNPTR_Pos 0 +#define US_RNPR_RXNPTR_Msk (0xffffffffu << US_RNPR_RXNPTR_Pos) /**< \brief (US_RNPR) Receive Next Pointer */ +#define US_RNPR_RXNPTR(value) ((US_RNPR_RXNPTR_Msk & ((value) << US_RNPR_RXNPTR_Pos))) +/* -------- US_RNCR : (USART Offset: 0x114) Receive Next Counter Register -------- */ +#define US_RNCR_RXNCTR_Pos 0 +#define US_RNCR_RXNCTR_Msk (0xffffu << US_RNCR_RXNCTR_Pos) /**< \brief (US_RNCR) Receive Next Counter */ +#define US_RNCR_RXNCTR(value) ((US_RNCR_RXNCTR_Msk & ((value) << US_RNCR_RXNCTR_Pos))) +/* -------- US_TNPR : (USART Offset: 0x118) Transmit Next Pointer Register -------- */ +#define US_TNPR_TXNPTR_Pos 0 +#define US_TNPR_TXNPTR_Msk (0xffffffffu << US_TNPR_TXNPTR_Pos) /**< \brief (US_TNPR) Transmit Next Pointer */ +#define US_TNPR_TXNPTR(value) ((US_TNPR_TXNPTR_Msk & ((value) << US_TNPR_TXNPTR_Pos))) +/* -------- US_TNCR : (USART Offset: 0x11C) Transmit Next Counter Register -------- */ +#define US_TNCR_TXNCTR_Pos 0 +#define US_TNCR_TXNCTR_Msk (0xffffu << US_TNCR_TXNCTR_Pos) /**< \brief (US_TNCR) Transmit Counter Next */ +#define US_TNCR_TXNCTR(value) ((US_TNCR_TXNCTR_Msk & ((value) << US_TNCR_TXNCTR_Pos))) +/* -------- US_PTCR : (USART Offset: 0x120) Transfer Control Register -------- */ +#define US_PTCR_RXTEN (0x1u << 0) /**< \brief (US_PTCR) Receiver Transfer Enable */ +#define US_PTCR_RXTDIS (0x1u << 1) /**< \brief (US_PTCR) Receiver Transfer Disable */ +#define US_PTCR_TXTEN (0x1u << 8) /**< \brief (US_PTCR) Transmitter Transfer Enable */ +#define US_PTCR_TXTDIS (0x1u << 9) /**< \brief (US_PTCR) Transmitter Transfer Disable */ +/* -------- US_PTSR : (USART Offset: 0x124) Transfer Status Register -------- */ +#define US_PTSR_RXTEN (0x1u << 0) /**< \brief (US_PTSR) Receiver Transfer Enable */ +#define US_PTSR_TXTEN (0x1u << 8) /**< \brief (US_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM4E_USART_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/wdt.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/wdt.h new file mode 100644 index 000000000..3933e331e --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/wdt.h @@ -0,0 +1,84 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_WDT_COMPONENT_ +#define _SAM4E_WDT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Watchdog Timer */ +/* ============================================================================= */ +/** \addtogroup SAM4E_WDT Watchdog Timer */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Wdt hardware registers */ +typedef struct { + WoReg WDT_CR; /**< \brief (Wdt Offset: 0x00) Control Register */ + RwReg WDT_MR; /**< \brief (Wdt Offset: 0x04) Mode Register */ + RoReg WDT_SR; /**< \brief (Wdt Offset: 0x08) Status Register */ +} Wdt; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- WDT_CR : (WDT Offset: 0x00) Control Register -------- */ +#define WDT_CR_WDRSTT (0x1u << 0) /**< \brief (WDT_CR) Watchdog Restart */ +#define WDT_CR_KEY_Pos 24 +#define WDT_CR_KEY_Msk (0xffu << WDT_CR_KEY_Pos) /**< \brief (WDT_CR) Password */ +#define WDT_CR_KEY(value) ((WDT_CR_KEY_Msk & ((value) << WDT_CR_KEY_Pos))) +/* -------- WDT_MR : (WDT Offset: 0x04) Mode Register -------- */ +#define WDT_MR_WDV_Pos 0 +#define WDT_MR_WDV_Msk (0xfffu << WDT_MR_WDV_Pos) /**< \brief (WDT_MR) Watchdog Counter Value */ +#define WDT_MR_WDV(value) ((WDT_MR_WDV_Msk & ((value) << WDT_MR_WDV_Pos))) +#define WDT_MR_WDFIEN (0x1u << 12) /**< \brief (WDT_MR) Watchdog Fault Interrupt Enable */ +#define WDT_MR_WDRSTEN (0x1u << 13) /**< \brief (WDT_MR) Watchdog Reset Enable */ +#define WDT_MR_WDRPROC (0x1u << 14) /**< \brief (WDT_MR) Watchdog Reset Processor */ +#define WDT_MR_WDDIS (0x1u << 15) /**< \brief (WDT_MR) Watchdog Disable */ +#define WDT_MR_WDD_Pos 16 +#define WDT_MR_WDD_Msk (0xfffu << WDT_MR_WDD_Pos) /**< \brief (WDT_MR) Watchdog Delta Value */ +#define WDT_MR_WDD(value) ((WDT_MR_WDD_Msk & ((value) << WDT_MR_WDD_Pos))) +#define WDT_MR_WDDBGHLT (0x1u << 28) /**< \brief (WDT_MR) Watchdog Debug Halt */ +#define WDT_MR_WDIDLEHLT (0x1u << 29) /**< \brief (WDT_MR) Watchdog Idle Halt */ +/* -------- WDT_SR : (WDT Offset: 0x08) Status Register -------- */ +#define WDT_SR_WDUNF (0x1u << 0) /**< \brief (WDT_SR) Watchdog Underflow */ +#define WDT_SR_WDERR (0x1u << 1) /**< \brief (WDT_SR) Watchdog Error */ + +/*@}*/ + + +#endif /* _SAM4E_WDT_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/acc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/acc.h new file mode 100644 index 000000000..4e67ce412 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/acc.h @@ -0,0 +1,68 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_ACC_INSTANCE_ +#define _SAM4E_ACC_INSTANCE_ + +/* ========== Register definition for ACC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_ACC_CR (0x400BC000U) /**< \brief (ACC) Control Register */ +#define REG_ACC_MR (0x400BC004U) /**< \brief (ACC) Mode Register */ +#define REG_ACC_IER (0x400BC024U) /**< \brief (ACC) Interrupt Enable Register */ +#define REG_ACC_IDR (0x400BC028U) /**< \brief (ACC) Interrupt Disable Register */ +#define REG_ACC_IMR (0x400BC02CU) /**< \brief (ACC) Interrupt Mask Register */ +#define REG_ACC_ISR (0x400BC030U) /**< \brief (ACC) Interrupt Status Register */ +#define REG_ACC_ACR (0x400BC094U) /**< \brief (ACC) Analog Control Register */ +#define REG_ACC_WPMR (0x400BC0E4U) /**< \brief (ACC) Write Protect Mode Register */ +#define REG_ACC_WPSR (0x400BC0E8U) /**< \brief (ACC) Write Protect Status Register */ +#else +#define REG_ACC_CR (*(WoReg*)0x400BC000U) /**< \brief (ACC) Control Register */ +#define REG_ACC_MR (*(RwReg*)0x400BC004U) /**< \brief (ACC) Mode Register */ +#define REG_ACC_IER (*(WoReg*)0x400BC024U) /**< \brief (ACC) Interrupt Enable Register */ +#define REG_ACC_IDR (*(WoReg*)0x400BC028U) /**< \brief (ACC) Interrupt Disable Register */ +#define REG_ACC_IMR (*(RoReg*)0x400BC02CU) /**< \brief (ACC) Interrupt Mask Register */ +#define REG_ACC_ISR (*(RoReg*)0x400BC030U) /**< \brief (ACC) Interrupt Status Register */ +#define REG_ACC_ACR (*(RwReg*)0x400BC094U) /**< \brief (ACC) Analog Control Register */ +#define REG_ACC_WPMR (*(RwReg*)0x400BC0E4U) /**< \brief (ACC) Write Protect Mode Register */ +#define REG_ACC_WPSR (*(RoReg*)0x400BC0E8U) /**< \brief (ACC) Write Protect Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_ACC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/aes.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/aes.h new file mode 100644 index 000000000..dd1d459a8 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/aes.h @@ -0,0 +1,70 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_AES_INSTANCE_ +#define _SAM4E_AES_INSTANCE_ + +/* ========== Register definition for AES peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_AES_CR (0x40004000U) /**< \brief (AES) Control Register */ +#define REG_AES_MR (0x40004004U) /**< \brief (AES) Mode Register */ +#define REG_AES_IER (0x40004010U) /**< \brief (AES) Interrupt Enable Register */ +#define REG_AES_IDR (0x40004014U) /**< \brief (AES) Interrupt Disable Register */ +#define REG_AES_IMR (0x40004018U) /**< \brief (AES) Interrupt Mask Register */ +#define REG_AES_ISR (0x4000401CU) /**< \brief (AES) Interrupt Status Register */ +#define REG_AES_KEYWR (0x40004020U) /**< \brief (AES) Key Word Register */ +#define REG_AES_IDATAR (0x40004040U) /**< \brief (AES) Input Data Register */ +#define REG_AES_ODATAR (0x40004050U) /**< \brief (AES) Output Data Register */ +#define REG_AES_IVR (0x40004060U) /**< \brief (AES) Initialization Vector Register */ +#else +#define REG_AES_CR (*(WoReg*)0x40004000U) /**< \brief (AES) Control Register */ +#define REG_AES_MR (*(RwReg*)0x40004004U) /**< \brief (AES) Mode Register */ +#define REG_AES_IER (*(WoReg*)0x40004010U) /**< \brief (AES) Interrupt Enable Register */ +#define REG_AES_IDR (*(WoReg*)0x40004014U) /**< \brief (AES) Interrupt Disable Register */ +#define REG_AES_IMR (*(RoReg*)0x40004018U) /**< \brief (AES) Interrupt Mask Register */ +#define REG_AES_ISR (*(RoReg*)0x4000401CU) /**< \brief (AES) Interrupt Status Register */ +#define REG_AES_KEYWR (*(WoReg*)0x40004020U) /**< \brief (AES) Key Word Register */ +#define REG_AES_IDATAR (*(WoReg*)0x40004040U) /**< \brief (AES) Input Data Register */ +#define REG_AES_ODATAR (*(RoReg*)0x40004050U) /**< \brief (AES) Output Data Register */ +#define REG_AES_IVR (*(WoReg*)0x40004060U) /**< \brief (AES) Initialization Vector Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_AES_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/afec0.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/afec0.h new file mode 100644 index 000000000..3f6116c74 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/afec0.h @@ -0,0 +1,114 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_AFEC0_INSTANCE_ +#define _SAM4E_AFEC0_INSTANCE_ + +/* ========== Register definition for AFEC0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_AFEC0_CR (0x400B0000U) /**< \brief (AFEC0) Control Register */ +#define REG_AFEC0_MR (0x400B0004U) /**< \brief (AFEC0) Mode Register */ +#define REG_AFEC0_EMR (0x400B0008U) /**< \brief (AFEC0) Extended Mode Register */ +#define REG_AFEC0_SEQ1R (0x400B000CU) /**< \brief (AFEC0) Channel Sequence 1 Register */ +#define REG_AFEC0_SEQ2R (0x400B0010U) /**< \brief (AFEC0) Channel Sequence 2 Register */ +#define REG_AFEC0_CHER (0x400B0014U) /**< \brief (AFEC0) Channel Enable Register */ +#define REG_AFEC0_CHDR (0x400B0018U) /**< \brief (AFEC0) Channel Disable Register */ +#define REG_AFEC0_CHSR (0x400B001CU) /**< \brief (AFEC0) Channel Status Register */ +#define REG_AFEC0_LCDR (0x400B0020U) /**< \brief (AFEC0) Last Converted Data Register */ +#define REG_AFEC0_IER (0x400B0024U) /**< \brief (AFEC0) Interrupt Enable Register */ +#define REG_AFEC0_IDR (0x400B0028U) /**< \brief (AFEC0) Interrupt Disable Register */ +#define REG_AFEC0_IMR (0x400B002CU) /**< \brief (AFEC0) Interrupt Mask Register */ +#define REG_AFEC0_ISR (0x400B0030U) /**< \brief (AFEC0) Interrupt Status Register */ +#define REG_AFEC0_OVER (0x400B004CU) /**< \brief (AFEC0) Overrun Status Register */ +#define REG_AFEC0_CWR (0x400B0050U) /**< \brief (AFEC0) Compare Window Register */ +#define REG_AFEC0_CGR (0x400B0054U) /**< \brief (AFEC0) Channel Gain Register */ +#define REG_AFEC0_CDOR (0x400B005CU) /**< \brief (AFEC0) Channel Calibration DC Offset Register */ +#define REG_AFEC0_DIFFR (0x400B0060U) /**< \brief (AFEC0) Channel Differential Register */ +#define REG_AFEC0_CSELR (0x400B0064U) /**< \brief (AFEC0) Channel Register Selection */ +#define REG_AFEC0_CDR (0x400B0068U) /**< \brief (AFEC0) Channel Data Register */ +#define REG_AFEC0_COCR (0x400B006CU) /**< \brief (AFEC0) Channel Offset Compensation Register */ +#define REG_AFEC0_TEMPMR (0x400B0070U) /**< \brief (AFEC0) Temperature Sensor Mode Register */ +#define REG_AFEC0_TEMPCWR (0x400B0074U) /**< \brief (AFEC0) Temperature Compare Window Register */ +#define REG_AFEC0_ACR (0x400B0094U) /**< \brief (AFEC0) Analog Control Register */ +#define REG_AFEC0_WPMR (0x400B00E4U) /**< \brief (AFEC0) Write Protect Mode Register */ +#define REG_AFEC0_WPSR (0x400B00E8U) /**< \brief (AFEC0) Write Protect Status Register */ +#define REG_AFEC0_RPR (0x400B0100U) /**< \brief (AFEC0) Receive Pointer Register */ +#define REG_AFEC0_RCR (0x400B0104U) /**< \brief (AFEC0) Receive Counter Register */ +#define REG_AFEC0_RNPR (0x400B0110U) /**< \brief (AFEC0) Receive Next Pointer Register */ +#define REG_AFEC0_RNCR (0x400B0114U) /**< \brief (AFEC0) Receive Next Counter Register */ +#define REG_AFEC0_PTCR (0x400B0120U) /**< \brief (AFEC0) Transfer Control Register */ +#define REG_AFEC0_PTSR (0x400B0124U) /**< \brief (AFEC0) Transfer Status Register */ +#else +#define REG_AFEC0_CR (*(WoReg*)0x400B0000U) /**< \brief (AFEC0) Control Register */ +#define REG_AFEC0_MR (*(RwReg*)0x400B0004U) /**< \brief (AFEC0) Mode Register */ +#define REG_AFEC0_EMR (*(RwReg*)0x400B0008U) /**< \brief (AFEC0) Extended Mode Register */ +#define REG_AFEC0_SEQ1R (*(RwReg*)0x400B000CU) /**< \brief (AFEC0) Channel Sequence 1 Register */ +#define REG_AFEC0_SEQ2R (*(RwReg*)0x400B0010U) /**< \brief (AFEC0) Channel Sequence 2 Register */ +#define REG_AFEC0_CHER (*(WoReg*)0x400B0014U) /**< \brief (AFEC0) Channel Enable Register */ +#define REG_AFEC0_CHDR (*(WoReg*)0x400B0018U) /**< \brief (AFEC0) Channel Disable Register */ +#define REG_AFEC0_CHSR (*(RoReg*)0x400B001CU) /**< \brief (AFEC0) Channel Status Register */ +#define REG_AFEC0_LCDR (*(RoReg*)0x400B0020U) /**< \brief (AFEC0) Last Converted Data Register */ +#define REG_AFEC0_IER (*(WoReg*)0x400B0024U) /**< \brief (AFEC0) Interrupt Enable Register */ +#define REG_AFEC0_IDR (*(WoReg*)0x400B0028U) /**< \brief (AFEC0) Interrupt Disable Register */ +#define REG_AFEC0_IMR (*(RoReg*)0x400B002CU) /**< \brief (AFEC0) Interrupt Mask Register */ +#define REG_AFEC0_ISR (*(RoReg*)0x400B0030U) /**< \brief (AFEC0) Interrupt Status Register */ +#define REG_AFEC0_OVER (*(RoReg*)0x400B004CU) /**< \brief (AFEC0) Overrun Status Register */ +#define REG_AFEC0_CWR (*(RwReg*)0x400B0050U) /**< \brief (AFEC0) Compare Window Register */ +#define REG_AFEC0_CGR (*(RwReg*)0x400B0054U) /**< \brief (AFEC0) Channel Gain Register */ +#define REG_AFEC0_CDOR (*(RwReg*)0x400B005CU) /**< \brief (AFEC0) Channel Calibration DC Offset Register */ +#define REG_AFEC0_DIFFR (*(RwReg*)0x400B0060U) /**< \brief (AFEC0) Channel Differential Register */ +#define REG_AFEC0_CSELR (*(RwReg*)0x400B0064U) /**< \brief (AFEC0) Channel Register Selection */ +#define REG_AFEC0_CDR (*(RoReg*)0x400B0068U) /**< \brief (AFEC0) Channel Data Register */ +#define REG_AFEC0_COCR (*(RwReg*)0x400B006CU) /**< \brief (AFEC0) Channel Offset Compensation Register */ +#define REG_AFEC0_TEMPMR (*(RwReg*)0x400B0070U) /**< \brief (AFEC0) Temperature Sensor Mode Register */ +#define REG_AFEC0_TEMPCWR (*(RwReg*)0x400B0074U) /**< \brief (AFEC0) Temperature Compare Window Register */ +#define REG_AFEC0_ACR (*(RwReg*)0x400B0094U) /**< \brief (AFEC0) Analog Control Register */ +#define REG_AFEC0_WPMR (*(RwReg*)0x400B00E4U) /**< \brief (AFEC0) Write Protect Mode Register */ +#define REG_AFEC0_WPSR (*(RoReg*)0x400B00E8U) /**< \brief (AFEC0) Write Protect Status Register */ +#define REG_AFEC0_RPR (*(RwReg*)0x400B0100U) /**< \brief (AFEC0) Receive Pointer Register */ +#define REG_AFEC0_RCR (*(RwReg*)0x400B0104U) /**< \brief (AFEC0) Receive Counter Register */ +#define REG_AFEC0_RNPR (*(RwReg*)0x400B0110U) /**< \brief (AFEC0) Receive Next Pointer Register */ +#define REG_AFEC0_RNCR (*(RwReg*)0x400B0114U) /**< \brief (AFEC0) Receive Next Counter Register */ +#define REG_AFEC0_PTCR (*(WoReg*)0x400B0120U) /**< \brief (AFEC0) Transfer Control Register */ +#define REG_AFEC0_PTSR (*(RoReg*)0x400B0124U) /**< \brief (AFEC0) Transfer Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_AFEC0_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/afec1.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/afec1.h new file mode 100644 index 000000000..cc9dfb049 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/afec1.h @@ -0,0 +1,114 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_AFEC1_INSTANCE_ +#define _SAM4E_AFEC1_INSTANCE_ + +/* ========== Register definition for AFEC1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_AFEC1_CR (0x400B4000U) /**< \brief (AFEC1) Control Register */ +#define REG_AFEC1_MR (0x400B4004U) /**< \brief (AFEC1) Mode Register */ +#define REG_AFEC1_EMR (0x400B4008U) /**< \brief (AFEC1) Extended Mode Register */ +#define REG_AFEC1_SEQ1R (0x400B400CU) /**< \brief (AFEC1) Channel Sequence 1 Register */ +#define REG_AFEC1_SEQ2R (0x400B4010U) /**< \brief (AFEC1) Channel Sequence 2 Register */ +#define REG_AFEC1_CHER (0x400B4014U) /**< \brief (AFEC1) Channel Enable Register */ +#define REG_AFEC1_CHDR (0x400B4018U) /**< \brief (AFEC1) Channel Disable Register */ +#define REG_AFEC1_CHSR (0x400B401CU) /**< \brief (AFEC1) Channel Status Register */ +#define REG_AFEC1_LCDR (0x400B4020U) /**< \brief (AFEC1) Last Converted Data Register */ +#define REG_AFEC1_IER (0x400B4024U) /**< \brief (AFEC1) Interrupt Enable Register */ +#define REG_AFEC1_IDR (0x400B4028U) /**< \brief (AFEC1) Interrupt Disable Register */ +#define REG_AFEC1_IMR (0x400B402CU) /**< \brief (AFEC1) Interrupt Mask Register */ +#define REG_AFEC1_ISR (0x400B4030U) /**< \brief (AFEC1) Interrupt Status Register */ +#define REG_AFEC1_OVER (0x400B404CU) /**< \brief (AFEC1) Overrun Status Register */ +#define REG_AFEC1_CWR (0x400B4050U) /**< \brief (AFEC1) Compare Window Register */ +#define REG_AFEC1_CGR (0x400B4054U) /**< \brief (AFEC1) Channel Gain Register */ +#define REG_AFEC1_CDOR (0x400B405CU) /**< \brief (AFEC1) Channel Calibration DC Offset Register */ +#define REG_AFEC1_DIFFR (0x400B4060U) /**< \brief (AFEC1) Channel Differential Register */ +#define REG_AFEC1_CSELR (0x400B4064U) /**< \brief (AFEC1) Channel Register Selection */ +#define REG_AFEC1_CDR (0x400B4068U) /**< \brief (AFEC1) Channel Data Register */ +#define REG_AFEC1_COCR (0x400B406CU) /**< \brief (AFEC1) Channel Offset Compensation Register */ +#define REG_AFEC1_TEMPMR (0x400B4070U) /**< \brief (AFEC1) Temperature Sensor Mode Register */ +#define REG_AFEC1_TEMPCWR (0x400B4074U) /**< \brief (AFEC1) Temperature Compare Window Register */ +#define REG_AFEC1_ACR (0x400B4094U) /**< \brief (AFEC1) Analog Control Register */ +#define REG_AFEC1_WPMR (0x400B40E4U) /**< \brief (AFEC1) Write Protect Mode Register */ +#define REG_AFEC1_WPSR (0x400B40E8U) /**< \brief (AFEC1) Write Protect Status Register */ +#define REG_AFEC1_RPR (0x400B4100U) /**< \brief (AFEC1) Receive Pointer Register */ +#define REG_AFEC1_RCR (0x400B4104U) /**< \brief (AFEC1) Receive Counter Register */ +#define REG_AFEC1_RNPR (0x400B4110U) /**< \brief (AFEC1) Receive Next Pointer Register */ +#define REG_AFEC1_RNCR (0x400B4114U) /**< \brief (AFEC1) Receive Next Counter Register */ +#define REG_AFEC1_PTCR (0x400B4120U) /**< \brief (AFEC1) Transfer Control Register */ +#define REG_AFEC1_PTSR (0x400B4124U) /**< \brief (AFEC1) Transfer Status Register */ +#else +#define REG_AFEC1_CR (*(WoReg*)0x400B4000U) /**< \brief (AFEC1) Control Register */ +#define REG_AFEC1_MR (*(RwReg*)0x400B4004U) /**< \brief (AFEC1) Mode Register */ +#define REG_AFEC1_EMR (*(RwReg*)0x400B4008U) /**< \brief (AFEC1) Extended Mode Register */ +#define REG_AFEC1_SEQ1R (*(RwReg*)0x400B400CU) /**< \brief (AFEC1) Channel Sequence 1 Register */ +#define REG_AFEC1_SEQ2R (*(RwReg*)0x400B4010U) /**< \brief (AFEC1) Channel Sequence 2 Register */ +#define REG_AFEC1_CHER (*(WoReg*)0x400B4014U) /**< \brief (AFEC1) Channel Enable Register */ +#define REG_AFEC1_CHDR (*(WoReg*)0x400B4018U) /**< \brief (AFEC1) Channel Disable Register */ +#define REG_AFEC1_CHSR (*(RoReg*)0x400B401CU) /**< \brief (AFEC1) Channel Status Register */ +#define REG_AFEC1_LCDR (*(RoReg*)0x400B4020U) /**< \brief (AFEC1) Last Converted Data Register */ +#define REG_AFEC1_IER (*(WoReg*)0x400B4024U) /**< \brief (AFEC1) Interrupt Enable Register */ +#define REG_AFEC1_IDR (*(WoReg*)0x400B4028U) /**< \brief (AFEC1) Interrupt Disable Register */ +#define REG_AFEC1_IMR (*(RoReg*)0x400B402CU) /**< \brief (AFEC1) Interrupt Mask Register */ +#define REG_AFEC1_ISR (*(RoReg*)0x400B4030U) /**< \brief (AFEC1) Interrupt Status Register */ +#define REG_AFEC1_OVER (*(RoReg*)0x400B404CU) /**< \brief (AFEC1) Overrun Status Register */ +#define REG_AFEC1_CWR (*(RwReg*)0x400B4050U) /**< \brief (AFEC1) Compare Window Register */ +#define REG_AFEC1_CGR (*(RwReg*)0x400B4054U) /**< \brief (AFEC1) Channel Gain Register */ +#define REG_AFEC1_CDOR (*(RwReg*)0x400B405CU) /**< \brief (AFEC1) Channel Calibration DC Offset Register */ +#define REG_AFEC1_DIFFR (*(RwReg*)0x400B4060U) /**< \brief (AFEC1) Channel Differential Register */ +#define REG_AFEC1_CSELR (*(RwReg*)0x400B4064U) /**< \brief (AFEC1) Channel Register Selection */ +#define REG_AFEC1_CDR (*(RoReg*)0x400B4068U) /**< \brief (AFEC1) Channel Data Register */ +#define REG_AFEC1_COCR (*(RwReg*)0x400B406CU) /**< \brief (AFEC1) Channel Offset Compensation Register */ +#define REG_AFEC1_TEMPMR (*(RwReg*)0x400B4070U) /**< \brief (AFEC1) Temperature Sensor Mode Register */ +#define REG_AFEC1_TEMPCWR (*(RwReg*)0x400B4074U) /**< \brief (AFEC1) Temperature Compare Window Register */ +#define REG_AFEC1_ACR (*(RwReg*)0x400B4094U) /**< \brief (AFEC1) Analog Control Register */ +#define REG_AFEC1_WPMR (*(RwReg*)0x400B40E4U) /**< \brief (AFEC1) Write Protect Mode Register */ +#define REG_AFEC1_WPSR (*(RoReg*)0x400B40E8U) /**< \brief (AFEC1) Write Protect Status Register */ +#define REG_AFEC1_RPR (*(RwReg*)0x400B4100U) /**< \brief (AFEC1) Receive Pointer Register */ +#define REG_AFEC1_RCR (*(RwReg*)0x400B4104U) /**< \brief (AFEC1) Receive Counter Register */ +#define REG_AFEC1_RNPR (*(RwReg*)0x400B4110U) /**< \brief (AFEC1) Receive Next Pointer Register */ +#define REG_AFEC1_RNCR (*(RwReg*)0x400B4114U) /**< \brief (AFEC1) Receive Next Counter Register */ +#define REG_AFEC1_PTCR (*(WoReg*)0x400B4120U) /**< \brief (AFEC1) Transfer Control Register */ +#define REG_AFEC1_PTSR (*(RoReg*)0x400B4124U) /**< \brief (AFEC1) Transfer Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_AFEC1_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/can0.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/can0.h new file mode 100644 index 000000000..c90bc95b8 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/can0.h @@ -0,0 +1,204 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_CAN0_INSTANCE_ +#define _SAM4E_CAN0_INSTANCE_ + +/* ========== Register definition for CAN0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_CAN0_MR (0x40010000U) /**< \brief (CAN0) Mode Register */ +#define REG_CAN0_IER (0x40010004U) /**< \brief (CAN0) Interrupt Enable Register */ +#define REG_CAN0_IDR (0x40010008U) /**< \brief (CAN0) Interrupt Disable Register */ +#define REG_CAN0_IMR (0x4001000CU) /**< \brief (CAN0) Interrupt Mask Register */ +#define REG_CAN0_SR (0x40010010U) /**< \brief (CAN0) Status Register */ +#define REG_CAN0_BR (0x40010014U) /**< \brief (CAN0) Baudrate Register */ +#define REG_CAN0_TIM (0x40010018U) /**< \brief (CAN0) Timer Register */ +#define REG_CAN0_TIMESTP (0x4001001CU) /**< \brief (CAN0) Timestamp Register */ +#define REG_CAN0_ECR (0x40010020U) /**< \brief (CAN0) Error Counter Register */ +#define REG_CAN0_TCR (0x40010024U) /**< \brief (CAN0) Transfer Command Register */ +#define REG_CAN0_ACR (0x40010028U) /**< \brief (CAN0) Abort Command Register */ +#define REG_CAN0_WPMR (0x400100E4U) /**< \brief (CAN0) Write Protect Mode Register */ +#define REG_CAN0_WPSR (0x400100E8U) /**< \brief (CAN0) Write Protect Status Register */ +#define REG_CAN0_MMR0 (0x40010200U) /**< \brief (CAN0) Mailbox Mode Register (MB = 0) */ +#define REG_CAN0_MAM0 (0x40010204U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 0) */ +#define REG_CAN0_MID0 (0x40010208U) /**< \brief (CAN0) Mailbox ID Register (MB = 0) */ +#define REG_CAN0_MFID0 (0x4001020CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 0) */ +#define REG_CAN0_MSR0 (0x40010210U) /**< \brief (CAN0) Mailbox Status Register (MB = 0) */ +#define REG_CAN0_MDL0 (0x40010214U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 0) */ +#define REG_CAN0_MDH0 (0x40010218U) /**< \brief (CAN0) Mailbox Data High Register (MB = 0) */ +#define REG_CAN0_MCR0 (0x4001021CU) /**< \brief (CAN0) Mailbox Control Register (MB = 0) */ +#define REG_CAN0_MMR1 (0x40010220U) /**< \brief (CAN0) Mailbox Mode Register (MB = 1) */ +#define REG_CAN0_MAM1 (0x40010224U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 1) */ +#define REG_CAN0_MID1 (0x40010228U) /**< \brief (CAN0) Mailbox ID Register (MB = 1) */ +#define REG_CAN0_MFID1 (0x4001022CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 1) */ +#define REG_CAN0_MSR1 (0x40010230U) /**< \brief (CAN0) Mailbox Status Register (MB = 1) */ +#define REG_CAN0_MDL1 (0x40010234U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 1) */ +#define REG_CAN0_MDH1 (0x40010238U) /**< \brief (CAN0) Mailbox Data High Register (MB = 1) */ +#define REG_CAN0_MCR1 (0x4001023CU) /**< \brief (CAN0) Mailbox Control Register (MB = 1) */ +#define REG_CAN0_MMR2 (0x40010240U) /**< \brief (CAN0) Mailbox Mode Register (MB = 2) */ +#define REG_CAN0_MAM2 (0x40010244U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 2) */ +#define REG_CAN0_MID2 (0x40010248U) /**< \brief (CAN0) Mailbox ID Register (MB = 2) */ +#define REG_CAN0_MFID2 (0x4001024CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 2) */ +#define REG_CAN0_MSR2 (0x40010250U) /**< \brief (CAN0) Mailbox Status Register (MB = 2) */ +#define REG_CAN0_MDL2 (0x40010254U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 2) */ +#define REG_CAN0_MDH2 (0x40010258U) /**< \brief (CAN0) Mailbox Data High Register (MB = 2) */ +#define REG_CAN0_MCR2 (0x4001025CU) /**< \brief (CAN0) Mailbox Control Register (MB = 2) */ +#define REG_CAN0_MMR3 (0x40010260U) /**< \brief (CAN0) Mailbox Mode Register (MB = 3) */ +#define REG_CAN0_MAM3 (0x40010264U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 3) */ +#define REG_CAN0_MID3 (0x40010268U) /**< \brief (CAN0) Mailbox ID Register (MB = 3) */ +#define REG_CAN0_MFID3 (0x4001026CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 3) */ +#define REG_CAN0_MSR3 (0x40010270U) /**< \brief (CAN0) Mailbox Status Register (MB = 3) */ +#define REG_CAN0_MDL3 (0x40010274U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 3) */ +#define REG_CAN0_MDH3 (0x40010278U) /**< \brief (CAN0) Mailbox Data High Register (MB = 3) */ +#define REG_CAN0_MCR3 (0x4001027CU) /**< \brief (CAN0) Mailbox Control Register (MB = 3) */ +#define REG_CAN0_MMR4 (0x40010280U) /**< \brief (CAN0) Mailbox Mode Register (MB = 4) */ +#define REG_CAN0_MAM4 (0x40010284U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 4) */ +#define REG_CAN0_MID4 (0x40010288U) /**< \brief (CAN0) Mailbox ID Register (MB = 4) */ +#define REG_CAN0_MFID4 (0x4001028CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 4) */ +#define REG_CAN0_MSR4 (0x40010290U) /**< \brief (CAN0) Mailbox Status Register (MB = 4) */ +#define REG_CAN0_MDL4 (0x40010294U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 4) */ +#define REG_CAN0_MDH4 (0x40010298U) /**< \brief (CAN0) Mailbox Data High Register (MB = 4) */ +#define REG_CAN0_MCR4 (0x4001029CU) /**< \brief (CAN0) Mailbox Control Register (MB = 4) */ +#define REG_CAN0_MMR5 (0x400102A0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 5) */ +#define REG_CAN0_MAM5 (0x400102A4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 5) */ +#define REG_CAN0_MID5 (0x400102A8U) /**< \brief (CAN0) Mailbox ID Register (MB = 5) */ +#define REG_CAN0_MFID5 (0x400102ACU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 5) */ +#define REG_CAN0_MSR5 (0x400102B0U) /**< \brief (CAN0) Mailbox Status Register (MB = 5) */ +#define REG_CAN0_MDL5 (0x400102B4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 5) */ +#define REG_CAN0_MDH5 (0x400102B8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 5) */ +#define REG_CAN0_MCR5 (0x400102BCU) /**< \brief (CAN0) Mailbox Control Register (MB = 5) */ +#define REG_CAN0_MMR6 (0x400102C0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 6) */ +#define REG_CAN0_MAM6 (0x400102C4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 6) */ +#define REG_CAN0_MID6 (0x400102C8U) /**< \brief (CAN0) Mailbox ID Register (MB = 6) */ +#define REG_CAN0_MFID6 (0x400102CCU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 6) */ +#define REG_CAN0_MSR6 (0x400102D0U) /**< \brief (CAN0) Mailbox Status Register (MB = 6) */ +#define REG_CAN0_MDL6 (0x400102D4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 6) */ +#define REG_CAN0_MDH6 (0x400102D8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 6) */ +#define REG_CAN0_MCR6 (0x400102DCU) /**< \brief (CAN0) Mailbox Control Register (MB = 6) */ +#define REG_CAN0_MMR7 (0x400102E0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 7) */ +#define REG_CAN0_MAM7 (0x400102E4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 7) */ +#define REG_CAN0_MID7 (0x400102E8U) /**< \brief (CAN0) Mailbox ID Register (MB = 7) */ +#define REG_CAN0_MFID7 (0x400102ECU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 7) */ +#define REG_CAN0_MSR7 (0x400102F0U) /**< \brief (CAN0) Mailbox Status Register (MB = 7) */ +#define REG_CAN0_MDL7 (0x400102F4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 7) */ +#define REG_CAN0_MDH7 (0x400102F8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 7) */ +#define REG_CAN0_MCR7 (0x400102FCU) /**< \brief (CAN0) Mailbox Control Register (MB = 7) */ +#else +#define REG_CAN0_MR (*(RwReg*)0x40010000U) /**< \brief (CAN0) Mode Register */ +#define REG_CAN0_IER (*(WoReg*)0x40010004U) /**< \brief (CAN0) Interrupt Enable Register */ +#define REG_CAN0_IDR (*(WoReg*)0x40010008U) /**< \brief (CAN0) Interrupt Disable Register */ +#define REG_CAN0_IMR (*(RoReg*)0x4001000CU) /**< \brief (CAN0) Interrupt Mask Register */ +#define REG_CAN0_SR (*(RoReg*)0x40010010U) /**< \brief (CAN0) Status Register */ +#define REG_CAN0_BR (*(RwReg*)0x40010014U) /**< \brief (CAN0) Baudrate Register */ +#define REG_CAN0_TIM (*(RoReg*)0x40010018U) /**< \brief (CAN0) Timer Register */ +#define REG_CAN0_TIMESTP (*(RoReg*)0x4001001CU) /**< \brief (CAN0) Timestamp Register */ +#define REG_CAN0_ECR (*(RoReg*)0x40010020U) /**< \brief (CAN0) Error Counter Register */ +#define REG_CAN0_TCR (*(WoReg*)0x40010024U) /**< \brief (CAN0) Transfer Command Register */ +#define REG_CAN0_ACR (*(WoReg*)0x40010028U) /**< \brief (CAN0) Abort Command Register */ +#define REG_CAN0_WPMR (*(RwReg*)0x400100E4U) /**< \brief (CAN0) Write Protect Mode Register */ +#define REG_CAN0_WPSR (*(RoReg*)0x400100E8U) /**< \brief (CAN0) Write Protect Status Register */ +#define REG_CAN0_MMR0 (*(RwReg*)0x40010200U) /**< \brief (CAN0) Mailbox Mode Register (MB = 0) */ +#define REG_CAN0_MAM0 (*(RwReg*)0x40010204U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 0) */ +#define REG_CAN0_MID0 (*(RwReg*)0x40010208U) /**< \brief (CAN0) Mailbox ID Register (MB = 0) */ +#define REG_CAN0_MFID0 (*(RoReg*)0x4001020CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 0) */ +#define REG_CAN0_MSR0 (*(RoReg*)0x40010210U) /**< \brief (CAN0) Mailbox Status Register (MB = 0) */ +#define REG_CAN0_MDL0 (*(RwReg*)0x40010214U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 0) */ +#define REG_CAN0_MDH0 (*(RwReg*)0x40010218U) /**< \brief (CAN0) Mailbox Data High Register (MB = 0) */ +#define REG_CAN0_MCR0 (*(WoReg*)0x4001021CU) /**< \brief (CAN0) Mailbox Control Register (MB = 0) */ +#define REG_CAN0_MMR1 (*(RwReg*)0x40010220U) /**< \brief (CAN0) Mailbox Mode Register (MB = 1) */ +#define REG_CAN0_MAM1 (*(RwReg*)0x40010224U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 1) */ +#define REG_CAN0_MID1 (*(RwReg*)0x40010228U) /**< \brief (CAN0) Mailbox ID Register (MB = 1) */ +#define REG_CAN0_MFID1 (*(RoReg*)0x4001022CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 1) */ +#define REG_CAN0_MSR1 (*(RoReg*)0x40010230U) /**< \brief (CAN0) Mailbox Status Register (MB = 1) */ +#define REG_CAN0_MDL1 (*(RwReg*)0x40010234U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 1) */ +#define REG_CAN0_MDH1 (*(RwReg*)0x40010238U) /**< \brief (CAN0) Mailbox Data High Register (MB = 1) */ +#define REG_CAN0_MCR1 (*(WoReg*)0x4001023CU) /**< \brief (CAN0) Mailbox Control Register (MB = 1) */ +#define REG_CAN0_MMR2 (*(RwReg*)0x40010240U) /**< \brief (CAN0) Mailbox Mode Register (MB = 2) */ +#define REG_CAN0_MAM2 (*(RwReg*)0x40010244U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 2) */ +#define REG_CAN0_MID2 (*(RwReg*)0x40010248U) /**< \brief (CAN0) Mailbox ID Register (MB = 2) */ +#define REG_CAN0_MFID2 (*(RoReg*)0x4001024CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 2) */ +#define REG_CAN0_MSR2 (*(RoReg*)0x40010250U) /**< \brief (CAN0) Mailbox Status Register (MB = 2) */ +#define REG_CAN0_MDL2 (*(RwReg*)0x40010254U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 2) */ +#define REG_CAN0_MDH2 (*(RwReg*)0x40010258U) /**< \brief (CAN0) Mailbox Data High Register (MB = 2) */ +#define REG_CAN0_MCR2 (*(WoReg*)0x4001025CU) /**< \brief (CAN0) Mailbox Control Register (MB = 2) */ +#define REG_CAN0_MMR3 (*(RwReg*)0x40010260U) /**< \brief (CAN0) Mailbox Mode Register (MB = 3) */ +#define REG_CAN0_MAM3 (*(RwReg*)0x40010264U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 3) */ +#define REG_CAN0_MID3 (*(RwReg*)0x40010268U) /**< \brief (CAN0) Mailbox ID Register (MB = 3) */ +#define REG_CAN0_MFID3 (*(RoReg*)0x4001026CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 3) */ +#define REG_CAN0_MSR3 (*(RoReg*)0x40010270U) /**< \brief (CAN0) Mailbox Status Register (MB = 3) */ +#define REG_CAN0_MDL3 (*(RwReg*)0x40010274U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 3) */ +#define REG_CAN0_MDH3 (*(RwReg*)0x40010278U) /**< \brief (CAN0) Mailbox Data High Register (MB = 3) */ +#define REG_CAN0_MCR3 (*(WoReg*)0x4001027CU) /**< \brief (CAN0) Mailbox Control Register (MB = 3) */ +#define REG_CAN0_MMR4 (*(RwReg*)0x40010280U) /**< \brief (CAN0) Mailbox Mode Register (MB = 4) */ +#define REG_CAN0_MAM4 (*(RwReg*)0x40010284U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 4) */ +#define REG_CAN0_MID4 (*(RwReg*)0x40010288U) /**< \brief (CAN0) Mailbox ID Register (MB = 4) */ +#define REG_CAN0_MFID4 (*(RoReg*)0x4001028CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 4) */ +#define REG_CAN0_MSR4 (*(RoReg*)0x40010290U) /**< \brief (CAN0) Mailbox Status Register (MB = 4) */ +#define REG_CAN0_MDL4 (*(RwReg*)0x40010294U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 4) */ +#define REG_CAN0_MDH4 (*(RwReg*)0x40010298U) /**< \brief (CAN0) Mailbox Data High Register (MB = 4) */ +#define REG_CAN0_MCR4 (*(WoReg*)0x4001029CU) /**< \brief (CAN0) Mailbox Control Register (MB = 4) */ +#define REG_CAN0_MMR5 (*(RwReg*)0x400102A0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 5) */ +#define REG_CAN0_MAM5 (*(RwReg*)0x400102A4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 5) */ +#define REG_CAN0_MID5 (*(RwReg*)0x400102A8U) /**< \brief (CAN0) Mailbox ID Register (MB = 5) */ +#define REG_CAN0_MFID5 (*(RoReg*)0x400102ACU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 5) */ +#define REG_CAN0_MSR5 (*(RoReg*)0x400102B0U) /**< \brief (CAN0) Mailbox Status Register (MB = 5) */ +#define REG_CAN0_MDL5 (*(RwReg*)0x400102B4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 5) */ +#define REG_CAN0_MDH5 (*(RwReg*)0x400102B8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 5) */ +#define REG_CAN0_MCR5 (*(WoReg*)0x400102BCU) /**< \brief (CAN0) Mailbox Control Register (MB = 5) */ +#define REG_CAN0_MMR6 (*(RwReg*)0x400102C0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 6) */ +#define REG_CAN0_MAM6 (*(RwReg*)0x400102C4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 6) */ +#define REG_CAN0_MID6 (*(RwReg*)0x400102C8U) /**< \brief (CAN0) Mailbox ID Register (MB = 6) */ +#define REG_CAN0_MFID6 (*(RoReg*)0x400102CCU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 6) */ +#define REG_CAN0_MSR6 (*(RoReg*)0x400102D0U) /**< \brief (CAN0) Mailbox Status Register (MB = 6) */ +#define REG_CAN0_MDL6 (*(RwReg*)0x400102D4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 6) */ +#define REG_CAN0_MDH6 (*(RwReg*)0x400102D8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 6) */ +#define REG_CAN0_MCR6 (*(WoReg*)0x400102DCU) /**< \brief (CAN0) Mailbox Control Register (MB = 6) */ +#define REG_CAN0_MMR7 (*(RwReg*)0x400102E0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 7) */ +#define REG_CAN0_MAM7 (*(RwReg*)0x400102E4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 7) */ +#define REG_CAN0_MID7 (*(RwReg*)0x400102E8U) /**< \brief (CAN0) Mailbox ID Register (MB = 7) */ +#define REG_CAN0_MFID7 (*(RoReg*)0x400102ECU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 7) */ +#define REG_CAN0_MSR7 (*(RoReg*)0x400102F0U) /**< \brief (CAN0) Mailbox Status Register (MB = 7) */ +#define REG_CAN0_MDL7 (*(RwReg*)0x400102F4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 7) */ +#define REG_CAN0_MDH7 (*(RwReg*)0x400102F8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 7) */ +#define REG_CAN0_MCR7 (*(WoReg*)0x400102FCU) /**< \brief (CAN0) Mailbox Control Register (MB = 7) */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_CAN0_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/can1.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/can1.h new file mode 100644 index 000000000..df97b2be9 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/can1.h @@ -0,0 +1,204 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_CAN1_INSTANCE_ +#define _SAM4E_CAN1_INSTANCE_ + +/* ========== Register definition for CAN1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_CAN1_MR (0x40014000U) /**< \brief (CAN1) Mode Register */ +#define REG_CAN1_IER (0x40014004U) /**< \brief (CAN1) Interrupt Enable Register */ +#define REG_CAN1_IDR (0x40014008U) /**< \brief (CAN1) Interrupt Disable Register */ +#define REG_CAN1_IMR (0x4001400CU) /**< \brief (CAN1) Interrupt Mask Register */ +#define REG_CAN1_SR (0x40014010U) /**< \brief (CAN1) Status Register */ +#define REG_CAN1_BR (0x40014014U) /**< \brief (CAN1) Baudrate Register */ +#define REG_CAN1_TIM (0x40014018U) /**< \brief (CAN1) Timer Register */ +#define REG_CAN1_TIMESTP (0x4001401CU) /**< \brief (CAN1) Timestamp Register */ +#define REG_CAN1_ECR (0x40014020U) /**< \brief (CAN1) Error Counter Register */ +#define REG_CAN1_TCR (0x40014024U) /**< \brief (CAN1) Transfer Command Register */ +#define REG_CAN1_ACR (0x40014028U) /**< \brief (CAN1) Abort Command Register */ +#define REG_CAN1_WPMR (0x400140E4U) /**< \brief (CAN1) Write Protect Mode Register */ +#define REG_CAN1_WPSR (0x400140E8U) /**< \brief (CAN1) Write Protect Status Register */ +#define REG_CAN1_MMR0 (0x40014200U) /**< \brief (CAN1) Mailbox Mode Register (MB = 0) */ +#define REG_CAN1_MAM0 (0x40014204U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 0) */ +#define REG_CAN1_MID0 (0x40014208U) /**< \brief (CAN1) Mailbox ID Register (MB = 0) */ +#define REG_CAN1_MFID0 (0x4001420CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 0) */ +#define REG_CAN1_MSR0 (0x40014210U) /**< \brief (CAN1) Mailbox Status Register (MB = 0) */ +#define REG_CAN1_MDL0 (0x40014214U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 0) */ +#define REG_CAN1_MDH0 (0x40014218U) /**< \brief (CAN1) Mailbox Data High Register (MB = 0) */ +#define REG_CAN1_MCR0 (0x4001421CU) /**< \brief (CAN1) Mailbox Control Register (MB = 0) */ +#define REG_CAN1_MMR1 (0x40014220U) /**< \brief (CAN1) Mailbox Mode Register (MB = 1) */ +#define REG_CAN1_MAM1 (0x40014224U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 1) */ +#define REG_CAN1_MID1 (0x40014228U) /**< \brief (CAN1) Mailbox ID Register (MB = 1) */ +#define REG_CAN1_MFID1 (0x4001422CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 1) */ +#define REG_CAN1_MSR1 (0x40014230U) /**< \brief (CAN1) Mailbox Status Register (MB = 1) */ +#define REG_CAN1_MDL1 (0x40014234U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 1) */ +#define REG_CAN1_MDH1 (0x40014238U) /**< \brief (CAN1) Mailbox Data High Register (MB = 1) */ +#define REG_CAN1_MCR1 (0x4001423CU) /**< \brief (CAN1) Mailbox Control Register (MB = 1) */ +#define REG_CAN1_MMR2 (0x40014240U) /**< \brief (CAN1) Mailbox Mode Register (MB = 2) */ +#define REG_CAN1_MAM2 (0x40014244U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 2) */ +#define REG_CAN1_MID2 (0x40014248U) /**< \brief (CAN1) Mailbox ID Register (MB = 2) */ +#define REG_CAN1_MFID2 (0x4001424CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 2) */ +#define REG_CAN1_MSR2 (0x40014250U) /**< \brief (CAN1) Mailbox Status Register (MB = 2) */ +#define REG_CAN1_MDL2 (0x40014254U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 2) */ +#define REG_CAN1_MDH2 (0x40014258U) /**< \brief (CAN1) Mailbox Data High Register (MB = 2) */ +#define REG_CAN1_MCR2 (0x4001425CU) /**< \brief (CAN1) Mailbox Control Register (MB = 2) */ +#define REG_CAN1_MMR3 (0x40014260U) /**< \brief (CAN1) Mailbox Mode Register (MB = 3) */ +#define REG_CAN1_MAM3 (0x40014264U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 3) */ +#define REG_CAN1_MID3 (0x40014268U) /**< \brief (CAN1) Mailbox ID Register (MB = 3) */ +#define REG_CAN1_MFID3 (0x4001426CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 3) */ +#define REG_CAN1_MSR3 (0x40014270U) /**< \brief (CAN1) Mailbox Status Register (MB = 3) */ +#define REG_CAN1_MDL3 (0x40014274U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 3) */ +#define REG_CAN1_MDH3 (0x40014278U) /**< \brief (CAN1) Mailbox Data High Register (MB = 3) */ +#define REG_CAN1_MCR3 (0x4001427CU) /**< \brief (CAN1) Mailbox Control Register (MB = 3) */ +#define REG_CAN1_MMR4 (0x40014280U) /**< \brief (CAN1) Mailbox Mode Register (MB = 4) */ +#define REG_CAN1_MAM4 (0x40014284U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 4) */ +#define REG_CAN1_MID4 (0x40014288U) /**< \brief (CAN1) Mailbox ID Register (MB = 4) */ +#define REG_CAN1_MFID4 (0x4001428CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 4) */ +#define REG_CAN1_MSR4 (0x40014290U) /**< \brief (CAN1) Mailbox Status Register (MB = 4) */ +#define REG_CAN1_MDL4 (0x40014294U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 4) */ +#define REG_CAN1_MDH4 (0x40014298U) /**< \brief (CAN1) Mailbox Data High Register (MB = 4) */ +#define REG_CAN1_MCR4 (0x4001429CU) /**< \brief (CAN1) Mailbox Control Register (MB = 4) */ +#define REG_CAN1_MMR5 (0x400142A0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 5) */ +#define REG_CAN1_MAM5 (0x400142A4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 5) */ +#define REG_CAN1_MID5 (0x400142A8U) /**< \brief (CAN1) Mailbox ID Register (MB = 5) */ +#define REG_CAN1_MFID5 (0x400142ACU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 5) */ +#define REG_CAN1_MSR5 (0x400142B0U) /**< \brief (CAN1) Mailbox Status Register (MB = 5) */ +#define REG_CAN1_MDL5 (0x400142B4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 5) */ +#define REG_CAN1_MDH5 (0x400142B8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 5) */ +#define REG_CAN1_MCR5 (0x400142BCU) /**< \brief (CAN1) Mailbox Control Register (MB = 5) */ +#define REG_CAN1_MMR6 (0x400142C0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 6) */ +#define REG_CAN1_MAM6 (0x400142C4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 6) */ +#define REG_CAN1_MID6 (0x400142C8U) /**< \brief (CAN1) Mailbox ID Register (MB = 6) */ +#define REG_CAN1_MFID6 (0x400142CCU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 6) */ +#define REG_CAN1_MSR6 (0x400142D0U) /**< \brief (CAN1) Mailbox Status Register (MB = 6) */ +#define REG_CAN1_MDL6 (0x400142D4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 6) */ +#define REG_CAN1_MDH6 (0x400142D8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 6) */ +#define REG_CAN1_MCR6 (0x400142DCU) /**< \brief (CAN1) Mailbox Control Register (MB = 6) */ +#define REG_CAN1_MMR7 (0x400142E0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 7) */ +#define REG_CAN1_MAM7 (0x400142E4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 7) */ +#define REG_CAN1_MID7 (0x400142E8U) /**< \brief (CAN1) Mailbox ID Register (MB = 7) */ +#define REG_CAN1_MFID7 (0x400142ECU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 7) */ +#define REG_CAN1_MSR7 (0x400142F0U) /**< \brief (CAN1) Mailbox Status Register (MB = 7) */ +#define REG_CAN1_MDL7 (0x400142F4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 7) */ +#define REG_CAN1_MDH7 (0x400142F8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 7) */ +#define REG_CAN1_MCR7 (0x400142FCU) /**< \brief (CAN1) Mailbox Control Register (MB = 7) */ +#else +#define REG_CAN1_MR (*(RwReg*)0x40014000U) /**< \brief (CAN1) Mode Register */ +#define REG_CAN1_IER (*(WoReg*)0x40014004U) /**< \brief (CAN1) Interrupt Enable Register */ +#define REG_CAN1_IDR (*(WoReg*)0x40014008U) /**< \brief (CAN1) Interrupt Disable Register */ +#define REG_CAN1_IMR (*(RoReg*)0x4001400CU) /**< \brief (CAN1) Interrupt Mask Register */ +#define REG_CAN1_SR (*(RoReg*)0x40014010U) /**< \brief (CAN1) Status Register */ +#define REG_CAN1_BR (*(RwReg*)0x40014014U) /**< \brief (CAN1) Baudrate Register */ +#define REG_CAN1_TIM (*(RoReg*)0x40014018U) /**< \brief (CAN1) Timer Register */ +#define REG_CAN1_TIMESTP (*(RoReg*)0x4001401CU) /**< \brief (CAN1) Timestamp Register */ +#define REG_CAN1_ECR (*(RoReg*)0x40014020U) /**< \brief (CAN1) Error Counter Register */ +#define REG_CAN1_TCR (*(WoReg*)0x40014024U) /**< \brief (CAN1) Transfer Command Register */ +#define REG_CAN1_ACR (*(WoReg*)0x40014028U) /**< \brief (CAN1) Abort Command Register */ +#define REG_CAN1_WPMR (*(RwReg*)0x400140E4U) /**< \brief (CAN1) Write Protect Mode Register */ +#define REG_CAN1_WPSR (*(RoReg*)0x400140E8U) /**< \brief (CAN1) Write Protect Status Register */ +#define REG_CAN1_MMR0 (*(RwReg*)0x40014200U) /**< \brief (CAN1) Mailbox Mode Register (MB = 0) */ +#define REG_CAN1_MAM0 (*(RwReg*)0x40014204U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 0) */ +#define REG_CAN1_MID0 (*(RwReg*)0x40014208U) /**< \brief (CAN1) Mailbox ID Register (MB = 0) */ +#define REG_CAN1_MFID0 (*(RoReg*)0x4001420CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 0) */ +#define REG_CAN1_MSR0 (*(RoReg*)0x40014210U) /**< \brief (CAN1) Mailbox Status Register (MB = 0) */ +#define REG_CAN1_MDL0 (*(RwReg*)0x40014214U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 0) */ +#define REG_CAN1_MDH0 (*(RwReg*)0x40014218U) /**< \brief (CAN1) Mailbox Data High Register (MB = 0) */ +#define REG_CAN1_MCR0 (*(WoReg*)0x4001421CU) /**< \brief (CAN1) Mailbox Control Register (MB = 0) */ +#define REG_CAN1_MMR1 (*(RwReg*)0x40014220U) /**< \brief (CAN1) Mailbox Mode Register (MB = 1) */ +#define REG_CAN1_MAM1 (*(RwReg*)0x40014224U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 1) */ +#define REG_CAN1_MID1 (*(RwReg*)0x40014228U) /**< \brief (CAN1) Mailbox ID Register (MB = 1) */ +#define REG_CAN1_MFID1 (*(RoReg*)0x4001422CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 1) */ +#define REG_CAN1_MSR1 (*(RoReg*)0x40014230U) /**< \brief (CAN1) Mailbox Status Register (MB = 1) */ +#define REG_CAN1_MDL1 (*(RwReg*)0x40014234U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 1) */ +#define REG_CAN1_MDH1 (*(RwReg*)0x40014238U) /**< \brief (CAN1) Mailbox Data High Register (MB = 1) */ +#define REG_CAN1_MCR1 (*(WoReg*)0x4001423CU) /**< \brief (CAN1) Mailbox Control Register (MB = 1) */ +#define REG_CAN1_MMR2 (*(RwReg*)0x40014240U) /**< \brief (CAN1) Mailbox Mode Register (MB = 2) */ +#define REG_CAN1_MAM2 (*(RwReg*)0x40014244U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 2) */ +#define REG_CAN1_MID2 (*(RwReg*)0x40014248U) /**< \brief (CAN1) Mailbox ID Register (MB = 2) */ +#define REG_CAN1_MFID2 (*(RoReg*)0x4001424CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 2) */ +#define REG_CAN1_MSR2 (*(RoReg*)0x40014250U) /**< \brief (CAN1) Mailbox Status Register (MB = 2) */ +#define REG_CAN1_MDL2 (*(RwReg*)0x40014254U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 2) */ +#define REG_CAN1_MDH2 (*(RwReg*)0x40014258U) /**< \brief (CAN1) Mailbox Data High Register (MB = 2) */ +#define REG_CAN1_MCR2 (*(WoReg*)0x4001425CU) /**< \brief (CAN1) Mailbox Control Register (MB = 2) */ +#define REG_CAN1_MMR3 (*(RwReg*)0x40014260U) /**< \brief (CAN1) Mailbox Mode Register (MB = 3) */ +#define REG_CAN1_MAM3 (*(RwReg*)0x40014264U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 3) */ +#define REG_CAN1_MID3 (*(RwReg*)0x40014268U) /**< \brief (CAN1) Mailbox ID Register (MB = 3) */ +#define REG_CAN1_MFID3 (*(RoReg*)0x4001426CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 3) */ +#define REG_CAN1_MSR3 (*(RoReg*)0x40014270U) /**< \brief (CAN1) Mailbox Status Register (MB = 3) */ +#define REG_CAN1_MDL3 (*(RwReg*)0x40014274U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 3) */ +#define REG_CAN1_MDH3 (*(RwReg*)0x40014278U) /**< \brief (CAN1) Mailbox Data High Register (MB = 3) */ +#define REG_CAN1_MCR3 (*(WoReg*)0x4001427CU) /**< \brief (CAN1) Mailbox Control Register (MB = 3) */ +#define REG_CAN1_MMR4 (*(RwReg*)0x40014280U) /**< \brief (CAN1) Mailbox Mode Register (MB = 4) */ +#define REG_CAN1_MAM4 (*(RwReg*)0x40014284U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 4) */ +#define REG_CAN1_MID4 (*(RwReg*)0x40014288U) /**< \brief (CAN1) Mailbox ID Register (MB = 4) */ +#define REG_CAN1_MFID4 (*(RoReg*)0x4001428CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 4) */ +#define REG_CAN1_MSR4 (*(RoReg*)0x40014290U) /**< \brief (CAN1) Mailbox Status Register (MB = 4) */ +#define REG_CAN1_MDL4 (*(RwReg*)0x40014294U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 4) */ +#define REG_CAN1_MDH4 (*(RwReg*)0x40014298U) /**< \brief (CAN1) Mailbox Data High Register (MB = 4) */ +#define REG_CAN1_MCR4 (*(WoReg*)0x4001429CU) /**< \brief (CAN1) Mailbox Control Register (MB = 4) */ +#define REG_CAN1_MMR5 (*(RwReg*)0x400142A0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 5) */ +#define REG_CAN1_MAM5 (*(RwReg*)0x400142A4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 5) */ +#define REG_CAN1_MID5 (*(RwReg*)0x400142A8U) /**< \brief (CAN1) Mailbox ID Register (MB = 5) */ +#define REG_CAN1_MFID5 (*(RoReg*)0x400142ACU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 5) */ +#define REG_CAN1_MSR5 (*(RoReg*)0x400142B0U) /**< \brief (CAN1) Mailbox Status Register (MB = 5) */ +#define REG_CAN1_MDL5 (*(RwReg*)0x400142B4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 5) */ +#define REG_CAN1_MDH5 (*(RwReg*)0x400142B8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 5) */ +#define REG_CAN1_MCR5 (*(WoReg*)0x400142BCU) /**< \brief (CAN1) Mailbox Control Register (MB = 5) */ +#define REG_CAN1_MMR6 (*(RwReg*)0x400142C0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 6) */ +#define REG_CAN1_MAM6 (*(RwReg*)0x400142C4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 6) */ +#define REG_CAN1_MID6 (*(RwReg*)0x400142C8U) /**< \brief (CAN1) Mailbox ID Register (MB = 6) */ +#define REG_CAN1_MFID6 (*(RoReg*)0x400142CCU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 6) */ +#define REG_CAN1_MSR6 (*(RoReg*)0x400142D0U) /**< \brief (CAN1) Mailbox Status Register (MB = 6) */ +#define REG_CAN1_MDL6 (*(RwReg*)0x400142D4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 6) */ +#define REG_CAN1_MDH6 (*(RwReg*)0x400142D8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 6) */ +#define REG_CAN1_MCR6 (*(WoReg*)0x400142DCU) /**< \brief (CAN1) Mailbox Control Register (MB = 6) */ +#define REG_CAN1_MMR7 (*(RwReg*)0x400142E0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 7) */ +#define REG_CAN1_MAM7 (*(RwReg*)0x400142E4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 7) */ +#define REG_CAN1_MID7 (*(RwReg*)0x400142E8U) /**< \brief (CAN1) Mailbox ID Register (MB = 7) */ +#define REG_CAN1_MFID7 (*(RoReg*)0x400142ECU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 7) */ +#define REG_CAN1_MSR7 (*(RoReg*)0x400142F0U) /**< \brief (CAN1) Mailbox Status Register (MB = 7) */ +#define REG_CAN1_MDL7 (*(RwReg*)0x400142F4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 7) */ +#define REG_CAN1_MDH7 (*(RwReg*)0x400142F8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 7) */ +#define REG_CAN1_MCR7 (*(WoReg*)0x400142FCU) /**< \brief (CAN1) Mailbox Control Register (MB = 7) */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_CAN1_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/chipid.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/chipid.h new file mode 100644 index 000000000..54c13a729 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/chipid.h @@ -0,0 +1,54 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_CHIPID_INSTANCE_ +#define _SAM4E_CHIPID_INSTANCE_ + +/* ========== Register definition for CHIPID peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_CHIPID_CIDR (0x400E0740U) /**< \brief (CHIPID) Chip ID Register */ +#define REG_CHIPID_EXID (0x400E0744U) /**< \brief (CHIPID) Chip ID Extension Register */ +#else +#define REG_CHIPID_CIDR (*(RoReg*)0x400E0740U) /**< \brief (CHIPID) Chip ID Register */ +#define REG_CHIPID_EXID (*(RoReg*)0x400E0744U) /**< \brief (CHIPID) Chip ID Extension Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_CHIPID_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/cmcc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/cmcc.h new file mode 100644 index 000000000..cee4353ce --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/cmcc.h @@ -0,0 +1,70 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_CMCC_INSTANCE_ +#define _SAM4E_CMCC_INSTANCE_ + +/* ========== Register definition for CMCC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_CMCC_TYPE (0x400C4000U) /**< \brief (CMCC) Cache Type Register */ +#define REG_CMCC_CFG (0x400C4004U) /**< \brief (CMCC) Cache Configuration Register */ +#define REG_CMCC_CTRL (0x400C4008U) /**< \brief (CMCC) Cache Control Register */ +#define REG_CMCC_SR (0x400C400CU) /**< \brief (CMCC) Cache Status Register */ +#define REG_CMCC_MAINT0 (0x400C4020U) /**< \brief (CMCC) Cache Maintenance Register 0 */ +#define REG_CMCC_MAINT1 (0x400C4024U) /**< \brief (CMCC) Cache Maintenance Register 1 */ +#define REG_CMCC_MCFG (0x400C4028U) /**< \brief (CMCC) Cache Monitor Configuration Register */ +#define REG_CMCC_MEN (0x400C402CU) /**< \brief (CMCC) Cache Monitor Enable Register */ +#define REG_CMCC_MCTRL (0x400C4030U) /**< \brief (CMCC) Cache Monitor Control Register */ +#define REG_CMCC_MSR (0x400C4034U) /**< \brief (CMCC) Cache Monitor Status Register */ +#else +#define REG_CMCC_TYPE (*(RoReg*)0x400C4000U) /**< \brief (CMCC) Cache Type Register */ +#define REG_CMCC_CFG (*(RwReg*)0x400C4004U) /**< \brief (CMCC) Cache Configuration Register */ +#define REG_CMCC_CTRL (*(WoReg*)0x400C4008U) /**< \brief (CMCC) Cache Control Register */ +#define REG_CMCC_SR (*(RoReg*)0x400C400CU) /**< \brief (CMCC) Cache Status Register */ +#define REG_CMCC_MAINT0 (*(WoReg*)0x400C4020U) /**< \brief (CMCC) Cache Maintenance Register 0 */ +#define REG_CMCC_MAINT1 (*(WoReg*)0x400C4024U) /**< \brief (CMCC) Cache Maintenance Register 1 */ +#define REG_CMCC_MCFG (*(RwReg*)0x400C4028U) /**< \brief (CMCC) Cache Monitor Configuration Register */ +#define REG_CMCC_MEN (*(RwReg*)0x400C402CU) /**< \brief (CMCC) Cache Monitor Enable Register */ +#define REG_CMCC_MCTRL (*(WoReg*)0x400C4030U) /**< \brief (CMCC) Cache Monitor Control Register */ +#define REG_CMCC_MSR (*(RoReg*)0x400C4034U) /**< \brief (CMCC) Cache Monitor Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_CMCC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/crccu.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/crccu.h new file mode 100644 index 000000000..9856dc73a --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/crccu.h @@ -0,0 +1,80 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_CRCCU_INSTANCE_ +#define _SAM4E_CRCCU_INSTANCE_ + +/* ========== Register definition for CRCCU peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_CRCCU_DSCR (0x40044000U) /**< \brief (CRCCU) CRCCU Descriptor Base Register */ +#define REG_CRCCU_DMA_EN (0x40044008U) /**< \brief (CRCCU) CRCCU DMA Enable Register */ +#define REG_CRCCU_DMA_DIS (0x4004400CU) /**< \brief (CRCCU) CRCCU DMA Disable Register */ +#define REG_CRCCU_DMA_SR (0x40044010U) /**< \brief (CRCCU) CRCCU DMA Status Register */ +#define REG_CRCCU_DMA_IER (0x40044014U) /**< \brief (CRCCU) CRCCU DMA Interrupt Enable Register */ +#define REG_CRCCU_DMA_IDR (0x40044018U) /**< \brief (CRCCU) CRCCU DMA Interrupt Disable Register */ +#define REG_CRCCU_DMA_IMR (0x4004401CU) /**< \brief (CRCCU) CRCCU DMA Interrupt Mask Register */ +#define REG_CRCCU_DMA_ISR (0x40044020U) /**< \brief (CRCCU) CRCCU DMA Interrupt Status Register */ +#define REG_CRCCU_CR (0x40044034U) /**< \brief (CRCCU) CRCCU Control Register */ +#define REG_CRCCU_MR (0x40044038U) /**< \brief (CRCCU) CRCCU Mode Register */ +#define REG_CRCCU_SR (0x4004403CU) /**< \brief (CRCCU) CRCCU Status Register */ +#define REG_CRCCU_IER (0x40044040U) /**< \brief (CRCCU) CRCCU Interrupt Enable Register */ +#define REG_CRCCU_IDR (0x40044044U) /**< \brief (CRCCU) CRCCU Interrupt Disable Register */ +#define REG_CRCCU_IMR (0x40044048U) /**< \brief (CRCCU) CRCCU Interrupt Mask Register */ +#define REG_CRCCU_ISR (0x4004404CU) /**< \brief (CRCCU) CRCCU Interrupt Status Register */ +#else +#define REG_CRCCU_DSCR (*(RwReg*)0x40044000U) /**< \brief (CRCCU) CRCCU Descriptor Base Register */ +#define REG_CRCCU_DMA_EN (*(WoReg*)0x40044008U) /**< \brief (CRCCU) CRCCU DMA Enable Register */ +#define REG_CRCCU_DMA_DIS (*(WoReg*)0x4004400CU) /**< \brief (CRCCU) CRCCU DMA Disable Register */ +#define REG_CRCCU_DMA_SR (*(RoReg*)0x40044010U) /**< \brief (CRCCU) CRCCU DMA Status Register */ +#define REG_CRCCU_DMA_IER (*(WoReg*)0x40044014U) /**< \brief (CRCCU) CRCCU DMA Interrupt Enable Register */ +#define REG_CRCCU_DMA_IDR (*(WoReg*)0x40044018U) /**< \brief (CRCCU) CRCCU DMA Interrupt Disable Register */ +#define REG_CRCCU_DMA_IMR (*(RoReg*)0x4004401CU) /**< \brief (CRCCU) CRCCU DMA Interrupt Mask Register */ +#define REG_CRCCU_DMA_ISR (*(RoReg*)0x40044020U) /**< \brief (CRCCU) CRCCU DMA Interrupt Status Register */ +#define REG_CRCCU_CR (*(WoReg*)0x40044034U) /**< \brief (CRCCU) CRCCU Control Register */ +#define REG_CRCCU_MR (*(RwReg*)0x40044038U) /**< \brief (CRCCU) CRCCU Mode Register */ +#define REG_CRCCU_SR (*(RoReg*)0x4004403CU) /**< \brief (CRCCU) CRCCU Status Register */ +#define REG_CRCCU_IER (*(WoReg*)0x40044040U) /**< \brief (CRCCU) CRCCU Interrupt Enable Register */ +#define REG_CRCCU_IDR (*(WoReg*)0x40044044U) /**< \brief (CRCCU) CRCCU Interrupt Disable Register */ +#define REG_CRCCU_IMR (*(RoReg*)0x40044048U) /**< \brief (CRCCU) CRCCU Interrupt Mask Register */ +#define REG_CRCCU_ISR (*(RoReg*)0x4004404CU) /**< \brief (CRCCU) CRCCU Interrupt Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_CRCCU_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/dacc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/dacc.h new file mode 100644 index 000000000..bfaf0cd80 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/dacc.h @@ -0,0 +1,88 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_DACC_INSTANCE_ +#define _SAM4E_DACC_INSTANCE_ + +/* ========== Register definition for DACC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_DACC_CR (0x400B8000U) /**< \brief (DACC) Control Register */ +#define REG_DACC_MR (0x400B8004U) /**< \brief (DACC) Mode Register */ +#define REG_DACC_CHER (0x400B8010U) /**< \brief (DACC) Channel Enable Register */ +#define REG_DACC_CHDR (0x400B8014U) /**< \brief (DACC) Channel Disable Register */ +#define REG_DACC_CHSR (0x400B8018U) /**< \brief (DACC) Channel Status Register */ +#define REG_DACC_CDR (0x400B8020U) /**< \brief (DACC) Conversion Data Register */ +#define REG_DACC_IER (0x400B8024U) /**< \brief (DACC) Interrupt Enable Register */ +#define REG_DACC_IDR (0x400B8028U) /**< \brief (DACC) Interrupt Disable Register */ +#define REG_DACC_IMR (0x400B802CU) /**< \brief (DACC) Interrupt Mask Register */ +#define REG_DACC_ISR (0x400B8030U) /**< \brief (DACC) Interrupt Status Register */ +#define REG_DACC_ACR (0x400B8094U) /**< \brief (DACC) Analog Current Register */ +#define REG_DACC_WPMR (0x400B80E4U) /**< \brief (DACC) Write Protect Mode register */ +#define REG_DACC_WPSR (0x400B80E8U) /**< \brief (DACC) Write Protect Status register */ +#define REG_DACC_TPR (0x400B8108U) /**< \brief (DACC) Transmit Pointer Register */ +#define REG_DACC_TCR (0x400B810CU) /**< \brief (DACC) Transmit Counter Register */ +#define REG_DACC_TNPR (0x400B8118U) /**< \brief (DACC) Transmit Next Pointer Register */ +#define REG_DACC_TNCR (0x400B811CU) /**< \brief (DACC) Transmit Next Counter Register */ +#define REG_DACC_PTCR (0x400B8120U) /**< \brief (DACC) Transfer Control Register */ +#define REG_DACC_PTSR (0x400B8124U) /**< \brief (DACC) Transfer Status Register */ +#else +#define REG_DACC_CR (*(WoReg*)0x400B8000U) /**< \brief (DACC) Control Register */ +#define REG_DACC_MR (*(RwReg*)0x400B8004U) /**< \brief (DACC) Mode Register */ +#define REG_DACC_CHER (*(WoReg*)0x400B8010U) /**< \brief (DACC) Channel Enable Register */ +#define REG_DACC_CHDR (*(WoReg*)0x400B8014U) /**< \brief (DACC) Channel Disable Register */ +#define REG_DACC_CHSR (*(RoReg*)0x400B8018U) /**< \brief (DACC) Channel Status Register */ +#define REG_DACC_CDR (*(WoReg*)0x400B8020U) /**< \brief (DACC) Conversion Data Register */ +#define REG_DACC_IER (*(WoReg*)0x400B8024U) /**< \brief (DACC) Interrupt Enable Register */ +#define REG_DACC_IDR (*(WoReg*)0x400B8028U) /**< \brief (DACC) Interrupt Disable Register */ +#define REG_DACC_IMR (*(RoReg*)0x400B802CU) /**< \brief (DACC) Interrupt Mask Register */ +#define REG_DACC_ISR (*(RoReg*)0x400B8030U) /**< \brief (DACC) Interrupt Status Register */ +#define REG_DACC_ACR (*(RwReg*)0x400B8094U) /**< \brief (DACC) Analog Current Register */ +#define REG_DACC_WPMR (*(RwReg*)0x400B80E4U) /**< \brief (DACC) Write Protect Mode register */ +#define REG_DACC_WPSR (*(RoReg*)0x400B80E8U) /**< \brief (DACC) Write Protect Status register */ +#define REG_DACC_TPR (*(RwReg*)0x400B8108U) /**< \brief (DACC) Transmit Pointer Register */ +#define REG_DACC_TCR (*(RwReg*)0x400B810CU) /**< \brief (DACC) Transmit Counter Register */ +#define REG_DACC_TNPR (*(RwReg*)0x400B8118U) /**< \brief (DACC) Transmit Next Pointer Register */ +#define REG_DACC_TNCR (*(RwReg*)0x400B811CU) /**< \brief (DACC) Transmit Next Counter Register */ +#define REG_DACC_PTCR (*(WoReg*)0x400B8120U) /**< \brief (DACC) Transfer Control Register */ +#define REG_DACC_PTSR (*(RoReg*)0x400B8124U) /**< \brief (DACC) Transfer Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_DACC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/dmac.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/dmac.h new file mode 100644 index 000000000..9c812599d --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/dmac.h @@ -0,0 +1,126 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_DMAC_INSTANCE_ +#define _SAM4E_DMAC_INSTANCE_ + +/* ========== Register definition for DMAC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_DMAC_GCFG (0x400C0000U) /**< \brief (DMAC) DMAC Global Configuration Register */ +#define REG_DMAC_EN (0x400C0004U) /**< \brief (DMAC) DMAC Enable Register */ +#define REG_DMAC_SREQ (0x400C0008U) /**< \brief (DMAC) DMAC Software Single Request Register */ +#define REG_DMAC_CREQ (0x400C000CU) /**< \brief (DMAC) DMAC Software Chunk Transfer Request Register */ +#define REG_DMAC_LAST (0x400C0010U) /**< \brief (DMAC) DMAC Software Last Transfer Flag Register */ +#define REG_DMAC_EBCIER (0x400C0018U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Enable register. */ +#define REG_DMAC_EBCIDR (0x400C001CU) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Disable register. */ +#define REG_DMAC_EBCIMR (0x400C0020U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Mask Register. */ +#define REG_DMAC_EBCISR (0x400C0024U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Status Register. */ +#define REG_DMAC_CHER (0x400C0028U) /**< \brief (DMAC) DMAC Channel Handler Enable Register */ +#define REG_DMAC_CHDR (0x400C002CU) /**< \brief (DMAC) DMAC Channel Handler Disable Register */ +#define REG_DMAC_CHSR (0x400C0030U) /**< \brief (DMAC) DMAC Channel Handler Status Register */ +#define REG_DMAC_SADDR0 (0x400C003CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 0) */ +#define REG_DMAC_DADDR0 (0x400C0040U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 0) */ +#define REG_DMAC_DSCR0 (0x400C0044U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 0) */ +#define REG_DMAC_CTRLA0 (0x400C0048U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 0) */ +#define REG_DMAC_CTRLB0 (0x400C004CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 0) */ +#define REG_DMAC_CFG0 (0x400C0050U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 0) */ +#define REG_DMAC_SADDR1 (0x400C0064U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 1) */ +#define REG_DMAC_DADDR1 (0x400C0068U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 1) */ +#define REG_DMAC_DSCR1 (0x400C006CU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 1) */ +#define REG_DMAC_CTRLA1 (0x400C0070U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 1) */ +#define REG_DMAC_CTRLB1 (0x400C0074U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 1) */ +#define REG_DMAC_CFG1 (0x400C0078U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 1) */ +#define REG_DMAC_SADDR2 (0x400C008CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 2) */ +#define REG_DMAC_DADDR2 (0x400C0090U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 2) */ +#define REG_DMAC_DSCR2 (0x400C0094U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 2) */ +#define REG_DMAC_CTRLA2 (0x400C0098U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 2) */ +#define REG_DMAC_CTRLB2 (0x400C009CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 2) */ +#define REG_DMAC_CFG2 (0x400C00A0U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 2) */ +#define REG_DMAC_SADDR3 (0x400C00B4U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 3) */ +#define REG_DMAC_DADDR3 (0x400C00B8U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 3) */ +#define REG_DMAC_DSCR3 (0x400C00BCU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 3) */ +#define REG_DMAC_CTRLA3 (0x400C00C0U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 3) */ +#define REG_DMAC_CTRLB3 (0x400C00C4U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 3) */ +#define REG_DMAC_CFG3 (0x400C00C8U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 3) */ +#define REG_DMAC_WPMR (0x400C01E4U) /**< \brief (DMAC) DMAC Write Protect Mode Register */ +#define REG_DMAC_WPSR (0x400C01E8U) /**< \brief (DMAC) DMAC Write Protect Status Register */ +#else +#define REG_DMAC_GCFG (*(RwReg*)0x400C0000U) /**< \brief (DMAC) DMAC Global Configuration Register */ +#define REG_DMAC_EN (*(RwReg*)0x400C0004U) /**< \brief (DMAC) DMAC Enable Register */ +#define REG_DMAC_SREQ (*(RwReg*)0x400C0008U) /**< \brief (DMAC) DMAC Software Single Request Register */ +#define REG_DMAC_CREQ (*(RwReg*)0x400C000CU) /**< \brief (DMAC) DMAC Software Chunk Transfer Request Register */ +#define REG_DMAC_LAST (*(RwReg*)0x400C0010U) /**< \brief (DMAC) DMAC Software Last Transfer Flag Register */ +#define REG_DMAC_EBCIER (*(WoReg*)0x400C0018U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Enable register. */ +#define REG_DMAC_EBCIDR (*(WoReg*)0x400C001CU) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Disable register. */ +#define REG_DMAC_EBCIMR (*(RoReg*)0x400C0020U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Mask Register. */ +#define REG_DMAC_EBCISR (*(RoReg*)0x400C0024U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Status Register. */ +#define REG_DMAC_CHER (*(WoReg*)0x400C0028U) /**< \brief (DMAC) DMAC Channel Handler Enable Register */ +#define REG_DMAC_CHDR (*(WoReg*)0x400C002CU) /**< \brief (DMAC) DMAC Channel Handler Disable Register */ +#define REG_DMAC_CHSR (*(RoReg*)0x400C0030U) /**< \brief (DMAC) DMAC Channel Handler Status Register */ +#define REG_DMAC_SADDR0 (*(RwReg*)0x400C003CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 0) */ +#define REG_DMAC_DADDR0 (*(RwReg*)0x400C0040U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 0) */ +#define REG_DMAC_DSCR0 (*(RwReg*)0x400C0044U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 0) */ +#define REG_DMAC_CTRLA0 (*(RwReg*)0x400C0048U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 0) */ +#define REG_DMAC_CTRLB0 (*(RwReg*)0x400C004CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 0) */ +#define REG_DMAC_CFG0 (*(RwReg*)0x400C0050U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 0) */ +#define REG_DMAC_SADDR1 (*(RwReg*)0x400C0064U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 1) */ +#define REG_DMAC_DADDR1 (*(RwReg*)0x400C0068U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 1) */ +#define REG_DMAC_DSCR1 (*(RwReg*)0x400C006CU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 1) */ +#define REG_DMAC_CTRLA1 (*(RwReg*)0x400C0070U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 1) */ +#define REG_DMAC_CTRLB1 (*(RwReg*)0x400C0074U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 1) */ +#define REG_DMAC_CFG1 (*(RwReg*)0x400C0078U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 1) */ +#define REG_DMAC_SADDR2 (*(RwReg*)0x400C008CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 2) */ +#define REG_DMAC_DADDR2 (*(RwReg*)0x400C0090U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 2) */ +#define REG_DMAC_DSCR2 (*(RwReg*)0x400C0094U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 2) */ +#define REG_DMAC_CTRLA2 (*(RwReg*)0x400C0098U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 2) */ +#define REG_DMAC_CTRLB2 (*(RwReg*)0x400C009CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 2) */ +#define REG_DMAC_CFG2 (*(RwReg*)0x400C00A0U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 2) */ +#define REG_DMAC_SADDR3 (*(RwReg*)0x400C00B4U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 3) */ +#define REG_DMAC_DADDR3 (*(RwReg*)0x400C00B8U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 3) */ +#define REG_DMAC_DSCR3 (*(RwReg*)0x400C00BCU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 3) */ +#define REG_DMAC_CTRLA3 (*(RwReg*)0x400C00C0U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 3) */ +#define REG_DMAC_CTRLB3 (*(RwReg*)0x400C00C4U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 3) */ +#define REG_DMAC_CFG3 (*(RwReg*)0x400C00C8U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 3) */ +#define REG_DMAC_WPMR (*(RwReg*)0x400C01E4U) /**< \brief (DMAC) DMAC Write Protect Mode Register */ +#define REG_DMAC_WPSR (*(RoReg*)0x400C01E8U) /**< \brief (DMAC) DMAC Write Protect Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_DMAC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/efc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/efc.h new file mode 100644 index 000000000..611399e28 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/efc.h @@ -0,0 +1,58 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_EFC_INSTANCE_ +#define _SAM4E_EFC_INSTANCE_ + +/* ========== Register definition for EFC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_EFC_FMR (0x400E0A00U) /**< \brief (EFC) EEFC Flash Mode Register */ +#define REG_EFC_FCR (0x400E0A04U) /**< \brief (EFC) EEFC Flash Command Register */ +#define REG_EFC_FSR (0x400E0A08U) /**< \brief (EFC) EEFC Flash Status Register */ +#define REG_EFC_FRR (0x400E0A0CU) /**< \brief (EFC) EEFC Flash Result Register */ +#else +#define REG_EFC_FMR (*(RwReg*)0x400E0A00U) /**< \brief (EFC) EEFC Flash Mode Register */ +#define REG_EFC_FCR (*(WoReg*)0x400E0A04U) /**< \brief (EFC) EEFC Flash Command Register */ +#define REG_EFC_FSR (*(RoReg*)0x400E0A08U) /**< \brief (EFC) EEFC Flash Status Register */ +#define REG_EFC_FRR (*(RoReg*)0x400E0A0CU) /**< \brief (EFC) EEFC Flash Result Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_EFC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/gmac.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/gmac.h new file mode 100644 index 000000000..ad41815ef --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/gmac.h @@ -0,0 +1,232 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_GMAC_INSTANCE_ +#define _SAM4E_GMAC_INSTANCE_ + +/* ========== Register definition for GMAC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_GMAC_NCR (0x40034000U) /**< \brief (GMAC) Network Control Register */ +#define REG_GMAC_NCFGR (0x40034004U) /**< \brief (GMAC) Network Configuration Register */ +#define REG_GMAC_NSR (0x40034008U) /**< \brief (GMAC) Network Status Register */ +#define REG_GMAC_UR (0x4003400CU) /**< \brief (GMAC) User Register */ +#define REG_GMAC_DCFGR (0x40034010U) /**< \brief (GMAC) DMA Configuration Register */ +#define REG_GMAC_TSR (0x40034014U) /**< \brief (GMAC) Transmit Status Register */ +#define REG_GMAC_RBQB (0x40034018U) /**< \brief (GMAC) Receive Buffer Queue Base Address */ +#define REG_GMAC_TBQB (0x4003401CU) /**< \brief (GMAC) Transmit Buffer Queue Base Address */ +#define REG_GMAC_RSR (0x40034020U) /**< \brief (GMAC) Receive Status Register */ +#define REG_GMAC_ISR (0x40034024U) /**< \brief (GMAC) Interrupt Status Register */ +#define REG_GMAC_IER (0x40034028U) /**< \brief (GMAC) Interrupt Enable Register */ +#define REG_GMAC_IDR (0x4003402CU) /**< \brief (GMAC) Interrupt Disable Register */ +#define REG_GMAC_IMR (0x40034030U) /**< \brief (GMAC) Interrupt Mask Register */ +#define REG_GMAC_MAN (0x40034034U) /**< \brief (GMAC) PHY Maintenance Register */ +#define REG_GMAC_RPQ (0x40034038U) /**< \brief (GMAC) Received Pause Quantum Register */ +#define REG_GMAC_TPQ (0x4003403CU) /**< \brief (GMAC) Transmit Pause Quantum Register */ +#define REG_GMAC_HRB (0x40034080U) /**< \brief (GMAC) Hash Register Bottom [31:0] */ +#define REG_GMAC_HRT (0x40034084U) /**< \brief (GMAC) Hash Register Top [63:32] */ +#define REG_GMAC_SAB1 (0x40034088U) /**< \brief (GMAC) Specific Address 1 Bottom [31:0] Register */ +#define REG_GMAC_SAT1 (0x4003408CU) /**< \brief (GMAC) Specific Address 1 Top [47:32] Register */ +#define REG_GMAC_SAB2 (0x40034090U) /**< \brief (GMAC) Specific Address 2 Bottom [31:0] Register */ +#define REG_GMAC_SAT2 (0x40034094U) /**< \brief (GMAC) Specific Address 2 Top [47:32] Register */ +#define REG_GMAC_SAB3 (0x40034098U) /**< \brief (GMAC) Specific Address 3 Bottom [31:0] Register */ +#define REG_GMAC_SAT3 (0x4003409CU) /**< \brief (GMAC) Specific Address 3 Top [47:32] Register */ +#define REG_GMAC_SAB4 (0x400340A0U) /**< \brief (GMAC) Specific Address 4 Bottom [31:0] Register */ +#define REG_GMAC_SAT4 (0x400340A4U) /**< \brief (GMAC) Specific Address 4 Top [47:32] Register */ +#define REG_GMAC_TIDM (0x400340A8U) /**< \brief (GMAC) Type ID Match 1 Register */ +#define REG_GMAC_IPGS (0x400340BCU) /**< \brief (GMAC) IPG Stretch Register */ +#define REG_GMAC_SVLAN (0x400340C0U) /**< \brief (GMAC) Stacked VLAN Register */ +#define REG_GMAC_TPFCP (0x400340C4U) /**< \brief (GMAC) Transmit PFC Pause Register */ +#define REG_GMAC_SAMB1 (0x400340C8U) /**< \brief (GMAC) Specific Address 1 Mask Bottom [31:0] Register */ +#define REG_GMAC_SAMT1 (0x400340CCU) /**< \brief (GMAC) Specific Address 1 Mask Top [47:32] Register */ +#define REG_GMAC_OTLO (0x40034100U) /**< \brief (GMAC) Octets Transmitted [31:0] Register */ +#define REG_GMAC_OTHI (0x40034104U) /**< \brief (GMAC) Octets Transmitted [47:32] Register */ +#define REG_GMAC_FT (0x40034108U) /**< \brief (GMAC) Frames Transmitted Register */ +#define REG_GMAC_BCFT (0x4003410CU) /**< \brief (GMAC) Broadcast Frames Transmitted Register */ +#define REG_GMAC_MFT (0x40034110U) /**< \brief (GMAC) Multicast Frames Transmitted Register */ +#define REG_GMAC_PFT (0x40034114U) /**< \brief (GMAC) Pause Frames Transmitted Register */ +#define REG_GMAC_BFT64 (0x40034118U) /**< \brief (GMAC) 64 Byte Frames Transmitted Register */ +#define REG_GMAC_TBFT127 (0x4003411CU) /**< \brief (GMAC) 65 to 127 Byte Frames Transmitted Register */ +#define REG_GMAC_TBFT255 (0x40034120U) /**< \brief (GMAC) 128 to 255 Byte Frames Transmitted Register */ +#define REG_GMAC_TBFT511 (0x40034124U) /**< \brief (GMAC) 256 to 511 Byte Frames Transmitted Register */ +#define REG_GMAC_TBFT1023 (0x40034128U) /**< \brief (GMAC) 512 to 1023 Byte Frames Transmitted Register */ +#define REG_GMAC_TBFT1518 (0x4003412CU) /**< \brief (GMAC) 1024 to 1518 Byte Frames Transmitted Register */ +#define REG_GMAC_GTBFT1518 (0x40034130U) /**< \brief (GMAC) Greater Than 1518 Byte Frames Transmitted Register */ +#define REG_GMAC_TUR (0x40034134U) /**< \brief (GMAC) Transmit Under Runs Register */ +#define REG_GMAC_SCF (0x40034138U) /**< \brief (GMAC) Single Collision Frames Register */ +#define REG_GMAC_MCF (0x4003413CU) /**< \brief (GMAC) Multiple Collision Frames Register */ +#define REG_GMAC_EC (0x40034140U) /**< \brief (GMAC) Excessive Collisions Register */ +#define REG_GMAC_LC (0x40034144U) /**< \brief (GMAC) Late Collisions Register */ +#define REG_GMAC_DTF (0x40034148U) /**< \brief (GMAC) Deferred Transmission Frames Register */ +#define REG_GMAC_CSE (0x4003414CU) /**< \brief (GMAC) Carrier Sense Errors Register */ +#define REG_GMAC_ORLO (0x40034150U) /**< \brief (GMAC) Octets Received [31:0] Received */ +#define REG_GMAC_ORHI (0x40034154U) /**< \brief (GMAC) Octets Received [47:32] Received */ +#define REG_GMAC_FR (0x40034158U) /**< \brief (GMAC) Frames Received Register */ +#define REG_GMAC_BCFR (0x4003415CU) /**< \brief (GMAC) Broadcast Frames Received Register */ +#define REG_GMAC_MFR (0x40034160U) /**< \brief (GMAC) Multicast Frames Received Register */ +#define REG_GMAC_PFR (0x40034164U) /**< \brief (GMAC) Pause Frames Received Register */ +#define REG_GMAC_BFR64 (0x40034168U) /**< \brief (GMAC) 64 Byte Frames Received Register */ +#define REG_GMAC_TBFR127 (0x4003416CU) /**< \brief (GMAC) 65 to 127 Byte Frames Received Register */ +#define REG_GMAC_TBFR255 (0x40034170U) /**< \brief (GMAC) 128 to 255 Byte Frames Received Register */ +#define REG_GMAC_TBFR511 (0x40034174U) /**< \brief (GMAC) 256 to 511Byte Frames Received Register */ +#define REG_GMAC_TBFR1023 (0x40034178U) /**< \brief (GMAC) 512 to 1023 Byte Frames Received Register */ +#define REG_GMAC_TBFR1518 (0x4003417CU) /**< \brief (GMAC) 1024 to 1518 Byte Frames Received Register */ +#define REG_GMAC_TMXBFR (0x40034180U) /**< \brief (GMAC) 1519 to Maximum Byte Frames Received Register */ +#define REG_GMAC_UFR (0x40034184U) /**< \brief (GMAC) Undersize Frames Received Register */ +#define REG_GMAC_OFR (0x40034188U) /**< \brief (GMAC) Oversize Frames Received Register */ +#define REG_GMAC_JR (0x4003418CU) /**< \brief (GMAC) Jabbers Received Register */ +#define REG_GMAC_FCSE (0x40034190U) /**< \brief (GMAC) Frame Check Sequence Errors Register */ +#define REG_GMAC_LFFE (0x40034194U) /**< \brief (GMAC) Length Field Frame Errors Register */ +#define REG_GMAC_RSE (0x40034198U) /**< \brief (GMAC) Receive Symbol Errors Register */ +#define REG_GMAC_AE (0x4003419CU) /**< \brief (GMAC) Alignment Errors Register */ +#define REG_GMAC_RRE (0x400341A0U) /**< \brief (GMAC) Receive Resource Errors Register */ +#define REG_GMAC_ROE (0x400341A4U) /**< \brief (GMAC) Receive Overrun Register */ +#define REG_GMAC_IHCE (0x400341A8U) /**< \brief (GMAC) IP Header Checksum Errors Register */ +#define REG_GMAC_TCE (0x400341ACU) /**< \brief (GMAC) TCP Checksum Errors Register */ +#define REG_GMAC_UCE (0x400341B0U) /**< \brief (GMAC) UDP Checksum Errors Register */ +#define REG_GMAC_TSSS (0x400341C8U) /**< \brief (GMAC) 1588 Timer Sync Strobe Seconds Register */ +#define REG_GMAC_TSSN (0x400341CCU) /**< \brief (GMAC) 1588 Timer Sync Strobe Nanoseconds Register */ +#define REG_GMAC_TS (0x400341D0U) /**< \brief (GMAC) 1588 Timer Seconds Register */ +#define REG_GMAC_TN (0x400341D4U) /**< \brief (GMAC) 1588 Timer Nanoseconds Register */ +#define REG_GMAC_TA (0x400341D8U) /**< \brief (GMAC) 1588 Timer Adjust Register */ +#define REG_GMAC_TI (0x400341DCU) /**< \brief (GMAC) 1588 Timer Increment Register */ +#define REG_GMAC_EFTS (0x400341E0U) /**< \brief (GMAC) PTP Event Frame Transmitted Seconds */ +#define REG_GMAC_EFTN (0x400341E4U) /**< \brief (GMAC) PTP Event Frame Transmitted Nanoseconds */ +#define REG_GMAC_EFRS (0x400341E8U) /**< \brief (GMAC) PTP Event Frame Received Seconds */ +#define REG_GMAC_EFRN (0x400341ECU) /**< \brief (GMAC) PTP Event Frame Received Nanoseconds */ +#define REG_GMAC_PEFTS (0x400341F0U) /**< \brief (GMAC) PTP Peer Event Frame Transmitted Seconds */ +#define REG_GMAC_PEFTN (0x400341F4U) /**< \brief (GMAC) PTP Peer Event Frame Transmitted Nanoseconds */ +#define REG_GMAC_PEFRS (0x400341F8U) /**< \brief (GMAC) PTP Peer Event Frame Received Seconds */ +#define REG_GMAC_PEFRN (0x400341FCU) /**< \brief (GMAC) PTP Peer Event Frame Received Nanoseconds */ +#else +#define REG_GMAC_NCR (*(RwReg*)0x40034000U) /**< \brief (GMAC) Network Control Register */ +#define REG_GMAC_NCFGR (*(RwReg*)0x40034004U) /**< \brief (GMAC) Network Configuration Register */ +#define REG_GMAC_NSR (*(RoReg*)0x40034008U) /**< \brief (GMAC) Network Status Register */ +#define REG_GMAC_UR (*(RwReg*)0x4003400CU) /**< \brief (GMAC) User Register */ +#define REG_GMAC_DCFGR (*(RwReg*)0x40034010U) /**< \brief (GMAC) DMA Configuration Register */ +#define REG_GMAC_TSR (*(RwReg*)0x40034014U) /**< \brief (GMAC) Transmit Status Register */ +#define REG_GMAC_RBQB (*(RwReg*)0x40034018U) /**< \brief (GMAC) Receive Buffer Queue Base Address */ +#define REG_GMAC_TBQB (*(RwReg*)0x4003401CU) /**< \brief (GMAC) Transmit Buffer Queue Base Address */ +#define REG_GMAC_RSR (*(RwReg*)0x40034020U) /**< \brief (GMAC) Receive Status Register */ +#define REG_GMAC_ISR (*(RoReg*)0x40034024U) /**< \brief (GMAC) Interrupt Status Register */ +#define REG_GMAC_IER (*(WoReg*)0x40034028U) /**< \brief (GMAC) Interrupt Enable Register */ +#define REG_GMAC_IDR (*(WoReg*)0x4003402CU) /**< \brief (GMAC) Interrupt Disable Register */ +#define REG_GMAC_IMR (*(RoReg*)0x40034030U) /**< \brief (GMAC) Interrupt Mask Register */ +#define REG_GMAC_MAN (*(RwReg*)0x40034034U) /**< \brief (GMAC) PHY Maintenance Register */ +#define REG_GMAC_RPQ (*(RoReg*)0x40034038U) /**< \brief (GMAC) Received Pause Quantum Register */ +#define REG_GMAC_TPQ (*(RwReg*)0x4003403CU) /**< \brief (GMAC) Transmit Pause Quantum Register */ +#define REG_GMAC_HRB (*(RwReg*)0x40034080U) /**< \brief (GMAC) Hash Register Bottom [31:0] */ +#define REG_GMAC_HRT (*(RwReg*)0x40034084U) /**< \brief (GMAC) Hash Register Top [63:32] */ +#define REG_GMAC_SAB1 (*(RwReg*)0x40034088U) /**< \brief (GMAC) Specific Address 1 Bottom [31:0] Register */ +#define REG_GMAC_SAT1 (*(RwReg*)0x4003408CU) /**< \brief (GMAC) Specific Address 1 Top [47:32] Register */ +#define REG_GMAC_SAB2 (*(RwReg*)0x40034090U) /**< \brief (GMAC) Specific Address 2 Bottom [31:0] Register */ +#define REG_GMAC_SAT2 (*(RwReg*)0x40034094U) /**< \brief (GMAC) Specific Address 2 Top [47:32] Register */ +#define REG_GMAC_SAB3 (*(RwReg*)0x40034098U) /**< \brief (GMAC) Specific Address 3 Bottom [31:0] Register */ +#define REG_GMAC_SAT3 (*(RwReg*)0x4003409CU) /**< \brief (GMAC) Specific Address 3 Top [47:32] Register */ +#define REG_GMAC_SAB4 (*(RwReg*)0x400340A0U) /**< \brief (GMAC) Specific Address 4 Bottom [31:0] Register */ +#define REG_GMAC_SAT4 (*(RwReg*)0x400340A4U) /**< \brief (GMAC) Specific Address 4 Top [47:32] Register */ +#define REG_GMAC_TIDM (*(RwReg*)0x400340A8U) /**< \brief (GMAC) Type ID Match 1 Register */ +#define REG_GMAC_IPGS (*(RwReg*)0x400340BCU) /**< \brief (GMAC) IPG Stretch Register */ +#define REG_GMAC_SVLAN (*(RwReg*)0x400340C0U) /**< \brief (GMAC) Stacked VLAN Register */ +#define REG_GMAC_TPFCP (*(RwReg*)0x400340C4U) /**< \brief (GMAC) Transmit PFC Pause Register */ +#define REG_GMAC_SAMB1 (*(RwReg*)0x400340C8U) /**< \brief (GMAC) Specific Address 1 Mask Bottom [31:0] Register */ +#define REG_GMAC_SAMT1 (*(RwReg*)0x400340CCU) /**< \brief (GMAC) Specific Address 1 Mask Top [47:32] Register */ +#define REG_GMAC_OTLO (*(RoReg*)0x40034100U) /**< \brief (GMAC) Octets Transmitted [31:0] Register */ +#define REG_GMAC_OTHI (*(RoReg*)0x40034104U) /**< \brief (GMAC) Octets Transmitted [47:32] Register */ +#define REG_GMAC_FT (*(RoReg*)0x40034108U) /**< \brief (GMAC) Frames Transmitted Register */ +#define REG_GMAC_BCFT (*(RoReg*)0x4003410CU) /**< \brief (GMAC) Broadcast Frames Transmitted Register */ +#define REG_GMAC_MFT (*(RoReg*)0x40034110U) /**< \brief (GMAC) Multicast Frames Transmitted Register */ +#define REG_GMAC_PFT (*(RoReg*)0x40034114U) /**< \brief (GMAC) Pause Frames Transmitted Register */ +#define REG_GMAC_BFT64 (*(RoReg*)0x40034118U) /**< \brief (GMAC) 64 Byte Frames Transmitted Register */ +#define REG_GMAC_TBFT127 (*(RoReg*)0x4003411CU) /**< \brief (GMAC) 65 to 127 Byte Frames Transmitted Register */ +#define REG_GMAC_TBFT255 (*(RoReg*)0x40034120U) /**< \brief (GMAC) 128 to 255 Byte Frames Transmitted Register */ +#define REG_GMAC_TBFT511 (*(RoReg*)0x40034124U) /**< \brief (GMAC) 256 to 511 Byte Frames Transmitted Register */ +#define REG_GMAC_TBFT1023 (*(RoReg*)0x40034128U) /**< \brief (GMAC) 512 to 1023 Byte Frames Transmitted Register */ +#define REG_GMAC_TBFT1518 (*(RoReg*)0x4003412CU) /**< \brief (GMAC) 1024 to 1518 Byte Frames Transmitted Register */ +#define REG_GMAC_GTBFT1518 (*(RoReg*)0x40034130U) /**< \brief (GMAC) Greater Than 1518 Byte Frames Transmitted Register */ +#define REG_GMAC_TUR (*(RoReg*)0x40034134U) /**< \brief (GMAC) Transmit Under Runs Register */ +#define REG_GMAC_SCF (*(RoReg*)0x40034138U) /**< \brief (GMAC) Single Collision Frames Register */ +#define REG_GMAC_MCF (*(RoReg*)0x4003413CU) /**< \brief (GMAC) Multiple Collision Frames Register */ +#define REG_GMAC_EC (*(RoReg*)0x40034140U) /**< \brief (GMAC) Excessive Collisions Register */ +#define REG_GMAC_LC (*(RoReg*)0x40034144U) /**< \brief (GMAC) Late Collisions Register */ +#define REG_GMAC_DTF (*(RoReg*)0x40034148U) /**< \brief (GMAC) Deferred Transmission Frames Register */ +#define REG_GMAC_CSE (*(RoReg*)0x4003414CU) /**< \brief (GMAC) Carrier Sense Errors Register */ +#define REG_GMAC_ORLO (*(RoReg*)0x40034150U) /**< \brief (GMAC) Octets Received [31:0] Received */ +#define REG_GMAC_ORHI (*(RoReg*)0x40034154U) /**< \brief (GMAC) Octets Received [47:32] Received */ +#define REG_GMAC_FR (*(RoReg*)0x40034158U) /**< \brief (GMAC) Frames Received Register */ +#define REG_GMAC_BCFR (*(RoReg*)0x4003415CU) /**< \brief (GMAC) Broadcast Frames Received Register */ +#define REG_GMAC_MFR (*(RoReg*)0x40034160U) /**< \brief (GMAC) Multicast Frames Received Register */ +#define REG_GMAC_PFR (*(RoReg*)0x40034164U) /**< \brief (GMAC) Pause Frames Received Register */ +#define REG_GMAC_BFR64 (*(RoReg*)0x40034168U) /**< \brief (GMAC) 64 Byte Frames Received Register */ +#define REG_GMAC_TBFR127 (*(RoReg*)0x4003416CU) /**< \brief (GMAC) 65 to 127 Byte Frames Received Register */ +#define REG_GMAC_TBFR255 (*(RoReg*)0x40034170U) /**< \brief (GMAC) 128 to 255 Byte Frames Received Register */ +#define REG_GMAC_TBFR511 (*(RoReg*)0x40034174U) /**< \brief (GMAC) 256 to 511Byte Frames Received Register */ +#define REG_GMAC_TBFR1023 (*(RoReg*)0x40034178U) /**< \brief (GMAC) 512 to 1023 Byte Frames Received Register */ +#define REG_GMAC_TBFR1518 (*(RoReg*)0x4003417CU) /**< \brief (GMAC) 1024 to 1518 Byte Frames Received Register */ +#define REG_GMAC_TMXBFR (*(RoReg*)0x40034180U) /**< \brief (GMAC) 1519 to Maximum Byte Frames Received Register */ +#define REG_GMAC_UFR (*(RoReg*)0x40034184U) /**< \brief (GMAC) Undersize Frames Received Register */ +#define REG_GMAC_OFR (*(RoReg*)0x40034188U) /**< \brief (GMAC) Oversize Frames Received Register */ +#define REG_GMAC_JR (*(RoReg*)0x4003418CU) /**< \brief (GMAC) Jabbers Received Register */ +#define REG_GMAC_FCSE (*(RoReg*)0x40034190U) /**< \brief (GMAC) Frame Check Sequence Errors Register */ +#define REG_GMAC_LFFE (*(RoReg*)0x40034194U) /**< \brief (GMAC) Length Field Frame Errors Register */ +#define REG_GMAC_RSE (*(RoReg*)0x40034198U) /**< \brief (GMAC) Receive Symbol Errors Register */ +#define REG_GMAC_AE (*(RoReg*)0x4003419CU) /**< \brief (GMAC) Alignment Errors Register */ +#define REG_GMAC_RRE (*(RoReg*)0x400341A0U) /**< \brief (GMAC) Receive Resource Errors Register */ +#define REG_GMAC_ROE (*(RoReg*)0x400341A4U) /**< \brief (GMAC) Receive Overrun Register */ +#define REG_GMAC_IHCE (*(RoReg*)0x400341A8U) /**< \brief (GMAC) IP Header Checksum Errors Register */ +#define REG_GMAC_TCE (*(RoReg*)0x400341ACU) /**< \brief (GMAC) TCP Checksum Errors Register */ +#define REG_GMAC_UCE (*(RoReg*)0x400341B0U) /**< \brief (GMAC) UDP Checksum Errors Register */ +#define REG_GMAC_TSSS (*(RwReg*)0x400341C8U) /**< \brief (GMAC) 1588 Timer Sync Strobe Seconds Register */ +#define REG_GMAC_TSSN (*(RwReg*)0x400341CCU) /**< \brief (GMAC) 1588 Timer Sync Strobe Nanoseconds Register */ +#define REG_GMAC_TS (*(RwReg*)0x400341D0U) /**< \brief (GMAC) 1588 Timer Seconds Register */ +#define REG_GMAC_TN (*(RwReg*)0x400341D4U) /**< \brief (GMAC) 1588 Timer Nanoseconds Register */ +#define REG_GMAC_TA (*(WoReg*)0x400341D8U) /**< \brief (GMAC) 1588 Timer Adjust Register */ +#define REG_GMAC_TI (*(RwReg*)0x400341DCU) /**< \brief (GMAC) 1588 Timer Increment Register */ +#define REG_GMAC_EFTS (*(RoReg*)0x400341E0U) /**< \brief (GMAC) PTP Event Frame Transmitted Seconds */ +#define REG_GMAC_EFTN (*(RoReg*)0x400341E4U) /**< \brief (GMAC) PTP Event Frame Transmitted Nanoseconds */ +#define REG_GMAC_EFRS (*(RoReg*)0x400341E8U) /**< \brief (GMAC) PTP Event Frame Received Seconds */ +#define REG_GMAC_EFRN (*(RoReg*)0x400341ECU) /**< \brief (GMAC) PTP Event Frame Received Nanoseconds */ +#define REG_GMAC_PEFTS (*(RoReg*)0x400341F0U) /**< \brief (GMAC) PTP Peer Event Frame Transmitted Seconds */ +#define REG_GMAC_PEFTN (*(RoReg*)0x400341F4U) /**< \brief (GMAC) PTP Peer Event Frame Transmitted Nanoseconds */ +#define REG_GMAC_PEFRS (*(RoReg*)0x400341F8U) /**< \brief (GMAC) PTP Peer Event Frame Received Seconds */ +#define REG_GMAC_PEFRN (*(RoReg*)0x400341FCU) /**< \brief (GMAC) PTP Peer Event Frame Received Nanoseconds */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_GMAC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/gpbr.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/gpbr.h new file mode 100644 index 000000000..143e37bc2 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/gpbr.h @@ -0,0 +1,52 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_GPBR_INSTANCE_ +#define _SAM4E_GPBR_INSTANCE_ + +/* ========== Register definition for GPBR peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_GPBR_GPBR (0x400E1890U) /**< \brief (GPBR) General Purpose Backup Register */ +#else +#define REG_GPBR_GPBR (*(RwReg*)0x400E1890U) /**< \brief (GPBR) General Purpose Backup Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_GPBR_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/hsmci.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/hsmci.h new file mode 100644 index 000000000..413b78611 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/hsmci.h @@ -0,0 +1,108 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_HSMCI_INSTANCE_ +#define _SAM4E_HSMCI_INSTANCE_ + +/* ========== Register definition for HSMCI peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_HSMCI_CR (0x40080000U) /**< \brief (HSMCI) Control Register */ +#define REG_HSMCI_MR (0x40080004U) /**< \brief (HSMCI) Mode Register */ +#define REG_HSMCI_DTOR (0x40080008U) /**< \brief (HSMCI) Data Timeout Register */ +#define REG_HSMCI_SDCR (0x4008000CU) /**< \brief (HSMCI) SD/SDIO Card Register */ +#define REG_HSMCI_ARGR (0x40080010U) /**< \brief (HSMCI) Argument Register */ +#define REG_HSMCI_CMDR (0x40080014U) /**< \brief (HSMCI) Command Register */ +#define REG_HSMCI_BLKR (0x40080018U) /**< \brief (HSMCI) Block Register */ +#define REG_HSMCI_CSTOR (0x4008001CU) /**< \brief (HSMCI) Completion Signal Timeout Register */ +#define REG_HSMCI_RSPR (0x40080020U) /**< \brief (HSMCI) Response Register */ +#define REG_HSMCI_RDR (0x40080030U) /**< \brief (HSMCI) Receive Data Register */ +#define REG_HSMCI_TDR (0x40080034U) /**< \brief (HSMCI) Transmit Data Register */ +#define REG_HSMCI_SR (0x40080040U) /**< \brief (HSMCI) Status Register */ +#define REG_HSMCI_IER (0x40080044U) /**< \brief (HSMCI) Interrupt Enable Register */ +#define REG_HSMCI_IDR (0x40080048U) /**< \brief (HSMCI) Interrupt Disable Register */ +#define REG_HSMCI_IMR (0x4008004CU) /**< \brief (HSMCI) Interrupt Mask Register */ +#define REG_HSMCI_CFG (0x40080054U) /**< \brief (HSMCI) Configuration Register */ +#define REG_HSMCI_WPMR (0x400800E4U) /**< \brief (HSMCI) Write Protection Mode Register */ +#define REG_HSMCI_WPSR (0x400800E8U) /**< \brief (HSMCI) Write Protection Status Register */ +#define REG_HSMCI_RPR (0x40080100U) /**< \brief (HSMCI) Receive Pointer Register */ +#define REG_HSMCI_RCR (0x40080104U) /**< \brief (HSMCI) Receive Counter Register */ +#define REG_HSMCI_TPR (0x40080108U) /**< \brief (HSMCI) Transmit Pointer Register */ +#define REG_HSMCI_TCR (0x4008010CU) /**< \brief (HSMCI) Transmit Counter Register */ +#define REG_HSMCI_RNPR (0x40080110U) /**< \brief (HSMCI) Receive Next Pointer Register */ +#define REG_HSMCI_RNCR (0x40080114U) /**< \brief (HSMCI) Receive Next Counter Register */ +#define REG_HSMCI_TNPR (0x40080118U) /**< \brief (HSMCI) Transmit Next Pointer Register */ +#define REG_HSMCI_TNCR (0x4008011CU) /**< \brief (HSMCI) Transmit Next Counter Register */ +#define REG_HSMCI_PTCR (0x40080120U) /**< \brief (HSMCI) Transfer Control Register */ +#define REG_HSMCI_PTSR (0x40080124U) /**< \brief (HSMCI) Transfer Status Register */ +#define REG_HSMCI_FIFO (0x40080200U) /**< \brief (HSMCI) FIFO Memory Aperture0 */ +#else +#define REG_HSMCI_CR (*(WoReg*)0x40080000U) /**< \brief (HSMCI) Control Register */ +#define REG_HSMCI_MR (*(RwReg*)0x40080004U) /**< \brief (HSMCI) Mode Register */ +#define REG_HSMCI_DTOR (*(RwReg*)0x40080008U) /**< \brief (HSMCI) Data Timeout Register */ +#define REG_HSMCI_SDCR (*(RwReg*)0x4008000CU) /**< \brief (HSMCI) SD/SDIO Card Register */ +#define REG_HSMCI_ARGR (*(RwReg*)0x40080010U) /**< \brief (HSMCI) Argument Register */ +#define REG_HSMCI_CMDR (*(WoReg*)0x40080014U) /**< \brief (HSMCI) Command Register */ +#define REG_HSMCI_BLKR (*(RwReg*)0x40080018U) /**< \brief (HSMCI) Block Register */ +#define REG_HSMCI_CSTOR (*(RwReg*)0x4008001CU) /**< \brief (HSMCI) Completion Signal Timeout Register */ +#define REG_HSMCI_RSPR (*(RoReg*)0x40080020U) /**< \brief (HSMCI) Response Register */ +#define REG_HSMCI_RDR (*(RoReg*)0x40080030U) /**< \brief (HSMCI) Receive Data Register */ +#define REG_HSMCI_TDR (*(WoReg*)0x40080034U) /**< \brief (HSMCI) Transmit Data Register */ +#define REG_HSMCI_SR (*(RoReg*)0x40080040U) /**< \brief (HSMCI) Status Register */ +#define REG_HSMCI_IER (*(WoReg*)0x40080044U) /**< \brief (HSMCI) Interrupt Enable Register */ +#define REG_HSMCI_IDR (*(WoReg*)0x40080048U) /**< \brief (HSMCI) Interrupt Disable Register */ +#define REG_HSMCI_IMR (*(RoReg*)0x4008004CU) /**< \brief (HSMCI) Interrupt Mask Register */ +#define REG_HSMCI_CFG (*(RwReg*)0x40080054U) /**< \brief (HSMCI) Configuration Register */ +#define REG_HSMCI_WPMR (*(RwReg*)0x400800E4U) /**< \brief (HSMCI) Write Protection Mode Register */ +#define REG_HSMCI_WPSR (*(RoReg*)0x400800E8U) /**< \brief (HSMCI) Write Protection Status Register */ +#define REG_HSMCI_RPR (*(RwReg*)0x40080100U) /**< \brief (HSMCI) Receive Pointer Register */ +#define REG_HSMCI_RCR (*(RwReg*)0x40080104U) /**< \brief (HSMCI) Receive Counter Register */ +#define REG_HSMCI_TPR (*(RwReg*)0x40080108U) /**< \brief (HSMCI) Transmit Pointer Register */ +#define REG_HSMCI_TCR (*(RwReg*)0x4008010CU) /**< \brief (HSMCI) Transmit Counter Register */ +#define REG_HSMCI_RNPR (*(RwReg*)0x40080110U) /**< \brief (HSMCI) Receive Next Pointer Register */ +#define REG_HSMCI_RNCR (*(RwReg*)0x40080114U) /**< \brief (HSMCI) Receive Next Counter Register */ +#define REG_HSMCI_TNPR (*(RwReg*)0x40080118U) /**< \brief (HSMCI) Transmit Next Pointer Register */ +#define REG_HSMCI_TNCR (*(RwReg*)0x4008011CU) /**< \brief (HSMCI) Transmit Next Counter Register */ +#define REG_HSMCI_PTCR (*(WoReg*)0x40080120U) /**< \brief (HSMCI) Transfer Control Register */ +#define REG_HSMCI_PTSR (*(RoReg*)0x40080124U) /**< \brief (HSMCI) Transfer Status Register */ +#define REG_HSMCI_FIFO (*(RwReg*)0x40080200U) /**< \brief (HSMCI) FIFO Memory Aperture0 */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_HSMCI_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/matrix.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/matrix.h new file mode 100644 index 000000000..e996ba229 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/matrix.h @@ -0,0 +1,76 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_MATRIX_INSTANCE_ +#define _SAM4E_MATRIX_INSTANCE_ + +/* ========== Register definition for MATRIX peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_MATRIX_MCFG (0x400E0200U) /**< \brief (MATRIX) Master Configuration Register */ +#define REG_MATRIX_SCFG (0x400E0240U) /**< \brief (MATRIX) Slave Configuration Register */ +#define REG_MATRIX_PRAS0 (0x400E0280U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ +#define REG_MATRIX_PRAS1 (0x400E0288U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ +#define REG_MATRIX_PRAS2 (0x400E0290U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ +#define REG_MATRIX_PRAS3 (0x400E0298U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ +#define REG_MATRIX_PRAS4 (0x400E02A0U) /**< \brief (MATRIX) Priority Register A for Slave 4 */ +#define REG_MATRIX_PRAS5 (0x400E02A8U) /**< \brief (MATRIX) Priority Register A for Slave 5 */ +#define REG_MATRIX_MRCR (0x400E0300U) /**< \brief (MATRIX) Master Remap Control Register */ +#define REG_CCFG_SYSIO (0x400E0314U) /**< \brief (MATRIX) System I/O Configuration Register */ +#define REG_CCFG_SMCNFCS (0x400E0324U) /**< \brief (MATRIX) SMC NAND Flash Chip Select Configuration Register */ +#define REG_MATRIX_WPMR (0x400E03E4U) /**< \brief (MATRIX) Write Protect Mode Register */ +#define REG_MATRIX_WPSR (0x400E03E8U) /**< \brief (MATRIX) Write Protect Status Register */ +#else +#define REG_MATRIX_MCFG (*(RwReg*)0x400E0200U) /**< \brief (MATRIX) Master Configuration Register */ +#define REG_MATRIX_SCFG (*(RwReg*)0x400E0240U) /**< \brief (MATRIX) Slave Configuration Register */ +#define REG_MATRIX_PRAS0 (*(RwReg*)0x400E0280U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ +#define REG_MATRIX_PRAS1 (*(RwReg*)0x400E0288U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ +#define REG_MATRIX_PRAS2 (*(RwReg*)0x400E0290U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ +#define REG_MATRIX_PRAS3 (*(RwReg*)0x400E0298U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ +#define REG_MATRIX_PRAS4 (*(RwReg*)0x400E02A0U) /**< \brief (MATRIX) Priority Register A for Slave 4 */ +#define REG_MATRIX_PRAS5 (*(RwReg*)0x400E02A8U) /**< \brief (MATRIX) Priority Register A for Slave 5 */ +#define REG_MATRIX_MRCR (*(RwReg*)0x400E0300U) /**< \brief (MATRIX) Master Remap Control Register */ +#define REG_CCFG_SYSIO (*(RwReg*)0x400E0314U) /**< \brief (MATRIX) System I/O Configuration Register */ +#define REG_CCFG_SMCNFCS (*(RwReg*)0x400E0324U) /**< \brief (MATRIX) SMC NAND Flash Chip Select Configuration Register */ +#define REG_MATRIX_WPMR (*(RwReg*)0x400E03E4U) /**< \brief (MATRIX) Write Protect Mode Register */ +#define REG_MATRIX_WPSR (*(RoReg*)0x400E03E8U) /**< \brief (MATRIX) Write Protect Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_MATRIX_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioa.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioa.h new file mode 100644 index 000000000..61db8ab85 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioa.h @@ -0,0 +1,170 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_PIOA_INSTANCE_ +#define _SAM4E_PIOA_INSTANCE_ + +/* ========== Register definition for PIOA peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_PIOA_PER (0x400E0E00U) /**< \brief (PIOA) PIO Enable Register */ +#define REG_PIOA_PDR (0x400E0E04U) /**< \brief (PIOA) PIO Disable Register */ +#define REG_PIOA_PSR (0x400E0E08U) /**< \brief (PIOA) PIO Status Register */ +#define REG_PIOA_OER (0x400E0E10U) /**< \brief (PIOA) Output Enable Register */ +#define REG_PIOA_ODR (0x400E0E14U) /**< \brief (PIOA) Output Disable Register */ +#define REG_PIOA_OSR (0x400E0E18U) /**< \brief (PIOA) Output Status Register */ +#define REG_PIOA_IFER (0x400E0E20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ +#define REG_PIOA_IFDR (0x400E0E24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ +#define REG_PIOA_IFSR (0x400E0E28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ +#define REG_PIOA_SODR (0x400E0E30U) /**< \brief (PIOA) Set Output Data Register */ +#define REG_PIOA_CODR (0x400E0E34U) /**< \brief (PIOA) Clear Output Data Register */ +#define REG_PIOA_ODSR (0x400E0E38U) /**< \brief (PIOA) Output Data Status Register */ +#define REG_PIOA_PDSR (0x400E0E3CU) /**< \brief (PIOA) Pin Data Status Register */ +#define REG_PIOA_IER (0x400E0E40U) /**< \brief (PIOA) Interrupt Enable Register */ +#define REG_PIOA_IDR (0x400E0E44U) /**< \brief (PIOA) Interrupt Disable Register */ +#define REG_PIOA_IMR (0x400E0E48U) /**< \brief (PIOA) Interrupt Mask Register */ +#define REG_PIOA_ISR (0x400E0E4CU) /**< \brief (PIOA) Interrupt Status Register */ +#define REG_PIOA_MDER (0x400E0E50U) /**< \brief (PIOA) Multi-driver Enable Register */ +#define REG_PIOA_MDDR (0x400E0E54U) /**< \brief (PIOA) Multi-driver Disable Register */ +#define REG_PIOA_MDSR (0x400E0E58U) /**< \brief (PIOA) Multi-driver Status Register */ +#define REG_PIOA_PUDR (0x400E0E60U) /**< \brief (PIOA) Pull-up Disable Register */ +#define REG_PIOA_PUER (0x400E0E64U) /**< \brief (PIOA) Pull-up Enable Register */ +#define REG_PIOA_PUSR (0x400E0E68U) /**< \brief (PIOA) Pad Pull-up Status Register */ +#define REG_PIOA_ABCDSR (0x400E0E70U) /**< \brief (PIOA) Peripheral Select Register */ +#define REG_PIOA_IFSCDR (0x400E0E80U) /**< \brief (PIOA) Input Filter Slow Clock Disable Register */ +#define REG_PIOA_IFSCER (0x400E0E84U) /**< \brief (PIOA) Input Filter Slow Clock Enable Register */ +#define REG_PIOA_IFSCSR (0x400E0E88U) /**< \brief (PIOA) Input Filter Slow Clock Status Register */ +#define REG_PIOA_SCDR (0x400E0E8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ +#define REG_PIOA_PPDDR (0x400E0E90U) /**< \brief (PIOA) Pad Pull-down Disable Register */ +#define REG_PIOA_PPDER (0x400E0E94U) /**< \brief (PIOA) Pad Pull-down Enable Register */ +#define REG_PIOA_PPDSR (0x400E0E98U) /**< \brief (PIOA) Pad Pull-down Status Register */ +#define REG_PIOA_OWER (0x400E0EA0U) /**< \brief (PIOA) Output Write Enable */ +#define REG_PIOA_OWDR (0x400E0EA4U) /**< \brief (PIOA) Output Write Disable */ +#define REG_PIOA_OWSR (0x400E0EA8U) /**< \brief (PIOA) Output Write Status Register */ +#define REG_PIOA_AIMER (0x400E0EB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ +#define REG_PIOA_AIMDR (0x400E0EB4U) /**< \brief (PIOA) Additional Interrupt Modes Disables Register */ +#define REG_PIOA_AIMMR (0x400E0EB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ +#define REG_PIOA_ESR (0x400E0EC0U) /**< \brief (PIOA) Edge Select Register */ +#define REG_PIOA_LSR (0x400E0EC4U) /**< \brief (PIOA) Level Select Register */ +#define REG_PIOA_ELSR (0x400E0EC8U) /**< \brief (PIOA) Edge/Level Status Register */ +#define REG_PIOA_FELLSR (0x400E0ED0U) /**< \brief (PIOA) Falling Edge/Low Level Select Register */ +#define REG_PIOA_REHLSR (0x400E0ED4U) /**< \brief (PIOA) Rising Edge/ High Level Select Register */ +#define REG_PIOA_FRLHSR (0x400E0ED8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ +#define REG_PIOA_LOCKSR (0x400E0EE0U) /**< \brief (PIOA) Lock Status */ +#define REG_PIOA_WPMR (0x400E0EE4U) /**< \brief (PIOA) Write Protect Mode Register */ +#define REG_PIOA_WPSR (0x400E0EE8U) /**< \brief (PIOA) Write Protect Status Register */ +#define REG_PIOA_SCHMITT (0x400E0F00U) /**< \brief (PIOA) Schmitt Trigger Register */ +#define REG_PIOA_DELAYR (0x400E0F10U) /**< \brief (PIOA) IO Delay Register */ +#define REG_PIOA_PCMR (0x400E0F50U) /**< \brief (PIOA) Parallel Capture Mode Register */ +#define REG_PIOA_PCIER (0x400E0F54U) /**< \brief (PIOA) Parallel Capture Interrupt Enable Register */ +#define REG_PIOA_PCIDR (0x400E0F58U) /**< \brief (PIOA) Parallel Capture Interrupt Disable Register */ +#define REG_PIOA_PCIMR (0x400E0F5CU) /**< \brief (PIOA) Parallel Capture Interrupt Mask Register */ +#define REG_PIOA_PCISR (0x400E0F60U) /**< \brief (PIOA) Parallel Capture Interrupt Status Register */ +#define REG_PIOA_PCRHR (0x400E0F64U) /**< \brief (PIOA) Parallel Capture Reception Holding Register */ +#define REG_PIOA_RPR (0x400E0F68U) /**< \brief (PIOA) Receive Pointer Register */ +#define REG_PIOA_RCR (0x400E0F6CU) /**< \brief (PIOA) Receive Counter Register */ +#define REG_PIOA_RNPR (0x400E0F78U) /**< \brief (PIOA) Receive Next Pointer Register */ +#define REG_PIOA_RNCR (0x400E0F7CU) /**< \brief (PIOA) Receive Next Counter Register */ +#define REG_PIOA_PTCR (0x400E0F88U) /**< \brief (PIOA) Transfer Control Register */ +#define REG_PIOA_PTSR (0x400E0F8CU) /**< \brief (PIOA) Transfer Status Register */ +#else +#define REG_PIOA_PER (*(WoReg*)0x400E0E00U) /**< \brief (PIOA) PIO Enable Register */ +#define REG_PIOA_PDR (*(WoReg*)0x400E0E04U) /**< \brief (PIOA) PIO Disable Register */ +#define REG_PIOA_PSR (*(RoReg*)0x400E0E08U) /**< \brief (PIOA) PIO Status Register */ +#define REG_PIOA_OER (*(WoReg*)0x400E0E10U) /**< \brief (PIOA) Output Enable Register */ +#define REG_PIOA_ODR (*(WoReg*)0x400E0E14U) /**< \brief (PIOA) Output Disable Register */ +#define REG_PIOA_OSR (*(RoReg*)0x400E0E18U) /**< \brief (PIOA) Output Status Register */ +#define REG_PIOA_IFER (*(WoReg*)0x400E0E20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ +#define REG_PIOA_IFDR (*(WoReg*)0x400E0E24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ +#define REG_PIOA_IFSR (*(RoReg*)0x400E0E28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ +#define REG_PIOA_SODR (*(WoReg*)0x400E0E30U) /**< \brief (PIOA) Set Output Data Register */ +#define REG_PIOA_CODR (*(WoReg*)0x400E0E34U) /**< \brief (PIOA) Clear Output Data Register */ +#define REG_PIOA_ODSR (*(RwReg*)0x400E0E38U) /**< \brief (PIOA) Output Data Status Register */ +#define REG_PIOA_PDSR (*(RoReg*)0x400E0E3CU) /**< \brief (PIOA) Pin Data Status Register */ +#define REG_PIOA_IER (*(WoReg*)0x400E0E40U) /**< \brief (PIOA) Interrupt Enable Register */ +#define REG_PIOA_IDR (*(WoReg*)0x400E0E44U) /**< \brief (PIOA) Interrupt Disable Register */ +#define REG_PIOA_IMR (*(RoReg*)0x400E0E48U) /**< \brief (PIOA) Interrupt Mask Register */ +#define REG_PIOA_ISR (*(RoReg*)0x400E0E4CU) /**< \brief (PIOA) Interrupt Status Register */ +#define REG_PIOA_MDER (*(WoReg*)0x400E0E50U) /**< \brief (PIOA) Multi-driver Enable Register */ +#define REG_PIOA_MDDR (*(WoReg*)0x400E0E54U) /**< \brief (PIOA) Multi-driver Disable Register */ +#define REG_PIOA_MDSR (*(RoReg*)0x400E0E58U) /**< \brief (PIOA) Multi-driver Status Register */ +#define REG_PIOA_PUDR (*(WoReg*)0x400E0E60U) /**< \brief (PIOA) Pull-up Disable Register */ +#define REG_PIOA_PUER (*(WoReg*)0x400E0E64U) /**< \brief (PIOA) Pull-up Enable Register */ +#define REG_PIOA_PUSR (*(RoReg*)0x400E0E68U) /**< \brief (PIOA) Pad Pull-up Status Register */ +#define REG_PIOA_ABCDSR (*(RwReg*)0x400E0E70U) /**< \brief (PIOA) Peripheral Select Register */ +#define REG_PIOA_IFSCDR (*(WoReg*)0x400E0E80U) /**< \brief (PIOA) Input Filter Slow Clock Disable Register */ +#define REG_PIOA_IFSCER (*(WoReg*)0x400E0E84U) /**< \brief (PIOA) Input Filter Slow Clock Enable Register */ +#define REG_PIOA_IFSCSR (*(RoReg*)0x400E0E88U) /**< \brief (PIOA) Input Filter Slow Clock Status Register */ +#define REG_PIOA_SCDR (*(RwReg*)0x400E0E8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ +#define REG_PIOA_PPDDR (*(WoReg*)0x400E0E90U) /**< \brief (PIOA) Pad Pull-down Disable Register */ +#define REG_PIOA_PPDER (*(WoReg*)0x400E0E94U) /**< \brief (PIOA) Pad Pull-down Enable Register */ +#define REG_PIOA_PPDSR (*(RoReg*)0x400E0E98U) /**< \brief (PIOA) Pad Pull-down Status Register */ +#define REG_PIOA_OWER (*(WoReg*)0x400E0EA0U) /**< \brief (PIOA) Output Write Enable */ +#define REG_PIOA_OWDR (*(WoReg*)0x400E0EA4U) /**< \brief (PIOA) Output Write Disable */ +#define REG_PIOA_OWSR (*(RoReg*)0x400E0EA8U) /**< \brief (PIOA) Output Write Status Register */ +#define REG_PIOA_AIMER (*(WoReg*)0x400E0EB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ +#define REG_PIOA_AIMDR (*(WoReg*)0x400E0EB4U) /**< \brief (PIOA) Additional Interrupt Modes Disables Register */ +#define REG_PIOA_AIMMR (*(RoReg*)0x400E0EB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ +#define REG_PIOA_ESR (*(WoReg*)0x400E0EC0U) /**< \brief (PIOA) Edge Select Register */ +#define REG_PIOA_LSR (*(WoReg*)0x400E0EC4U) /**< \brief (PIOA) Level Select Register */ +#define REG_PIOA_ELSR (*(RoReg*)0x400E0EC8U) /**< \brief (PIOA) Edge/Level Status Register */ +#define REG_PIOA_FELLSR (*(WoReg*)0x400E0ED0U) /**< \brief (PIOA) Falling Edge/Low Level Select Register */ +#define REG_PIOA_REHLSR (*(WoReg*)0x400E0ED4U) /**< \brief (PIOA) Rising Edge/ High Level Select Register */ +#define REG_PIOA_FRLHSR (*(RoReg*)0x400E0ED8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ +#define REG_PIOA_LOCKSR (*(RoReg*)0x400E0EE0U) /**< \brief (PIOA) Lock Status */ +#define REG_PIOA_WPMR (*(RwReg*)0x400E0EE4U) /**< \brief (PIOA) Write Protect Mode Register */ +#define REG_PIOA_WPSR (*(RoReg*)0x400E0EE8U) /**< \brief (PIOA) Write Protect Status Register */ +#define REG_PIOA_SCHMITT (*(RwReg*)0x400E0F00U) /**< \brief (PIOA) Schmitt Trigger Register */ +#define REG_PIOA_DELAYR (*(RwReg*)0x400E0F10U) /**< \brief (PIOA) IO Delay Register */ +#define REG_PIOA_PCMR (*(RwReg*)0x400E0F50U) /**< \brief (PIOA) Parallel Capture Mode Register */ +#define REG_PIOA_PCIER (*(WoReg*)0x400E0F54U) /**< \brief (PIOA) Parallel Capture Interrupt Enable Register */ +#define REG_PIOA_PCIDR (*(WoReg*)0x400E0F58U) /**< \brief (PIOA) Parallel Capture Interrupt Disable Register */ +#define REG_PIOA_PCIMR (*(RoReg*)0x400E0F5CU) /**< \brief (PIOA) Parallel Capture Interrupt Mask Register */ +#define REG_PIOA_PCISR (*(RoReg*)0x400E0F60U) /**< \brief (PIOA) Parallel Capture Interrupt Status Register */ +#define REG_PIOA_PCRHR (*(RoReg*)0x400E0F64U) /**< \brief (PIOA) Parallel Capture Reception Holding Register */ +#define REG_PIOA_RPR (*(RwReg*)0x400E0F68U) /**< \brief (PIOA) Receive Pointer Register */ +#define REG_PIOA_RCR (*(RwReg*)0x400E0F6CU) /**< \brief (PIOA) Receive Counter Register */ +#define REG_PIOA_RNPR (*(RwReg*)0x400E0F78U) /**< \brief (PIOA) Receive Next Pointer Register */ +#define REG_PIOA_RNCR (*(RwReg*)0x400E0F7CU) /**< \brief (PIOA) Receive Next Counter Register */ +#define REG_PIOA_PTCR (*(WoReg*)0x400E0F88U) /**< \brief (PIOA) Transfer Control Register */ +#define REG_PIOA_PTSR (*(RoReg*)0x400E0F8CU) /**< \brief (PIOA) Transfer Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_PIOA_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/piob.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/piob.h new file mode 100644 index 000000000..46b342a7e --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/piob.h @@ -0,0 +1,158 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_PIOB_INSTANCE_ +#define _SAM4E_PIOB_INSTANCE_ + +/* ========== Register definition for PIOB peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_PIOB_PER (0x400E1000U) /**< \brief (PIOB) PIO Enable Register */ +#define REG_PIOB_PDR (0x400E1004U) /**< \brief (PIOB) PIO Disable Register */ +#define REG_PIOB_PSR (0x400E1008U) /**< \brief (PIOB) PIO Status Register */ +#define REG_PIOB_OER (0x400E1010U) /**< \brief (PIOB) Output Enable Register */ +#define REG_PIOB_ODR (0x400E1014U) /**< \brief (PIOB) Output Disable Register */ +#define REG_PIOB_OSR (0x400E1018U) /**< \brief (PIOB) Output Status Register */ +#define REG_PIOB_IFER (0x400E1020U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ +#define REG_PIOB_IFDR (0x400E1024U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ +#define REG_PIOB_IFSR (0x400E1028U) /**< \brief (PIOB) Glitch Input Filter Status Register */ +#define REG_PIOB_SODR (0x400E1030U) /**< \brief (PIOB) Set Output Data Register */ +#define REG_PIOB_CODR (0x400E1034U) /**< \brief (PIOB) Clear Output Data Register */ +#define REG_PIOB_ODSR (0x400E1038U) /**< \brief (PIOB) Output Data Status Register */ +#define REG_PIOB_PDSR (0x400E103CU) /**< \brief (PIOB) Pin Data Status Register */ +#define REG_PIOB_IER (0x400E1040U) /**< \brief (PIOB) Interrupt Enable Register */ +#define REG_PIOB_IDR (0x400E1044U) /**< \brief (PIOB) Interrupt Disable Register */ +#define REG_PIOB_IMR (0x400E1048U) /**< \brief (PIOB) Interrupt Mask Register */ +#define REG_PIOB_ISR (0x400E104CU) /**< \brief (PIOB) Interrupt Status Register */ +#define REG_PIOB_MDER (0x400E1050U) /**< \brief (PIOB) Multi-driver Enable Register */ +#define REG_PIOB_MDDR (0x400E1054U) /**< \brief (PIOB) Multi-driver Disable Register */ +#define REG_PIOB_MDSR (0x400E1058U) /**< \brief (PIOB) Multi-driver Status Register */ +#define REG_PIOB_PUDR (0x400E1060U) /**< \brief (PIOB) Pull-up Disable Register */ +#define REG_PIOB_PUER (0x400E1064U) /**< \brief (PIOB) Pull-up Enable Register */ +#define REG_PIOB_PUSR (0x400E1068U) /**< \brief (PIOB) Pad Pull-up Status Register */ +#define REG_PIOB_ABCDSR (0x400E1070U) /**< \brief (PIOB) Peripheral Select Register */ +#define REG_PIOB_IFSCDR (0x400E1080U) /**< \brief (PIOB) Input Filter Slow Clock Disable Register */ +#define REG_PIOB_IFSCER (0x400E1084U) /**< \brief (PIOB) Input Filter Slow Clock Enable Register */ +#define REG_PIOB_IFSCSR (0x400E1088U) /**< \brief (PIOB) Input Filter Slow Clock Status Register */ +#define REG_PIOB_SCDR (0x400E108CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ +#define REG_PIOB_PPDDR (0x400E1090U) /**< \brief (PIOB) Pad Pull-down Disable Register */ +#define REG_PIOB_PPDER (0x400E1094U) /**< \brief (PIOB) Pad Pull-down Enable Register */ +#define REG_PIOB_PPDSR (0x400E1098U) /**< \brief (PIOB) Pad Pull-down Status Register */ +#define REG_PIOB_OWER (0x400E10A0U) /**< \brief (PIOB) Output Write Enable */ +#define REG_PIOB_OWDR (0x400E10A4U) /**< \brief (PIOB) Output Write Disable */ +#define REG_PIOB_OWSR (0x400E10A8U) /**< \brief (PIOB) Output Write Status Register */ +#define REG_PIOB_AIMER (0x400E10B0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ +#define REG_PIOB_AIMDR (0x400E10B4U) /**< \brief (PIOB) Additional Interrupt Modes Disables Register */ +#define REG_PIOB_AIMMR (0x400E10B8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ +#define REG_PIOB_ESR (0x400E10C0U) /**< \brief (PIOB) Edge Select Register */ +#define REG_PIOB_LSR (0x400E10C4U) /**< \brief (PIOB) Level Select Register */ +#define REG_PIOB_ELSR (0x400E10C8U) /**< \brief (PIOB) Edge/Level Status Register */ +#define REG_PIOB_FELLSR (0x400E10D0U) /**< \brief (PIOB) Falling Edge/Low Level Select Register */ +#define REG_PIOB_REHLSR (0x400E10D4U) /**< \brief (PIOB) Rising Edge/ High Level Select Register */ +#define REG_PIOB_FRLHSR (0x400E10D8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ +#define REG_PIOB_LOCKSR (0x400E10E0U) /**< \brief (PIOB) Lock Status */ +#define REG_PIOB_WPMR (0x400E10E4U) /**< \brief (PIOB) Write Protect Mode Register */ +#define REG_PIOB_WPSR (0x400E10E8U) /**< \brief (PIOB) Write Protect Status Register */ +#define REG_PIOB_SCHMITT (0x400E1100U) /**< \brief (PIOB) Schmitt Trigger Register */ +#define REG_PIOB_DELAYR (0x400E1110U) /**< \brief (PIOB) IO Delay Register */ +#define REG_PIOB_PCMR (0x400E1150U) /**< \brief (PIOB) Parallel Capture Mode Register */ +#define REG_PIOB_PCIER (0x400E1154U) /**< \brief (PIOB) Parallel Capture Interrupt Enable Register */ +#define REG_PIOB_PCIDR (0x400E1158U) /**< \brief (PIOB) Parallel Capture Interrupt Disable Register */ +#define REG_PIOB_PCIMR (0x400E115CU) /**< \brief (PIOB) Parallel Capture Interrupt Mask Register */ +#define REG_PIOB_PCISR (0x400E1160U) /**< \brief (PIOB) Parallel Capture Interrupt Status Register */ +#define REG_PIOB_PCRHR (0x400E1164U) /**< \brief (PIOB) Parallel Capture Reception Holding Register */ +#else +#define REG_PIOB_PER (*(WoReg*)0x400E1000U) /**< \brief (PIOB) PIO Enable Register */ +#define REG_PIOB_PDR (*(WoReg*)0x400E1004U) /**< \brief (PIOB) PIO Disable Register */ +#define REG_PIOB_PSR (*(RoReg*)0x400E1008U) /**< \brief (PIOB) PIO Status Register */ +#define REG_PIOB_OER (*(WoReg*)0x400E1010U) /**< \brief (PIOB) Output Enable Register */ +#define REG_PIOB_ODR (*(WoReg*)0x400E1014U) /**< \brief (PIOB) Output Disable Register */ +#define REG_PIOB_OSR (*(RoReg*)0x400E1018U) /**< \brief (PIOB) Output Status Register */ +#define REG_PIOB_IFER (*(WoReg*)0x400E1020U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ +#define REG_PIOB_IFDR (*(WoReg*)0x400E1024U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ +#define REG_PIOB_IFSR (*(RoReg*)0x400E1028U) /**< \brief (PIOB) Glitch Input Filter Status Register */ +#define REG_PIOB_SODR (*(WoReg*)0x400E1030U) /**< \brief (PIOB) Set Output Data Register */ +#define REG_PIOB_CODR (*(WoReg*)0x400E1034U) /**< \brief (PIOB) Clear Output Data Register */ +#define REG_PIOB_ODSR (*(RwReg*)0x400E1038U) /**< \brief (PIOB) Output Data Status Register */ +#define REG_PIOB_PDSR (*(RoReg*)0x400E103CU) /**< \brief (PIOB) Pin Data Status Register */ +#define REG_PIOB_IER (*(WoReg*)0x400E1040U) /**< \brief (PIOB) Interrupt Enable Register */ +#define REG_PIOB_IDR (*(WoReg*)0x400E1044U) /**< \brief (PIOB) Interrupt Disable Register */ +#define REG_PIOB_IMR (*(RoReg*)0x400E1048U) /**< \brief (PIOB) Interrupt Mask Register */ +#define REG_PIOB_ISR (*(RoReg*)0x400E104CU) /**< \brief (PIOB) Interrupt Status Register */ +#define REG_PIOB_MDER (*(WoReg*)0x400E1050U) /**< \brief (PIOB) Multi-driver Enable Register */ +#define REG_PIOB_MDDR (*(WoReg*)0x400E1054U) /**< \brief (PIOB) Multi-driver Disable Register */ +#define REG_PIOB_MDSR (*(RoReg*)0x400E1058U) /**< \brief (PIOB) Multi-driver Status Register */ +#define REG_PIOB_PUDR (*(WoReg*)0x400E1060U) /**< \brief (PIOB) Pull-up Disable Register */ +#define REG_PIOB_PUER (*(WoReg*)0x400E1064U) /**< \brief (PIOB) Pull-up Enable Register */ +#define REG_PIOB_PUSR (*(RoReg*)0x400E1068U) /**< \brief (PIOB) Pad Pull-up Status Register */ +#define REG_PIOB_ABCDSR (*(RwReg*)0x400E1070U) /**< \brief (PIOB) Peripheral Select Register */ +#define REG_PIOB_IFSCDR (*(WoReg*)0x400E1080U) /**< \brief (PIOB) Input Filter Slow Clock Disable Register */ +#define REG_PIOB_IFSCER (*(WoReg*)0x400E1084U) /**< \brief (PIOB) Input Filter Slow Clock Enable Register */ +#define REG_PIOB_IFSCSR (*(RoReg*)0x400E1088U) /**< \brief (PIOB) Input Filter Slow Clock Status Register */ +#define REG_PIOB_SCDR (*(RwReg*)0x400E108CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ +#define REG_PIOB_PPDDR (*(WoReg*)0x400E1090U) /**< \brief (PIOB) Pad Pull-down Disable Register */ +#define REG_PIOB_PPDER (*(WoReg*)0x400E1094U) /**< \brief (PIOB) Pad Pull-down Enable Register */ +#define REG_PIOB_PPDSR (*(RoReg*)0x400E1098U) /**< \brief (PIOB) Pad Pull-down Status Register */ +#define REG_PIOB_OWER (*(WoReg*)0x400E10A0U) /**< \brief (PIOB) Output Write Enable */ +#define REG_PIOB_OWDR (*(WoReg*)0x400E10A4U) /**< \brief (PIOB) Output Write Disable */ +#define REG_PIOB_OWSR (*(RoReg*)0x400E10A8U) /**< \brief (PIOB) Output Write Status Register */ +#define REG_PIOB_AIMER (*(WoReg*)0x400E10B0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ +#define REG_PIOB_AIMDR (*(WoReg*)0x400E10B4U) /**< \brief (PIOB) Additional Interrupt Modes Disables Register */ +#define REG_PIOB_AIMMR (*(RoReg*)0x400E10B8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ +#define REG_PIOB_ESR (*(WoReg*)0x400E10C0U) /**< \brief (PIOB) Edge Select Register */ +#define REG_PIOB_LSR (*(WoReg*)0x400E10C4U) /**< \brief (PIOB) Level Select Register */ +#define REG_PIOB_ELSR (*(RoReg*)0x400E10C8U) /**< \brief (PIOB) Edge/Level Status Register */ +#define REG_PIOB_FELLSR (*(WoReg*)0x400E10D0U) /**< \brief (PIOB) Falling Edge/Low Level Select Register */ +#define REG_PIOB_REHLSR (*(WoReg*)0x400E10D4U) /**< \brief (PIOB) Rising Edge/ High Level Select Register */ +#define REG_PIOB_FRLHSR (*(RoReg*)0x400E10D8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ +#define REG_PIOB_LOCKSR (*(RoReg*)0x400E10E0U) /**< \brief (PIOB) Lock Status */ +#define REG_PIOB_WPMR (*(RwReg*)0x400E10E4U) /**< \brief (PIOB) Write Protect Mode Register */ +#define REG_PIOB_WPSR (*(RoReg*)0x400E10E8U) /**< \brief (PIOB) Write Protect Status Register */ +#define REG_PIOB_SCHMITT (*(RwReg*)0x400E1100U) /**< \brief (PIOB) Schmitt Trigger Register */ +#define REG_PIOB_DELAYR (*(RwReg*)0x400E1110U) /**< \brief (PIOB) IO Delay Register */ +#define REG_PIOB_PCMR (*(RwReg*)0x400E1150U) /**< \brief (PIOB) Parallel Capture Mode Register */ +#define REG_PIOB_PCIER (*(WoReg*)0x400E1154U) /**< \brief (PIOB) Parallel Capture Interrupt Enable Register */ +#define REG_PIOB_PCIDR (*(WoReg*)0x400E1158U) /**< \brief (PIOB) Parallel Capture Interrupt Disable Register */ +#define REG_PIOB_PCIMR (*(RoReg*)0x400E115CU) /**< \brief (PIOB) Parallel Capture Interrupt Mask Register */ +#define REG_PIOB_PCISR (*(RoReg*)0x400E1160U) /**< \brief (PIOB) Parallel Capture Interrupt Status Register */ +#define REG_PIOB_PCRHR (*(RoReg*)0x400E1164U) /**< \brief (PIOB) Parallel Capture Reception Holding Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_PIOB_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioc.h new file mode 100644 index 000000000..c6e81e49f --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioc.h @@ -0,0 +1,158 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_PIOC_INSTANCE_ +#define _SAM4E_PIOC_INSTANCE_ + +/* ========== Register definition for PIOC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_PIOC_PER (0x400E1200U) /**< \brief (PIOC) PIO Enable Register */ +#define REG_PIOC_PDR (0x400E1204U) /**< \brief (PIOC) PIO Disable Register */ +#define REG_PIOC_PSR (0x400E1208U) /**< \brief (PIOC) PIO Status Register */ +#define REG_PIOC_OER (0x400E1210U) /**< \brief (PIOC) Output Enable Register */ +#define REG_PIOC_ODR (0x400E1214U) /**< \brief (PIOC) Output Disable Register */ +#define REG_PIOC_OSR (0x400E1218U) /**< \brief (PIOC) Output Status Register */ +#define REG_PIOC_IFER (0x400E1220U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ +#define REG_PIOC_IFDR (0x400E1224U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ +#define REG_PIOC_IFSR (0x400E1228U) /**< \brief (PIOC) Glitch Input Filter Status Register */ +#define REG_PIOC_SODR (0x400E1230U) /**< \brief (PIOC) Set Output Data Register */ +#define REG_PIOC_CODR (0x400E1234U) /**< \brief (PIOC) Clear Output Data Register */ +#define REG_PIOC_ODSR (0x400E1238U) /**< \brief (PIOC) Output Data Status Register */ +#define REG_PIOC_PDSR (0x400E123CU) /**< \brief (PIOC) Pin Data Status Register */ +#define REG_PIOC_IER (0x400E1240U) /**< \brief (PIOC) Interrupt Enable Register */ +#define REG_PIOC_IDR (0x400E1244U) /**< \brief (PIOC) Interrupt Disable Register */ +#define REG_PIOC_IMR (0x400E1248U) /**< \brief (PIOC) Interrupt Mask Register */ +#define REG_PIOC_ISR (0x400E124CU) /**< \brief (PIOC) Interrupt Status Register */ +#define REG_PIOC_MDER (0x400E1250U) /**< \brief (PIOC) Multi-driver Enable Register */ +#define REG_PIOC_MDDR (0x400E1254U) /**< \brief (PIOC) Multi-driver Disable Register */ +#define REG_PIOC_MDSR (0x400E1258U) /**< \brief (PIOC) Multi-driver Status Register */ +#define REG_PIOC_PUDR (0x400E1260U) /**< \brief (PIOC) Pull-up Disable Register */ +#define REG_PIOC_PUER (0x400E1264U) /**< \brief (PIOC) Pull-up Enable Register */ +#define REG_PIOC_PUSR (0x400E1268U) /**< \brief (PIOC) Pad Pull-up Status Register */ +#define REG_PIOC_ABCDSR (0x400E1270U) /**< \brief (PIOC) Peripheral Select Register */ +#define REG_PIOC_IFSCDR (0x400E1280U) /**< \brief (PIOC) Input Filter Slow Clock Disable Register */ +#define REG_PIOC_IFSCER (0x400E1284U) /**< \brief (PIOC) Input Filter Slow Clock Enable Register */ +#define REG_PIOC_IFSCSR (0x400E1288U) /**< \brief (PIOC) Input Filter Slow Clock Status Register */ +#define REG_PIOC_SCDR (0x400E128CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ +#define REG_PIOC_PPDDR (0x400E1290U) /**< \brief (PIOC) Pad Pull-down Disable Register */ +#define REG_PIOC_PPDER (0x400E1294U) /**< \brief (PIOC) Pad Pull-down Enable Register */ +#define REG_PIOC_PPDSR (0x400E1298U) /**< \brief (PIOC) Pad Pull-down Status Register */ +#define REG_PIOC_OWER (0x400E12A0U) /**< \brief (PIOC) Output Write Enable */ +#define REG_PIOC_OWDR (0x400E12A4U) /**< \brief (PIOC) Output Write Disable */ +#define REG_PIOC_OWSR (0x400E12A8U) /**< \brief (PIOC) Output Write Status Register */ +#define REG_PIOC_AIMER (0x400E12B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ +#define REG_PIOC_AIMDR (0x400E12B4U) /**< \brief (PIOC) Additional Interrupt Modes Disables Register */ +#define REG_PIOC_AIMMR (0x400E12B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ +#define REG_PIOC_ESR (0x400E12C0U) /**< \brief (PIOC) Edge Select Register */ +#define REG_PIOC_LSR (0x400E12C4U) /**< \brief (PIOC) Level Select Register */ +#define REG_PIOC_ELSR (0x400E12C8U) /**< \brief (PIOC) Edge/Level Status Register */ +#define REG_PIOC_FELLSR (0x400E12D0U) /**< \brief (PIOC) Falling Edge/Low Level Select Register */ +#define REG_PIOC_REHLSR (0x400E12D4U) /**< \brief (PIOC) Rising Edge/ High Level Select Register */ +#define REG_PIOC_FRLHSR (0x400E12D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ +#define REG_PIOC_LOCKSR (0x400E12E0U) /**< \brief (PIOC) Lock Status */ +#define REG_PIOC_WPMR (0x400E12E4U) /**< \brief (PIOC) Write Protect Mode Register */ +#define REG_PIOC_WPSR (0x400E12E8U) /**< \brief (PIOC) Write Protect Status Register */ +#define REG_PIOC_SCHMITT (0x400E1300U) /**< \brief (PIOC) Schmitt Trigger Register */ +#define REG_PIOC_DELAYR (0x400E1310U) /**< \brief (PIOC) IO Delay Register */ +#define REG_PIOC_PCMR (0x400E1350U) /**< \brief (PIOC) Parallel Capture Mode Register */ +#define REG_PIOC_PCIER (0x400E1354U) /**< \brief (PIOC) Parallel Capture Interrupt Enable Register */ +#define REG_PIOC_PCIDR (0x400E1358U) /**< \brief (PIOC) Parallel Capture Interrupt Disable Register */ +#define REG_PIOC_PCIMR (0x400E135CU) /**< \brief (PIOC) Parallel Capture Interrupt Mask Register */ +#define REG_PIOC_PCISR (0x400E1360U) /**< \brief (PIOC) Parallel Capture Interrupt Status Register */ +#define REG_PIOC_PCRHR (0x400E1364U) /**< \brief (PIOC) Parallel Capture Reception Holding Register */ +#else +#define REG_PIOC_PER (*(WoReg*)0x400E1200U) /**< \brief (PIOC) PIO Enable Register */ +#define REG_PIOC_PDR (*(WoReg*)0x400E1204U) /**< \brief (PIOC) PIO Disable Register */ +#define REG_PIOC_PSR (*(RoReg*)0x400E1208U) /**< \brief (PIOC) PIO Status Register */ +#define REG_PIOC_OER (*(WoReg*)0x400E1210U) /**< \brief (PIOC) Output Enable Register */ +#define REG_PIOC_ODR (*(WoReg*)0x400E1214U) /**< \brief (PIOC) Output Disable Register */ +#define REG_PIOC_OSR (*(RoReg*)0x400E1218U) /**< \brief (PIOC) Output Status Register */ +#define REG_PIOC_IFER (*(WoReg*)0x400E1220U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ +#define REG_PIOC_IFDR (*(WoReg*)0x400E1224U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ +#define REG_PIOC_IFSR (*(RoReg*)0x400E1228U) /**< \brief (PIOC) Glitch Input Filter Status Register */ +#define REG_PIOC_SODR (*(WoReg*)0x400E1230U) /**< \brief (PIOC) Set Output Data Register */ +#define REG_PIOC_CODR (*(WoReg*)0x400E1234U) /**< \brief (PIOC) Clear Output Data Register */ +#define REG_PIOC_ODSR (*(RwReg*)0x400E1238U) /**< \brief (PIOC) Output Data Status Register */ +#define REG_PIOC_PDSR (*(RoReg*)0x400E123CU) /**< \brief (PIOC) Pin Data Status Register */ +#define REG_PIOC_IER (*(WoReg*)0x400E1240U) /**< \brief (PIOC) Interrupt Enable Register */ +#define REG_PIOC_IDR (*(WoReg*)0x400E1244U) /**< \brief (PIOC) Interrupt Disable Register */ +#define REG_PIOC_IMR (*(RoReg*)0x400E1248U) /**< \brief (PIOC) Interrupt Mask Register */ +#define REG_PIOC_ISR (*(RoReg*)0x400E124CU) /**< \brief (PIOC) Interrupt Status Register */ +#define REG_PIOC_MDER (*(WoReg*)0x400E1250U) /**< \brief (PIOC) Multi-driver Enable Register */ +#define REG_PIOC_MDDR (*(WoReg*)0x400E1254U) /**< \brief (PIOC) Multi-driver Disable Register */ +#define REG_PIOC_MDSR (*(RoReg*)0x400E1258U) /**< \brief (PIOC) Multi-driver Status Register */ +#define REG_PIOC_PUDR (*(WoReg*)0x400E1260U) /**< \brief (PIOC) Pull-up Disable Register */ +#define REG_PIOC_PUER (*(WoReg*)0x400E1264U) /**< \brief (PIOC) Pull-up Enable Register */ +#define REG_PIOC_PUSR (*(RoReg*)0x400E1268U) /**< \brief (PIOC) Pad Pull-up Status Register */ +#define REG_PIOC_ABCDSR (*(RwReg*)0x400E1270U) /**< \brief (PIOC) Peripheral Select Register */ +#define REG_PIOC_IFSCDR (*(WoReg*)0x400E1280U) /**< \brief (PIOC) Input Filter Slow Clock Disable Register */ +#define REG_PIOC_IFSCER (*(WoReg*)0x400E1284U) /**< \brief (PIOC) Input Filter Slow Clock Enable Register */ +#define REG_PIOC_IFSCSR (*(RoReg*)0x400E1288U) /**< \brief (PIOC) Input Filter Slow Clock Status Register */ +#define REG_PIOC_SCDR (*(RwReg*)0x400E128CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ +#define REG_PIOC_PPDDR (*(WoReg*)0x400E1290U) /**< \brief (PIOC) Pad Pull-down Disable Register */ +#define REG_PIOC_PPDER (*(WoReg*)0x400E1294U) /**< \brief (PIOC) Pad Pull-down Enable Register */ +#define REG_PIOC_PPDSR (*(RoReg*)0x400E1298U) /**< \brief (PIOC) Pad Pull-down Status Register */ +#define REG_PIOC_OWER (*(WoReg*)0x400E12A0U) /**< \brief (PIOC) Output Write Enable */ +#define REG_PIOC_OWDR (*(WoReg*)0x400E12A4U) /**< \brief (PIOC) Output Write Disable */ +#define REG_PIOC_OWSR (*(RoReg*)0x400E12A8U) /**< \brief (PIOC) Output Write Status Register */ +#define REG_PIOC_AIMER (*(WoReg*)0x400E12B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ +#define REG_PIOC_AIMDR (*(WoReg*)0x400E12B4U) /**< \brief (PIOC) Additional Interrupt Modes Disables Register */ +#define REG_PIOC_AIMMR (*(RoReg*)0x400E12B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ +#define REG_PIOC_ESR (*(WoReg*)0x400E12C0U) /**< \brief (PIOC) Edge Select Register */ +#define REG_PIOC_LSR (*(WoReg*)0x400E12C4U) /**< \brief (PIOC) Level Select Register */ +#define REG_PIOC_ELSR (*(RoReg*)0x400E12C8U) /**< \brief (PIOC) Edge/Level Status Register */ +#define REG_PIOC_FELLSR (*(WoReg*)0x400E12D0U) /**< \brief (PIOC) Falling Edge/Low Level Select Register */ +#define REG_PIOC_REHLSR (*(WoReg*)0x400E12D4U) /**< \brief (PIOC) Rising Edge/ High Level Select Register */ +#define REG_PIOC_FRLHSR (*(RoReg*)0x400E12D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ +#define REG_PIOC_LOCKSR (*(RoReg*)0x400E12E0U) /**< \brief (PIOC) Lock Status */ +#define REG_PIOC_WPMR (*(RwReg*)0x400E12E4U) /**< \brief (PIOC) Write Protect Mode Register */ +#define REG_PIOC_WPSR (*(RoReg*)0x400E12E8U) /**< \brief (PIOC) Write Protect Status Register */ +#define REG_PIOC_SCHMITT (*(RwReg*)0x400E1300U) /**< \brief (PIOC) Schmitt Trigger Register */ +#define REG_PIOC_DELAYR (*(RwReg*)0x400E1310U) /**< \brief (PIOC) IO Delay Register */ +#define REG_PIOC_PCMR (*(RwReg*)0x400E1350U) /**< \brief (PIOC) Parallel Capture Mode Register */ +#define REG_PIOC_PCIER (*(WoReg*)0x400E1354U) /**< \brief (PIOC) Parallel Capture Interrupt Enable Register */ +#define REG_PIOC_PCIDR (*(WoReg*)0x400E1358U) /**< \brief (PIOC) Parallel Capture Interrupt Disable Register */ +#define REG_PIOC_PCIMR (*(RoReg*)0x400E135CU) /**< \brief (PIOC) Parallel Capture Interrupt Mask Register */ +#define REG_PIOC_PCISR (*(RoReg*)0x400E1360U) /**< \brief (PIOC) Parallel Capture Interrupt Status Register */ +#define REG_PIOC_PCRHR (*(RoReg*)0x400E1364U) /**< \brief (PIOC) Parallel Capture Reception Holding Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_PIOC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/piod.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/piod.h new file mode 100644 index 000000000..2e5288326 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/piod.h @@ -0,0 +1,158 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_PIOD_INSTANCE_ +#define _SAM4E_PIOD_INSTANCE_ + +/* ========== Register definition for PIOD peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_PIOD_PER (0x400E1400U) /**< \brief (PIOD) PIO Enable Register */ +#define REG_PIOD_PDR (0x400E1404U) /**< \brief (PIOD) PIO Disable Register */ +#define REG_PIOD_PSR (0x400E1408U) /**< \brief (PIOD) PIO Status Register */ +#define REG_PIOD_OER (0x400E1410U) /**< \brief (PIOD) Output Enable Register */ +#define REG_PIOD_ODR (0x400E1414U) /**< \brief (PIOD) Output Disable Register */ +#define REG_PIOD_OSR (0x400E1418U) /**< \brief (PIOD) Output Status Register */ +#define REG_PIOD_IFER (0x400E1420U) /**< \brief (PIOD) Glitch Input Filter Enable Register */ +#define REG_PIOD_IFDR (0x400E1424U) /**< \brief (PIOD) Glitch Input Filter Disable Register */ +#define REG_PIOD_IFSR (0x400E1428U) /**< \brief (PIOD) Glitch Input Filter Status Register */ +#define REG_PIOD_SODR (0x400E1430U) /**< \brief (PIOD) Set Output Data Register */ +#define REG_PIOD_CODR (0x400E1434U) /**< \brief (PIOD) Clear Output Data Register */ +#define REG_PIOD_ODSR (0x400E1438U) /**< \brief (PIOD) Output Data Status Register */ +#define REG_PIOD_PDSR (0x400E143CU) /**< \brief (PIOD) Pin Data Status Register */ +#define REG_PIOD_IER (0x400E1440U) /**< \brief (PIOD) Interrupt Enable Register */ +#define REG_PIOD_IDR (0x400E1444U) /**< \brief (PIOD) Interrupt Disable Register */ +#define REG_PIOD_IMR (0x400E1448U) /**< \brief (PIOD) Interrupt Mask Register */ +#define REG_PIOD_ISR (0x400E144CU) /**< \brief (PIOD) Interrupt Status Register */ +#define REG_PIOD_MDER (0x400E1450U) /**< \brief (PIOD) Multi-driver Enable Register */ +#define REG_PIOD_MDDR (0x400E1454U) /**< \brief (PIOD) Multi-driver Disable Register */ +#define REG_PIOD_MDSR (0x400E1458U) /**< \brief (PIOD) Multi-driver Status Register */ +#define REG_PIOD_PUDR (0x400E1460U) /**< \brief (PIOD) Pull-up Disable Register */ +#define REG_PIOD_PUER (0x400E1464U) /**< \brief (PIOD) Pull-up Enable Register */ +#define REG_PIOD_PUSR (0x400E1468U) /**< \brief (PIOD) Pad Pull-up Status Register */ +#define REG_PIOD_ABCDSR (0x400E1470U) /**< \brief (PIOD) Peripheral Select Register */ +#define REG_PIOD_IFSCDR (0x400E1480U) /**< \brief (PIOD) Input Filter Slow Clock Disable Register */ +#define REG_PIOD_IFSCER (0x400E1484U) /**< \brief (PIOD) Input Filter Slow Clock Enable Register */ +#define REG_PIOD_IFSCSR (0x400E1488U) /**< \brief (PIOD) Input Filter Slow Clock Status Register */ +#define REG_PIOD_SCDR (0x400E148CU) /**< \brief (PIOD) Slow Clock Divider Debouncing Register */ +#define REG_PIOD_PPDDR (0x400E1490U) /**< \brief (PIOD) Pad Pull-down Disable Register */ +#define REG_PIOD_PPDER (0x400E1494U) /**< \brief (PIOD) Pad Pull-down Enable Register */ +#define REG_PIOD_PPDSR (0x400E1498U) /**< \brief (PIOD) Pad Pull-down Status Register */ +#define REG_PIOD_OWER (0x400E14A0U) /**< \brief (PIOD) Output Write Enable */ +#define REG_PIOD_OWDR (0x400E14A4U) /**< \brief (PIOD) Output Write Disable */ +#define REG_PIOD_OWSR (0x400E14A8U) /**< \brief (PIOD) Output Write Status Register */ +#define REG_PIOD_AIMER (0x400E14B0U) /**< \brief (PIOD) Additional Interrupt Modes Enable Register */ +#define REG_PIOD_AIMDR (0x400E14B4U) /**< \brief (PIOD) Additional Interrupt Modes Disables Register */ +#define REG_PIOD_AIMMR (0x400E14B8U) /**< \brief (PIOD) Additional Interrupt Modes Mask Register */ +#define REG_PIOD_ESR (0x400E14C0U) /**< \brief (PIOD) Edge Select Register */ +#define REG_PIOD_LSR (0x400E14C4U) /**< \brief (PIOD) Level Select Register */ +#define REG_PIOD_ELSR (0x400E14C8U) /**< \brief (PIOD) Edge/Level Status Register */ +#define REG_PIOD_FELLSR (0x400E14D0U) /**< \brief (PIOD) Falling Edge/Low Level Select Register */ +#define REG_PIOD_REHLSR (0x400E14D4U) /**< \brief (PIOD) Rising Edge/ High Level Select Register */ +#define REG_PIOD_FRLHSR (0x400E14D8U) /**< \brief (PIOD) Fall/Rise - Low/High Status Register */ +#define REG_PIOD_LOCKSR (0x400E14E0U) /**< \brief (PIOD) Lock Status */ +#define REG_PIOD_WPMR (0x400E14E4U) /**< \brief (PIOD) Write Protect Mode Register */ +#define REG_PIOD_WPSR (0x400E14E8U) /**< \brief (PIOD) Write Protect Status Register */ +#define REG_PIOD_SCHMITT (0x400E1500U) /**< \brief (PIOD) Schmitt Trigger Register */ +#define REG_PIOD_DELAYR (0x400E1510U) /**< \brief (PIOD) IO Delay Register */ +#define REG_PIOD_PCMR (0x400E1550U) /**< \brief (PIOD) Parallel Capture Mode Register */ +#define REG_PIOD_PCIER (0x400E1554U) /**< \brief (PIOD) Parallel Capture Interrupt Enable Register */ +#define REG_PIOD_PCIDR (0x400E1558U) /**< \brief (PIOD) Parallel Capture Interrupt Disable Register */ +#define REG_PIOD_PCIMR (0x400E155CU) /**< \brief (PIOD) Parallel Capture Interrupt Mask Register */ +#define REG_PIOD_PCISR (0x400E1560U) /**< \brief (PIOD) Parallel Capture Interrupt Status Register */ +#define REG_PIOD_PCRHR (0x400E1564U) /**< \brief (PIOD) Parallel Capture Reception Holding Register */ +#else +#define REG_PIOD_PER (*(WoReg*)0x400E1400U) /**< \brief (PIOD) PIO Enable Register */ +#define REG_PIOD_PDR (*(WoReg*)0x400E1404U) /**< \brief (PIOD) PIO Disable Register */ +#define REG_PIOD_PSR (*(RoReg*)0x400E1408U) /**< \brief (PIOD) PIO Status Register */ +#define REG_PIOD_OER (*(WoReg*)0x400E1410U) /**< \brief (PIOD) Output Enable Register */ +#define REG_PIOD_ODR (*(WoReg*)0x400E1414U) /**< \brief (PIOD) Output Disable Register */ +#define REG_PIOD_OSR (*(RoReg*)0x400E1418U) /**< \brief (PIOD) Output Status Register */ +#define REG_PIOD_IFER (*(WoReg*)0x400E1420U) /**< \brief (PIOD) Glitch Input Filter Enable Register */ +#define REG_PIOD_IFDR (*(WoReg*)0x400E1424U) /**< \brief (PIOD) Glitch Input Filter Disable Register */ +#define REG_PIOD_IFSR (*(RoReg*)0x400E1428U) /**< \brief (PIOD) Glitch Input Filter Status Register */ +#define REG_PIOD_SODR (*(WoReg*)0x400E1430U) /**< \brief (PIOD) Set Output Data Register */ +#define REG_PIOD_CODR (*(WoReg*)0x400E1434U) /**< \brief (PIOD) Clear Output Data Register */ +#define REG_PIOD_ODSR (*(RwReg*)0x400E1438U) /**< \brief (PIOD) Output Data Status Register */ +#define REG_PIOD_PDSR (*(RoReg*)0x400E143CU) /**< \brief (PIOD) Pin Data Status Register */ +#define REG_PIOD_IER (*(WoReg*)0x400E1440U) /**< \brief (PIOD) Interrupt Enable Register */ +#define REG_PIOD_IDR (*(WoReg*)0x400E1444U) /**< \brief (PIOD) Interrupt Disable Register */ +#define REG_PIOD_IMR (*(RoReg*)0x400E1448U) /**< \brief (PIOD) Interrupt Mask Register */ +#define REG_PIOD_ISR (*(RoReg*)0x400E144CU) /**< \brief (PIOD) Interrupt Status Register */ +#define REG_PIOD_MDER (*(WoReg*)0x400E1450U) /**< \brief (PIOD) Multi-driver Enable Register */ +#define REG_PIOD_MDDR (*(WoReg*)0x400E1454U) /**< \brief (PIOD) Multi-driver Disable Register */ +#define REG_PIOD_MDSR (*(RoReg*)0x400E1458U) /**< \brief (PIOD) Multi-driver Status Register */ +#define REG_PIOD_PUDR (*(WoReg*)0x400E1460U) /**< \brief (PIOD) Pull-up Disable Register */ +#define REG_PIOD_PUER (*(WoReg*)0x400E1464U) /**< \brief (PIOD) Pull-up Enable Register */ +#define REG_PIOD_PUSR (*(RoReg*)0x400E1468U) /**< \brief (PIOD) Pad Pull-up Status Register */ +#define REG_PIOD_ABCDSR (*(RwReg*)0x400E1470U) /**< \brief (PIOD) Peripheral Select Register */ +#define REG_PIOD_IFSCDR (*(WoReg*)0x400E1480U) /**< \brief (PIOD) Input Filter Slow Clock Disable Register */ +#define REG_PIOD_IFSCER (*(WoReg*)0x400E1484U) /**< \brief (PIOD) Input Filter Slow Clock Enable Register */ +#define REG_PIOD_IFSCSR (*(RoReg*)0x400E1488U) /**< \brief (PIOD) Input Filter Slow Clock Status Register */ +#define REG_PIOD_SCDR (*(RwReg*)0x400E148CU) /**< \brief (PIOD) Slow Clock Divider Debouncing Register */ +#define REG_PIOD_PPDDR (*(WoReg*)0x400E1490U) /**< \brief (PIOD) Pad Pull-down Disable Register */ +#define REG_PIOD_PPDER (*(WoReg*)0x400E1494U) /**< \brief (PIOD) Pad Pull-down Enable Register */ +#define REG_PIOD_PPDSR (*(RoReg*)0x400E1498U) /**< \brief (PIOD) Pad Pull-down Status Register */ +#define REG_PIOD_OWER (*(WoReg*)0x400E14A0U) /**< \brief (PIOD) Output Write Enable */ +#define REG_PIOD_OWDR (*(WoReg*)0x400E14A4U) /**< \brief (PIOD) Output Write Disable */ +#define REG_PIOD_OWSR (*(RoReg*)0x400E14A8U) /**< \brief (PIOD) Output Write Status Register */ +#define REG_PIOD_AIMER (*(WoReg*)0x400E14B0U) /**< \brief (PIOD) Additional Interrupt Modes Enable Register */ +#define REG_PIOD_AIMDR (*(WoReg*)0x400E14B4U) /**< \brief (PIOD) Additional Interrupt Modes Disables Register */ +#define REG_PIOD_AIMMR (*(RoReg*)0x400E14B8U) /**< \brief (PIOD) Additional Interrupt Modes Mask Register */ +#define REG_PIOD_ESR (*(WoReg*)0x400E14C0U) /**< \brief (PIOD) Edge Select Register */ +#define REG_PIOD_LSR (*(WoReg*)0x400E14C4U) /**< \brief (PIOD) Level Select Register */ +#define REG_PIOD_ELSR (*(RoReg*)0x400E14C8U) /**< \brief (PIOD) Edge/Level Status Register */ +#define REG_PIOD_FELLSR (*(WoReg*)0x400E14D0U) /**< \brief (PIOD) Falling Edge/Low Level Select Register */ +#define REG_PIOD_REHLSR (*(WoReg*)0x400E14D4U) /**< \brief (PIOD) Rising Edge/ High Level Select Register */ +#define REG_PIOD_FRLHSR (*(RoReg*)0x400E14D8U) /**< \brief (PIOD) Fall/Rise - Low/High Status Register */ +#define REG_PIOD_LOCKSR (*(RoReg*)0x400E14E0U) /**< \brief (PIOD) Lock Status */ +#define REG_PIOD_WPMR (*(RwReg*)0x400E14E4U) /**< \brief (PIOD) Write Protect Mode Register */ +#define REG_PIOD_WPSR (*(RoReg*)0x400E14E8U) /**< \brief (PIOD) Write Protect Status Register */ +#define REG_PIOD_SCHMITT (*(RwReg*)0x400E1500U) /**< \brief (PIOD) Schmitt Trigger Register */ +#define REG_PIOD_DELAYR (*(RwReg*)0x400E1510U) /**< \brief (PIOD) IO Delay Register */ +#define REG_PIOD_PCMR (*(RwReg*)0x400E1550U) /**< \brief (PIOD) Parallel Capture Mode Register */ +#define REG_PIOD_PCIER (*(WoReg*)0x400E1554U) /**< \brief (PIOD) Parallel Capture Interrupt Enable Register */ +#define REG_PIOD_PCIDR (*(WoReg*)0x400E1558U) /**< \brief (PIOD) Parallel Capture Interrupt Disable Register */ +#define REG_PIOD_PCIMR (*(RoReg*)0x400E155CU) /**< \brief (PIOD) Parallel Capture Interrupt Mask Register */ +#define REG_PIOD_PCISR (*(RoReg*)0x400E1560U) /**< \brief (PIOD) Parallel Capture Interrupt Status Register */ +#define REG_PIOD_PCRHR (*(RoReg*)0x400E1564U) /**< \brief (PIOD) Parallel Capture Reception Holding Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_PIOD_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioe.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioe.h new file mode 100644 index 000000000..549afa1aa --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioe.h @@ -0,0 +1,158 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_PIOE_INSTANCE_ +#define _SAM4E_PIOE_INSTANCE_ + +/* ========== Register definition for PIOE peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_PIOE_PER (0x400E1600U) /**< \brief (PIOE) PIO Enable Register */ +#define REG_PIOE_PDR (0x400E1604U) /**< \brief (PIOE) PIO Disable Register */ +#define REG_PIOE_PSR (0x400E1608U) /**< \brief (PIOE) PIO Status Register */ +#define REG_PIOE_OER (0x400E1610U) /**< \brief (PIOE) Output Enable Register */ +#define REG_PIOE_ODR (0x400E1614U) /**< \brief (PIOE) Output Disable Register */ +#define REG_PIOE_OSR (0x400E1618U) /**< \brief (PIOE) Output Status Register */ +#define REG_PIOE_IFER (0x400E1620U) /**< \brief (PIOE) Glitch Input Filter Enable Register */ +#define REG_PIOE_IFDR (0x400E1624U) /**< \brief (PIOE) Glitch Input Filter Disable Register */ +#define REG_PIOE_IFSR (0x400E1628U) /**< \brief (PIOE) Glitch Input Filter Status Register */ +#define REG_PIOE_SODR (0x400E1630U) /**< \brief (PIOE) Set Output Data Register */ +#define REG_PIOE_CODR (0x400E1634U) /**< \brief (PIOE) Clear Output Data Register */ +#define REG_PIOE_ODSR (0x400E1638U) /**< \brief (PIOE) Output Data Status Register */ +#define REG_PIOE_PDSR (0x400E163CU) /**< \brief (PIOE) Pin Data Status Register */ +#define REG_PIOE_IER (0x400E1640U) /**< \brief (PIOE) Interrupt Enable Register */ +#define REG_PIOE_IDR (0x400E1644U) /**< \brief (PIOE) Interrupt Disable Register */ +#define REG_PIOE_IMR (0x400E1648U) /**< \brief (PIOE) Interrupt Mask Register */ +#define REG_PIOE_ISR (0x400E164CU) /**< \brief (PIOE) Interrupt Status Register */ +#define REG_PIOE_MDER (0x400E1650U) /**< \brief (PIOE) Multi-driver Enable Register */ +#define REG_PIOE_MDDR (0x400E1654U) /**< \brief (PIOE) Multi-driver Disable Register */ +#define REG_PIOE_MDSR (0x400E1658U) /**< \brief (PIOE) Multi-driver Status Register */ +#define REG_PIOE_PUDR (0x400E1660U) /**< \brief (PIOE) Pull-up Disable Register */ +#define REG_PIOE_PUER (0x400E1664U) /**< \brief (PIOE) Pull-up Enable Register */ +#define REG_PIOE_PUSR (0x400E1668U) /**< \brief (PIOE) Pad Pull-up Status Register */ +#define REG_PIOE_ABCDSR (0x400E1670U) /**< \brief (PIOE) Peripheral Select Register */ +#define REG_PIOE_IFSCDR (0x400E1680U) /**< \brief (PIOE) Input Filter Slow Clock Disable Register */ +#define REG_PIOE_IFSCER (0x400E1684U) /**< \brief (PIOE) Input Filter Slow Clock Enable Register */ +#define REG_PIOE_IFSCSR (0x400E1688U) /**< \brief (PIOE) Input Filter Slow Clock Status Register */ +#define REG_PIOE_SCDR (0x400E168CU) /**< \brief (PIOE) Slow Clock Divider Debouncing Register */ +#define REG_PIOE_PPDDR (0x400E1690U) /**< \brief (PIOE) Pad Pull-down Disable Register */ +#define REG_PIOE_PPDER (0x400E1694U) /**< \brief (PIOE) Pad Pull-down Enable Register */ +#define REG_PIOE_PPDSR (0x400E1698U) /**< \brief (PIOE) Pad Pull-down Status Register */ +#define REG_PIOE_OWER (0x400E16A0U) /**< \brief (PIOE) Output Write Enable */ +#define REG_PIOE_OWDR (0x400E16A4U) /**< \brief (PIOE) Output Write Disable */ +#define REG_PIOE_OWSR (0x400E16A8U) /**< \brief (PIOE) Output Write Status Register */ +#define REG_PIOE_AIMER (0x400E16B0U) /**< \brief (PIOE) Additional Interrupt Modes Enable Register */ +#define REG_PIOE_AIMDR (0x400E16B4U) /**< \brief (PIOE) Additional Interrupt Modes Disables Register */ +#define REG_PIOE_AIMMR (0x400E16B8U) /**< \brief (PIOE) Additional Interrupt Modes Mask Register */ +#define REG_PIOE_ESR (0x400E16C0U) /**< \brief (PIOE) Edge Select Register */ +#define REG_PIOE_LSR (0x400E16C4U) /**< \brief (PIOE) Level Select Register */ +#define REG_PIOE_ELSR (0x400E16C8U) /**< \brief (PIOE) Edge/Level Status Register */ +#define REG_PIOE_FELLSR (0x400E16D0U) /**< \brief (PIOE) Falling Edge/Low Level Select Register */ +#define REG_PIOE_REHLSR (0x400E16D4U) /**< \brief (PIOE) Rising Edge/ High Level Select Register */ +#define REG_PIOE_FRLHSR (0x400E16D8U) /**< \brief (PIOE) Fall/Rise - Low/High Status Register */ +#define REG_PIOE_LOCKSR (0x400E16E0U) /**< \brief (PIOE) Lock Status */ +#define REG_PIOE_WPMR (0x400E16E4U) /**< \brief (PIOE) Write Protect Mode Register */ +#define REG_PIOE_WPSR (0x400E16E8U) /**< \brief (PIOE) Write Protect Status Register */ +#define REG_PIOE_SCHMITT (0x400E1700U) /**< \brief (PIOE) Schmitt Trigger Register */ +#define REG_PIOE_DELAYR (0x400E1710U) /**< \brief (PIOE) IO Delay Register */ +#define REG_PIOE_PCMR (0x400E1750U) /**< \brief (PIOE) Parallel Capture Mode Register */ +#define REG_PIOE_PCIER (0x400E1754U) /**< \brief (PIOE) Parallel Capture Interrupt Enable Register */ +#define REG_PIOE_PCIDR (0x400E1758U) /**< \brief (PIOE) Parallel Capture Interrupt Disable Register */ +#define REG_PIOE_PCIMR (0x400E175CU) /**< \brief (PIOE) Parallel Capture Interrupt Mask Register */ +#define REG_PIOE_PCISR (0x400E1760U) /**< \brief (PIOE) Parallel Capture Interrupt Status Register */ +#define REG_PIOE_PCRHR (0x400E1764U) /**< \brief (PIOE) Parallel Capture Reception Holding Register */ +#else +#define REG_PIOE_PER (*(WoReg*)0x400E1600U) /**< \brief (PIOE) PIO Enable Register */ +#define REG_PIOE_PDR (*(WoReg*)0x400E1604U) /**< \brief (PIOE) PIO Disable Register */ +#define REG_PIOE_PSR (*(RoReg*)0x400E1608U) /**< \brief (PIOE) PIO Status Register */ +#define REG_PIOE_OER (*(WoReg*)0x400E1610U) /**< \brief (PIOE) Output Enable Register */ +#define REG_PIOE_ODR (*(WoReg*)0x400E1614U) /**< \brief (PIOE) Output Disable Register */ +#define REG_PIOE_OSR (*(RoReg*)0x400E1618U) /**< \brief (PIOE) Output Status Register */ +#define REG_PIOE_IFER (*(WoReg*)0x400E1620U) /**< \brief (PIOE) Glitch Input Filter Enable Register */ +#define REG_PIOE_IFDR (*(WoReg*)0x400E1624U) /**< \brief (PIOE) Glitch Input Filter Disable Register */ +#define REG_PIOE_IFSR (*(RoReg*)0x400E1628U) /**< \brief (PIOE) Glitch Input Filter Status Register */ +#define REG_PIOE_SODR (*(WoReg*)0x400E1630U) /**< \brief (PIOE) Set Output Data Register */ +#define REG_PIOE_CODR (*(WoReg*)0x400E1634U) /**< \brief (PIOE) Clear Output Data Register */ +#define REG_PIOE_ODSR (*(RwReg*)0x400E1638U) /**< \brief (PIOE) Output Data Status Register */ +#define REG_PIOE_PDSR (*(RoReg*)0x400E163CU) /**< \brief (PIOE) Pin Data Status Register */ +#define REG_PIOE_IER (*(WoReg*)0x400E1640U) /**< \brief (PIOE) Interrupt Enable Register */ +#define REG_PIOE_IDR (*(WoReg*)0x400E1644U) /**< \brief (PIOE) Interrupt Disable Register */ +#define REG_PIOE_IMR (*(RoReg*)0x400E1648U) /**< \brief (PIOE) Interrupt Mask Register */ +#define REG_PIOE_ISR (*(RoReg*)0x400E164CU) /**< \brief (PIOE) Interrupt Status Register */ +#define REG_PIOE_MDER (*(WoReg*)0x400E1650U) /**< \brief (PIOE) Multi-driver Enable Register */ +#define REG_PIOE_MDDR (*(WoReg*)0x400E1654U) /**< \brief (PIOE) Multi-driver Disable Register */ +#define REG_PIOE_MDSR (*(RoReg*)0x400E1658U) /**< \brief (PIOE) Multi-driver Status Register */ +#define REG_PIOE_PUDR (*(WoReg*)0x400E1660U) /**< \brief (PIOE) Pull-up Disable Register */ +#define REG_PIOE_PUER (*(WoReg*)0x400E1664U) /**< \brief (PIOE) Pull-up Enable Register */ +#define REG_PIOE_PUSR (*(RoReg*)0x400E1668U) /**< \brief (PIOE) Pad Pull-up Status Register */ +#define REG_PIOE_ABCDSR (*(RwReg*)0x400E1670U) /**< \brief (PIOE) Peripheral Select Register */ +#define REG_PIOE_IFSCDR (*(WoReg*)0x400E1680U) /**< \brief (PIOE) Input Filter Slow Clock Disable Register */ +#define REG_PIOE_IFSCER (*(WoReg*)0x400E1684U) /**< \brief (PIOE) Input Filter Slow Clock Enable Register */ +#define REG_PIOE_IFSCSR (*(RoReg*)0x400E1688U) /**< \brief (PIOE) Input Filter Slow Clock Status Register */ +#define REG_PIOE_SCDR (*(RwReg*)0x400E168CU) /**< \brief (PIOE) Slow Clock Divider Debouncing Register */ +#define REG_PIOE_PPDDR (*(WoReg*)0x400E1690U) /**< \brief (PIOE) Pad Pull-down Disable Register */ +#define REG_PIOE_PPDER (*(WoReg*)0x400E1694U) /**< \brief (PIOE) Pad Pull-down Enable Register */ +#define REG_PIOE_PPDSR (*(RoReg*)0x400E1698U) /**< \brief (PIOE) Pad Pull-down Status Register */ +#define REG_PIOE_OWER (*(WoReg*)0x400E16A0U) /**< \brief (PIOE) Output Write Enable */ +#define REG_PIOE_OWDR (*(WoReg*)0x400E16A4U) /**< \brief (PIOE) Output Write Disable */ +#define REG_PIOE_OWSR (*(RoReg*)0x400E16A8U) /**< \brief (PIOE) Output Write Status Register */ +#define REG_PIOE_AIMER (*(WoReg*)0x400E16B0U) /**< \brief (PIOE) Additional Interrupt Modes Enable Register */ +#define REG_PIOE_AIMDR (*(WoReg*)0x400E16B4U) /**< \brief (PIOE) Additional Interrupt Modes Disables Register */ +#define REG_PIOE_AIMMR (*(RoReg*)0x400E16B8U) /**< \brief (PIOE) Additional Interrupt Modes Mask Register */ +#define REG_PIOE_ESR (*(WoReg*)0x400E16C0U) /**< \brief (PIOE) Edge Select Register */ +#define REG_PIOE_LSR (*(WoReg*)0x400E16C4U) /**< \brief (PIOE) Level Select Register */ +#define REG_PIOE_ELSR (*(RoReg*)0x400E16C8U) /**< \brief (PIOE) Edge/Level Status Register */ +#define REG_PIOE_FELLSR (*(WoReg*)0x400E16D0U) /**< \brief (PIOE) Falling Edge/Low Level Select Register */ +#define REG_PIOE_REHLSR (*(WoReg*)0x400E16D4U) /**< \brief (PIOE) Rising Edge/ High Level Select Register */ +#define REG_PIOE_FRLHSR (*(RoReg*)0x400E16D8U) /**< \brief (PIOE) Fall/Rise - Low/High Status Register */ +#define REG_PIOE_LOCKSR (*(RoReg*)0x400E16E0U) /**< \brief (PIOE) Lock Status */ +#define REG_PIOE_WPMR (*(RwReg*)0x400E16E4U) /**< \brief (PIOE) Write Protect Mode Register */ +#define REG_PIOE_WPSR (*(RoReg*)0x400E16E8U) /**< \brief (PIOE) Write Protect Status Register */ +#define REG_PIOE_SCHMITT (*(RwReg*)0x400E1700U) /**< \brief (PIOE) Schmitt Trigger Register */ +#define REG_PIOE_DELAYR (*(RwReg*)0x400E1710U) /**< \brief (PIOE) IO Delay Register */ +#define REG_PIOE_PCMR (*(RwReg*)0x400E1750U) /**< \brief (PIOE) Parallel Capture Mode Register */ +#define REG_PIOE_PCIER (*(WoReg*)0x400E1754U) /**< \brief (PIOE) Parallel Capture Interrupt Enable Register */ +#define REG_PIOE_PCIDR (*(WoReg*)0x400E1758U) /**< \brief (PIOE) Parallel Capture Interrupt Disable Register */ +#define REG_PIOE_PCIMR (*(RoReg*)0x400E175CU) /**< \brief (PIOE) Parallel Capture Interrupt Mask Register */ +#define REG_PIOE_PCISR (*(RoReg*)0x400E1760U) /**< \brief (PIOE) Parallel Capture Interrupt Status Register */ +#define REG_PIOE_PCRHR (*(RoReg*)0x400E1764U) /**< \brief (PIOE) Parallel Capture Reception Holding Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_PIOE_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pmc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pmc.h new file mode 100644 index 000000000..69a38e88f --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pmc.h @@ -0,0 +1,100 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_PMC_INSTANCE_ +#define _SAM4E_PMC_INSTANCE_ + +/* ========== Register definition for PMC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_PMC_SCER (0x400E0400U) /**< \brief (PMC) System Clock Enable Register */ +#define REG_PMC_SCDR (0x400E0404U) /**< \brief (PMC) System Clock Disable Register */ +#define REG_PMC_SCSR (0x400E0408U) /**< \brief (PMC) System Clock Status Register */ +#define REG_PMC_PCER0 (0x400E0410U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ +#define REG_PMC_PCDR0 (0x400E0414U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ +#define REG_PMC_PCSR0 (0x400E0418U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ +#define REG_CKGR_MOR (0x400E0420U) /**< \brief (PMC) Main Oscillator Register */ +#define REG_CKGR_MCFR (0x400E0424U) /**< \brief (PMC) Main Clock Frequency Register */ +#define REG_CKGR_PLLAR (0x400E0428U) /**< \brief (PMC) PLLA Register */ +#define REG_PMC_MCKR (0x400E0430U) /**< \brief (PMC) Master Clock Register */ +#define REG_PMC_USB (0x400E0438U) /**< \brief (PMC) USB Clock Register */ +#define REG_PMC_PCK (0x400E0440U) /**< \brief (PMC) Programmable Clock 0 Register */ +#define REG_PMC_IER (0x400E0460U) /**< \brief (PMC) Interrupt Enable Register */ +#define REG_PMC_IDR (0x400E0464U) /**< \brief (PMC) Interrupt Disable Register */ +#define REG_PMC_SR (0x400E0468U) /**< \brief (PMC) Status Register */ +#define REG_PMC_IMR (0x400E046CU) /**< \brief (PMC) Interrupt Mask Register */ +#define REG_PMC_FSMR (0x400E0470U) /**< \brief (PMC) Fast Start-up Mode Register */ +#define REG_PMC_FSPR (0x400E0474U) /**< \brief (PMC) Fast Start-up Polarity Register */ +#define REG_PMC_FOCR (0x400E0478U) /**< \brief (PMC) Fault Output Clear Register */ +#define REG_PMC_WPMR (0x400E04E4U) /**< \brief (PMC) Write Protect Mode Register */ +#define REG_PMC_WPSR (0x400E04E8U) /**< \brief (PMC) Write Protect Status Register */ +#define REG_PMC_PCER1 (0x400E0500U) /**< \brief (PMC) Peripheral Clock Enable Register 1 */ +#define REG_PMC_PCDR1 (0x400E0504U) /**< \brief (PMC) Peripheral Clock Disable Register 1 */ +#define REG_PMC_PCSR1 (0x400E0508U) /**< \brief (PMC) Peripheral Clock Status Register 1 */ +#define REG_PMC_OCR (0x400E0510U) /**< \brief (PMC) Oscillator Calibration Register */ +#else +#define REG_PMC_SCER (*(WoReg*)0x400E0400U) /**< \brief (PMC) System Clock Enable Register */ +#define REG_PMC_SCDR (*(WoReg*)0x400E0404U) /**< \brief (PMC) System Clock Disable Register */ +#define REG_PMC_SCSR (*(RoReg*)0x400E0408U) /**< \brief (PMC) System Clock Status Register */ +#define REG_PMC_PCER0 (*(WoReg*)0x400E0410U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ +#define REG_PMC_PCDR0 (*(WoReg*)0x400E0414U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ +#define REG_PMC_PCSR0 (*(RoReg*)0x400E0418U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ +#define REG_CKGR_MOR (*(RwReg*)0x400E0420U) /**< \brief (PMC) Main Oscillator Register */ +#define REG_CKGR_MCFR (*(RwReg*)0x400E0424U) /**< \brief (PMC) Main Clock Frequency Register */ +#define REG_CKGR_PLLAR (*(RwReg*)0x400E0428U) /**< \brief (PMC) PLLA Register */ +#define REG_PMC_MCKR (*(RwReg*)0x400E0430U) /**< \brief (PMC) Master Clock Register */ +#define REG_PMC_USB (*(RwReg*)0x400E0438U) /**< \brief (PMC) USB Clock Register */ +#define REG_PMC_PCK (*(RwReg*)0x400E0440U) /**< \brief (PMC) Programmable Clock 0 Register */ +#define REG_PMC_IER (*(WoReg*)0x400E0460U) /**< \brief (PMC) Interrupt Enable Register */ +#define REG_PMC_IDR (*(WoReg*)0x400E0464U) /**< \brief (PMC) Interrupt Disable Register */ +#define REG_PMC_SR (*(RoReg*)0x400E0468U) /**< \brief (PMC) Status Register */ +#define REG_PMC_IMR (*(RoReg*)0x400E046CU) /**< \brief (PMC) Interrupt Mask Register */ +#define REG_PMC_FSMR (*(RwReg*)0x400E0470U) /**< \brief (PMC) Fast Start-up Mode Register */ +#define REG_PMC_FSPR (*(RwReg*)0x400E0474U) /**< \brief (PMC) Fast Start-up Polarity Register */ +#define REG_PMC_FOCR (*(WoReg*)0x400E0478U) /**< \brief (PMC) Fault Output Clear Register */ +#define REG_PMC_WPMR (*(RwReg*)0x400E04E4U) /**< \brief (PMC) Write Protect Mode Register */ +#define REG_PMC_WPSR (*(RoReg*)0x400E04E8U) /**< \brief (PMC) Write Protect Status Register */ +#define REG_PMC_PCER1 (*(WoReg*)0x400E0500U) /**< \brief (PMC) Peripheral Clock Enable Register 1 */ +#define REG_PMC_PCDR1 (*(WoReg*)0x400E0504U) /**< \brief (PMC) Peripheral Clock Disable Register 1 */ +#define REG_PMC_PCSR1 (*(RoReg*)0x400E0508U) /**< \brief (PMC) Peripheral Clock Status Register 1 */ +#define REG_PMC_OCR (*(RwReg*)0x400E0510U) /**< \brief (PMC) Oscillator Calibration Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_PMC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pwm.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pwm.h new file mode 100644 index 000000000..938a52e32 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pwm.h @@ -0,0 +1,282 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_PWM_INSTANCE_ +#define _SAM4E_PWM_INSTANCE_ + +/* ========== Register definition for PWM peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_PWM_CLK (0x40000000U) /**< \brief (PWM) PWM Clock Register */ +#define REG_PWM_ENA (0x40000004U) /**< \brief (PWM) PWM Enable Register */ +#define REG_PWM_DIS (0x40000008U) /**< \brief (PWM) PWM Disable Register */ +#define REG_PWM_SR (0x4000000CU) /**< \brief (PWM) PWM Status Register */ +#define REG_PWM_IER1 (0x40000010U) /**< \brief (PWM) PWM Interrupt Enable Register 1 */ +#define REG_PWM_IDR1 (0x40000014U) /**< \brief (PWM) PWM Interrupt Disable Register 1 */ +#define REG_PWM_IMR1 (0x40000018U) /**< \brief (PWM) PWM Interrupt Mask Register 1 */ +#define REG_PWM_ISR1 (0x4000001CU) /**< \brief (PWM) PWM Interrupt Status Register 1 */ +#define REG_PWM_SCM (0x40000020U) /**< \brief (PWM) PWM Sync Channels Mode Register */ +#define REG_PWM_SCUC (0x40000028U) /**< \brief (PWM) PWM Sync Channels Update Control Register */ +#define REG_PWM_SCUP (0x4000002CU) /**< \brief (PWM) PWM Sync Channels Update Period Register */ +#define REG_PWM_SCUPUPD (0x40000030U) /**< \brief (PWM) PWM Sync Channels Update Period Update Register */ +#define REG_PWM_IER2 (0x40000034U) /**< \brief (PWM) PWM Interrupt Enable Register 2 */ +#define REG_PWM_IDR2 (0x40000038U) /**< \brief (PWM) PWM Interrupt Disable Register 2 */ +#define REG_PWM_IMR2 (0x4000003CU) /**< \brief (PWM) PWM Interrupt Mask Register 2 */ +#define REG_PWM_ISR2 (0x40000040U) /**< \brief (PWM) PWM Interrupt Status Register 2 */ +#define REG_PWM_OOV (0x40000044U) /**< \brief (PWM) PWM Output Override Value Register */ +#define REG_PWM_OS (0x40000048U) /**< \brief (PWM) PWM Output Selection Register */ +#define REG_PWM_OSS (0x4000004CU) /**< \brief (PWM) PWM Output Selection Set Register */ +#define REG_PWM_OSC (0x40000050U) /**< \brief (PWM) PWM Output Selection Clear Register */ +#define REG_PWM_OSSUPD (0x40000054U) /**< \brief (PWM) PWM Output Selection Set Update Register */ +#define REG_PWM_OSCUPD (0x40000058U) /**< \brief (PWM) PWM Output Selection Clear Update Register */ +#define REG_PWM_FMR (0x4000005CU) /**< \brief (PWM) PWM Fault Mode Register */ +#define REG_PWM_FSR (0x40000060U) /**< \brief (PWM) PWM Fault Status Register */ +#define REG_PWM_FCR (0x40000064U) /**< \brief (PWM) PWM Fault Clear Register */ +#define REG_PWM_FPV1 (0x40000068U) /**< \brief (PWM) PWM Fault Protection Value Register 1 */ +#define REG_PWM_FPE (0x4000006CU) /**< \brief (PWM) PWM Fault Protection Enable Register */ +#define REG_PWM_ELMR (0x4000007CU) /**< \brief (PWM) PWM Event Line 0 Mode Register */ +#define REG_PWM_SSPR (0x400000A0U) /**< \brief (PWM) PWM Spread Spectrum Register */ +#define REG_PWM_SSPUP (0x400000A4U) /**< \brief (PWM) PWM Spread Spectrum Update Register */ +#define REG_PWM_SMMR (0x400000B0U) /**< \brief (PWM) PWM Stepper Motor Mode Register */ +#define REG_PWM_FPV2 (0x400000C0U) /**< \brief (PWM) PWM Fault Protection Value 2 Register */ +#define REG_PWM_WPCR (0x400000E4U) /**< \brief (PWM) PWM Write Protect Control Register */ +#define REG_PWM_WPSR (0x400000E8U) /**< \brief (PWM) PWM Write Protect Status Register */ +#define REG_PWM_TPR (0x40000108U) /**< \brief (PWM) Transmit Pointer Register */ +#define REG_PWM_TCR (0x4000010CU) /**< \brief (PWM) Transmit Counter Register */ +#define REG_PWM_TNPR (0x40000118U) /**< \brief (PWM) Transmit Next Pointer Register */ +#define REG_PWM_TNCR (0x4000011CU) /**< \brief (PWM) Transmit Next Counter Register */ +#define REG_PWM_PTCR (0x40000120U) /**< \brief (PWM) Transfer Control Register */ +#define REG_PWM_PTSR (0x40000124U) /**< \brief (PWM) Transfer Status Register */ +#define REG_PWM_CMPV0 (0x40000130U) /**< \brief (PWM) PWM Comparison 0 Value Register */ +#define REG_PWM_CMPVUPD0 (0x40000134U) /**< \brief (PWM) PWM Comparison 0 Value Update Register */ +#define REG_PWM_CMPM0 (0x40000138U) /**< \brief (PWM) PWM Comparison 0 Mode Register */ +#define REG_PWM_CMPMUPD0 (0x4000013CU) /**< \brief (PWM) PWM Comparison 0 Mode Update Register */ +#define REG_PWM_CMPV1 (0x40000140U) /**< \brief (PWM) PWM Comparison 1 Value Register */ +#define REG_PWM_CMPVUPD1 (0x40000144U) /**< \brief (PWM) PWM Comparison 1 Value Update Register */ +#define REG_PWM_CMPM1 (0x40000148U) /**< \brief (PWM) PWM Comparison 1 Mode Register */ +#define REG_PWM_CMPMUPD1 (0x4000014CU) /**< \brief (PWM) PWM Comparison 1 Mode Update Register */ +#define REG_PWM_CMPV2 (0x40000150U) /**< \brief (PWM) PWM Comparison 2 Value Register */ +#define REG_PWM_CMPVUPD2 (0x40000154U) /**< \brief (PWM) PWM Comparison 2 Value Update Register */ +#define REG_PWM_CMPM2 (0x40000158U) /**< \brief (PWM) PWM Comparison 2 Mode Register */ +#define REG_PWM_CMPMUPD2 (0x4000015CU) /**< \brief (PWM) PWM Comparison 2 Mode Update Register */ +#define REG_PWM_CMPV3 (0x40000160U) /**< \brief (PWM) PWM Comparison 3 Value Register */ +#define REG_PWM_CMPVUPD3 (0x40000164U) /**< \brief (PWM) PWM Comparison 3 Value Update Register */ +#define REG_PWM_CMPM3 (0x40000168U) /**< \brief (PWM) PWM Comparison 3 Mode Register */ +#define REG_PWM_CMPMUPD3 (0x4000016CU) /**< \brief (PWM) PWM Comparison 3 Mode Update Register */ +#define REG_PWM_CMPV4 (0x40000170U) /**< \brief (PWM) PWM Comparison 4 Value Register */ +#define REG_PWM_CMPVUPD4 (0x40000174U) /**< \brief (PWM) PWM Comparison 4 Value Update Register */ +#define REG_PWM_CMPM4 (0x40000178U) /**< \brief (PWM) PWM Comparison 4 Mode Register */ +#define REG_PWM_CMPMUPD4 (0x4000017CU) /**< \brief (PWM) PWM Comparison 4 Mode Update Register */ +#define REG_PWM_CMPV5 (0x40000180U) /**< \brief (PWM) PWM Comparison 5 Value Register */ +#define REG_PWM_CMPVUPD5 (0x40000184U) /**< \brief (PWM) PWM Comparison 5 Value Update Register */ +#define REG_PWM_CMPM5 (0x40000188U) /**< \brief (PWM) PWM Comparison 5 Mode Register */ +#define REG_PWM_CMPMUPD5 (0x4000018CU) /**< \brief (PWM) PWM Comparison 5 Mode Update Register */ +#define REG_PWM_CMPV6 (0x40000190U) /**< \brief (PWM) PWM Comparison 6 Value Register */ +#define REG_PWM_CMPVUPD6 (0x40000194U) /**< \brief (PWM) PWM Comparison 6 Value Update Register */ +#define REG_PWM_CMPM6 (0x40000198U) /**< \brief (PWM) PWM Comparison 6 Mode Register */ +#define REG_PWM_CMPMUPD6 (0x4000019CU) /**< \brief (PWM) PWM Comparison 6 Mode Update Register */ +#define REG_PWM_CMPV7 (0x400001A0U) /**< \brief (PWM) PWM Comparison 7 Value Register */ +#define REG_PWM_CMPVUPD7 (0x400001A4U) /**< \brief (PWM) PWM Comparison 7 Value Update Register */ +#define REG_PWM_CMPM7 (0x400001A8U) /**< \brief (PWM) PWM Comparison 7 Mode Register */ +#define REG_PWM_CMPMUPD7 (0x400001ACU) /**< \brief (PWM) PWM Comparison 7 Mode Update Register */ +#define REG_PWM_CMR0 (0x40000200U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 0) */ +#define REG_PWM_CDTY0 (0x40000204U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 0) */ +#define REG_PWM_CDTYUPD0 (0x40000208U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 0) */ +#define REG_PWM_CPRD0 (0x4000020CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 0) */ +#define REG_PWM_CPRDUPD0 (0x40000210U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 0) */ +#define REG_PWM_CCNT0 (0x40000214U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 0) */ +#define REG_PWM_DT0 (0x40000218U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 0) */ +#define REG_PWM_DTUPD0 (0x4000021CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 0) */ +#define REG_PWM_CMR1 (0x40000220U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 1) */ +#define REG_PWM_CDTY1 (0x40000224U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 1) */ +#define REG_PWM_CDTYUPD1 (0x40000228U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 1) */ +#define REG_PWM_CPRD1 (0x4000022CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 1) */ +#define REG_PWM_CPRDUPD1 (0x40000230U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 1) */ +#define REG_PWM_CCNT1 (0x40000234U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 1) */ +#define REG_PWM_DT1 (0x40000238U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 1) */ +#define REG_PWM_DTUPD1 (0x4000023CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 1) */ +#define REG_PWM_CMR2 (0x40000240U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 2) */ +#define REG_PWM_CDTY2 (0x40000244U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 2) */ +#define REG_PWM_CDTYUPD2 (0x40000248U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 2) */ +#define REG_PWM_CPRD2 (0x4000024CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 2) */ +#define REG_PWM_CPRDUPD2 (0x40000250U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 2) */ +#define REG_PWM_CCNT2 (0x40000254U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 2) */ +#define REG_PWM_DT2 (0x40000258U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 2) */ +#define REG_PWM_DTUPD2 (0x4000025CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 2) */ +#define REG_PWM_CMR3 (0x40000260U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 3) */ +#define REG_PWM_CDTY3 (0x40000264U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 3) */ +#define REG_PWM_CDTYUPD3 (0x40000268U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 3) */ +#define REG_PWM_CPRD3 (0x4000026CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 3) */ +#define REG_PWM_CPRDUPD3 (0x40000270U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 3) */ +#define REG_PWM_CCNT3 (0x40000274U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 3) */ +#define REG_PWM_DT3 (0x40000278U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 3) */ +#define REG_PWM_DTUPD3 (0x4000027CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 3) */ +#define REG_PWM_CMUPD0 (0x40000400U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 0) */ +#define REG_PWM_CAE0 (0x40000404U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 0) */ +#define REG_PWM_CAEUPD0 (0x40000408U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 0) */ +#define REG_PWM_CMUPD1 (0x40000420U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 1) */ +#define REG_PWM_CAE1 (0x40000424U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 1) */ +#define REG_PWM_CAEUPD1 (0x40000428U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 1) */ +#define REG_PWM_CMUPD2 (0x40000440U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 2) */ +#define REG_PWM_CAE2 (0x40000444U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 2) */ +#define REG_PWM_CAEUPD2 (0x40000448U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 2) */ +#define REG_PWM_CMUPD3 (0x40000460U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 3) */ +#define REG_PWM_CAE3 (0x40000464U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 3) */ +#define REG_PWM_CAEUPD3 (0x40000468U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 3) */ +#else +#define REG_PWM_CLK (*(RwReg*)0x40000000U) /**< \brief (PWM) PWM Clock Register */ +#define REG_PWM_ENA (*(WoReg*)0x40000004U) /**< \brief (PWM) PWM Enable Register */ +#define REG_PWM_DIS (*(WoReg*)0x40000008U) /**< \brief (PWM) PWM Disable Register */ +#define REG_PWM_SR (*(RoReg*)0x4000000CU) /**< \brief (PWM) PWM Status Register */ +#define REG_PWM_IER1 (*(WoReg*)0x40000010U) /**< \brief (PWM) PWM Interrupt Enable Register 1 */ +#define REG_PWM_IDR1 (*(WoReg*)0x40000014U) /**< \brief (PWM) PWM Interrupt Disable Register 1 */ +#define REG_PWM_IMR1 (*(RoReg*)0x40000018U) /**< \brief (PWM) PWM Interrupt Mask Register 1 */ +#define REG_PWM_ISR1 (*(RoReg*)0x4000001CU) /**< \brief (PWM) PWM Interrupt Status Register 1 */ +#define REG_PWM_SCM (*(RwReg*)0x40000020U) /**< \brief (PWM) PWM Sync Channels Mode Register */ +#define REG_PWM_SCUC (*(RwReg*)0x40000028U) /**< \brief (PWM) PWM Sync Channels Update Control Register */ +#define REG_PWM_SCUP (*(RwReg*)0x4000002CU) /**< \brief (PWM) PWM Sync Channels Update Period Register */ +#define REG_PWM_SCUPUPD (*(WoReg*)0x40000030U) /**< \brief (PWM) PWM Sync Channels Update Period Update Register */ +#define REG_PWM_IER2 (*(WoReg*)0x40000034U) /**< \brief (PWM) PWM Interrupt Enable Register 2 */ +#define REG_PWM_IDR2 (*(WoReg*)0x40000038U) /**< \brief (PWM) PWM Interrupt Disable Register 2 */ +#define REG_PWM_IMR2 (*(RoReg*)0x4000003CU) /**< \brief (PWM) PWM Interrupt Mask Register 2 */ +#define REG_PWM_ISR2 (*(RoReg*)0x40000040U) /**< \brief (PWM) PWM Interrupt Status Register 2 */ +#define REG_PWM_OOV (*(RwReg*)0x40000044U) /**< \brief (PWM) PWM Output Override Value Register */ +#define REG_PWM_OS (*(RwReg*)0x40000048U) /**< \brief (PWM) PWM Output Selection Register */ +#define REG_PWM_OSS (*(WoReg*)0x4000004CU) /**< \brief (PWM) PWM Output Selection Set Register */ +#define REG_PWM_OSC (*(WoReg*)0x40000050U) /**< \brief (PWM) PWM Output Selection Clear Register */ +#define REG_PWM_OSSUPD (*(WoReg*)0x40000054U) /**< \brief (PWM) PWM Output Selection Set Update Register */ +#define REG_PWM_OSCUPD (*(WoReg*)0x40000058U) /**< \brief (PWM) PWM Output Selection Clear Update Register */ +#define REG_PWM_FMR (*(RwReg*)0x4000005CU) /**< \brief (PWM) PWM Fault Mode Register */ +#define REG_PWM_FSR (*(RoReg*)0x40000060U) /**< \brief (PWM) PWM Fault Status Register */ +#define REG_PWM_FCR (*(WoReg*)0x40000064U) /**< \brief (PWM) PWM Fault Clear Register */ +#define REG_PWM_FPV1 (*(RwReg*)0x40000068U) /**< \brief (PWM) PWM Fault Protection Value Register 1 */ +#define REG_PWM_FPE (*(RwReg*)0x4000006CU) /**< \brief (PWM) PWM Fault Protection Enable Register */ +#define REG_PWM_ELMR (*(RwReg*)0x4000007CU) /**< \brief (PWM) PWM Event Line 0 Mode Register */ +#define REG_PWM_SSPR (*(RwReg*)0x400000A0U) /**< \brief (PWM) PWM Spread Spectrum Register */ +#define REG_PWM_SSPUP (*(WoReg*)0x400000A4U) /**< \brief (PWM) PWM Spread Spectrum Update Register */ +#define REG_PWM_SMMR (*(RwReg*)0x400000B0U) /**< \brief (PWM) PWM Stepper Motor Mode Register */ +#define REG_PWM_FPV2 (*(RwReg*)0x400000C0U) /**< \brief (PWM) PWM Fault Protection Value 2 Register */ +#define REG_PWM_WPCR (*(WoReg*)0x400000E4U) /**< \brief (PWM) PWM Write Protect Control Register */ +#define REG_PWM_WPSR (*(RoReg*)0x400000E8U) /**< \brief (PWM) PWM Write Protect Status Register */ +#define REG_PWM_TPR (*(RwReg*)0x40000108U) /**< \brief (PWM) Transmit Pointer Register */ +#define REG_PWM_TCR (*(RwReg*)0x4000010CU) /**< \brief (PWM) Transmit Counter Register */ +#define REG_PWM_TNPR (*(RwReg*)0x40000118U) /**< \brief (PWM) Transmit Next Pointer Register */ +#define REG_PWM_TNCR (*(RwReg*)0x4000011CU) /**< \brief (PWM) Transmit Next Counter Register */ +#define REG_PWM_PTCR (*(WoReg*)0x40000120U) /**< \brief (PWM) Transfer Control Register */ +#define REG_PWM_PTSR (*(RoReg*)0x40000124U) /**< \brief (PWM) Transfer Status Register */ +#define REG_PWM_CMPV0 (*(RwReg*)0x40000130U) /**< \brief (PWM) PWM Comparison 0 Value Register */ +#define REG_PWM_CMPVUPD0 (*(WoReg*)0x40000134U) /**< \brief (PWM) PWM Comparison 0 Value Update Register */ +#define REG_PWM_CMPM0 (*(RwReg*)0x40000138U) /**< \brief (PWM) PWM Comparison 0 Mode Register */ +#define REG_PWM_CMPMUPD0 (*(WoReg*)0x4000013CU) /**< \brief (PWM) PWM Comparison 0 Mode Update Register */ +#define REG_PWM_CMPV1 (*(RwReg*)0x40000140U) /**< \brief (PWM) PWM Comparison 1 Value Register */ +#define REG_PWM_CMPVUPD1 (*(WoReg*)0x40000144U) /**< \brief (PWM) PWM Comparison 1 Value Update Register */ +#define REG_PWM_CMPM1 (*(RwReg*)0x40000148U) /**< \brief (PWM) PWM Comparison 1 Mode Register */ +#define REG_PWM_CMPMUPD1 (*(WoReg*)0x4000014CU) /**< \brief (PWM) PWM Comparison 1 Mode Update Register */ +#define REG_PWM_CMPV2 (*(RwReg*)0x40000150U) /**< \brief (PWM) PWM Comparison 2 Value Register */ +#define REG_PWM_CMPVUPD2 (*(WoReg*)0x40000154U) /**< \brief (PWM) PWM Comparison 2 Value Update Register */ +#define REG_PWM_CMPM2 (*(RwReg*)0x40000158U) /**< \brief (PWM) PWM Comparison 2 Mode Register */ +#define REG_PWM_CMPMUPD2 (*(WoReg*)0x4000015CU) /**< \brief (PWM) PWM Comparison 2 Mode Update Register */ +#define REG_PWM_CMPV3 (*(RwReg*)0x40000160U) /**< \brief (PWM) PWM Comparison 3 Value Register */ +#define REG_PWM_CMPVUPD3 (*(WoReg*)0x40000164U) /**< \brief (PWM) PWM Comparison 3 Value Update Register */ +#define REG_PWM_CMPM3 (*(RwReg*)0x40000168U) /**< \brief (PWM) PWM Comparison 3 Mode Register */ +#define REG_PWM_CMPMUPD3 (*(WoReg*)0x4000016CU) /**< \brief (PWM) PWM Comparison 3 Mode Update Register */ +#define REG_PWM_CMPV4 (*(RwReg*)0x40000170U) /**< \brief (PWM) PWM Comparison 4 Value Register */ +#define REG_PWM_CMPVUPD4 (*(WoReg*)0x40000174U) /**< \brief (PWM) PWM Comparison 4 Value Update Register */ +#define REG_PWM_CMPM4 (*(RwReg*)0x40000178U) /**< \brief (PWM) PWM Comparison 4 Mode Register */ +#define REG_PWM_CMPMUPD4 (*(WoReg*)0x4000017CU) /**< \brief (PWM) PWM Comparison 4 Mode Update Register */ +#define REG_PWM_CMPV5 (*(RwReg*)0x40000180U) /**< \brief (PWM) PWM Comparison 5 Value Register */ +#define REG_PWM_CMPVUPD5 (*(WoReg*)0x40000184U) /**< \brief (PWM) PWM Comparison 5 Value Update Register */ +#define REG_PWM_CMPM5 (*(RwReg*)0x40000188U) /**< \brief (PWM) PWM Comparison 5 Mode Register */ +#define REG_PWM_CMPMUPD5 (*(WoReg*)0x4000018CU) /**< \brief (PWM) PWM Comparison 5 Mode Update Register */ +#define REG_PWM_CMPV6 (*(RwReg*)0x40000190U) /**< \brief (PWM) PWM Comparison 6 Value Register */ +#define REG_PWM_CMPVUPD6 (*(WoReg*)0x40000194U) /**< \brief (PWM) PWM Comparison 6 Value Update Register */ +#define REG_PWM_CMPM6 (*(RwReg*)0x40000198U) /**< \brief (PWM) PWM Comparison 6 Mode Register */ +#define REG_PWM_CMPMUPD6 (*(WoReg*)0x4000019CU) /**< \brief (PWM) PWM Comparison 6 Mode Update Register */ +#define REG_PWM_CMPV7 (*(RwReg*)0x400001A0U) /**< \brief (PWM) PWM Comparison 7 Value Register */ +#define REG_PWM_CMPVUPD7 (*(WoReg*)0x400001A4U) /**< \brief (PWM) PWM Comparison 7 Value Update Register */ +#define REG_PWM_CMPM7 (*(RwReg*)0x400001A8U) /**< \brief (PWM) PWM Comparison 7 Mode Register */ +#define REG_PWM_CMPMUPD7 (*(WoReg*)0x400001ACU) /**< \brief (PWM) PWM Comparison 7 Mode Update Register */ +#define REG_PWM_CMR0 (*(RwReg*)0x40000200U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 0) */ +#define REG_PWM_CDTY0 (*(RwReg*)0x40000204U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 0) */ +#define REG_PWM_CDTYUPD0 (*(WoReg*)0x40000208U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 0) */ +#define REG_PWM_CPRD0 (*(RwReg*)0x4000020CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 0) */ +#define REG_PWM_CPRDUPD0 (*(WoReg*)0x40000210U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 0) */ +#define REG_PWM_CCNT0 (*(RoReg*)0x40000214U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 0) */ +#define REG_PWM_DT0 (*(RwReg*)0x40000218U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 0) */ +#define REG_PWM_DTUPD0 (*(WoReg*)0x4000021CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 0) */ +#define REG_PWM_CMR1 (*(RwReg*)0x40000220U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 1) */ +#define REG_PWM_CDTY1 (*(RwReg*)0x40000224U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 1) */ +#define REG_PWM_CDTYUPD1 (*(WoReg*)0x40000228U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 1) */ +#define REG_PWM_CPRD1 (*(RwReg*)0x4000022CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 1) */ +#define REG_PWM_CPRDUPD1 (*(WoReg*)0x40000230U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 1) */ +#define REG_PWM_CCNT1 (*(RoReg*)0x40000234U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 1) */ +#define REG_PWM_DT1 (*(RwReg*)0x40000238U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 1) */ +#define REG_PWM_DTUPD1 (*(WoReg*)0x4000023CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 1) */ +#define REG_PWM_CMR2 (*(RwReg*)0x40000240U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 2) */ +#define REG_PWM_CDTY2 (*(RwReg*)0x40000244U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 2) */ +#define REG_PWM_CDTYUPD2 (*(WoReg*)0x40000248U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 2) */ +#define REG_PWM_CPRD2 (*(RwReg*)0x4000024CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 2) */ +#define REG_PWM_CPRDUPD2 (*(WoReg*)0x40000250U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 2) */ +#define REG_PWM_CCNT2 (*(RoReg*)0x40000254U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 2) */ +#define REG_PWM_DT2 (*(RwReg*)0x40000258U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 2) */ +#define REG_PWM_DTUPD2 (*(WoReg*)0x4000025CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 2) */ +#define REG_PWM_CMR3 (*(RwReg*)0x40000260U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 3) */ +#define REG_PWM_CDTY3 (*(RwReg*)0x40000264U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 3) */ +#define REG_PWM_CDTYUPD3 (*(WoReg*)0x40000268U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 3) */ +#define REG_PWM_CPRD3 (*(RwReg*)0x4000026CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 3) */ +#define REG_PWM_CPRDUPD3 (*(WoReg*)0x40000270U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 3) */ +#define REG_PWM_CCNT3 (*(RoReg*)0x40000274U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 3) */ +#define REG_PWM_DT3 (*(RwReg*)0x40000278U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 3) */ +#define REG_PWM_DTUPD3 (*(WoReg*)0x4000027CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 3) */ +#define REG_PWM_CMUPD0 (*(WoReg*)0x40000400U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 0) */ +#define REG_PWM_CAE0 (*(RwReg*)0x40000404U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 0) */ +#define REG_PWM_CAEUPD0 (*(WoReg*)0x40000408U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 0) */ +#define REG_PWM_CMUPD1 (*(WoReg*)0x40000420U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 1) */ +#define REG_PWM_CAE1 (*(RwReg*)0x40000424U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 1) */ +#define REG_PWM_CAEUPD1 (*(WoReg*)0x40000428U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 1) */ +#define REG_PWM_CMUPD2 (*(WoReg*)0x40000440U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 2) */ +#define REG_PWM_CAE2 (*(RwReg*)0x40000444U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 2) */ +#define REG_PWM_CAEUPD2 (*(WoReg*)0x40000448U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 2) */ +#define REG_PWM_CMUPD3 (*(WoReg*)0x40000460U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 3) */ +#define REG_PWM_CAE3 (*(RwReg*)0x40000464U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 3) */ +#define REG_PWM_CAEUPD3 (*(WoReg*)0x40000468U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 3) */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_PWM_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rstc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rstc.h new file mode 100644 index 000000000..9321bea4a --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rstc.h @@ -0,0 +1,56 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_RSTC_INSTANCE_ +#define _SAM4E_RSTC_INSTANCE_ + +/* ========== Register definition for RSTC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_RSTC_CR (0x400E1800U) /**< \brief (RSTC) Control Register */ +#define REG_RSTC_SR (0x400E1804U) /**< \brief (RSTC) Status Register */ +#define REG_RSTC_MR (0x400E1808U) /**< \brief (RSTC) Mode Register */ +#else +#define REG_RSTC_CR (*(WoReg*)0x400E1800U) /**< \brief (RSTC) Control Register */ +#define REG_RSTC_SR (*(RoReg*)0x400E1804U) /**< \brief (RSTC) Status Register */ +#define REG_RSTC_MR (*(RwReg*)0x400E1808U) /**< \brief (RSTC) Mode Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_RSTC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rswdt.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rswdt.h new file mode 100644 index 000000000..b6454d2e4 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rswdt.h @@ -0,0 +1,56 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_RSWDT_INSTANCE_ +#define _SAM4E_RSWDT_INSTANCE_ + +/* ========== Register definition for RSWDT peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_RSWDT_CR (0x400E1900U) /**< \brief (RSWDT) Control Register */ +#define REG_RSWDT_MR (0x400E1904U) /**< \brief (RSWDT) Mode Register */ +#define REG_RSWDT_SR (0x400E1908U) /**< \brief (RSWDT) Status Register */ +#else +#define REG_RSWDT_CR (*(WoReg*)0x400E1900U) /**< \brief (RSWDT) Control Register */ +#define REG_RSWDT_MR (*(RwReg*)0x400E1904U) /**< \brief (RSWDT) Mode Register */ +#define REG_RSWDT_SR (*(RoReg*)0x400E1908U) /**< \brief (RSWDT) Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_RSWDT_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rtc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rtc.h new file mode 100644 index 000000000..fa9743d38 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rtc.h @@ -0,0 +1,74 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_RTC_INSTANCE_ +#define _SAM4E_RTC_INSTANCE_ + +/* ========== Register definition for RTC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_RTC_CR (0x400E1860U) /**< \brief (RTC) Control Register */ +#define REG_RTC_MR (0x400E1864U) /**< \brief (RTC) Mode Register */ +#define REG_RTC_TIMR (0x400E1868U) /**< \brief (RTC) Time Register */ +#define REG_RTC_CALR (0x400E186CU) /**< \brief (RTC) Calendar Register */ +#define REG_RTC_TIMALR (0x400E1870U) /**< \brief (RTC) Time Alarm Register */ +#define REG_RTC_CALALR (0x400E1874U) /**< \brief (RTC) Calendar Alarm Register */ +#define REG_RTC_SR (0x400E1878U) /**< \brief (RTC) Status Register */ +#define REG_RTC_SCCR (0x400E187CU) /**< \brief (RTC) Status Clear Command Register */ +#define REG_RTC_IER (0x400E1880U) /**< \brief (RTC) Interrupt Enable Register */ +#define REG_RTC_IDR (0x400E1884U) /**< \brief (RTC) Interrupt Disable Register */ +#define REG_RTC_IMR (0x400E1888U) /**< \brief (RTC) Interrupt Mask Register */ +#define REG_RTC_VER (0x400E188CU) /**< \brief (RTC) Valid Entry Register */ +#else +#define REG_RTC_CR (*(RwReg*)0x400E1860U) /**< \brief (RTC) Control Register */ +#define REG_RTC_MR (*(RwReg*)0x400E1864U) /**< \brief (RTC) Mode Register */ +#define REG_RTC_TIMR (*(RwReg*)0x400E1868U) /**< \brief (RTC) Time Register */ +#define REG_RTC_CALR (*(RwReg*)0x400E186CU) /**< \brief (RTC) Calendar Register */ +#define REG_RTC_TIMALR (*(RwReg*)0x400E1870U) /**< \brief (RTC) Time Alarm Register */ +#define REG_RTC_CALALR (*(RwReg*)0x400E1874U) /**< \brief (RTC) Calendar Alarm Register */ +#define REG_RTC_SR (*(RoReg*)0x400E1878U) /**< \brief (RTC) Status Register */ +#define REG_RTC_SCCR (*(WoReg*)0x400E187CU) /**< \brief (RTC) Status Clear Command Register */ +#define REG_RTC_IER (*(WoReg*)0x400E1880U) /**< \brief (RTC) Interrupt Enable Register */ +#define REG_RTC_IDR (*(WoReg*)0x400E1884U) /**< \brief (RTC) Interrupt Disable Register */ +#define REG_RTC_IMR (*(RoReg*)0x400E1888U) /**< \brief (RTC) Interrupt Mask Register */ +#define REG_RTC_VER (*(RoReg*)0x400E188CU) /**< \brief (RTC) Valid Entry Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_RTC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rtt.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rtt.h new file mode 100644 index 000000000..f8ac96ca0 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rtt.h @@ -0,0 +1,58 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_RTT_INSTANCE_ +#define _SAM4E_RTT_INSTANCE_ + +/* ========== Register definition for RTT peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_RTT_MR (0x400E1830U) /**< \brief (RTT) Mode Register */ +#define REG_RTT_AR (0x400E1834U) /**< \brief (RTT) Alarm Register */ +#define REG_RTT_VR (0x400E1838U) /**< \brief (RTT) Value Register */ +#define REG_RTT_SR (0x400E183CU) /**< \brief (RTT) Status Register */ +#else +#define REG_RTT_MR (*(RwReg*)0x400E1830U) /**< \brief (RTT) Mode Register */ +#define REG_RTT_AR (*(RwReg*)0x400E1834U) /**< \brief (RTT) Alarm Register */ +#define REG_RTT_VR (*(RoReg*)0x400E1838U) /**< \brief (RTT) Value Register */ +#define REG_RTT_SR (*(RoReg*)0x400E183CU) /**< \brief (RTT) Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_RTT_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/smc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/smc.h new file mode 100644 index 000000000..3906fdd33 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/smc.h @@ -0,0 +1,92 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_SMC_INSTANCE_ +#define _SAM4E_SMC_INSTANCE_ + +/* ========== Register definition for SMC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_SMC_SETUP0 (0x40060000U) /**< \brief (SMC) SMC Setup Register (CS_number = 0) */ +#define REG_SMC_PULSE0 (0x40060004U) /**< \brief (SMC) SMC Pulse Register (CS_number = 0) */ +#define REG_SMC_CYCLE0 (0x40060008U) /**< \brief (SMC) SMC Cycle Register (CS_number = 0) */ +#define REG_SMC_MODE0 (0x4006000CU) /**< \brief (SMC) SMC Mode Register (CS_number = 0) */ +#define REG_SMC_SETUP1 (0x40060010U) /**< \brief (SMC) SMC Setup Register (CS_number = 1) */ +#define REG_SMC_PULSE1 (0x40060014U) /**< \brief (SMC) SMC Pulse Register (CS_number = 1) */ +#define REG_SMC_CYCLE1 (0x40060018U) /**< \brief (SMC) SMC Cycle Register (CS_number = 1) */ +#define REG_SMC_MODE1 (0x4006001CU) /**< \brief (SMC) SMC Mode Register (CS_number = 1) */ +#define REG_SMC_SETUP2 (0x40060020U) /**< \brief (SMC) SMC Setup Register (CS_number = 2) */ +#define REG_SMC_PULSE2 (0x40060024U) /**< \brief (SMC) SMC Pulse Register (CS_number = 2) */ +#define REG_SMC_CYCLE2 (0x40060028U) /**< \brief (SMC) SMC Cycle Register (CS_number = 2) */ +#define REG_SMC_MODE2 (0x4006002CU) /**< \brief (SMC) SMC Mode Register (CS_number = 2) */ +#define REG_SMC_SETUP3 (0x40060030U) /**< \brief (SMC) SMC Setup Register (CS_number = 3) */ +#define REG_SMC_PULSE3 (0x40060034U) /**< \brief (SMC) SMC Pulse Register (CS_number = 3) */ +#define REG_SMC_CYCLE3 (0x40060038U) /**< \brief (SMC) SMC Cycle Register (CS_number = 3) */ +#define REG_SMC_MODE3 (0x4006003CU) /**< \brief (SMC) SMC Mode Register (CS_number = 3) */ +#define REG_SMC_OCMS (0x40060080U) /**< \brief (SMC) SMC OCMS MODE Register */ +#define REG_SMC_KEY1 (0x40060084U) /**< \brief (SMC) SMC OCMS KEY1 Register */ +#define REG_SMC_KEY2 (0x40060088U) /**< \brief (SMC) SMC OCMS KEY2 Register */ +#define REG_SMC_WPMR (0x400600E4U) /**< \brief (SMC) SMC Write Protect Mode Register */ +#define REG_SMC_WPSR (0x400600E8U) /**< \brief (SMC) SMC Write Protect Status Register */ +#else +#define REG_SMC_SETUP0 (*(RwReg*)0x40060000U) /**< \brief (SMC) SMC Setup Register (CS_number = 0) */ +#define REG_SMC_PULSE0 (*(RwReg*)0x40060004U) /**< \brief (SMC) SMC Pulse Register (CS_number = 0) */ +#define REG_SMC_CYCLE0 (*(RwReg*)0x40060008U) /**< \brief (SMC) SMC Cycle Register (CS_number = 0) */ +#define REG_SMC_MODE0 (*(RwReg*)0x4006000CU) /**< \brief (SMC) SMC Mode Register (CS_number = 0) */ +#define REG_SMC_SETUP1 (*(RwReg*)0x40060010U) /**< \brief (SMC) SMC Setup Register (CS_number = 1) */ +#define REG_SMC_PULSE1 (*(RwReg*)0x40060014U) /**< \brief (SMC) SMC Pulse Register (CS_number = 1) */ +#define REG_SMC_CYCLE1 (*(RwReg*)0x40060018U) /**< \brief (SMC) SMC Cycle Register (CS_number = 1) */ +#define REG_SMC_MODE1 (*(RwReg*)0x4006001CU) /**< \brief (SMC) SMC Mode Register (CS_number = 1) */ +#define REG_SMC_SETUP2 (*(RwReg*)0x40060020U) /**< \brief (SMC) SMC Setup Register (CS_number = 2) */ +#define REG_SMC_PULSE2 (*(RwReg*)0x40060024U) /**< \brief (SMC) SMC Pulse Register (CS_number = 2) */ +#define REG_SMC_CYCLE2 (*(RwReg*)0x40060028U) /**< \brief (SMC) SMC Cycle Register (CS_number = 2) */ +#define REG_SMC_MODE2 (*(RwReg*)0x4006002CU) /**< \brief (SMC) SMC Mode Register (CS_number = 2) */ +#define REG_SMC_SETUP3 (*(RwReg*)0x40060030U) /**< \brief (SMC) SMC Setup Register (CS_number = 3) */ +#define REG_SMC_PULSE3 (*(RwReg*)0x40060034U) /**< \brief (SMC) SMC Pulse Register (CS_number = 3) */ +#define REG_SMC_CYCLE3 (*(RwReg*)0x40060038U) /**< \brief (SMC) SMC Cycle Register (CS_number = 3) */ +#define REG_SMC_MODE3 (*(RwReg*)0x4006003CU) /**< \brief (SMC) SMC Mode Register (CS_number = 3) */ +#define REG_SMC_OCMS (*(RwReg*)0x40060080U) /**< \brief (SMC) SMC OCMS MODE Register */ +#define REG_SMC_KEY1 (*(WoReg*)0x40060084U) /**< \brief (SMC) SMC OCMS KEY1 Register */ +#define REG_SMC_KEY2 (*(WoReg*)0x40060088U) /**< \brief (SMC) SMC OCMS KEY2 Register */ +#define REG_SMC_WPMR (*(RwReg*)0x400600E4U) /**< \brief (SMC) SMC Write Protect Mode Register */ +#define REG_SMC_WPSR (*(RoReg*)0x400600E8U) /**< \brief (SMC) SMC Write Protect Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_SMC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/spi.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/spi.h new file mode 100644 index 000000000..4deb7aea2 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/spi.h @@ -0,0 +1,92 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_SPI_INSTANCE_ +#define _SAM4E_SPI_INSTANCE_ + +/* ========== Register definition for SPI peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_SPI_CR (0x40088000U) /**< \brief (SPI) Control Register */ +#define REG_SPI_MR (0x40088004U) /**< \brief (SPI) Mode Register */ +#define REG_SPI_RDR (0x40088008U) /**< \brief (SPI) Receive Data Register */ +#define REG_SPI_TDR (0x4008800CU) /**< \brief (SPI) Transmit Data Register */ +#define REG_SPI_SR (0x40088010U) /**< \brief (SPI) Status Register */ +#define REG_SPI_IER (0x40088014U) /**< \brief (SPI) Interrupt Enable Register */ +#define REG_SPI_IDR (0x40088018U) /**< \brief (SPI) Interrupt Disable Register */ +#define REG_SPI_IMR (0x4008801CU) /**< \brief (SPI) Interrupt Mask Register */ +#define REG_SPI_CSR (0x40088030U) /**< \brief (SPI) Chip Select Register */ +#define REG_SPI_WPMR (0x400880E4U) /**< \brief (SPI) Write Protection Control Register */ +#define REG_SPI_WPSR (0x400880E8U) /**< \brief (SPI) Write Protection Status Register */ +#define REG_SPI_RPR (0x40088100U) /**< \brief (SPI) Receive Pointer Register */ +#define REG_SPI_RCR (0x40088104U) /**< \brief (SPI) Receive Counter Register */ +#define REG_SPI_TPR (0x40088108U) /**< \brief (SPI) Transmit Pointer Register */ +#define REG_SPI_TCR (0x4008810CU) /**< \brief (SPI) Transmit Counter Register */ +#define REG_SPI_RNPR (0x40088110U) /**< \brief (SPI) Receive Next Pointer Register */ +#define REG_SPI_RNCR (0x40088114U) /**< \brief (SPI) Receive Next Counter Register */ +#define REG_SPI_TNPR (0x40088118U) /**< \brief (SPI) Transmit Next Pointer Register */ +#define REG_SPI_TNCR (0x4008811CU) /**< \brief (SPI) Transmit Next Counter Register */ +#define REG_SPI_PTCR (0x40088120U) /**< \brief (SPI) Transfer Control Register */ +#define REG_SPI_PTSR (0x40088124U) /**< \brief (SPI) Transfer Status Register */ +#else +#define REG_SPI_CR (*(WoReg*)0x40088000U) /**< \brief (SPI) Control Register */ +#define REG_SPI_MR (*(RwReg*)0x40088004U) /**< \brief (SPI) Mode Register */ +#define REG_SPI_RDR (*(RoReg*)0x40088008U) /**< \brief (SPI) Receive Data Register */ +#define REG_SPI_TDR (*(WoReg*)0x4008800CU) /**< \brief (SPI) Transmit Data Register */ +#define REG_SPI_SR (*(RoReg*)0x40088010U) /**< \brief (SPI) Status Register */ +#define REG_SPI_IER (*(WoReg*)0x40088014U) /**< \brief (SPI) Interrupt Enable Register */ +#define REG_SPI_IDR (*(WoReg*)0x40088018U) /**< \brief (SPI) Interrupt Disable Register */ +#define REG_SPI_IMR (*(RoReg*)0x4008801CU) /**< \brief (SPI) Interrupt Mask Register */ +#define REG_SPI_CSR (*(RwReg*)0x40088030U) /**< \brief (SPI) Chip Select Register */ +#define REG_SPI_WPMR (*(RwReg*)0x400880E4U) /**< \brief (SPI) Write Protection Control Register */ +#define REG_SPI_WPSR (*(RoReg*)0x400880E8U) /**< \brief (SPI) Write Protection Status Register */ +#define REG_SPI_RPR (*(RwReg*)0x40088100U) /**< \brief (SPI) Receive Pointer Register */ +#define REG_SPI_RCR (*(RwReg*)0x40088104U) /**< \brief (SPI) Receive Counter Register */ +#define REG_SPI_TPR (*(RwReg*)0x40088108U) /**< \brief (SPI) Transmit Pointer Register */ +#define REG_SPI_TCR (*(RwReg*)0x4008810CU) /**< \brief (SPI) Transmit Counter Register */ +#define REG_SPI_RNPR (*(RwReg*)0x40088110U) /**< \brief (SPI) Receive Next Pointer Register */ +#define REG_SPI_RNCR (*(RwReg*)0x40088114U) /**< \brief (SPI) Receive Next Counter Register */ +#define REG_SPI_TNPR (*(RwReg*)0x40088118U) /**< \brief (SPI) Transmit Next Pointer Register */ +#define REG_SPI_TNCR (*(RwReg*)0x4008811CU) /**< \brief (SPI) Transmit Next Counter Register */ +#define REG_SPI_PTCR (*(WoReg*)0x40088120U) /**< \brief (SPI) Transfer Control Register */ +#define REG_SPI_PTSR (*(RoReg*)0x40088124U) /**< \brief (SPI) Transfer Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_SPI_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/supc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/supc.h new file mode 100644 index 000000000..f38b847b9 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/supc.h @@ -0,0 +1,62 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_SUPC_INSTANCE_ +#define _SAM4E_SUPC_INSTANCE_ + +/* ========== Register definition for SUPC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_SUPC_CR (0x400E1810U) /**< \brief (SUPC) Supply Controller Control Register */ +#define REG_SUPC_SMMR (0x400E1814U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ +#define REG_SUPC_MR (0x400E1818U) /**< \brief (SUPC) Supply Controller Mode Register */ +#define REG_SUPC_WUMR (0x400E181CU) /**< \brief (SUPC) Supply Controller Wake-up Mode Register */ +#define REG_SUPC_WUIR (0x400E1820U) /**< \brief (SUPC) Supply Controller Wake-up Inputs Register */ +#define REG_SUPC_SR (0x400E1824U) /**< \brief (SUPC) Supply Controller Status Register */ +#else +#define REG_SUPC_CR (*(WoReg*)0x400E1810U) /**< \brief (SUPC) Supply Controller Control Register */ +#define REG_SUPC_SMMR (*(RwReg*)0x400E1814U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ +#define REG_SUPC_MR (*(RwReg*)0x400E1818U) /**< \brief (SUPC) Supply Controller Mode Register */ +#define REG_SUPC_WUMR (*(RwReg*)0x400E181CU) /**< \brief (SUPC) Supply Controller Wake-up Mode Register */ +#define REG_SUPC_WUIR (*(RwReg*)0x400E1820U) /**< \brief (SUPC) Supply Controller Wake-up Inputs Register */ +#define REG_SUPC_SR (*(RoReg*)0x400E1824U) /**< \brief (SUPC) Supply Controller Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_SUPC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc0.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc0.h new file mode 100644 index 000000000..4da15b553 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc0.h @@ -0,0 +1,180 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_TC0_INSTANCE_ +#define _SAM4E_TC0_INSTANCE_ + +/* ========== Register definition for TC0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_TC0_CCR0 (0x40090000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ +#define REG_TC0_CMR0 (0x40090004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ +#define REG_TC0_SMMR0 (0x40090008U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC0_RAB0 (0x4009000CU) /**< \brief (TC0) Register AB (channel = 0) */ +#define REG_TC0_CV0 (0x40090010U) /**< \brief (TC0) Counter Value (channel = 0) */ +#define REG_TC0_RA0 (0x40090014U) /**< \brief (TC0) Register A (channel = 0) */ +#define REG_TC0_RB0 (0x40090018U) /**< \brief (TC0) Register B (channel = 0) */ +#define REG_TC0_RC0 (0x4009001CU) /**< \brief (TC0) Register C (channel = 0) */ +#define REG_TC0_SR0 (0x40090020U) /**< \brief (TC0) Status Register (channel = 0) */ +#define REG_TC0_IER0 (0x40090024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ +#define REG_TC0_IDR0 (0x40090028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ +#define REG_TC0_IMR0 (0x4009002CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ +#define REG_TC0_EMR0 (0x40090030U) /**< \brief (TC0) Extended Mode Register (channel = 0) */ +#define REG_TC0_CCR1 (0x40090040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ +#define REG_TC0_CMR1 (0x40090044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ +#define REG_TC0_SMMR1 (0x40090048U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC0_RAB1 (0x4009004CU) /**< \brief (TC0) Register AB (channel = 1) */ +#define REG_TC0_CV1 (0x40090050U) /**< \brief (TC0) Counter Value (channel = 1) */ +#define REG_TC0_RA1 (0x40090054U) /**< \brief (TC0) Register A (channel = 1) */ +#define REG_TC0_RB1 (0x40090058U) /**< \brief (TC0) Register B (channel = 1) */ +#define REG_TC0_RC1 (0x4009005CU) /**< \brief (TC0) Register C (channel = 1) */ +#define REG_TC0_SR1 (0x40090060U) /**< \brief (TC0) Status Register (channel = 1) */ +#define REG_TC0_IER1 (0x40090064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ +#define REG_TC0_IDR1 (0x40090068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ +#define REG_TC0_IMR1 (0x4009006CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ +#define REG_TC0_EMR1 (0x40090070U) /**< \brief (TC0) Extended Mode Register (channel = 1) */ +#define REG_TC0_CCR2 (0x40090080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ +#define REG_TC0_CMR2 (0x40090084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ +#define REG_TC0_SMMR2 (0x40090088U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC0_RAB2 (0x4009008CU) /**< \brief (TC0) Register AB (channel = 2) */ +#define REG_TC0_CV2 (0x40090090U) /**< \brief (TC0) Counter Value (channel = 2) */ +#define REG_TC0_RA2 (0x40090094U) /**< \brief (TC0) Register A (channel = 2) */ +#define REG_TC0_RB2 (0x40090098U) /**< \brief (TC0) Register B (channel = 2) */ +#define REG_TC0_RC2 (0x4009009CU) /**< \brief (TC0) Register C (channel = 2) */ +#define REG_TC0_SR2 (0x400900A0U) /**< \brief (TC0) Status Register (channel = 2) */ +#define REG_TC0_IER2 (0x400900A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ +#define REG_TC0_IDR2 (0x400900A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ +#define REG_TC0_IMR2 (0x400900ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ +#define REG_TC0_EMR2 (0x400900B0U) /**< \brief (TC0) Extended Mode Register (channel = 2) */ +#define REG_TC0_BCR (0x400900C0U) /**< \brief (TC0) Block Control Register */ +#define REG_TC0_BMR (0x400900C4U) /**< \brief (TC0) Block Mode Register */ +#define REG_TC0_QIER (0x400900C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ +#define REG_TC0_QIDR (0x400900CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ +#define REG_TC0_QIMR (0x400900D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ +#define REG_TC0_QISR (0x400900D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ +#define REG_TC0_FMR (0x400900D8U) /**< \brief (TC0) Fault Mode Register */ +#define REG_TC0_WPMR (0x400900E4U) /**< \brief (TC0) Write Protect Mode Register */ +#define REG_TC0_RPR0 (0x40090100U) /**< \brief (TC0) Receive Pointer Register (pdc = 0) */ +#define REG_TC0_RCR0 (0x40090104U) /**< \brief (TC0) Receive Counter Register (pdc = 0) */ +#define REG_TC0_RNPR0 (0x40090110U) /**< \brief (TC0) Receive Next Pointer Register (pdc = 0) */ +#define REG_TC0_RNCR0 (0x40090114U) /**< \brief (TC0) Receive Next Counter Register (pdc = 0) */ +#define REG_TC0_PTCR0 (0x40090120U) /**< \brief (TC0) Transfer Control Register (pdc = 0) */ +#define REG_TC0_PTSR0 (0x40090124U) /**< \brief (TC0) Transfer Status Register (pdc = 0) */ +#define REG_TC0_RPR1 (0x40090140U) /**< \brief (TC0) Receive Pointer Register (pdc = 1) */ +#define REG_TC0_RCR1 (0x40090144U) /**< \brief (TC0) Receive Counter Register (pdc = 1) */ +#define REG_TC0_RNPR1 (0x40090150U) /**< \brief (TC0) Receive Next Pointer Register (pdc = 1) */ +#define REG_TC0_RNCR1 (0x40090154U) /**< \brief (TC0) Receive Next Counter Register (pdc = 1) */ +#define REG_TC0_PTCR1 (0x40090160U) /**< \brief (TC0) Transfer Control Register (pdc = 1) */ +#define REG_TC0_PTSR1 (0x40090164U) /**< \brief (TC0) Transfer Status Register (pdc = 1) */ +#define REG_TC0_RPR2 (0x40090180U) /**< \brief (TC0) Receive Pointer Register (pdc = 2) */ +#define REG_TC0_RCR2 (0x40090184U) /**< \brief (TC0) Receive Counter Register (pdc = 2) */ +#define REG_TC0_RNPR2 (0x40090190U) /**< \brief (TC0) Receive Next Pointer Register (pdc = 2) */ +#define REG_TC0_RNCR2 (0x40090194U) /**< \brief (TC0) Receive Next Counter Register (pdc = 2) */ +#define REG_TC0_PTCR2 (0x400901A0U) /**< \brief (TC0) Transfer Control Register (pdc = 2) */ +#define REG_TC0_PTSR2 (0x400901A4U) /**< \brief (TC0) Transfer Status Register (pdc = 2) */ +#else +#define REG_TC0_CCR0 (*(WoReg*)0x40090000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ +#define REG_TC0_CMR0 (*(RwReg*)0x40090004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ +#define REG_TC0_SMMR0 (*(RwReg*)0x40090008U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC0_RAB0 (*(RoReg*)0x4009000CU) /**< \brief (TC0) Register AB (channel = 0) */ +#define REG_TC0_CV0 (*(RoReg*)0x40090010U) /**< \brief (TC0) Counter Value (channel = 0) */ +#define REG_TC0_RA0 (*(RwReg*)0x40090014U) /**< \brief (TC0) Register A (channel = 0) */ +#define REG_TC0_RB0 (*(RwReg*)0x40090018U) /**< \brief (TC0) Register B (channel = 0) */ +#define REG_TC0_RC0 (*(RwReg*)0x4009001CU) /**< \brief (TC0) Register C (channel = 0) */ +#define REG_TC0_SR0 (*(RoReg*)0x40090020U) /**< \brief (TC0) Status Register (channel = 0) */ +#define REG_TC0_IER0 (*(WoReg*)0x40090024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ +#define REG_TC0_IDR0 (*(WoReg*)0x40090028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ +#define REG_TC0_IMR0 (*(RoReg*)0x4009002CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ +#define REG_TC0_EMR0 (*(RwReg*)0x40090030U) /**< \brief (TC0) Extended Mode Register (channel = 0) */ +#define REG_TC0_CCR1 (*(WoReg*)0x40090040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ +#define REG_TC0_CMR1 (*(RwReg*)0x40090044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ +#define REG_TC0_SMMR1 (*(RwReg*)0x40090048U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC0_RAB1 (*(RoReg*)0x4009004CU) /**< \brief (TC0) Register AB (channel = 1) */ +#define REG_TC0_CV1 (*(RoReg*)0x40090050U) /**< \brief (TC0) Counter Value (channel = 1) */ +#define REG_TC0_RA1 (*(RwReg*)0x40090054U) /**< \brief (TC0) Register A (channel = 1) */ +#define REG_TC0_RB1 (*(RwReg*)0x40090058U) /**< \brief (TC0) Register B (channel = 1) */ +#define REG_TC0_RC1 (*(RwReg*)0x4009005CU) /**< \brief (TC0) Register C (channel = 1) */ +#define REG_TC0_SR1 (*(RoReg*)0x40090060U) /**< \brief (TC0) Status Register (channel = 1) */ +#define REG_TC0_IER1 (*(WoReg*)0x40090064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ +#define REG_TC0_IDR1 (*(WoReg*)0x40090068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ +#define REG_TC0_IMR1 (*(RoReg*)0x4009006CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ +#define REG_TC0_EMR1 (*(RwReg*)0x40090070U) /**< \brief (TC0) Extended Mode Register (channel = 1) */ +#define REG_TC0_CCR2 (*(WoReg*)0x40090080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ +#define REG_TC0_CMR2 (*(RwReg*)0x40090084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ +#define REG_TC0_SMMR2 (*(RwReg*)0x40090088U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC0_RAB2 (*(RoReg*)0x4009008CU) /**< \brief (TC0) Register AB (channel = 2) */ +#define REG_TC0_CV2 (*(RoReg*)0x40090090U) /**< \brief (TC0) Counter Value (channel = 2) */ +#define REG_TC0_RA2 (*(RwReg*)0x40090094U) /**< \brief (TC0) Register A (channel = 2) */ +#define REG_TC0_RB2 (*(RwReg*)0x40090098U) /**< \brief (TC0) Register B (channel = 2) */ +#define REG_TC0_RC2 (*(RwReg*)0x4009009CU) /**< \brief (TC0) Register C (channel = 2) */ +#define REG_TC0_SR2 (*(RoReg*)0x400900A0U) /**< \brief (TC0) Status Register (channel = 2) */ +#define REG_TC0_IER2 (*(WoReg*)0x400900A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ +#define REG_TC0_IDR2 (*(WoReg*)0x400900A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ +#define REG_TC0_IMR2 (*(RoReg*)0x400900ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ +#define REG_TC0_EMR2 (*(RwReg*)0x400900B0U) /**< \brief (TC0) Extended Mode Register (channel = 2) */ +#define REG_TC0_BCR (*(WoReg*)0x400900C0U) /**< \brief (TC0) Block Control Register */ +#define REG_TC0_BMR (*(RwReg*)0x400900C4U) /**< \brief (TC0) Block Mode Register */ +#define REG_TC0_QIER (*(WoReg*)0x400900C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ +#define REG_TC0_QIDR (*(WoReg*)0x400900CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ +#define REG_TC0_QIMR (*(RoReg*)0x400900D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ +#define REG_TC0_QISR (*(RoReg*)0x400900D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ +#define REG_TC0_FMR (*(RwReg*)0x400900D8U) /**< \brief (TC0) Fault Mode Register */ +#define REG_TC0_WPMR (*(RwReg*)0x400900E4U) /**< \brief (TC0) Write Protect Mode Register */ +#define REG_TC0_RPR0 (*(RwReg*)0x40090100U) /**< \brief (TC0) Receive Pointer Register (pdc = 0) */ +#define REG_TC0_RCR0 (*(RwReg*)0x40090104U) /**< \brief (TC0) Receive Counter Register (pdc = 0) */ +#define REG_TC0_RNPR0 (*(RwReg*)0x40090110U) /**< \brief (TC0) Receive Next Pointer Register (pdc = 0) */ +#define REG_TC0_RNCR0 (*(RwReg*)0x40090114U) /**< \brief (TC0) Receive Next Counter Register (pdc = 0) */ +#define REG_TC0_PTCR0 (*(WoReg*)0x40090120U) /**< \brief (TC0) Transfer Control Register (pdc = 0) */ +#define REG_TC0_PTSR0 (*(RoReg*)0x40090124U) /**< \brief (TC0) Transfer Status Register (pdc = 0) */ +#define REG_TC0_RPR1 (*(RwReg*)0x40090140U) /**< \brief (TC0) Receive Pointer Register (pdc = 1) */ +#define REG_TC0_RCR1 (*(RwReg*)0x40090144U) /**< \brief (TC0) Receive Counter Register (pdc = 1) */ +#define REG_TC0_RNPR1 (*(RwReg*)0x40090150U) /**< \brief (TC0) Receive Next Pointer Register (pdc = 1) */ +#define REG_TC0_RNCR1 (*(RwReg*)0x40090154U) /**< \brief (TC0) Receive Next Counter Register (pdc = 1) */ +#define REG_TC0_PTCR1 (*(WoReg*)0x40090160U) /**< \brief (TC0) Transfer Control Register (pdc = 1) */ +#define REG_TC0_PTSR1 (*(RoReg*)0x40090164U) /**< \brief (TC0) Transfer Status Register (pdc = 1) */ +#define REG_TC0_RPR2 (*(RwReg*)0x40090180U) /**< \brief (TC0) Receive Pointer Register (pdc = 2) */ +#define REG_TC0_RCR2 (*(RwReg*)0x40090184U) /**< \brief (TC0) Receive Counter Register (pdc = 2) */ +#define REG_TC0_RNPR2 (*(RwReg*)0x40090190U) /**< \brief (TC0) Receive Next Pointer Register (pdc = 2) */ +#define REG_TC0_RNCR2 (*(RwReg*)0x40090194U) /**< \brief (TC0) Receive Next Counter Register (pdc = 2) */ +#define REG_TC0_PTCR2 (*(WoReg*)0x400901A0U) /**< \brief (TC0) Transfer Control Register (pdc = 2) */ +#define REG_TC0_PTSR2 (*(RoReg*)0x400901A4U) /**< \brief (TC0) Transfer Status Register (pdc = 2) */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_TC0_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc1.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc1.h new file mode 100644 index 000000000..2c3c5534a --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc1.h @@ -0,0 +1,180 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_TC1_INSTANCE_ +#define _SAM4E_TC1_INSTANCE_ + +/* ========== Register definition for TC1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_TC1_CCR0 (0x40094000U) /**< \brief (TC1) Channel Control Register (channel = 0) */ +#define REG_TC1_CMR0 (0x40094004U) /**< \brief (TC1) Channel Mode Register (channel = 0) */ +#define REG_TC1_SMMR0 (0x40094008U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC1_RAB0 (0x4009400CU) /**< \brief (TC1) Register AB (channel = 0) */ +#define REG_TC1_CV0 (0x40094010U) /**< \brief (TC1) Counter Value (channel = 0) */ +#define REG_TC1_RA0 (0x40094014U) /**< \brief (TC1) Register A (channel = 0) */ +#define REG_TC1_RB0 (0x40094018U) /**< \brief (TC1) Register B (channel = 0) */ +#define REG_TC1_RC0 (0x4009401CU) /**< \brief (TC1) Register C (channel = 0) */ +#define REG_TC1_SR0 (0x40094020U) /**< \brief (TC1) Status Register (channel = 0) */ +#define REG_TC1_IER0 (0x40094024U) /**< \brief (TC1) Interrupt Enable Register (channel = 0) */ +#define REG_TC1_IDR0 (0x40094028U) /**< \brief (TC1) Interrupt Disable Register (channel = 0) */ +#define REG_TC1_IMR0 (0x4009402CU) /**< \brief (TC1) Interrupt Mask Register (channel = 0) */ +#define REG_TC1_EMR0 (0x40094030U) /**< \brief (TC1) Extended Mode Register (channel = 0) */ +#define REG_TC1_CCR1 (0x40094040U) /**< \brief (TC1) Channel Control Register (channel = 1) */ +#define REG_TC1_CMR1 (0x40094044U) /**< \brief (TC1) Channel Mode Register (channel = 1) */ +#define REG_TC1_SMMR1 (0x40094048U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC1_RAB1 (0x4009404CU) /**< \brief (TC1) Register AB (channel = 1) */ +#define REG_TC1_CV1 (0x40094050U) /**< \brief (TC1) Counter Value (channel = 1) */ +#define REG_TC1_RA1 (0x40094054U) /**< \brief (TC1) Register A (channel = 1) */ +#define REG_TC1_RB1 (0x40094058U) /**< \brief (TC1) Register B (channel = 1) */ +#define REG_TC1_RC1 (0x4009405CU) /**< \brief (TC1) Register C (channel = 1) */ +#define REG_TC1_SR1 (0x40094060U) /**< \brief (TC1) Status Register (channel = 1) */ +#define REG_TC1_IER1 (0x40094064U) /**< \brief (TC1) Interrupt Enable Register (channel = 1) */ +#define REG_TC1_IDR1 (0x40094068U) /**< \brief (TC1) Interrupt Disable Register (channel = 1) */ +#define REG_TC1_IMR1 (0x4009406CU) /**< \brief (TC1) Interrupt Mask Register (channel = 1) */ +#define REG_TC1_EMR1 (0x40094070U) /**< \brief (TC1) Extended Mode Register (channel = 1) */ +#define REG_TC1_CCR2 (0x40094080U) /**< \brief (TC1) Channel Control Register (channel = 2) */ +#define REG_TC1_CMR2 (0x40094084U) /**< \brief (TC1) Channel Mode Register (channel = 2) */ +#define REG_TC1_SMMR2 (0x40094088U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC1_RAB2 (0x4009408CU) /**< \brief (TC1) Register AB (channel = 2) */ +#define REG_TC1_CV2 (0x40094090U) /**< \brief (TC1) Counter Value (channel = 2) */ +#define REG_TC1_RA2 (0x40094094U) /**< \brief (TC1) Register A (channel = 2) */ +#define REG_TC1_RB2 (0x40094098U) /**< \brief (TC1) Register B (channel = 2) */ +#define REG_TC1_RC2 (0x4009409CU) /**< \brief (TC1) Register C (channel = 2) */ +#define REG_TC1_SR2 (0x400940A0U) /**< \brief (TC1) Status Register (channel = 2) */ +#define REG_TC1_IER2 (0x400940A4U) /**< \brief (TC1) Interrupt Enable Register (channel = 2) */ +#define REG_TC1_IDR2 (0x400940A8U) /**< \brief (TC1) Interrupt Disable Register (channel = 2) */ +#define REG_TC1_IMR2 (0x400940ACU) /**< \brief (TC1) Interrupt Mask Register (channel = 2) */ +#define REG_TC1_EMR2 (0x400940B0U) /**< \brief (TC1) Extended Mode Register (channel = 2) */ +#define REG_TC1_BCR (0x400940C0U) /**< \brief (TC1) Block Control Register */ +#define REG_TC1_BMR (0x400940C4U) /**< \brief (TC1) Block Mode Register */ +#define REG_TC1_QIER (0x400940C8U) /**< \brief (TC1) QDEC Interrupt Enable Register */ +#define REG_TC1_QIDR (0x400940CCU) /**< \brief (TC1) QDEC Interrupt Disable Register */ +#define REG_TC1_QIMR (0x400940D0U) /**< \brief (TC1) QDEC Interrupt Mask Register */ +#define REG_TC1_QISR (0x400940D4U) /**< \brief (TC1) QDEC Interrupt Status Register */ +#define REG_TC1_FMR (0x400940D8U) /**< \brief (TC1) Fault Mode Register */ +#define REG_TC1_WPMR (0x400940E4U) /**< \brief (TC1) Write Protect Mode Register */ +#define REG_TC1_RPR0 (0x40094100U) /**< \brief (TC1) Receive Pointer Register (pdc = 0) */ +#define REG_TC1_RCR0 (0x40094104U) /**< \brief (TC1) Receive Counter Register (pdc = 0) */ +#define REG_TC1_RNPR0 (0x40094110U) /**< \brief (TC1) Receive Next Pointer Register (pdc = 0) */ +#define REG_TC1_RNCR0 (0x40094114U) /**< \brief (TC1) Receive Next Counter Register (pdc = 0) */ +#define REG_TC1_PTCR0 (0x40094120U) /**< \brief (TC1) Transfer Control Register (pdc = 0) */ +#define REG_TC1_PTSR0 (0x40094124U) /**< \brief (TC1) Transfer Status Register (pdc = 0) */ +#define REG_TC1_RPR1 (0x40094140U) /**< \brief (TC1) Receive Pointer Register (pdc = 1) */ +#define REG_TC1_RCR1 (0x40094144U) /**< \brief (TC1) Receive Counter Register (pdc = 1) */ +#define REG_TC1_RNPR1 (0x40094150U) /**< \brief (TC1) Receive Next Pointer Register (pdc = 1) */ +#define REG_TC1_RNCR1 (0x40094154U) /**< \brief (TC1) Receive Next Counter Register (pdc = 1) */ +#define REG_TC1_PTCR1 (0x40094160U) /**< \brief (TC1) Transfer Control Register (pdc = 1) */ +#define REG_TC1_PTSR1 (0x40094164U) /**< \brief (TC1) Transfer Status Register (pdc = 1) */ +#define REG_TC1_RPR2 (0x40094180U) /**< \brief (TC1) Receive Pointer Register (pdc = 2) */ +#define REG_TC1_RCR2 (0x40094184U) /**< \brief (TC1) Receive Counter Register (pdc = 2) */ +#define REG_TC1_RNPR2 (0x40094190U) /**< \brief (TC1) Receive Next Pointer Register (pdc = 2) */ +#define REG_TC1_RNCR2 (0x40094194U) /**< \brief (TC1) Receive Next Counter Register (pdc = 2) */ +#define REG_TC1_PTCR2 (0x400941A0U) /**< \brief (TC1) Transfer Control Register (pdc = 2) */ +#define REG_TC1_PTSR2 (0x400941A4U) /**< \brief (TC1) Transfer Status Register (pdc = 2) */ +#else +#define REG_TC1_CCR0 (*(WoReg*)0x40094000U) /**< \brief (TC1) Channel Control Register (channel = 0) */ +#define REG_TC1_CMR0 (*(RwReg*)0x40094004U) /**< \brief (TC1) Channel Mode Register (channel = 0) */ +#define REG_TC1_SMMR0 (*(RwReg*)0x40094008U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC1_RAB0 (*(RoReg*)0x4009400CU) /**< \brief (TC1) Register AB (channel = 0) */ +#define REG_TC1_CV0 (*(RoReg*)0x40094010U) /**< \brief (TC1) Counter Value (channel = 0) */ +#define REG_TC1_RA0 (*(RwReg*)0x40094014U) /**< \brief (TC1) Register A (channel = 0) */ +#define REG_TC1_RB0 (*(RwReg*)0x40094018U) /**< \brief (TC1) Register B (channel = 0) */ +#define REG_TC1_RC0 (*(RwReg*)0x4009401CU) /**< \brief (TC1) Register C (channel = 0) */ +#define REG_TC1_SR0 (*(RoReg*)0x40094020U) /**< \brief (TC1) Status Register (channel = 0) */ +#define REG_TC1_IER0 (*(WoReg*)0x40094024U) /**< \brief (TC1) Interrupt Enable Register (channel = 0) */ +#define REG_TC1_IDR0 (*(WoReg*)0x40094028U) /**< \brief (TC1) Interrupt Disable Register (channel = 0) */ +#define REG_TC1_IMR0 (*(RoReg*)0x4009402CU) /**< \brief (TC1) Interrupt Mask Register (channel = 0) */ +#define REG_TC1_EMR0 (*(RwReg*)0x40094030U) /**< \brief (TC1) Extended Mode Register (channel = 0) */ +#define REG_TC1_CCR1 (*(WoReg*)0x40094040U) /**< \brief (TC1) Channel Control Register (channel = 1) */ +#define REG_TC1_CMR1 (*(RwReg*)0x40094044U) /**< \brief (TC1) Channel Mode Register (channel = 1) */ +#define REG_TC1_SMMR1 (*(RwReg*)0x40094048U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC1_RAB1 (*(RoReg*)0x4009404CU) /**< \brief (TC1) Register AB (channel = 1) */ +#define REG_TC1_CV1 (*(RoReg*)0x40094050U) /**< \brief (TC1) Counter Value (channel = 1) */ +#define REG_TC1_RA1 (*(RwReg*)0x40094054U) /**< \brief (TC1) Register A (channel = 1) */ +#define REG_TC1_RB1 (*(RwReg*)0x40094058U) /**< \brief (TC1) Register B (channel = 1) */ +#define REG_TC1_RC1 (*(RwReg*)0x4009405CU) /**< \brief (TC1) Register C (channel = 1) */ +#define REG_TC1_SR1 (*(RoReg*)0x40094060U) /**< \brief (TC1) Status Register (channel = 1) */ +#define REG_TC1_IER1 (*(WoReg*)0x40094064U) /**< \brief (TC1) Interrupt Enable Register (channel = 1) */ +#define REG_TC1_IDR1 (*(WoReg*)0x40094068U) /**< \brief (TC1) Interrupt Disable Register (channel = 1) */ +#define REG_TC1_IMR1 (*(RoReg*)0x4009406CU) /**< \brief (TC1) Interrupt Mask Register (channel = 1) */ +#define REG_TC1_EMR1 (*(RwReg*)0x40094070U) /**< \brief (TC1) Extended Mode Register (channel = 1) */ +#define REG_TC1_CCR2 (*(WoReg*)0x40094080U) /**< \brief (TC1) Channel Control Register (channel = 2) */ +#define REG_TC1_CMR2 (*(RwReg*)0x40094084U) /**< \brief (TC1) Channel Mode Register (channel = 2) */ +#define REG_TC1_SMMR2 (*(RwReg*)0x40094088U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC1_RAB2 (*(RoReg*)0x4009408CU) /**< \brief (TC1) Register AB (channel = 2) */ +#define REG_TC1_CV2 (*(RoReg*)0x40094090U) /**< \brief (TC1) Counter Value (channel = 2) */ +#define REG_TC1_RA2 (*(RwReg*)0x40094094U) /**< \brief (TC1) Register A (channel = 2) */ +#define REG_TC1_RB2 (*(RwReg*)0x40094098U) /**< \brief (TC1) Register B (channel = 2) */ +#define REG_TC1_RC2 (*(RwReg*)0x4009409CU) /**< \brief (TC1) Register C (channel = 2) */ +#define REG_TC1_SR2 (*(RoReg*)0x400940A0U) /**< \brief (TC1) Status Register (channel = 2) */ +#define REG_TC1_IER2 (*(WoReg*)0x400940A4U) /**< \brief (TC1) Interrupt Enable Register (channel = 2) */ +#define REG_TC1_IDR2 (*(WoReg*)0x400940A8U) /**< \brief (TC1) Interrupt Disable Register (channel = 2) */ +#define REG_TC1_IMR2 (*(RoReg*)0x400940ACU) /**< \brief (TC1) Interrupt Mask Register (channel = 2) */ +#define REG_TC1_EMR2 (*(RwReg*)0x400940B0U) /**< \brief (TC1) Extended Mode Register (channel = 2) */ +#define REG_TC1_BCR (*(WoReg*)0x400940C0U) /**< \brief (TC1) Block Control Register */ +#define REG_TC1_BMR (*(RwReg*)0x400940C4U) /**< \brief (TC1) Block Mode Register */ +#define REG_TC1_QIER (*(WoReg*)0x400940C8U) /**< \brief (TC1) QDEC Interrupt Enable Register */ +#define REG_TC1_QIDR (*(WoReg*)0x400940CCU) /**< \brief (TC1) QDEC Interrupt Disable Register */ +#define REG_TC1_QIMR (*(RoReg*)0x400940D0U) /**< \brief (TC1) QDEC Interrupt Mask Register */ +#define REG_TC1_QISR (*(RoReg*)0x400940D4U) /**< \brief (TC1) QDEC Interrupt Status Register */ +#define REG_TC1_FMR (*(RwReg*)0x400940D8U) /**< \brief (TC1) Fault Mode Register */ +#define REG_TC1_WPMR (*(RwReg*)0x400940E4U) /**< \brief (TC1) Write Protect Mode Register */ +#define REG_TC1_RPR0 (*(RwReg*)0x40094100U) /**< \brief (TC1) Receive Pointer Register (pdc = 0) */ +#define REG_TC1_RCR0 (*(RwReg*)0x40094104U) /**< \brief (TC1) Receive Counter Register (pdc = 0) */ +#define REG_TC1_RNPR0 (*(RwReg*)0x40094110U) /**< \brief (TC1) Receive Next Pointer Register (pdc = 0) */ +#define REG_TC1_RNCR0 (*(RwReg*)0x40094114U) /**< \brief (TC1) Receive Next Counter Register (pdc = 0) */ +#define REG_TC1_PTCR0 (*(WoReg*)0x40094120U) /**< \brief (TC1) Transfer Control Register (pdc = 0) */ +#define REG_TC1_PTSR0 (*(RoReg*)0x40094124U) /**< \brief (TC1) Transfer Status Register (pdc = 0) */ +#define REG_TC1_RPR1 (*(RwReg*)0x40094140U) /**< \brief (TC1) Receive Pointer Register (pdc = 1) */ +#define REG_TC1_RCR1 (*(RwReg*)0x40094144U) /**< \brief (TC1) Receive Counter Register (pdc = 1) */ +#define REG_TC1_RNPR1 (*(RwReg*)0x40094150U) /**< \brief (TC1) Receive Next Pointer Register (pdc = 1) */ +#define REG_TC1_RNCR1 (*(RwReg*)0x40094154U) /**< \brief (TC1) Receive Next Counter Register (pdc = 1) */ +#define REG_TC1_PTCR1 (*(WoReg*)0x40094160U) /**< \brief (TC1) Transfer Control Register (pdc = 1) */ +#define REG_TC1_PTSR1 (*(RoReg*)0x40094164U) /**< \brief (TC1) Transfer Status Register (pdc = 1) */ +#define REG_TC1_RPR2 (*(RwReg*)0x40094180U) /**< \brief (TC1) Receive Pointer Register (pdc = 2) */ +#define REG_TC1_RCR2 (*(RwReg*)0x40094184U) /**< \brief (TC1) Receive Counter Register (pdc = 2) */ +#define REG_TC1_RNPR2 (*(RwReg*)0x40094190U) /**< \brief (TC1) Receive Next Pointer Register (pdc = 2) */ +#define REG_TC1_RNCR2 (*(RwReg*)0x40094194U) /**< \brief (TC1) Receive Next Counter Register (pdc = 2) */ +#define REG_TC1_PTCR2 (*(WoReg*)0x400941A0U) /**< \brief (TC1) Transfer Control Register (pdc = 2) */ +#define REG_TC1_PTSR2 (*(RoReg*)0x400941A4U) /**< \brief (TC1) Transfer Status Register (pdc = 2) */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_TC1_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc2.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc2.h new file mode 100644 index 000000000..73d8f3fa5 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc2.h @@ -0,0 +1,144 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_TC2_INSTANCE_ +#define _SAM4E_TC2_INSTANCE_ + +/* ========== Register definition for TC2 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_TC2_CCR0 (0x40098000U) /**< \brief (TC2) Channel Control Register (channel = 0) */ +#define REG_TC2_CMR0 (0x40098004U) /**< \brief (TC2) Channel Mode Register (channel = 0) */ +#define REG_TC2_SMMR0 (0x40098008U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC2_RAB0 (0x4009800CU) /**< \brief (TC2) Register AB (channel = 0) */ +#define REG_TC2_CV0 (0x40098010U) /**< \brief (TC2) Counter Value (channel = 0) */ +#define REG_TC2_RA0 (0x40098014U) /**< \brief (TC2) Register A (channel = 0) */ +#define REG_TC2_RB0 (0x40098018U) /**< \brief (TC2) Register B (channel = 0) */ +#define REG_TC2_RC0 (0x4009801CU) /**< \brief (TC2) Register C (channel = 0) */ +#define REG_TC2_SR0 (0x40098020U) /**< \brief (TC2) Status Register (channel = 0) */ +#define REG_TC2_IER0 (0x40098024U) /**< \brief (TC2) Interrupt Enable Register (channel = 0) */ +#define REG_TC2_IDR0 (0x40098028U) /**< \brief (TC2) Interrupt Disable Register (channel = 0) */ +#define REG_TC2_IMR0 (0x4009802CU) /**< \brief (TC2) Interrupt Mask Register (channel = 0) */ +#define REG_TC2_EMR0 (0x40098030U) /**< \brief (TC2) Extended Mode Register (channel = 0) */ +#define REG_TC2_CCR1 (0x40098040U) /**< \brief (TC2) Channel Control Register (channel = 1) */ +#define REG_TC2_CMR1 (0x40098044U) /**< \brief (TC2) Channel Mode Register (channel = 1) */ +#define REG_TC2_SMMR1 (0x40098048U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC2_RAB1 (0x4009804CU) /**< \brief (TC2) Register AB (channel = 1) */ +#define REG_TC2_CV1 (0x40098050U) /**< \brief (TC2) Counter Value (channel = 1) */ +#define REG_TC2_RA1 (0x40098054U) /**< \brief (TC2) Register A (channel = 1) */ +#define REG_TC2_RB1 (0x40098058U) /**< \brief (TC2) Register B (channel = 1) */ +#define REG_TC2_RC1 (0x4009805CU) /**< \brief (TC2) Register C (channel = 1) */ +#define REG_TC2_SR1 (0x40098060U) /**< \brief (TC2) Status Register (channel = 1) */ +#define REG_TC2_IER1 (0x40098064U) /**< \brief (TC2) Interrupt Enable Register (channel = 1) */ +#define REG_TC2_IDR1 (0x40098068U) /**< \brief (TC2) Interrupt Disable Register (channel = 1) */ +#define REG_TC2_IMR1 (0x4009806CU) /**< \brief (TC2) Interrupt Mask Register (channel = 1) */ +#define REG_TC2_EMR1 (0x40098070U) /**< \brief (TC2) Extended Mode Register (channel = 1) */ +#define REG_TC2_CCR2 (0x40098080U) /**< \brief (TC2) Channel Control Register (channel = 2) */ +#define REG_TC2_CMR2 (0x40098084U) /**< \brief (TC2) Channel Mode Register (channel = 2) */ +#define REG_TC2_SMMR2 (0x40098088U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC2_RAB2 (0x4009808CU) /**< \brief (TC2) Register AB (channel = 2) */ +#define REG_TC2_CV2 (0x40098090U) /**< \brief (TC2) Counter Value (channel = 2) */ +#define REG_TC2_RA2 (0x40098094U) /**< \brief (TC2) Register A (channel = 2) */ +#define REG_TC2_RB2 (0x40098098U) /**< \brief (TC2) Register B (channel = 2) */ +#define REG_TC2_RC2 (0x4009809CU) /**< \brief (TC2) Register C (channel = 2) */ +#define REG_TC2_SR2 (0x400980A0U) /**< \brief (TC2) Status Register (channel = 2) */ +#define REG_TC2_IER2 (0x400980A4U) /**< \brief (TC2) Interrupt Enable Register (channel = 2) */ +#define REG_TC2_IDR2 (0x400980A8U) /**< \brief (TC2) Interrupt Disable Register (channel = 2) */ +#define REG_TC2_IMR2 (0x400980ACU) /**< \brief (TC2) Interrupt Mask Register (channel = 2) */ +#define REG_TC2_EMR2 (0x400980B0U) /**< \brief (TC2) Extended Mode Register (channel = 2) */ +#define REG_TC2_BCR (0x400980C0U) /**< \brief (TC2) Block Control Register */ +#define REG_TC2_BMR (0x400980C4U) /**< \brief (TC2) Block Mode Register */ +#define REG_TC2_QIER (0x400980C8U) /**< \brief (TC2) QDEC Interrupt Enable Register */ +#define REG_TC2_QIDR (0x400980CCU) /**< \brief (TC2) QDEC Interrupt Disable Register */ +#define REG_TC2_QIMR (0x400980D0U) /**< \brief (TC2) QDEC Interrupt Mask Register */ +#define REG_TC2_QISR (0x400980D4U) /**< \brief (TC2) QDEC Interrupt Status Register */ +#define REG_TC2_FMR (0x400980D8U) /**< \brief (TC2) Fault Mode Register */ +#define REG_TC2_WPMR (0x400980E4U) /**< \brief (TC2) Write Protect Mode Register */ +#else +#define REG_TC2_CCR0 (*(WoReg*)0x40098000U) /**< \brief (TC2) Channel Control Register (channel = 0) */ +#define REG_TC2_CMR0 (*(RwReg*)0x40098004U) /**< \brief (TC2) Channel Mode Register (channel = 0) */ +#define REG_TC2_SMMR0 (*(RwReg*)0x40098008U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC2_RAB0 (*(RoReg*)0x4009800CU) /**< \brief (TC2) Register AB (channel = 0) */ +#define REG_TC2_CV0 (*(RoReg*)0x40098010U) /**< \brief (TC2) Counter Value (channel = 0) */ +#define REG_TC2_RA0 (*(RwReg*)0x40098014U) /**< \brief (TC2) Register A (channel = 0) */ +#define REG_TC2_RB0 (*(RwReg*)0x40098018U) /**< \brief (TC2) Register B (channel = 0) */ +#define REG_TC2_RC0 (*(RwReg*)0x4009801CU) /**< \brief (TC2) Register C (channel = 0) */ +#define REG_TC2_SR0 (*(RoReg*)0x40098020U) /**< \brief (TC2) Status Register (channel = 0) */ +#define REG_TC2_IER0 (*(WoReg*)0x40098024U) /**< \brief (TC2) Interrupt Enable Register (channel = 0) */ +#define REG_TC2_IDR0 (*(WoReg*)0x40098028U) /**< \brief (TC2) Interrupt Disable Register (channel = 0) */ +#define REG_TC2_IMR0 (*(RoReg*)0x4009802CU) /**< \brief (TC2) Interrupt Mask Register (channel = 0) */ +#define REG_TC2_EMR0 (*(RwReg*)0x40098030U) /**< \brief (TC2) Extended Mode Register (channel = 0) */ +#define REG_TC2_CCR1 (*(WoReg*)0x40098040U) /**< \brief (TC2) Channel Control Register (channel = 1) */ +#define REG_TC2_CMR1 (*(RwReg*)0x40098044U) /**< \brief (TC2) Channel Mode Register (channel = 1) */ +#define REG_TC2_SMMR1 (*(RwReg*)0x40098048U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC2_RAB1 (*(RoReg*)0x4009804CU) /**< \brief (TC2) Register AB (channel = 1) */ +#define REG_TC2_CV1 (*(RoReg*)0x40098050U) /**< \brief (TC2) Counter Value (channel = 1) */ +#define REG_TC2_RA1 (*(RwReg*)0x40098054U) /**< \brief (TC2) Register A (channel = 1) */ +#define REG_TC2_RB1 (*(RwReg*)0x40098058U) /**< \brief (TC2) Register B (channel = 1) */ +#define REG_TC2_RC1 (*(RwReg*)0x4009805CU) /**< \brief (TC2) Register C (channel = 1) */ +#define REG_TC2_SR1 (*(RoReg*)0x40098060U) /**< \brief (TC2) Status Register (channel = 1) */ +#define REG_TC2_IER1 (*(WoReg*)0x40098064U) /**< \brief (TC2) Interrupt Enable Register (channel = 1) */ +#define REG_TC2_IDR1 (*(WoReg*)0x40098068U) /**< \brief (TC2) Interrupt Disable Register (channel = 1) */ +#define REG_TC2_IMR1 (*(RoReg*)0x4009806CU) /**< \brief (TC2) Interrupt Mask Register (channel = 1) */ +#define REG_TC2_EMR1 (*(RwReg*)0x40098070U) /**< \brief (TC2) Extended Mode Register (channel = 1) */ +#define REG_TC2_CCR2 (*(WoReg*)0x40098080U) /**< \brief (TC2) Channel Control Register (channel = 2) */ +#define REG_TC2_CMR2 (*(RwReg*)0x40098084U) /**< \brief (TC2) Channel Mode Register (channel = 2) */ +#define REG_TC2_SMMR2 (*(RwReg*)0x40098088U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC2_RAB2 (*(RoReg*)0x4009808CU) /**< \brief (TC2) Register AB (channel = 2) */ +#define REG_TC2_CV2 (*(RoReg*)0x40098090U) /**< \brief (TC2) Counter Value (channel = 2) */ +#define REG_TC2_RA2 (*(RwReg*)0x40098094U) /**< \brief (TC2) Register A (channel = 2) */ +#define REG_TC2_RB2 (*(RwReg*)0x40098098U) /**< \brief (TC2) Register B (channel = 2) */ +#define REG_TC2_RC2 (*(RwReg*)0x4009809CU) /**< \brief (TC2) Register C (channel = 2) */ +#define REG_TC2_SR2 (*(RoReg*)0x400980A0U) /**< \brief (TC2) Status Register (channel = 2) */ +#define REG_TC2_IER2 (*(WoReg*)0x400980A4U) /**< \brief (TC2) Interrupt Enable Register (channel = 2) */ +#define REG_TC2_IDR2 (*(WoReg*)0x400980A8U) /**< \brief (TC2) Interrupt Disable Register (channel = 2) */ +#define REG_TC2_IMR2 (*(RoReg*)0x400980ACU) /**< \brief (TC2) Interrupt Mask Register (channel = 2) */ +#define REG_TC2_EMR2 (*(RwReg*)0x400980B0U) /**< \brief (TC2) Extended Mode Register (channel = 2) */ +#define REG_TC2_BCR (*(WoReg*)0x400980C0U) /**< \brief (TC2) Block Control Register */ +#define REG_TC2_BMR (*(RwReg*)0x400980C4U) /**< \brief (TC2) Block Mode Register */ +#define REG_TC2_QIER (*(WoReg*)0x400980C8U) /**< \brief (TC2) QDEC Interrupt Enable Register */ +#define REG_TC2_QIDR (*(WoReg*)0x400980CCU) /**< \brief (TC2) QDEC Interrupt Disable Register */ +#define REG_TC2_QIMR (*(RoReg*)0x400980D0U) /**< \brief (TC2) QDEC Interrupt Mask Register */ +#define REG_TC2_QISR (*(RoReg*)0x400980D4U) /**< \brief (TC2) QDEC Interrupt Status Register */ +#define REG_TC2_FMR (*(RwReg*)0x400980D8U) /**< \brief (TC2) Fault Mode Register */ +#define REG_TC2_WPMR (*(RwReg*)0x400980E4U) /**< \brief (TC2) Write Protect Mode Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_TC2_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/twi0.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/twi0.h new file mode 100644 index 000000000..88fe9eff5 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/twi0.h @@ -0,0 +1,96 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_TWI0_INSTANCE_ +#define _SAM4E_TWI0_INSTANCE_ + +/* ========== Register definition for TWI0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_TWI0_CR (0x400A8000U) /**< \brief (TWI0) Control Register */ +#define REG_TWI0_MMR (0x400A8004U) /**< \brief (TWI0) Master Mode Register */ +#define REG_TWI0_SMR (0x400A8008U) /**< \brief (TWI0) Slave Mode Register */ +#define REG_TWI0_IADR (0x400A800CU) /**< \brief (TWI0) Internal Address Register */ +#define REG_TWI0_CWGR (0x400A8010U) /**< \brief (TWI0) Clock Waveform Generator Register */ +#define REG_TWI0_SR (0x400A8020U) /**< \brief (TWI0) Status Register */ +#define REG_TWI0_IER (0x400A8024U) /**< \brief (TWI0) Interrupt Enable Register */ +#define REG_TWI0_IDR (0x400A8028U) /**< \brief (TWI0) Interrupt Disable Register */ +#define REG_TWI0_IMR (0x400A802CU) /**< \brief (TWI0) Interrupt Mask Register */ +#define REG_TWI0_RHR (0x400A8030U) /**< \brief (TWI0) Receive Holding Register */ +#define REG_TWI0_THR (0x400A8034U) /**< \brief (TWI0) Transmit Holding Register */ +#define REG_TWI0_WPROT_MODE (0x400A80E4U) /**< \brief (TWI0) Protection Mode Register */ +#define REG_TWI0_WPROT_STATUS (0x400A80E8U) /**< \brief (TWI0) Protection Status Register */ +#define REG_TWI0_RPR (0x400A8100U) /**< \brief (TWI0) Receive Pointer Register */ +#define REG_TWI0_RCR (0x400A8104U) /**< \brief (TWI0) Receive Counter Register */ +#define REG_TWI0_TPR (0x400A8108U) /**< \brief (TWI0) Transmit Pointer Register */ +#define REG_TWI0_TCR (0x400A810CU) /**< \brief (TWI0) Transmit Counter Register */ +#define REG_TWI0_RNPR (0x400A8110U) /**< \brief (TWI0) Receive Next Pointer Register */ +#define REG_TWI0_RNCR (0x400A8114U) /**< \brief (TWI0) Receive Next Counter Register */ +#define REG_TWI0_TNPR (0x400A8118U) /**< \brief (TWI0) Transmit Next Pointer Register */ +#define REG_TWI0_TNCR (0x400A811CU) /**< \brief (TWI0) Transmit Next Counter Register */ +#define REG_TWI0_PTCR (0x400A8120U) /**< \brief (TWI0) Transfer Control Register */ +#define REG_TWI0_PTSR (0x400A8124U) /**< \brief (TWI0) Transfer Status Register */ +#else +#define REG_TWI0_CR (*(WoReg*)0x400A8000U) /**< \brief (TWI0) Control Register */ +#define REG_TWI0_MMR (*(RwReg*)0x400A8004U) /**< \brief (TWI0) Master Mode Register */ +#define REG_TWI0_SMR (*(RwReg*)0x400A8008U) /**< \brief (TWI0) Slave Mode Register */ +#define REG_TWI0_IADR (*(RwReg*)0x400A800CU) /**< \brief (TWI0) Internal Address Register */ +#define REG_TWI0_CWGR (*(RwReg*)0x400A8010U) /**< \brief (TWI0) Clock Waveform Generator Register */ +#define REG_TWI0_SR (*(RoReg*)0x400A8020U) /**< \brief (TWI0) Status Register */ +#define REG_TWI0_IER (*(WoReg*)0x400A8024U) /**< \brief (TWI0) Interrupt Enable Register */ +#define REG_TWI0_IDR (*(WoReg*)0x400A8028U) /**< \brief (TWI0) Interrupt Disable Register */ +#define REG_TWI0_IMR (*(RoReg*)0x400A802CU) /**< \brief (TWI0) Interrupt Mask Register */ +#define REG_TWI0_RHR (*(RoReg*)0x400A8030U) /**< \brief (TWI0) Receive Holding Register */ +#define REG_TWI0_THR (*(WoReg*)0x400A8034U) /**< \brief (TWI0) Transmit Holding Register */ +#define REG_TWI0_WPROT_MODE (*(RwReg*)0x400A80E4U) /**< \brief (TWI0) Protection Mode Register */ +#define REG_TWI0_WPROT_STATUS (*(RoReg*)0x400A80E8U) /**< \brief (TWI0) Protection Status Register */ +#define REG_TWI0_RPR (*(RwReg*)0x400A8100U) /**< \brief (TWI0) Receive Pointer Register */ +#define REG_TWI0_RCR (*(RwReg*)0x400A8104U) /**< \brief (TWI0) Receive Counter Register */ +#define REG_TWI0_TPR (*(RwReg*)0x400A8108U) /**< \brief (TWI0) Transmit Pointer Register */ +#define REG_TWI0_TCR (*(RwReg*)0x400A810CU) /**< \brief (TWI0) Transmit Counter Register */ +#define REG_TWI0_RNPR (*(RwReg*)0x400A8110U) /**< \brief (TWI0) Receive Next Pointer Register */ +#define REG_TWI0_RNCR (*(RwReg*)0x400A8114U) /**< \brief (TWI0) Receive Next Counter Register */ +#define REG_TWI0_TNPR (*(RwReg*)0x400A8118U) /**< \brief (TWI0) Transmit Next Pointer Register */ +#define REG_TWI0_TNCR (*(RwReg*)0x400A811CU) /**< \brief (TWI0) Transmit Next Counter Register */ +#define REG_TWI0_PTCR (*(WoReg*)0x400A8120U) /**< \brief (TWI0) Transfer Control Register */ +#define REG_TWI0_PTSR (*(RoReg*)0x400A8124U) /**< \brief (TWI0) Transfer Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_TWI0_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/twi1.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/twi1.h new file mode 100644 index 000000000..172adb13e --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/twi1.h @@ -0,0 +1,96 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_TWI1_INSTANCE_ +#define _SAM4E_TWI1_INSTANCE_ + +/* ========== Register definition for TWI1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_TWI1_CR (0x400AC000U) /**< \brief (TWI1) Control Register */ +#define REG_TWI1_MMR (0x400AC004U) /**< \brief (TWI1) Master Mode Register */ +#define REG_TWI1_SMR (0x400AC008U) /**< \brief (TWI1) Slave Mode Register */ +#define REG_TWI1_IADR (0x400AC00CU) /**< \brief (TWI1) Internal Address Register */ +#define REG_TWI1_CWGR (0x400AC010U) /**< \brief (TWI1) Clock Waveform Generator Register */ +#define REG_TWI1_SR (0x400AC020U) /**< \brief (TWI1) Status Register */ +#define REG_TWI1_IER (0x400AC024U) /**< \brief (TWI1) Interrupt Enable Register */ +#define REG_TWI1_IDR (0x400AC028U) /**< \brief (TWI1) Interrupt Disable Register */ +#define REG_TWI1_IMR (0x400AC02CU) /**< \brief (TWI1) Interrupt Mask Register */ +#define REG_TWI1_RHR (0x400AC030U) /**< \brief (TWI1) Receive Holding Register */ +#define REG_TWI1_THR (0x400AC034U) /**< \brief (TWI1) Transmit Holding Register */ +#define REG_TWI1_WPROT_MODE (0x400AC0E4U) /**< \brief (TWI1) Protection Mode Register */ +#define REG_TWI1_WPROT_STATUS (0x400AC0E8U) /**< \brief (TWI1) Protection Status Register */ +#define REG_TWI1_RPR (0x400AC100U) /**< \brief (TWI1) Receive Pointer Register */ +#define REG_TWI1_RCR (0x400AC104U) /**< \brief (TWI1) Receive Counter Register */ +#define REG_TWI1_TPR (0x400AC108U) /**< \brief (TWI1) Transmit Pointer Register */ +#define REG_TWI1_TCR (0x400AC10CU) /**< \brief (TWI1) Transmit Counter Register */ +#define REG_TWI1_RNPR (0x400AC110U) /**< \brief (TWI1) Receive Next Pointer Register */ +#define REG_TWI1_RNCR (0x400AC114U) /**< \brief (TWI1) Receive Next Counter Register */ +#define REG_TWI1_TNPR (0x400AC118U) /**< \brief (TWI1) Transmit Next Pointer Register */ +#define REG_TWI1_TNCR (0x400AC11CU) /**< \brief (TWI1) Transmit Next Counter Register */ +#define REG_TWI1_PTCR (0x400AC120U) /**< \brief (TWI1) Transfer Control Register */ +#define REG_TWI1_PTSR (0x400AC124U) /**< \brief (TWI1) Transfer Status Register */ +#else +#define REG_TWI1_CR (*(WoReg*)0x400AC000U) /**< \brief (TWI1) Control Register */ +#define REG_TWI1_MMR (*(RwReg*)0x400AC004U) /**< \brief (TWI1) Master Mode Register */ +#define REG_TWI1_SMR (*(RwReg*)0x400AC008U) /**< \brief (TWI1) Slave Mode Register */ +#define REG_TWI1_IADR (*(RwReg*)0x400AC00CU) /**< \brief (TWI1) Internal Address Register */ +#define REG_TWI1_CWGR (*(RwReg*)0x400AC010U) /**< \brief (TWI1) Clock Waveform Generator Register */ +#define REG_TWI1_SR (*(RoReg*)0x400AC020U) /**< \brief (TWI1) Status Register */ +#define REG_TWI1_IER (*(WoReg*)0x400AC024U) /**< \brief (TWI1) Interrupt Enable Register */ +#define REG_TWI1_IDR (*(WoReg*)0x400AC028U) /**< \brief (TWI1) Interrupt Disable Register */ +#define REG_TWI1_IMR (*(RoReg*)0x400AC02CU) /**< \brief (TWI1) Interrupt Mask Register */ +#define REG_TWI1_RHR (*(RoReg*)0x400AC030U) /**< \brief (TWI1) Receive Holding Register */ +#define REG_TWI1_THR (*(WoReg*)0x400AC034U) /**< \brief (TWI1) Transmit Holding Register */ +#define REG_TWI1_WPROT_MODE (*(RwReg*)0x400AC0E4U) /**< \brief (TWI1) Protection Mode Register */ +#define REG_TWI1_WPROT_STATUS (*(RoReg*)0x400AC0E8U) /**< \brief (TWI1) Protection Status Register */ +#define REG_TWI1_RPR (*(RwReg*)0x400AC100U) /**< \brief (TWI1) Receive Pointer Register */ +#define REG_TWI1_RCR (*(RwReg*)0x400AC104U) /**< \brief (TWI1) Receive Counter Register */ +#define REG_TWI1_TPR (*(RwReg*)0x400AC108U) /**< \brief (TWI1) Transmit Pointer Register */ +#define REG_TWI1_TCR (*(RwReg*)0x400AC10CU) /**< \brief (TWI1) Transmit Counter Register */ +#define REG_TWI1_RNPR (*(RwReg*)0x400AC110U) /**< \brief (TWI1) Receive Next Pointer Register */ +#define REG_TWI1_RNCR (*(RwReg*)0x400AC114U) /**< \brief (TWI1) Receive Next Counter Register */ +#define REG_TWI1_TNPR (*(RwReg*)0x400AC118U) /**< \brief (TWI1) Transmit Next Pointer Register */ +#define REG_TWI1_TNCR (*(RwReg*)0x400AC11CU) /**< \brief (TWI1) Transmit Next Counter Register */ +#define REG_TWI1_PTCR (*(WoReg*)0x400AC120U) /**< \brief (TWI1) Transfer Control Register */ +#define REG_TWI1_PTSR (*(RoReg*)0x400AC124U) /**< \brief (TWI1) Transfer Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_TWI1_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/uart0.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/uart0.h new file mode 100644 index 000000000..56877b7c8 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/uart0.h @@ -0,0 +1,88 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_UART0_INSTANCE_ +#define _SAM4E_UART0_INSTANCE_ + +/* ========== Register definition for UART0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_UART0_CR (0x400E0600U) /**< \brief (UART0) Control Register */ +#define REG_UART0_MR (0x400E0604U) /**< \brief (UART0) Mode Register */ +#define REG_UART0_IER (0x400E0608U) /**< \brief (UART0) Interrupt Enable Register */ +#define REG_UART0_IDR (0x400E060CU) /**< \brief (UART0) Interrupt Disable Register */ +#define REG_UART0_IMR (0x400E0610U) /**< \brief (UART0) Interrupt Mask Register */ +#define REG_UART0_SR (0x400E0614U) /**< \brief (UART0) Status Register */ +#define REG_UART0_RHR (0x400E0618U) /**< \brief (UART0) Receive Holding Register */ +#define REG_UART0_THR (0x400E061CU) /**< \brief (UART0) Transmit Holding Register */ +#define REG_UART0_BRGR (0x400E0620U) /**< \brief (UART0) Baud Rate Generator Register */ +#define REG_UART0_RPR (0x400E0700U) /**< \brief (UART0) Receive Pointer Register */ +#define REG_UART0_RCR (0x400E0704U) /**< \brief (UART0) Receive Counter Register */ +#define REG_UART0_TPR (0x400E0708U) /**< \brief (UART0) Transmit Pointer Register */ +#define REG_UART0_TCR (0x400E070CU) /**< \brief (UART0) Transmit Counter Register */ +#define REG_UART0_RNPR (0x400E0710U) /**< \brief (UART0) Receive Next Pointer Register */ +#define REG_UART0_RNCR (0x400E0714U) /**< \brief (UART0) Receive Next Counter Register */ +#define REG_UART0_TNPR (0x400E0718U) /**< \brief (UART0) Transmit Next Pointer Register */ +#define REG_UART0_TNCR (0x400E071CU) /**< \brief (UART0) Transmit Next Counter Register */ +#define REG_UART0_PTCR (0x400E0720U) /**< \brief (UART0) Transfer Control Register */ +#define REG_UART0_PTSR (0x400E0724U) /**< \brief (UART0) Transfer Status Register */ +#else +#define REG_UART0_CR (*(WoReg*)0x400E0600U) /**< \brief (UART0) Control Register */ +#define REG_UART0_MR (*(RwReg*)0x400E0604U) /**< \brief (UART0) Mode Register */ +#define REG_UART0_IER (*(WoReg*)0x400E0608U) /**< \brief (UART0) Interrupt Enable Register */ +#define REG_UART0_IDR (*(WoReg*)0x400E060CU) /**< \brief (UART0) Interrupt Disable Register */ +#define REG_UART0_IMR (*(RoReg*)0x400E0610U) /**< \brief (UART0) Interrupt Mask Register */ +#define REG_UART0_SR (*(RoReg*)0x400E0614U) /**< \brief (UART0) Status Register */ +#define REG_UART0_RHR (*(RoReg*)0x400E0618U) /**< \brief (UART0) Receive Holding Register */ +#define REG_UART0_THR (*(WoReg*)0x400E061CU) /**< \brief (UART0) Transmit Holding Register */ +#define REG_UART0_BRGR (*(RwReg*)0x400E0620U) /**< \brief (UART0) Baud Rate Generator Register */ +#define REG_UART0_RPR (*(RwReg*)0x400E0700U) /**< \brief (UART0) Receive Pointer Register */ +#define REG_UART0_RCR (*(RwReg*)0x400E0704U) /**< \brief (UART0) Receive Counter Register */ +#define REG_UART0_TPR (*(RwReg*)0x400E0708U) /**< \brief (UART0) Transmit Pointer Register */ +#define REG_UART0_TCR (*(RwReg*)0x400E070CU) /**< \brief (UART0) Transmit Counter Register */ +#define REG_UART0_RNPR (*(RwReg*)0x400E0710U) /**< \brief (UART0) Receive Next Pointer Register */ +#define REG_UART0_RNCR (*(RwReg*)0x400E0714U) /**< \brief (UART0) Receive Next Counter Register */ +#define REG_UART0_TNPR (*(RwReg*)0x400E0718U) /**< \brief (UART0) Transmit Next Pointer Register */ +#define REG_UART0_TNCR (*(RwReg*)0x400E071CU) /**< \brief (UART0) Transmit Next Counter Register */ +#define REG_UART0_PTCR (*(WoReg*)0x400E0720U) /**< \brief (UART0) Transfer Control Register */ +#define REG_UART0_PTSR (*(RoReg*)0x400E0724U) /**< \brief (UART0) Transfer Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_UART0_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/uart1.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/uart1.h new file mode 100644 index 000000000..2cd603110 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/uart1.h @@ -0,0 +1,88 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_UART1_INSTANCE_ +#define _SAM4E_UART1_INSTANCE_ + +/* ========== Register definition for UART1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_UART1_CR (0x40060600U) /**< \brief (UART1) Control Register */ +#define REG_UART1_MR (0x40060604U) /**< \brief (UART1) Mode Register */ +#define REG_UART1_IER (0x40060608U) /**< \brief (UART1) Interrupt Enable Register */ +#define REG_UART1_IDR (0x4006060CU) /**< \brief (UART1) Interrupt Disable Register */ +#define REG_UART1_IMR (0x40060610U) /**< \brief (UART1) Interrupt Mask Register */ +#define REG_UART1_SR (0x40060614U) /**< \brief (UART1) Status Register */ +#define REG_UART1_RHR (0x40060618U) /**< \brief (UART1) Receive Holding Register */ +#define REG_UART1_THR (0x4006061CU) /**< \brief (UART1) Transmit Holding Register */ +#define REG_UART1_BRGR (0x40060620U) /**< \brief (UART1) Baud Rate Generator Register */ +#define REG_UART1_RPR (0x40060700U) /**< \brief (UART1) Receive Pointer Register */ +#define REG_UART1_RCR (0x40060704U) /**< \brief (UART1) Receive Counter Register */ +#define REG_UART1_TPR (0x40060708U) /**< \brief (UART1) Transmit Pointer Register */ +#define REG_UART1_TCR (0x4006070CU) /**< \brief (UART1) Transmit Counter Register */ +#define REG_UART1_RNPR (0x40060710U) /**< \brief (UART1) Receive Next Pointer Register */ +#define REG_UART1_RNCR (0x40060714U) /**< \brief (UART1) Receive Next Counter Register */ +#define REG_UART1_TNPR (0x40060718U) /**< \brief (UART1) Transmit Next Pointer Register */ +#define REG_UART1_TNCR (0x4006071CU) /**< \brief (UART1) Transmit Next Counter Register */ +#define REG_UART1_PTCR (0x40060720U) /**< \brief (UART1) Transfer Control Register */ +#define REG_UART1_PTSR (0x40060724U) /**< \brief (UART1) Transfer Status Register */ +#else +#define REG_UART1_CR (*(WoReg*)0x40060600U) /**< \brief (UART1) Control Register */ +#define REG_UART1_MR (*(RwReg*)0x40060604U) /**< \brief (UART1) Mode Register */ +#define REG_UART1_IER (*(WoReg*)0x40060608U) /**< \brief (UART1) Interrupt Enable Register */ +#define REG_UART1_IDR (*(WoReg*)0x4006060CU) /**< \brief (UART1) Interrupt Disable Register */ +#define REG_UART1_IMR (*(RoReg*)0x40060610U) /**< \brief (UART1) Interrupt Mask Register */ +#define REG_UART1_SR (*(RoReg*)0x40060614U) /**< \brief (UART1) Status Register */ +#define REG_UART1_RHR (*(RoReg*)0x40060618U) /**< \brief (UART1) Receive Holding Register */ +#define REG_UART1_THR (*(WoReg*)0x4006061CU) /**< \brief (UART1) Transmit Holding Register */ +#define REG_UART1_BRGR (*(RwReg*)0x40060620U) /**< \brief (UART1) Baud Rate Generator Register */ +#define REG_UART1_RPR (*(RwReg*)0x40060700U) /**< \brief (UART1) Receive Pointer Register */ +#define REG_UART1_RCR (*(RwReg*)0x40060704U) /**< \brief (UART1) Receive Counter Register */ +#define REG_UART1_TPR (*(RwReg*)0x40060708U) /**< \brief (UART1) Transmit Pointer Register */ +#define REG_UART1_TCR (*(RwReg*)0x4006070CU) /**< \brief (UART1) Transmit Counter Register */ +#define REG_UART1_RNPR (*(RwReg*)0x40060710U) /**< \brief (UART1) Receive Next Pointer Register */ +#define REG_UART1_RNCR (*(RwReg*)0x40060714U) /**< \brief (UART1) Receive Next Counter Register */ +#define REG_UART1_TNPR (*(RwReg*)0x40060718U) /**< \brief (UART1) Transmit Next Pointer Register */ +#define REG_UART1_TNCR (*(RwReg*)0x4006071CU) /**< \brief (UART1) Transmit Next Counter Register */ +#define REG_UART1_PTCR (*(WoReg*)0x40060720U) /**< \brief (UART1) Transfer Control Register */ +#define REG_UART1_PTSR (*(RoReg*)0x40060724U) /**< \brief (UART1) Transfer Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_UART1_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/udp.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/udp.h new file mode 100644 index 000000000..a9f2115c8 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/udp.h @@ -0,0 +1,74 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_UDP_INSTANCE_ +#define _SAM4E_UDP_INSTANCE_ + +/* ========== Register definition for UDP peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_UDP_FRM_NUM (0x40084000U) /**< \brief (UDP) Frame Number Register */ +#define REG_UDP_GLB_STAT (0x40084004U) /**< \brief (UDP) Global State Register */ +#define REG_UDP_FADDR (0x40084008U) /**< \brief (UDP) Function Address Register */ +#define REG_UDP_IER (0x40084010U) /**< \brief (UDP) Interrupt Enable Register */ +#define REG_UDP_IDR (0x40084014U) /**< \brief (UDP) Interrupt Disable Register */ +#define REG_UDP_IMR (0x40084018U) /**< \brief (UDP) Interrupt Mask Register */ +#define REG_UDP_ISR (0x4008401CU) /**< \brief (UDP) Interrupt Status Register */ +#define REG_UDP_ICR (0x40084020U) /**< \brief (UDP) Interrupt Clear Register */ +#define REG_UDP_RST_EP (0x40084028U) /**< \brief (UDP) Reset Endpoint Register */ +#define REG_UDP_CSR (0x40084030U) /**< \brief (UDP) Endpoint Control and Status Register */ +#define REG_UDP_FDR (0x40084050U) /**< \brief (UDP) Endpoint FIFO Data Register */ +#define REG_UDP_TXVC (0x40084074U) /**< \brief (UDP) Transceiver Control Register */ +#else +#define REG_UDP_FRM_NUM (*(RoReg*)0x40084000U) /**< \brief (UDP) Frame Number Register */ +#define REG_UDP_GLB_STAT (*(RwReg*)0x40084004U) /**< \brief (UDP) Global State Register */ +#define REG_UDP_FADDR (*(RwReg*)0x40084008U) /**< \brief (UDP) Function Address Register */ +#define REG_UDP_IER (*(WoReg*)0x40084010U) /**< \brief (UDP) Interrupt Enable Register */ +#define REG_UDP_IDR (*(WoReg*)0x40084014U) /**< \brief (UDP) Interrupt Disable Register */ +#define REG_UDP_IMR (*(RoReg*)0x40084018U) /**< \brief (UDP) Interrupt Mask Register */ +#define REG_UDP_ISR (*(RoReg*)0x4008401CU) /**< \brief (UDP) Interrupt Status Register */ +#define REG_UDP_ICR (*(WoReg*)0x40084020U) /**< \brief (UDP) Interrupt Clear Register */ +#define REG_UDP_RST_EP (*(RwReg*)0x40084028U) /**< \brief (UDP) Reset Endpoint Register */ +#define REG_UDP_CSR (*(RwReg*)0x40084030U) /**< \brief (UDP) Endpoint Control and Status Register */ +#define REG_UDP_FDR (*(RwReg*)0x40084050U) /**< \brief (UDP) Endpoint FIFO Data Register */ +#define REG_UDP_TXVC (*(RwReg*)0x40084074U) /**< \brief (UDP) Transceiver Control Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_UDP_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/usart0.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/usart0.h new file mode 100644 index 000000000..6f9ae128d --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/usart0.h @@ -0,0 +1,104 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_USART0_INSTANCE_ +#define _SAM4E_USART0_INSTANCE_ + +/* ========== Register definition for USART0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_USART0_CR (0x400A0000U) /**< \brief (USART0) Control Register */ +#define REG_USART0_MR (0x400A0004U) /**< \brief (USART0) Mode Register */ +#define REG_USART0_IER (0x400A0008U) /**< \brief (USART0) Interrupt Enable Register */ +#define REG_USART0_IDR (0x400A000CU) /**< \brief (USART0) Interrupt Disable Register */ +#define REG_USART0_IMR (0x400A0010U) /**< \brief (USART0) Interrupt Mask Register */ +#define REG_USART0_CSR (0x400A0014U) /**< \brief (USART0) Channel Status Register */ +#define REG_USART0_RHR (0x400A0018U) /**< \brief (USART0) Receiver Holding Register */ +#define REG_USART0_THR (0x400A001CU) /**< \brief (USART0) Transmitter Holding Register */ +#define REG_USART0_BRGR (0x400A0020U) /**< \brief (USART0) Baud Rate Generator Register */ +#define REG_USART0_RTOR (0x400A0024U) /**< \brief (USART0) Receiver Time-out Register */ +#define REG_USART0_TTGR (0x400A0028U) /**< \brief (USART0) Transmitter Timeguard Register */ +#define REG_USART0_FIDI (0x400A0040U) /**< \brief (USART0) FI DI Ratio Register */ +#define REG_USART0_NER (0x400A0044U) /**< \brief (USART0) Number of Errors Register */ +#define REG_USART0_IF (0x400A004CU) /**< \brief (USART0) IrDA Filter Register */ +#define REG_USART0_MAN (0x400A0050U) /**< \brief (USART0) Manchester Encoder Decoder Register */ +#define REG_USART0_WPMR (0x400A00E4U) /**< \brief (USART0) Write Protect Mode Register */ +#define REG_USART0_WPSR (0x400A00E8U) /**< \brief (USART0) Write Protect Status Register */ +#define REG_USART0_RPR (0x400A0100U) /**< \brief (USART0) Receive Pointer Register */ +#define REG_USART0_RCR (0x400A0104U) /**< \brief (USART0) Receive Counter Register */ +#define REG_USART0_TPR (0x400A0108U) /**< \brief (USART0) Transmit Pointer Register */ +#define REG_USART0_TCR (0x400A010CU) /**< \brief (USART0) Transmit Counter Register */ +#define REG_USART0_RNPR (0x400A0110U) /**< \brief (USART0) Receive Next Pointer Register */ +#define REG_USART0_RNCR (0x400A0114U) /**< \brief (USART0) Receive Next Counter Register */ +#define REG_USART0_TNPR (0x400A0118U) /**< \brief (USART0) Transmit Next Pointer Register */ +#define REG_USART0_TNCR (0x400A011CU) /**< \brief (USART0) Transmit Next Counter Register */ +#define REG_USART0_PTCR (0x400A0120U) /**< \brief (USART0) Transfer Control Register */ +#define REG_USART0_PTSR (0x400A0124U) /**< \brief (USART0) Transfer Status Register */ +#else +#define REG_USART0_CR (*(WoReg*)0x400A0000U) /**< \brief (USART0) Control Register */ +#define REG_USART0_MR (*(RwReg*)0x400A0004U) /**< \brief (USART0) Mode Register */ +#define REG_USART0_IER (*(WoReg*)0x400A0008U) /**< \brief (USART0) Interrupt Enable Register */ +#define REG_USART0_IDR (*(WoReg*)0x400A000CU) /**< \brief (USART0) Interrupt Disable Register */ +#define REG_USART0_IMR (*(RoReg*)0x400A0010U) /**< \brief (USART0) Interrupt Mask Register */ +#define REG_USART0_CSR (*(RoReg*)0x400A0014U) /**< \brief (USART0) Channel Status Register */ +#define REG_USART0_RHR (*(RoReg*)0x400A0018U) /**< \brief (USART0) Receiver Holding Register */ +#define REG_USART0_THR (*(WoReg*)0x400A001CU) /**< \brief (USART0) Transmitter Holding Register */ +#define REG_USART0_BRGR (*(RwReg*)0x400A0020U) /**< \brief (USART0) Baud Rate Generator Register */ +#define REG_USART0_RTOR (*(RwReg*)0x400A0024U) /**< \brief (USART0) Receiver Time-out Register */ +#define REG_USART0_TTGR (*(RwReg*)0x400A0028U) /**< \brief (USART0) Transmitter Timeguard Register */ +#define REG_USART0_FIDI (*(RwReg*)0x400A0040U) /**< \brief (USART0) FI DI Ratio Register */ +#define REG_USART0_NER (*(RoReg*)0x400A0044U) /**< \brief (USART0) Number of Errors Register */ +#define REG_USART0_IF (*(RwReg*)0x400A004CU) /**< \brief (USART0) IrDA Filter Register */ +#define REG_USART0_MAN (*(RwReg*)0x400A0050U) /**< \brief (USART0) Manchester Encoder Decoder Register */ +#define REG_USART0_WPMR (*(RwReg*)0x400A00E4U) /**< \brief (USART0) Write Protect Mode Register */ +#define REG_USART0_WPSR (*(RoReg*)0x400A00E8U) /**< \brief (USART0) Write Protect Status Register */ +#define REG_USART0_RPR (*(RwReg*)0x400A0100U) /**< \brief (USART0) Receive Pointer Register */ +#define REG_USART0_RCR (*(RwReg*)0x400A0104U) /**< \brief (USART0) Receive Counter Register */ +#define REG_USART0_TPR (*(RwReg*)0x400A0108U) /**< \brief (USART0) Transmit Pointer Register */ +#define REG_USART0_TCR (*(RwReg*)0x400A010CU) /**< \brief (USART0) Transmit Counter Register */ +#define REG_USART0_RNPR (*(RwReg*)0x400A0110U) /**< \brief (USART0) Receive Next Pointer Register */ +#define REG_USART0_RNCR (*(RwReg*)0x400A0114U) /**< \brief (USART0) Receive Next Counter Register */ +#define REG_USART0_TNPR (*(RwReg*)0x400A0118U) /**< \brief (USART0) Transmit Next Pointer Register */ +#define REG_USART0_TNCR (*(RwReg*)0x400A011CU) /**< \brief (USART0) Transmit Next Counter Register */ +#define REG_USART0_PTCR (*(WoReg*)0x400A0120U) /**< \brief (USART0) Transfer Control Register */ +#define REG_USART0_PTSR (*(RoReg*)0x400A0124U) /**< \brief (USART0) Transfer Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_USART0_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/usart1.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/usart1.h new file mode 100644 index 000000000..54385ee4b --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/usart1.h @@ -0,0 +1,104 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_USART1_INSTANCE_ +#define _SAM4E_USART1_INSTANCE_ + +/* ========== Register definition for USART1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_USART1_CR (0x400A4000U) /**< \brief (USART1) Control Register */ +#define REG_USART1_MR (0x400A4004U) /**< \brief (USART1) Mode Register */ +#define REG_USART1_IER (0x400A4008U) /**< \brief (USART1) Interrupt Enable Register */ +#define REG_USART1_IDR (0x400A400CU) /**< \brief (USART1) Interrupt Disable Register */ +#define REG_USART1_IMR (0x400A4010U) /**< \brief (USART1) Interrupt Mask Register */ +#define REG_USART1_CSR (0x400A4014U) /**< \brief (USART1) Channel Status Register */ +#define REG_USART1_RHR (0x400A4018U) /**< \brief (USART1) Receiver Holding Register */ +#define REG_USART1_THR (0x400A401CU) /**< \brief (USART1) Transmitter Holding Register */ +#define REG_USART1_BRGR (0x400A4020U) /**< \brief (USART1) Baud Rate Generator Register */ +#define REG_USART1_RTOR (0x400A4024U) /**< \brief (USART1) Receiver Time-out Register */ +#define REG_USART1_TTGR (0x400A4028U) /**< \brief (USART1) Transmitter Timeguard Register */ +#define REG_USART1_FIDI (0x400A4040U) /**< \brief (USART1) FI DI Ratio Register */ +#define REG_USART1_NER (0x400A4044U) /**< \brief (USART1) Number of Errors Register */ +#define REG_USART1_IF (0x400A404CU) /**< \brief (USART1) IrDA Filter Register */ +#define REG_USART1_MAN (0x400A4050U) /**< \brief (USART1) Manchester Encoder Decoder Register */ +#define REG_USART1_WPMR (0x400A40E4U) /**< \brief (USART1) Write Protect Mode Register */ +#define REG_USART1_WPSR (0x400A40E8U) /**< \brief (USART1) Write Protect Status Register */ +#define REG_USART1_RPR (0x400A4100U) /**< \brief (USART1) Receive Pointer Register */ +#define REG_USART1_RCR (0x400A4104U) /**< \brief (USART1) Receive Counter Register */ +#define REG_USART1_TPR (0x400A4108U) /**< \brief (USART1) Transmit Pointer Register */ +#define REG_USART1_TCR (0x400A410CU) /**< \brief (USART1) Transmit Counter Register */ +#define REG_USART1_RNPR (0x400A4110U) /**< \brief (USART1) Receive Next Pointer Register */ +#define REG_USART1_RNCR (0x400A4114U) /**< \brief (USART1) Receive Next Counter Register */ +#define REG_USART1_TNPR (0x400A4118U) /**< \brief (USART1) Transmit Next Pointer Register */ +#define REG_USART1_TNCR (0x400A411CU) /**< \brief (USART1) Transmit Next Counter Register */ +#define REG_USART1_PTCR (0x400A4120U) /**< \brief (USART1) Transfer Control Register */ +#define REG_USART1_PTSR (0x400A4124U) /**< \brief (USART1) Transfer Status Register */ +#else +#define REG_USART1_CR (*(WoReg*)0x400A4000U) /**< \brief (USART1) Control Register */ +#define REG_USART1_MR (*(RwReg*)0x400A4004U) /**< \brief (USART1) Mode Register */ +#define REG_USART1_IER (*(WoReg*)0x400A4008U) /**< \brief (USART1) Interrupt Enable Register */ +#define REG_USART1_IDR (*(WoReg*)0x400A400CU) /**< \brief (USART1) Interrupt Disable Register */ +#define REG_USART1_IMR (*(RoReg*)0x400A4010U) /**< \brief (USART1) Interrupt Mask Register */ +#define REG_USART1_CSR (*(RoReg*)0x400A4014U) /**< \brief (USART1) Channel Status Register */ +#define REG_USART1_RHR (*(RoReg*)0x400A4018U) /**< \brief (USART1) Receiver Holding Register */ +#define REG_USART1_THR (*(WoReg*)0x400A401CU) /**< \brief (USART1) Transmitter Holding Register */ +#define REG_USART1_BRGR (*(RwReg*)0x400A4020U) /**< \brief (USART1) Baud Rate Generator Register */ +#define REG_USART1_RTOR (*(RwReg*)0x400A4024U) /**< \brief (USART1) Receiver Time-out Register */ +#define REG_USART1_TTGR (*(RwReg*)0x400A4028U) /**< \brief (USART1) Transmitter Timeguard Register */ +#define REG_USART1_FIDI (*(RwReg*)0x400A4040U) /**< \brief (USART1) FI DI Ratio Register */ +#define REG_USART1_NER (*(RoReg*)0x400A4044U) /**< \brief (USART1) Number of Errors Register */ +#define REG_USART1_IF (*(RwReg*)0x400A404CU) /**< \brief (USART1) IrDA Filter Register */ +#define REG_USART1_MAN (*(RwReg*)0x400A4050U) /**< \brief (USART1) Manchester Encoder Decoder Register */ +#define REG_USART1_WPMR (*(RwReg*)0x400A40E4U) /**< \brief (USART1) Write Protect Mode Register */ +#define REG_USART1_WPSR (*(RoReg*)0x400A40E8U) /**< \brief (USART1) Write Protect Status Register */ +#define REG_USART1_RPR (*(RwReg*)0x400A4100U) /**< \brief (USART1) Receive Pointer Register */ +#define REG_USART1_RCR (*(RwReg*)0x400A4104U) /**< \brief (USART1) Receive Counter Register */ +#define REG_USART1_TPR (*(RwReg*)0x400A4108U) /**< \brief (USART1) Transmit Pointer Register */ +#define REG_USART1_TCR (*(RwReg*)0x400A410CU) /**< \brief (USART1) Transmit Counter Register */ +#define REG_USART1_RNPR (*(RwReg*)0x400A4110U) /**< \brief (USART1) Receive Next Pointer Register */ +#define REG_USART1_RNCR (*(RwReg*)0x400A4114U) /**< \brief (USART1) Receive Next Counter Register */ +#define REG_USART1_TNPR (*(RwReg*)0x400A4118U) /**< \brief (USART1) Transmit Next Pointer Register */ +#define REG_USART1_TNCR (*(RwReg*)0x400A411CU) /**< \brief (USART1) Transmit Next Counter Register */ +#define REG_USART1_PTCR (*(WoReg*)0x400A4120U) /**< \brief (USART1) Transfer Control Register */ +#define REG_USART1_PTSR (*(RoReg*)0x400A4124U) /**< \brief (USART1) Transfer Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_USART1_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/wdt.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/wdt.h new file mode 100644 index 000000000..11d837506 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/wdt.h @@ -0,0 +1,56 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_WDT_INSTANCE_ +#define _SAM4E_WDT_INSTANCE_ + +/* ========== Register definition for WDT peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define REG_WDT_CR (0x400E1850U) /**< \brief (WDT) Control Register */ +#define REG_WDT_MR (0x400E1854U) /**< \brief (WDT) Mode Register */ +#define REG_WDT_SR (0x400E1858U) /**< \brief (WDT) Status Register */ +#else +#define REG_WDT_CR (*(WoReg*)0x400E1850U) /**< \brief (WDT) Control Register */ +#define REG_WDT_MR (*(RwReg*)0x400E1854U) /**< \brief (WDT) Mode Register */ +#define REG_WDT_SR (*(RoReg*)0x400E1858U) /**< \brief (WDT) Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAM4E_WDT_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e16c.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e16c.h new file mode 100644 index 000000000..019224f3a --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e16c.h @@ -0,0 +1,491 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E16C_PIO_ +#define _SAM4E16C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ +#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ +#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ +#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ +#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ +#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PA17X1_AFE0_AD0 (1u << 17) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA18X1_AFE0_AD1 (1u << 18) /**< \brief Afec0 signal: AFE0_AD1 */ +#define PIO_PC30X1_AFE0_AD10 (1u << 30) /**< \brief Afec0 signal: AFE0_AD10 */ +#define PIO_PC31X1_AFE0_AD11 (1u << 31) /**< \brief Afec0 signal: AFE0_AD11 */ +#define PIO_PC26X1_AFE0_AD12 (1u << 26) /**< \brief Afec0 signal: AFE0_AD12 */ +#define PIO_PC27X1_AFE0_AD13 (1u << 27) /**< \brief Afec0 signal: AFE0_AD13 */ +#define PIO_PC0X1_AFE0_AD14 (1u << 0) /**< \brief Afec0 signal: AFE0_AD14 */ +#define PIO_PA19X1_AFE0_AD2 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ +#define PIO_PA20X1_AFE0_AD3 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ +#define PIO_PB0X1_AFE0_AD4 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ +#define PIO_PB1X1_AFE0_AD5 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ +#define PIO_PC13X1_AFE0_AD6 (1u << 13) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PC15X1_AFE0_AD7 (1u << 15) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PC12X1_AFE0_AD8 (1u << 12) /**< \brief Afec0 signal: AFE0_AD8 */ +#define PIO_PC29X1_AFE0_AD9 (1u << 29) /**< \brief Afec0 signal: AFE0_AD9 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB2X1_AFE1_AD0 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ +#define PIO_PB3X1_AFE1_AD1 (1u << 3) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PA21X1_AFE1_AD2 (1u << 21) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PA22X1_AFE1_AD3 (1u << 22) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC1X1_AFE1_AD4 (1u << 1) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC2X1_AFE1_AD5 (1u << 2) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC3X1_AFE1_AD6 (1u << 3) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC4X1_AFE1_AD7 (1u << 4) /**< \brief Afec1 signal: AFE1_AD7 */ +/* ========== Pio definition for CAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Can0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Can0 signal: CANTX0 */ +/* ========== Pio definition for CAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Can1 signal: CANRX1 */ +#define PIO_PC15C_CANTX1 (1u << 15) /**< \brief Can1 signal: CANTX1 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD4A_GCRSDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX0 (1u << 6) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ +#define PIO_PD0A_GREFCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24X1_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25X1_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26X1_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27X1_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28X1_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29X1_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA31X1_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23X1_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA30X1_WKUP11 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ +#define PIO_PA30X1_PIODC6 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ +#define PIO_PA15X1_WKUP14 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ +#define PIO_PA15X1_PIODCEN1 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ +#define PIO_PA16X1_WKUP15 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ +#define PIO_PA16X1_PIODCEN2 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PD20A_PWMH0 (1u << 20) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PD21A_PWMH1 (1u << 21) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PD22A_PWMH2 (1u << 22) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PD23A_PWMH3 (1u << 23) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PD24A_PWML0 (1u << 24) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PD25A_PWML1 (1u << 25) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PD26A_PWML2 (1u << 26) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +#define PIO_PD27A_PWML3 (1u << 27) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TC2 peripheral ========== */ +#define PIO_PC7B_TCLK6 (1u << 7) /**< \brief Tc2 signal: TCLK6 */ +#define PIO_PC10B_TCLK7 (1u << 10) /**< \brief Tc2 signal: TCLK7 */ +#define PIO_PC14B_TCLK8 (1u << 14) /**< \brief Tc2 signal: TCLK8 */ +#define PIO_PC5B_TIOA6 (1u << 5) /**< \brief Tc2 signal: TIOA6 */ +#define PIO_PC8B_TIOA7 (1u << 8) /**< \brief Tc2 signal: TIOA7 */ +#define PIO_PC11B_TIOA8 (1u << 11) /**< \brief Tc2 signal: TIOA8 */ +#define PIO_PC6B_TIOB6 (1u << 6) /**< \brief Tc2 signal: TIOB6 */ +#define PIO_PC9B_TIOB7 (1u << 9) /**< \brief Tc2 signal: TIOB7 */ +#define PIO_PC12B_TIOB8 (1u << 12) /**< \brief Tc2 signal: TIOB8 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD23_IDX 119 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD29_IDX 125 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 +#define PIO_PE0_IDX 128 +#define PIO_PE1_IDX 129 +#define PIO_PE2_IDX 130 +#define PIO_PE3_IDX 131 +#define PIO_PE4_IDX 132 +#define PIO_PE5_IDX 133 + +#endif /* _SAM4E16C_PIO_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e16e.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e16e.h new file mode 100644 index 000000000..2036936ef --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e16e.h @@ -0,0 +1,537 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E16E_PIO_ +#define _SAM4E16E_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ +#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ +#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ +#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ +#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ +#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PA17X1_AFE0_AD0 (1u << 17) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA18X1_AFE0_AD1 (1u << 18) /**< \brief Afec0 signal: AFE0_AD1 */ +#define PIO_PC30X1_AFE0_AD10 (1u << 30) /**< \brief Afec0 signal: AFE0_AD10 */ +#define PIO_PC31X1_AFE0_AD11 (1u << 31) /**< \brief Afec0 signal: AFE0_AD11 */ +#define PIO_PC26X1_AFE0_AD12 (1u << 26) /**< \brief Afec0 signal: AFE0_AD12 */ +#define PIO_PC27X1_AFE0_AD13 (1u << 27) /**< \brief Afec0 signal: AFE0_AD13 */ +#define PIO_PC0X1_AFE0_AD14 (1u << 0) /**< \brief Afec0 signal: AFE0_AD14 */ +#define PIO_PA19X1_AFE0_AD2 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ +#define PIO_PA20X1_AFE0_AD3 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ +#define PIO_PB0X1_AFE0_AD4 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ +#define PIO_PB1X1_AFE0_AD5 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ +#define PIO_PC13X1_AFE0_AD6 (1u << 13) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PC15X1_AFE0_AD7 (1u << 15) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PC12X1_AFE0_AD8 (1u << 12) /**< \brief Afec0 signal: AFE0_AD8 */ +#define PIO_PC29X1_AFE0_AD9 (1u << 29) /**< \brief Afec0 signal: AFE0_AD9 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB2X1_AFE1_AD0 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ +#define PIO_PB3X1_AFE1_AD1 (1u << 3) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PA21X1_AFE1_AD2 (1u << 21) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PA22X1_AFE1_AD3 (1u << 22) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC1X1_AFE1_AD4 (1u << 1) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC2X1_AFE1_AD5 (1u << 2) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC3X1_AFE1_AD6 (1u << 3) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC4X1_AFE1_AD7 (1u << 4) /**< \brief Afec1 signal: AFE1_AD7 */ +/* ========== Pio definition for CAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Can0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Can0 signal: CANTX0 */ +/* ========== Pio definition for CAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Can1 signal: CANRX1 */ +#define PIO_PC15C_CANTX1 (1u << 15) /**< \brief Can1 signal: CANTX1 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0 */ +#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ +#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ +#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ +#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ +#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ +#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ +#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ +#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16 */ +#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17 */ +#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ +#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ +#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ +#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ +#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ +#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ +#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ +#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ +#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ +#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ +#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ +#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ +#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ +#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ +#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ +#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ +#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ +#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ +#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ +#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ +#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ +#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ +#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ +#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1 */ +#define PIO_PD18A_NCS1 (1u << 18) /**< \brief Ebi signal: NCS1 */ +#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ +#define PIO_PD19A_NCS3 (1u << 19) /**< \brief Ebi signal: NCS3 */ +#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ +#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWE */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD4A_GCRSDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX0 (1u << 6) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ +#define PIO_PD0A_GREFCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24X1_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25X1_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26X1_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27X1_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28X1_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29X1_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA31X1_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23X1_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA30X1_WKUP11 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ +#define PIO_PA30X1_PIODC6 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ +#define PIO_PA15X1_WKUP14 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ +#define PIO_PA15X1_PIODCEN1 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ +#define PIO_PA16X1_WKUP15 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ +#define PIO_PA16X1_PIODCEN2 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PD20A_PWMH0 (1u << 20) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PD21A_PWMH1 (1u << 21) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PD22A_PWMH2 (1u << 22) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PD23A_PWMH3 (1u << 23) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PD24A_PWML0 (1u << 24) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PD25A_PWML1 (1u << 25) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PD26A_PWML2 (1u << 26) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +#define PIO_PD27A_PWML3 (1u << 27) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TC2 peripheral ========== */ +#define PIO_PC7B_TCLK6 (1u << 7) /**< \brief Tc2 signal: TCLK6 */ +#define PIO_PC10B_TCLK7 (1u << 10) /**< \brief Tc2 signal: TCLK7 */ +#define PIO_PC14B_TCLK8 (1u << 14) /**< \brief Tc2 signal: TCLK8 */ +#define PIO_PC5B_TIOA6 (1u << 5) /**< \brief Tc2 signal: TIOA6 */ +#define PIO_PC8B_TIOA7 (1u << 8) /**< \brief Tc2 signal: TIOA7 */ +#define PIO_PC11B_TIOA8 (1u << 11) /**< \brief Tc2 signal: TIOA8 */ +#define PIO_PC6B_TIOB6 (1u << 6) /**< \brief Tc2 signal: TIOB6 */ +#define PIO_PC9B_TIOB7 (1u << 9) /**< \brief Tc2 signal: TIOB7 */ +#define PIO_PC12B_TIOB8 (1u << 12) /**< \brief Tc2 signal: TIOB8 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD23_IDX 119 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD29_IDX 125 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 +#define PIO_PE0_IDX 128 +#define PIO_PE1_IDX 129 +#define PIO_PE2_IDX 130 +#define PIO_PE3_IDX 131 +#define PIO_PE4_IDX 132 +#define PIO_PE5_IDX 133 + +#endif /* _SAM4E16E_PIO_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e8c.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e8c.h new file mode 100644 index 000000000..0db996918 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e8c.h @@ -0,0 +1,491 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E8C_PIO_ +#define _SAM4E8C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ +#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ +#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ +#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ +#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ +#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PA17X1_AFE0_AD0 (1u << 17) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA18X1_AFE0_AD1 (1u << 18) /**< \brief Afec0 signal: AFE0_AD1 */ +#define PIO_PC30X1_AFE0_AD10 (1u << 30) /**< \brief Afec0 signal: AFE0_AD10 */ +#define PIO_PC31X1_AFE0_AD11 (1u << 31) /**< \brief Afec0 signal: AFE0_AD11 */ +#define PIO_PC26X1_AFE0_AD12 (1u << 26) /**< \brief Afec0 signal: AFE0_AD12 */ +#define PIO_PC27X1_AFE0_AD13 (1u << 27) /**< \brief Afec0 signal: AFE0_AD13 */ +#define PIO_PC0X1_AFE0_AD14 (1u << 0) /**< \brief Afec0 signal: AFE0_AD14 */ +#define PIO_PA19X1_AFE0_AD2 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ +#define PIO_PA20X1_AFE0_AD3 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ +#define PIO_PB0X1_AFE0_AD4 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ +#define PIO_PB1X1_AFE0_AD5 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ +#define PIO_PC13X1_AFE0_AD6 (1u << 13) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PC15X1_AFE0_AD7 (1u << 15) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PC12X1_AFE0_AD8 (1u << 12) /**< \brief Afec0 signal: AFE0_AD8 */ +#define PIO_PC29X1_AFE0_AD9 (1u << 29) /**< \brief Afec0 signal: AFE0_AD9 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB2X1_AFE1_AD0 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ +#define PIO_PB3X1_AFE1_AD1 (1u << 3) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PA21X1_AFE1_AD2 (1u << 21) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PA22X1_AFE1_AD3 (1u << 22) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC1X1_AFE1_AD4 (1u << 1) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC2X1_AFE1_AD5 (1u << 2) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC3X1_AFE1_AD6 (1u << 3) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC4X1_AFE1_AD7 (1u << 4) /**< \brief Afec1 signal: AFE1_AD7 */ +/* ========== Pio definition for CAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Can0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Can0 signal: CANTX0 */ +/* ========== Pio definition for CAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Can1 signal: CANRX1 */ +#define PIO_PC15C_CANTX1 (1u << 15) /**< \brief Can1 signal: CANTX1 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD4A_GCRSDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX0 (1u << 6) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ +#define PIO_PD0A_GREFCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24X1_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25X1_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26X1_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27X1_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28X1_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29X1_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA31X1_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23X1_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA30X1_WKUP11 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ +#define PIO_PA30X1_PIODC6 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ +#define PIO_PA15X1_WKUP14 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ +#define PIO_PA15X1_PIODCEN1 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ +#define PIO_PA16X1_WKUP15 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ +#define PIO_PA16X1_PIODCEN2 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PD20A_PWMH0 (1u << 20) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PD21A_PWMH1 (1u << 21) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PD22A_PWMH2 (1u << 22) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PD23A_PWMH3 (1u << 23) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PD24A_PWML0 (1u << 24) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PD25A_PWML1 (1u << 25) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PD26A_PWML2 (1u << 26) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +#define PIO_PD27A_PWML3 (1u << 27) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TC2 peripheral ========== */ +#define PIO_PC7B_TCLK6 (1u << 7) /**< \brief Tc2 signal: TCLK6 */ +#define PIO_PC10B_TCLK7 (1u << 10) /**< \brief Tc2 signal: TCLK7 */ +#define PIO_PC14B_TCLK8 (1u << 14) /**< \brief Tc2 signal: TCLK8 */ +#define PIO_PC5B_TIOA6 (1u << 5) /**< \brief Tc2 signal: TIOA6 */ +#define PIO_PC8B_TIOA7 (1u << 8) /**< \brief Tc2 signal: TIOA7 */ +#define PIO_PC11B_TIOA8 (1u << 11) /**< \brief Tc2 signal: TIOA8 */ +#define PIO_PC6B_TIOB6 (1u << 6) /**< \brief Tc2 signal: TIOB6 */ +#define PIO_PC9B_TIOB7 (1u << 9) /**< \brief Tc2 signal: TIOB7 */ +#define PIO_PC12B_TIOB8 (1u << 12) /**< \brief Tc2 signal: TIOB8 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD23_IDX 119 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD29_IDX 125 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 +#define PIO_PE0_IDX 128 +#define PIO_PE1_IDX 129 +#define PIO_PE2_IDX 130 +#define PIO_PE3_IDX 131 +#define PIO_PE4_IDX 132 +#define PIO_PE5_IDX 133 + +#endif /* _SAM4E8C_PIO_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e8e.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e8e.h new file mode 100644 index 000000000..c9af41d46 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e8e.h @@ -0,0 +1,537 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E8E_PIO_ +#define _SAM4E8E_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ +#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ +#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ +#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ +#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ +#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PA17X1_AFE0_AD0 (1u << 17) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA18X1_AFE0_AD1 (1u << 18) /**< \brief Afec0 signal: AFE0_AD1 */ +#define PIO_PC30X1_AFE0_AD10 (1u << 30) /**< \brief Afec0 signal: AFE0_AD10 */ +#define PIO_PC31X1_AFE0_AD11 (1u << 31) /**< \brief Afec0 signal: AFE0_AD11 */ +#define PIO_PC26X1_AFE0_AD12 (1u << 26) /**< \brief Afec0 signal: AFE0_AD12 */ +#define PIO_PC27X1_AFE0_AD13 (1u << 27) /**< \brief Afec0 signal: AFE0_AD13 */ +#define PIO_PC0X1_AFE0_AD14 (1u << 0) /**< \brief Afec0 signal: AFE0_AD14 */ +#define PIO_PA19X1_AFE0_AD2 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ +#define PIO_PA20X1_AFE0_AD3 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ +#define PIO_PB0X1_AFE0_AD4 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ +#define PIO_PB1X1_AFE0_AD5 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ +#define PIO_PC13X1_AFE0_AD6 (1u << 13) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PC15X1_AFE0_AD7 (1u << 15) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PC12X1_AFE0_AD8 (1u << 12) /**< \brief Afec0 signal: AFE0_AD8 */ +#define PIO_PC29X1_AFE0_AD9 (1u << 29) /**< \brief Afec0 signal: AFE0_AD9 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB2X1_AFE1_AD0 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ +#define PIO_PB3X1_AFE1_AD1 (1u << 3) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PA21X1_AFE1_AD2 (1u << 21) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PA22X1_AFE1_AD3 (1u << 22) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC1X1_AFE1_AD4 (1u << 1) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC2X1_AFE1_AD5 (1u << 2) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC3X1_AFE1_AD6 (1u << 3) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC4X1_AFE1_AD7 (1u << 4) /**< \brief Afec1 signal: AFE1_AD7 */ +/* ========== Pio definition for CAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Can0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Can0 signal: CANTX0 */ +/* ========== Pio definition for CAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Can1 signal: CANRX1 */ +#define PIO_PC15C_CANTX1 (1u << 15) /**< \brief Can1 signal: CANTX1 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0 */ +#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ +#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ +#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ +#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ +#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ +#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ +#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ +#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16 */ +#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17 */ +#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ +#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ +#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ +#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ +#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ +#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ +#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ +#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ +#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ +#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ +#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ +#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ +#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ +#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ +#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ +#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ +#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ +#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ +#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ +#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ +#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ +#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ +#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ +#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1 */ +#define PIO_PD18A_NCS1 (1u << 18) /**< \brief Ebi signal: NCS1 */ +#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ +#define PIO_PD19A_NCS3 (1u << 19) /**< \brief Ebi signal: NCS3 */ +#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ +#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWE */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD4A_GCRSDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX0 (1u << 6) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ +#define PIO_PD0A_GREFCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24X1_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25X1_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26X1_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27X1_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28X1_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29X1_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA31X1_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23X1_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA30X1_WKUP11 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ +#define PIO_PA30X1_PIODC6 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ +#define PIO_PA15X1_WKUP14 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ +#define PIO_PA15X1_PIODCEN1 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ +#define PIO_PA16X1_WKUP15 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ +#define PIO_PA16X1_PIODCEN2 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PD20A_PWMH0 (1u << 20) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PD21A_PWMH1 (1u << 21) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PD22A_PWMH2 (1u << 22) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PD23A_PWMH3 (1u << 23) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PD24A_PWML0 (1u << 24) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PD25A_PWML1 (1u << 25) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PD26A_PWML2 (1u << 26) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +#define PIO_PD27A_PWML3 (1u << 27) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TC2 peripheral ========== */ +#define PIO_PC7B_TCLK6 (1u << 7) /**< \brief Tc2 signal: TCLK6 */ +#define PIO_PC10B_TCLK7 (1u << 10) /**< \brief Tc2 signal: TCLK7 */ +#define PIO_PC14B_TCLK8 (1u << 14) /**< \brief Tc2 signal: TCLK8 */ +#define PIO_PC5B_TIOA6 (1u << 5) /**< \brief Tc2 signal: TIOA6 */ +#define PIO_PC8B_TIOA7 (1u << 8) /**< \brief Tc2 signal: TIOA7 */ +#define PIO_PC11B_TIOA8 (1u << 11) /**< \brief Tc2 signal: TIOA8 */ +#define PIO_PC6B_TIOB6 (1u << 6) /**< \brief Tc2 signal: TIOB6 */ +#define PIO_PC9B_TIOB7 (1u << 9) /**< \brief Tc2 signal: TIOB7 */ +#define PIO_PC12B_TIOB8 (1u << 12) /**< \brief Tc2 signal: TIOB8 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD23_IDX 119 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD29_IDX 125 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 +#define PIO_PE0_IDX 128 +#define PIO_PE1_IDX 129 +#define PIO_PE2_IDX 130 +#define PIO_PE3_IDX 131 +#define PIO_PE4_IDX 132 +#define PIO_PE5_IDX 133 + +#endif /* _SAM4E8E_PIO_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e.h new file mode 100644 index 000000000..304248ebe --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e.h @@ -0,0 +1,57 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E_ +#define _SAM4E_ + +#if defined __SAM4E8C__ + #include "sam4e8c.h" +#elif defined __SAM4E8E__ + #include "sam4e8e.h" +#elif defined __SAM4E16C__ + #include "sam4e16c.h" +#elif defined __SAM4E16E__ + #include "sam4e16e.h" +#else + #error Library does not support the specified device. +#endif + +#endif /* _SAM4E_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e16c.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e16c.h new file mode 100644 index 000000000..908b7ca39 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e16c.h @@ -0,0 +1,590 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E16C_ +#define _SAM4E16C_ + +/** \addtogroup SAM4E16C_definitions SAM4E16C definitions + This file defines all structures and symbols for SAM4E16C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM4E16C */ +/* ************************************************************************** */ +/** \addtogroup SAM4E16C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M4 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M4 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M4 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M4 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M4 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M4 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M4 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M4 System Tick Interrupt */ +/****** SAM4E16C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM4E16C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM4E16C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM4E16C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM4E16C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM4E16C Watchdog/Dual Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM4E16C Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM4E16C Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAM4E16C UART 0 (UART0) */ + PIOA_IRQn = 9, /**< 9 SAM4E16C Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 10, /**< 10 SAM4E16C Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 11, /**< 11 SAM4E16C Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 14, /**< 14 SAM4E16C USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM4E16C USART 1 (USART1) */ + HSMCI_IRQn = 16, /**< 16 SAM4E16C Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 17, /**< 17 SAM4E16C Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 18, /**< 18 SAM4E16C Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 19, /**< 19 SAM4E16C Serial Peripheral Interface (SPI) */ + DMAC_IRQn = 20, /**< 20 SAM4E16C DMAC (DMAC) */ + TC0_IRQn = 21, /**< 21 SAM4E16C Timer/Counter 0 (TC0) */ + TC1_IRQn = 22, /**< 22 SAM4E16C Timer/Counter 1 (TC1) */ + TC2_IRQn = 23, /**< 23 SAM4E16C Timer/Counter 2 (TC2) */ + TC3_IRQn = 24, /**< 24 SAM4E16C Timer/Counter 3 (TC3) */ + TC4_IRQn = 25, /**< 25 SAM4E16C Timer/Counter 4 (TC4) */ + TC5_IRQn = 26, /**< 26 SAM4E16C Timer/Counter 5 (TC5) */ + TC6_IRQn = 27, /**< 27 SAM4E16C Timer/Counter 6 (TC6) */ + TC7_IRQn = 28, /**< 28 SAM4E16C Timer/Counter 7 (TC7) */ + TC8_IRQn = 29, /**< 29 SAM4E16C Timer/Counter 8 (TC8) */ + AFEC0_IRQn = 30, /**< 30 SAM4E16C Analog Front End 0 (AFEC0) */ + AFEC1_IRQn = 31, /**< 31 SAM4E16C Analog Front End 1 (AFEC1) */ + DACC_IRQn = 32, /**< 32 SAM4E16C Digital To Analog Converter (DACC) */ + ACC_IRQn = 33, /**< 33 SAM4E16C Analog Comparator (ACC) */ + ARM_IRQn = 34, /**< 34 SAM4E16C FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ + UDP_IRQn = 35, /**< 35 SAM4E16C USB DEVICE (UDP) */ + PWM_IRQn = 36, /**< 36 SAM4E16C PWM (PWM) */ + CAN0_IRQn = 37, /**< 37 SAM4E16C CAN0 (CAN0) */ + CAN1_IRQn = 38, /**< 38 SAM4E16C CAN1 (CAN1) */ + AES_IRQn = 39, /**< 39 SAM4E16C AES (AES) */ + UART1_IRQn = 45, /**< 45 SAM4E16C UART (UART1) */ + + PERIPH_COUNT_IRQn = 46 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog/Dual Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pvReserved8; + void* pfnPIOA_Handler; /* 9 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 10 Parallel I/O Controller B */ + void* pfnPIOC_Handler; /* 11 Parallel I/O Controller C */ + void* pvReserved12; + void* pvReserved13; + void* pfnUSART0_Handler; /* 14 USART 0 */ + void* pfnUSART1_Handler; /* 15 USART 1 */ + void* pfnHSMCI_Handler; /* 16 Multimedia Card Interface */ + void* pfnTWI0_Handler; /* 17 Two Wire Interface 0 */ + void* pfnTWI1_Handler; /* 18 Two Wire Interface 1 */ + void* pfnSPI_Handler; /* 19 Serial Peripheral Interface */ + void* pfnDMAC_Handler; /* 20 DMAC */ + void* pfnTC0_Handler; /* 21 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 22 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 23 Timer/Counter 2 */ + void* pfnTC3_Handler; /* 24 Timer/Counter 3 */ + void* pfnTC4_Handler; /* 25 Timer/Counter 4 */ + void* pfnTC5_Handler; /* 26 Timer/Counter 5 */ + void* pfnTC6_Handler; /* 27 Timer/Counter 6 */ + void* pfnTC7_Handler; /* 28 Timer/Counter 7 */ + void* pfnTC8_Handler; /* 29 Timer/Counter 8 */ + void* pfnAFEC0_Handler; /* 30 Analog Front End 0 */ + void* pfnAFEC1_Handler; /* 31 Analog Front End 1 */ + void* pfnDACC_Handler; /* 32 Digital To Analog Converter */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnARM_Handler; /* 34 FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC */ + void* pfnUDP_Handler; /* 35 USB DEVICE */ + void* pfnPWM_Handler; /* 36 PWM */ + void* pfnCAN0_Handler; /* 37 CAN0 */ + void* pfnCAN1_Handler; /* 38 CAN1 */ + void* pfnAES_Handler; /* 39 AES */ + void* pvReserved40; + void* pvReserved41; + void* pvReserved42; + void* pvReserved43; + void* pvReserved44; + void* pfnUART1_Handler; /* 45 UART */ +} DeviceVectors; + +/* Cortex-M4 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void ARM_Handler ( void ); +void CAN0_Handler ( void ); +void CAN1_Handler ( void ); +void DACC_Handler ( void ); +void DMAC_Handler ( void ); +void EFC_Handler ( void ); +void HSMCI_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOC_Handler ( void ); +void PMC_Handler ( void ); +void PWM_Handler ( void ); +void RSTC_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SPI_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC3_Handler ( void ); +void TC4_Handler ( void ); +void TC5_Handler ( void ); +void TC6_Handler ( void ); +void TC7_Handler ( void ); +void TC8_Handler ( void ); +void TWI0_Handler ( void ); +void TWI1_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UDP_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void WDT_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M4 Processor and Core Peripherals + */ + +#define __CM4_REV 0x0000 /**< SAM4E16C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 0 /**< SAM4E16C does not provide a MPU */ +#define __FPU_PRESENT 1 /**< SAM4E16C does provide a FPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM4E16C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_sam4e.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM4E16C */ +/* ************************************************************************** */ +/** \addtogroup SAM4E16C_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/can.h" +#include "component/chipid.h" +#include "component/cmcc.h" +#include "component/crccu.h" +#include "component/dacc.h" +#include "component/dmac.h" +#include "component/efc.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/matrix.h" +#include "component/pdc.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/spi.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/twi.h" +#include "component/uart.h" +#include "component/udp.h" +#include "component/usart.h" +#include "component/wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM4E16C */ +/* ************************************************************************** */ +/** \addtogroup SAM4E16C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/pwm.h" +#include "instance/aes.h" +#include "instance/can0.h" +#include "instance/can1.h" +#include "instance/crccu.h" +#include "instance/uart1.h" +#include "instance/hsmci.h" +#include "instance/udp.h" +#include "instance/spi.h" +#include "instance/tc0.h" +#include "instance/tc1.h" +#include "instance/tc2.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/twi0.h" +#include "instance/twi1.h" +#include "instance/afec0.h" +#include "instance/afec1.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/dmac.h" +#include "instance/cmcc.h" +#include "instance/matrix.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/pioc.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM4E16C */ +/* ************************************************************************** */ +/** \addtogroup SAM4E16C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog/Dual Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_PIOA ( 9) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (10) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (11) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_HSMCI (16) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (17) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (18) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (19) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_DMAC (20) /**< \brief DMAC (DMAC) */ +#define ID_TC0 (21) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (22) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (23) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (24) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (25) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (26) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_TC6 (27) /**< \brief Timer/Counter 6 (TC6) */ +#define ID_TC7 (28) /**< \brief Timer/Counter 7 (TC7) */ +#define ID_TC8 (29) /**< \brief Timer/Counter 8 (TC8) */ +#define ID_AFEC0 (30) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_AFEC1 (31) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_DACC (32) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_ARM (34) /**< \brief FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ +#define ID_UDP (35) /**< \brief USB DEVICE (UDP) */ +#define ID_PWM (36) /**< \brief PWM (PWM) */ +#define ID_CAN0 (37) /**< \brief CAN0 (CAN0) */ +#define ID_CAN1 (38) /**< \brief CAN1 (CAN1) */ +#define ID_AES (39) /**< \brief AES (AES) */ +#define ID_UART1 (45) /**< \brief UART (UART1) */ + +#define ID_PERIPH_COUNT (46) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM4E16C */ +/* ************************************************************************** */ +/** \addtogroup SAM4E16C_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define PWM (0x40000000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40000100U) /**< \brief (PDC_PWM ) Base Address */ +#define AES (0x40004000U) /**< \brief (AES ) Base Address */ +#define CAN0 (0x40010000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 (0x40014000U) /**< \brief (CAN1 ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define UART1 (0x40060600U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ +#define HSMCI (0x40080000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI (0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define UDP (0x40084000U) /**< \brief (UDP ) Base Address */ +#define SPI (0x40088000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40088100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40090000U) /**< \brief (TC0 ) Base Address */ +#define PDC_TC0 (0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ +#define TC1 (0x40094000U) /**< \brief (TC1 ) Base Address */ +#define PDC_TC1 (0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ +#define TC2 (0x40098000U) /**< \brief (TC2 ) Base Address */ +#define USART0 (0x400A0000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x400A0100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x400A4000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x400A4100U) /**< \brief (PDC_USART1) Base Address */ +#define TWI0 (0x400A8000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x400AC000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define AFEC0 (0x400B0000U) /**< \brief (AFEC0 ) Base Address */ +#define PDC_AFEC0 (0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ +#define AFEC1 (0x400B4000U) /**< \brief (AFEC1 ) Base Address */ +#define PDC_AFEC1 (0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ +#define DACC (0x400B8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x400BC000U) /**< \brief (ACC ) Base Address */ +#define DMAC (0x400C0000U) /**< \brief (DMAC ) Base Address */ +#define CMCC (0x400C4000U) /**< \brief (CMCC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#else +#define PWM ((Pwm *)0x40000000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40000100U) /**< \brief (PDC_PWM ) Base Address */ +#define AES ((Aes *)0x40004000U) /**< \brief (AES ) Base Address */ +#define CAN0 ((Can *)0x40010000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 ((Can *)0x40014000U) /**< \brief (CAN1 ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define UART1 ((Uart *)0x40060600U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ +#define HSMCI ((Hsmci *)0x40080000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI ((Pdc *)0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define UDP ((Udp *)0x40084000U) /**< \brief (UDP ) Base Address */ +#define SPI ((Spi *)0x40088000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40088100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40090000U) /**< \brief (TC0 ) Base Address */ +#define PDC_TC0 ((Pdc *)0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ +#define TC1 ((Tc *)0x40094000U) /**< \brief (TC1 ) Base Address */ +#define PDC_TC1 ((Pdc *)0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ +#define TC2 ((Tc *)0x40098000U) /**< \brief (TC2 ) Base Address */ +#define USART0 ((Usart *)0x400A0000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x400A4000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x400A4100U) /**< \brief (PDC_USART1) Base Address */ +#define TWI0 ((Twi *)0x400A8000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x400AC000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define AFEC0 ((Afec *)0x400B0000U) /**< \brief (AFEC0 ) Base Address */ +#define PDC_AFEC0 ((Pdc *)0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ +#define AFEC1 ((Afec *)0x400B4000U) /**< \brief (AFEC1 ) Base Address */ +#define PDC_AFEC1 ((Pdc *)0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ +#define DACC ((Dacc *)0x400B8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x400BC000U) /**< \brief (ACC ) Base Address */ +#define DMAC ((Dmac *)0x400C0000U) /**< \brief (DMAC ) Base Address */ +#define CMCC ((Cmcc *)0x400C4000U) /**< \brief (CMCC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM4E16C */ +/* ************************************************************************** */ +/** \addtogroup SAM4E16C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/sam4e16c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM4E16C */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x100000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (8192u) +#define IFLASH_NB_OF_PAGES (2048u) +#define IFLASH_NB_OF_LOCK_BITS (128u) +#define IRAM_SIZE (0x20000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAM4E16C */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3703FUL) +#define CHIP_CIDR (0xA3CC0CE0UL) +#define CHIP_EXID (0x00110201UL) +#define NB_CH_AFE0 (6UL) +#define NB_CH_AFE1 (4UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM4E16C */ +/* ************************************************************************** */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (120000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Write Wait State */ +#define CHIP_FLASH_WRITE_WAIT_STATE (6U) + +/* Embedded Flash Read Wait State (VDDCORE set at 1.20V) */ +#define CHIP_FREQ_FWS_0 (20000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (40000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (60000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (80000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (100000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (123000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM4E16C_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e16e.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e16e.h new file mode 100644 index 000000000..8a1437d3b --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e16e.h @@ -0,0 +1,614 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E16E_ +#define _SAM4E16E_ + +/** \addtogroup SAM4E16E_definitions SAM4E16E definitions + This file defines all structures and symbols for SAM4E16E: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM4E16E */ +/* ************************************************************************** */ +/** \addtogroup SAM4E16E_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M4 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M4 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M4 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M4 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M4 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M4 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M4 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M4 System Tick Interrupt */ +/****** SAM4E16E specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM4E16E Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM4E16E Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM4E16E Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM4E16E Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM4E16E Watchdog/Dual Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM4E16E Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM4E16E Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAM4E16E UART 0 (UART0) */ + PIOA_IRQn = 9, /**< 9 SAM4E16E Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 10, /**< 10 SAM4E16E Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 11, /**< 11 SAM4E16E Parallel I/O Controller C (PIOC) */ + PIOD_IRQn = 12, /**< 12 SAM4E16E Parallel I/O Controller D (PIOD) */ + PIOE_IRQn = 13, /**< 13 SAM4E16E Parallel I/O Controller E (PIOE) */ + USART0_IRQn = 14, /**< 14 SAM4E16E USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM4E16E USART 1 (USART1) */ + HSMCI_IRQn = 16, /**< 16 SAM4E16E Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 17, /**< 17 SAM4E16E Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 18, /**< 18 SAM4E16E Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 19, /**< 19 SAM4E16E Serial Peripheral Interface (SPI) */ + DMAC_IRQn = 20, /**< 20 SAM4E16E DMAC (DMAC) */ + TC0_IRQn = 21, /**< 21 SAM4E16E Timer/Counter 0 (TC0) */ + TC1_IRQn = 22, /**< 22 SAM4E16E Timer/Counter 1 (TC1) */ + TC2_IRQn = 23, /**< 23 SAM4E16E Timer/Counter 2 (TC2) */ + TC3_IRQn = 24, /**< 24 SAM4E16E Timer/Counter 3 (TC3) */ + TC4_IRQn = 25, /**< 25 SAM4E16E Timer/Counter 4 (TC4) */ + TC5_IRQn = 26, /**< 26 SAM4E16E Timer/Counter 5 (TC5) */ + TC6_IRQn = 27, /**< 27 SAM4E16E Timer/Counter 6 (TC6) */ + TC7_IRQn = 28, /**< 28 SAM4E16E Timer/Counter 7 (TC7) */ + TC8_IRQn = 29, /**< 29 SAM4E16E Timer/Counter 8 (TC8) */ + AFEC0_IRQn = 30, /**< 30 SAM4E16E Analog Front End 0 (AFEC0) */ + AFEC1_IRQn = 31, /**< 31 SAM4E16E Analog Front End 1 (AFEC1) */ + DACC_IRQn = 32, /**< 32 SAM4E16E Digital To Analog Converter (DACC) */ + ACC_IRQn = 33, /**< 33 SAM4E16E Analog Comparator (ACC) */ + ARM_IRQn = 34, /**< 34 SAM4E16E FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ + UDP_IRQn = 35, /**< 35 SAM4E16E USB DEVICE (UDP) */ + PWM_IRQn = 36, /**< 36 SAM4E16E PWM (PWM) */ + CAN0_IRQn = 37, /**< 37 SAM4E16E CAN0 (CAN0) */ + CAN1_IRQn = 38, /**< 38 SAM4E16E CAN1 (CAN1) */ + AES_IRQn = 39, /**< 39 SAM4E16E AES (AES) */ + GMAC_IRQn = 44, /**< 44 SAM4E16E EMAC (GMAC) */ + UART1_IRQn = 45, /**< 45 SAM4E16E UART (UART1) */ + + PERIPH_COUNT_IRQn = 46 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog/Dual Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pvReserved8; + void* pfnPIOA_Handler; /* 9 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 10 Parallel I/O Controller B */ + void* pfnPIOC_Handler; /* 11 Parallel I/O Controller C */ + void* pfnPIOD_Handler; /* 12 Parallel I/O Controller D */ + void* pfnPIOE_Handler; /* 13 Parallel I/O Controller E */ + void* pfnUSART0_Handler; /* 14 USART 0 */ + void* pfnUSART1_Handler; /* 15 USART 1 */ + void* pfnHSMCI_Handler; /* 16 Multimedia Card Interface */ + void* pfnTWI0_Handler; /* 17 Two Wire Interface 0 */ + void* pfnTWI1_Handler; /* 18 Two Wire Interface 1 */ + void* pfnSPI_Handler; /* 19 Serial Peripheral Interface */ + void* pfnDMAC_Handler; /* 20 DMAC */ + void* pfnTC0_Handler; /* 21 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 22 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 23 Timer/Counter 2 */ + void* pfnTC3_Handler; /* 24 Timer/Counter 3 */ + void* pfnTC4_Handler; /* 25 Timer/Counter 4 */ + void* pfnTC5_Handler; /* 26 Timer/Counter 5 */ + void* pfnTC6_Handler; /* 27 Timer/Counter 6 */ + void* pfnTC7_Handler; /* 28 Timer/Counter 7 */ + void* pfnTC8_Handler; /* 29 Timer/Counter 8 */ + void* pfnAFEC0_Handler; /* 30 Analog Front End 0 */ + void* pfnAFEC1_Handler; /* 31 Analog Front End 1 */ + void* pfnDACC_Handler; /* 32 Digital To Analog Converter */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnARM_Handler; /* 34 FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC */ + void* pfnUDP_Handler; /* 35 USB DEVICE */ + void* pfnPWM_Handler; /* 36 PWM */ + void* pfnCAN0_Handler; /* 37 CAN0 */ + void* pfnCAN1_Handler; /* 38 CAN1 */ + void* pfnAES_Handler; /* 39 AES */ + void* pvReserved40; + void* pvReserved41; + void* pvReserved42; + void* pvReserved43; + void* pfnGMAC_Handler; /* 44 EMAC */ + void* pfnUART1_Handler; /* 45 UART */ +} DeviceVectors; + +/* Cortex-M4 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void ARM_Handler ( void ); +void CAN0_Handler ( void ); +void CAN1_Handler ( void ); +void DACC_Handler ( void ); +void DMAC_Handler ( void ); +void EFC_Handler ( void ); +void GMAC_Handler ( void ); +void HSMCI_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOC_Handler ( void ); +void PIOD_Handler ( void ); +void PIOE_Handler ( void ); +void PMC_Handler ( void ); +void PWM_Handler ( void ); +void RSTC_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SPI_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC3_Handler ( void ); +void TC4_Handler ( void ); +void TC5_Handler ( void ); +void TC6_Handler ( void ); +void TC7_Handler ( void ); +void TC8_Handler ( void ); +void TWI0_Handler ( void ); +void TWI1_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UDP_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void WDT_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M4 Processor and Core Peripherals + */ + +#define __CM4_REV 0x0000 /**< SAM4E16E core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 0 /**< SAM4E16E does not provide a MPU */ +#define __FPU_PRESENT 1 /**< SAM4E16E does provide a FPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM4E16E uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_sam4e.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM4E16E */ +/* ************************************************************************** */ +/** \addtogroup SAM4E16E_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/can.h" +#include "component/chipid.h" +#include "component/cmcc.h" +#include "component/crccu.h" +#include "component/dacc.h" +#include "component/dmac.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/matrix.h" +#include "component/pdc.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/smc.h" +#include "component/spi.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/twi.h" +#include "component/uart.h" +#include "component/udp.h" +#include "component/usart.h" +#include "component/wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM4E16E */ +/* ************************************************************************** */ +/** \addtogroup SAM4E16E_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/pwm.h" +#include "instance/aes.h" +#include "instance/can0.h" +#include "instance/can1.h" +#include "instance/gmac.h" +#include "instance/crccu.h" +#include "instance/smc.h" +#include "instance/uart1.h" +#include "instance/hsmci.h" +#include "instance/udp.h" +#include "instance/spi.h" +#include "instance/tc0.h" +#include "instance/tc1.h" +#include "instance/tc2.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/twi0.h" +#include "instance/twi1.h" +#include "instance/afec0.h" +#include "instance/afec1.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/dmac.h" +#include "instance/cmcc.h" +#include "instance/matrix.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/pioc.h" +#include "instance/piod.h" +#include "instance/pioe.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM4E16E */ +/* ************************************************************************** */ +/** \addtogroup SAM4E16E_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog/Dual Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_SMC ( 8) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA ( 9) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (10) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (11) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_PIOD (12) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_PIOE (13) /**< \brief Parallel I/O Controller E (PIOE) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_HSMCI (16) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (17) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (18) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (19) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_DMAC (20) /**< \brief DMAC (DMAC) */ +#define ID_TC0 (21) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (22) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (23) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (24) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (25) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (26) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_TC6 (27) /**< \brief Timer/Counter 6 (TC6) */ +#define ID_TC7 (28) /**< \brief Timer/Counter 7 (TC7) */ +#define ID_TC8 (29) /**< \brief Timer/Counter 8 (TC8) */ +#define ID_AFEC0 (30) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_AFEC1 (31) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_DACC (32) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_ARM (34) /**< \brief FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ +#define ID_UDP (35) /**< \brief USB DEVICE (UDP) */ +#define ID_PWM (36) /**< \brief PWM (PWM) */ +#define ID_CAN0 (37) /**< \brief CAN0 (CAN0) */ +#define ID_CAN1 (38) /**< \brief CAN1 (CAN1) */ +#define ID_AES (39) /**< \brief AES (AES) */ +#define ID_GMAC (44) /**< \brief EMAC (GMAC) */ +#define ID_UART1 (45) /**< \brief UART (UART1) */ + +#define ID_PERIPH_COUNT (46) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM4E16E */ +/* ************************************************************************** */ +/** \addtogroup SAM4E16E_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define PWM (0x40000000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40000100U) /**< \brief (PDC_PWM ) Base Address */ +#define AES (0x40004000U) /**< \brief (AES ) Base Address */ +#define CAN0 (0x40010000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 (0x40014000U) /**< \brief (CAN1 ) Base Address */ +#define GMAC (0x40034000U) /**< \brief (GMAC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define SMC (0x40060000U) /**< \brief (SMC ) Base Address */ +#define UART1 (0x40060600U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ +#define HSMCI (0x40080000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI (0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define UDP (0x40084000U) /**< \brief (UDP ) Base Address */ +#define SPI (0x40088000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40088100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40090000U) /**< \brief (TC0 ) Base Address */ +#define PDC_TC0 (0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ +#define TC1 (0x40094000U) /**< \brief (TC1 ) Base Address */ +#define PDC_TC1 (0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ +#define TC2 (0x40098000U) /**< \brief (TC2 ) Base Address */ +#define USART0 (0x400A0000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x400A0100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x400A4000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x400A4100U) /**< \brief (PDC_USART1) Base Address */ +#define TWI0 (0x400A8000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x400AC000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define AFEC0 (0x400B0000U) /**< \brief (AFEC0 ) Base Address */ +#define PDC_AFEC0 (0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ +#define AFEC1 (0x400B4000U) /**< \brief (AFEC1 ) Base Address */ +#define PDC_AFEC1 (0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ +#define DACC (0x400B8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x400BC000U) /**< \brief (ACC ) Base Address */ +#define DMAC (0x400C0000U) /**< \brief (DMAC ) Base Address */ +#define CMCC (0x400C4000U) /**< \brief (CMCC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE (0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#else +#define PWM ((Pwm *)0x40000000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40000100U) /**< \brief (PDC_PWM ) Base Address */ +#define AES ((Aes *)0x40004000U) /**< \brief (AES ) Base Address */ +#define CAN0 ((Can *)0x40010000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 ((Can *)0x40014000U) /**< \brief (CAN1 ) Base Address */ +#define GMAC ((Gmac *)0x40034000U) /**< \brief (GMAC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define SMC ((Smc *)0x40060000U) /**< \brief (SMC ) Base Address */ +#define UART1 ((Uart *)0x40060600U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ +#define HSMCI ((Hsmci *)0x40080000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI ((Pdc *)0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define UDP ((Udp *)0x40084000U) /**< \brief (UDP ) Base Address */ +#define SPI ((Spi *)0x40088000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40088100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40090000U) /**< \brief (TC0 ) Base Address */ +#define PDC_TC0 ((Pdc *)0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ +#define TC1 ((Tc *)0x40094000U) /**< \brief (TC1 ) Base Address */ +#define PDC_TC1 ((Pdc *)0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ +#define TC2 ((Tc *)0x40098000U) /**< \brief (TC2 ) Base Address */ +#define USART0 ((Usart *)0x400A0000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x400A4000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x400A4100U) /**< \brief (PDC_USART1) Base Address */ +#define TWI0 ((Twi *)0x400A8000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x400AC000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define AFEC0 ((Afec *)0x400B0000U) /**< \brief (AFEC0 ) Base Address */ +#define PDC_AFEC0 ((Pdc *)0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ +#define AFEC1 ((Afec *)0x400B4000U) /**< \brief (AFEC1 ) Base Address */ +#define PDC_AFEC1 ((Pdc *)0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ +#define DACC ((Dacc *)0x400B8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x400BC000U) /**< \brief (ACC ) Base Address */ +#define DMAC ((Dmac *)0x400C0000U) /**< \brief (DMAC ) Base Address */ +#define CMCC ((Cmcc *)0x400C4000U) /**< \brief (CMCC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE ((Pio *)0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM4E16E */ +/* ************************************************************************** */ +/** \addtogroup SAM4E16E_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/sam4e16e.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM4E16E */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x100000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (8192u) +#define IFLASH_NB_OF_PAGES (2048u) +#define IFLASH_NB_OF_LOCK_BITS (128u) +#define IRAM_SIZE (0x20000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAM4E16E */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3703FUL) +#define CHIP_CIDR (0xA3CC0CE0UL) +#define CHIP_EXID (0x00120200UL) +#define NB_CH_AFE0 (16UL) +#define NB_CH_AFE1 (8UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM4E16E */ +/* ************************************************************************** */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (120000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Write Wait State */ +#define CHIP_FLASH_WRITE_WAIT_STATE (6U) + +/* Embedded Flash Read Wait State (VDDCORE set at 1.20V) */ +#define CHIP_FREQ_FWS_0 (20000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (40000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (60000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (80000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (100000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (123000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM4E16E_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e8c.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e8c.h new file mode 100644 index 000000000..c1e34cab2 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e8c.h @@ -0,0 +1,590 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E8C_ +#define _SAM4E8C_ + +/** \addtogroup SAM4E8C_definitions SAM4E8C definitions + This file defines all structures and symbols for SAM4E8C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM4E8C */ +/* ************************************************************************** */ +/** \addtogroup SAM4E8C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M4 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M4 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M4 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M4 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M4 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M4 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M4 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M4 System Tick Interrupt */ +/****** SAM4E8C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM4E8C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM4E8C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM4E8C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM4E8C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM4E8C Watchdog/Dual Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM4E8C Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM4E8C Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAM4E8C UART 0 (UART0) */ + PIOA_IRQn = 9, /**< 9 SAM4E8C Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 10, /**< 10 SAM4E8C Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 11, /**< 11 SAM4E8C Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 14, /**< 14 SAM4E8C USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM4E8C USART 1 (USART1) */ + HSMCI_IRQn = 16, /**< 16 SAM4E8C Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 17, /**< 17 SAM4E8C Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 18, /**< 18 SAM4E8C Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 19, /**< 19 SAM4E8C Serial Peripheral Interface (SPI) */ + DMAC_IRQn = 20, /**< 20 SAM4E8C DMAC (DMAC) */ + TC0_IRQn = 21, /**< 21 SAM4E8C Timer/Counter 0 (TC0) */ + TC1_IRQn = 22, /**< 22 SAM4E8C Timer/Counter 1 (TC1) */ + TC2_IRQn = 23, /**< 23 SAM4E8C Timer/Counter 2 (TC2) */ + TC3_IRQn = 24, /**< 24 SAM4E8C Timer/Counter 3 (TC3) */ + TC4_IRQn = 25, /**< 25 SAM4E8C Timer/Counter 4 (TC4) */ + TC5_IRQn = 26, /**< 26 SAM4E8C Timer/Counter 5 (TC5) */ + TC6_IRQn = 27, /**< 27 SAM4E8C Timer/Counter 6 (TC6) */ + TC7_IRQn = 28, /**< 28 SAM4E8C Timer/Counter 7 (TC7) */ + TC8_IRQn = 29, /**< 29 SAM4E8C Timer/Counter 8 (TC8) */ + AFEC0_IRQn = 30, /**< 30 SAM4E8C Analog Front End 0 (AFEC0) */ + AFEC1_IRQn = 31, /**< 31 SAM4E8C Analog Front End 1 (AFEC1) */ + DACC_IRQn = 32, /**< 32 SAM4E8C Digital To Analog Converter (DACC) */ + ACC_IRQn = 33, /**< 33 SAM4E8C Analog Comparator (ACC) */ + ARM_IRQn = 34, /**< 34 SAM4E8C FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ + UDP_IRQn = 35, /**< 35 SAM4E8C USB DEVICE (UDP) */ + PWM_IRQn = 36, /**< 36 SAM4E8C PWM (PWM) */ + CAN0_IRQn = 37, /**< 37 SAM4E8C CAN0 (CAN0) */ + CAN1_IRQn = 38, /**< 38 SAM4E8C CAN1 (CAN1) */ + AES_IRQn = 39, /**< 39 SAM4E8C AES (AES) */ + UART1_IRQn = 45, /**< 45 SAM4E8C UART (UART1) */ + + PERIPH_COUNT_IRQn = 46 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog/Dual Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pvReserved8; + void* pfnPIOA_Handler; /* 9 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 10 Parallel I/O Controller B */ + void* pfnPIOC_Handler; /* 11 Parallel I/O Controller C */ + void* pvReserved12; + void* pvReserved13; + void* pfnUSART0_Handler; /* 14 USART 0 */ + void* pfnUSART1_Handler; /* 15 USART 1 */ + void* pfnHSMCI_Handler; /* 16 Multimedia Card Interface */ + void* pfnTWI0_Handler; /* 17 Two Wire Interface 0 */ + void* pfnTWI1_Handler; /* 18 Two Wire Interface 1 */ + void* pfnSPI_Handler; /* 19 Serial Peripheral Interface */ + void* pfnDMAC_Handler; /* 20 DMAC */ + void* pfnTC0_Handler; /* 21 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 22 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 23 Timer/Counter 2 */ + void* pfnTC3_Handler; /* 24 Timer/Counter 3 */ + void* pfnTC4_Handler; /* 25 Timer/Counter 4 */ + void* pfnTC5_Handler; /* 26 Timer/Counter 5 */ + void* pfnTC6_Handler; /* 27 Timer/Counter 6 */ + void* pfnTC7_Handler; /* 28 Timer/Counter 7 */ + void* pfnTC8_Handler; /* 29 Timer/Counter 8 */ + void* pfnAFEC0_Handler; /* 30 Analog Front End 0 */ + void* pfnAFEC1_Handler; /* 31 Analog Front End 1 */ + void* pfnDACC_Handler; /* 32 Digital To Analog Converter */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnARM_Handler; /* 34 FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC */ + void* pfnUDP_Handler; /* 35 USB DEVICE */ + void* pfnPWM_Handler; /* 36 PWM */ + void* pfnCAN0_Handler; /* 37 CAN0 */ + void* pfnCAN1_Handler; /* 38 CAN1 */ + void* pfnAES_Handler; /* 39 AES */ + void* pvReserved40; + void* pvReserved41; + void* pvReserved42; + void* pvReserved43; + void* pvReserved44; + void* pfnUART1_Handler; /* 45 UART */ +} DeviceVectors; + +/* Cortex-M4 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void ARM_Handler ( void ); +void CAN0_Handler ( void ); +void CAN1_Handler ( void ); +void DACC_Handler ( void ); +void DMAC_Handler ( void ); +void EFC_Handler ( void ); +void HSMCI_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOC_Handler ( void ); +void PMC_Handler ( void ); +void PWM_Handler ( void ); +void RSTC_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SPI_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC3_Handler ( void ); +void TC4_Handler ( void ); +void TC5_Handler ( void ); +void TC6_Handler ( void ); +void TC7_Handler ( void ); +void TC8_Handler ( void ); +void TWI0_Handler ( void ); +void TWI1_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UDP_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void WDT_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M4 Processor and Core Peripherals + */ + +#define __CM4_REV 0x0000 /**< SAM4E8C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 0 /**< SAM4E8C does not provide a MPU */ +#define __FPU_PRESENT 1 /**< SAM4E8C does provide a FPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM4E8C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_sam4e.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM4E8C */ +/* ************************************************************************** */ +/** \addtogroup SAM4E8C_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/can.h" +#include "component/chipid.h" +#include "component/cmcc.h" +#include "component/crccu.h" +#include "component/dacc.h" +#include "component/dmac.h" +#include "component/efc.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/matrix.h" +#include "component/pdc.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/spi.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/twi.h" +#include "component/uart.h" +#include "component/udp.h" +#include "component/usart.h" +#include "component/wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM4E8C */ +/* ************************************************************************** */ +/** \addtogroup SAM4E8C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/pwm.h" +#include "instance/aes.h" +#include "instance/can0.h" +#include "instance/can1.h" +#include "instance/crccu.h" +#include "instance/uart1.h" +#include "instance/hsmci.h" +#include "instance/udp.h" +#include "instance/spi.h" +#include "instance/tc0.h" +#include "instance/tc1.h" +#include "instance/tc2.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/twi0.h" +#include "instance/twi1.h" +#include "instance/afec0.h" +#include "instance/afec1.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/dmac.h" +#include "instance/cmcc.h" +#include "instance/matrix.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/pioc.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM4E8C */ +/* ************************************************************************** */ +/** \addtogroup SAM4E8C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog/Dual Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_PIOA ( 9) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (10) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (11) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_HSMCI (16) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (17) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (18) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (19) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_DMAC (20) /**< \brief DMAC (DMAC) */ +#define ID_TC0 (21) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (22) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (23) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (24) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (25) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (26) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_TC6 (27) /**< \brief Timer/Counter 6 (TC6) */ +#define ID_TC7 (28) /**< \brief Timer/Counter 7 (TC7) */ +#define ID_TC8 (29) /**< \brief Timer/Counter 8 (TC8) */ +#define ID_AFEC0 (30) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_AFEC1 (31) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_DACC (32) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_ARM (34) /**< \brief FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ +#define ID_UDP (35) /**< \brief USB DEVICE (UDP) */ +#define ID_PWM (36) /**< \brief PWM (PWM) */ +#define ID_CAN0 (37) /**< \brief CAN0 (CAN0) */ +#define ID_CAN1 (38) /**< \brief CAN1 (CAN1) */ +#define ID_AES (39) /**< \brief AES (AES) */ +#define ID_UART1 (45) /**< \brief UART (UART1) */ + +#define ID_PERIPH_COUNT (46) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM4E8C */ +/* ************************************************************************** */ +/** \addtogroup SAM4E8C_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define PWM (0x40000000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40000100U) /**< \brief (PDC_PWM ) Base Address */ +#define AES (0x40004000U) /**< \brief (AES ) Base Address */ +#define CAN0 (0x40010000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 (0x40014000U) /**< \brief (CAN1 ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define UART1 (0x40060600U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ +#define HSMCI (0x40080000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI (0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define UDP (0x40084000U) /**< \brief (UDP ) Base Address */ +#define SPI (0x40088000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40088100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40090000U) /**< \brief (TC0 ) Base Address */ +#define PDC_TC0 (0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ +#define TC1 (0x40094000U) /**< \brief (TC1 ) Base Address */ +#define PDC_TC1 (0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ +#define TC2 (0x40098000U) /**< \brief (TC2 ) Base Address */ +#define USART0 (0x400A0000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x400A0100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x400A4000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x400A4100U) /**< \brief (PDC_USART1) Base Address */ +#define TWI0 (0x400A8000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x400AC000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define AFEC0 (0x400B0000U) /**< \brief (AFEC0 ) Base Address */ +#define PDC_AFEC0 (0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ +#define AFEC1 (0x400B4000U) /**< \brief (AFEC1 ) Base Address */ +#define PDC_AFEC1 (0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ +#define DACC (0x400B8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x400BC000U) /**< \brief (ACC ) Base Address */ +#define DMAC (0x400C0000U) /**< \brief (DMAC ) Base Address */ +#define CMCC (0x400C4000U) /**< \brief (CMCC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#else +#define PWM ((Pwm *)0x40000000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40000100U) /**< \brief (PDC_PWM ) Base Address */ +#define AES ((Aes *)0x40004000U) /**< \brief (AES ) Base Address */ +#define CAN0 ((Can *)0x40010000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 ((Can *)0x40014000U) /**< \brief (CAN1 ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define UART1 ((Uart *)0x40060600U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ +#define HSMCI ((Hsmci *)0x40080000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI ((Pdc *)0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define UDP ((Udp *)0x40084000U) /**< \brief (UDP ) Base Address */ +#define SPI ((Spi *)0x40088000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40088100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40090000U) /**< \brief (TC0 ) Base Address */ +#define PDC_TC0 ((Pdc *)0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ +#define TC1 ((Tc *)0x40094000U) /**< \brief (TC1 ) Base Address */ +#define PDC_TC1 ((Pdc *)0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ +#define TC2 ((Tc *)0x40098000U) /**< \brief (TC2 ) Base Address */ +#define USART0 ((Usart *)0x400A0000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x400A4000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x400A4100U) /**< \brief (PDC_USART1) Base Address */ +#define TWI0 ((Twi *)0x400A8000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x400AC000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define AFEC0 ((Afec *)0x400B0000U) /**< \brief (AFEC0 ) Base Address */ +#define PDC_AFEC0 ((Pdc *)0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ +#define AFEC1 ((Afec *)0x400B4000U) /**< \brief (AFEC1 ) Base Address */ +#define PDC_AFEC1 ((Pdc *)0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ +#define DACC ((Dacc *)0x400B8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x400BC000U) /**< \brief (ACC ) Base Address */ +#define DMAC ((Dmac *)0x400C0000U) /**< \brief (DMAC ) Base Address */ +#define CMCC ((Cmcc *)0x400C4000U) /**< \brief (CMCC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM4E8C */ +/* ************************************************************************** */ +/** \addtogroup SAM4E8C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/sam4e8c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM4E8C */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x80000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (8192u) +#define IFLASH_NB_OF_PAGES (1024u) +#define IFLASH_NB_OF_LOCK_BITS (128u) +#define IRAM_SIZE (0x20000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAM4E8C */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3703FUL) +#define CHIP_CIDR (0xA3CC0CE0UL) +#define CHIP_EXID (0x00110209UL) +#define NB_CH_AFE0 (6UL) +#define NB_CH_AFE1 (4UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM4E8C */ +/* ************************************************************************** */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (120000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Write Wait State */ +#define CHIP_FLASH_WRITE_WAIT_STATE (6U) + +/* Embedded Flash Read Wait State (VDDCORE set at 1.20V) */ +#define CHIP_FREQ_FWS_0 (20000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (40000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (60000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (80000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (100000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (123000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM4E8C_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e8e.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e8e.h new file mode 100644 index 000000000..add9c353b --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e8e.h @@ -0,0 +1,614 @@ +/** + * \file + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM4E8E_ +#define _SAM4E8E_ + +/** \addtogroup SAM4E8E_definitions SAM4E8E definitions + This file defines all structures and symbols for SAM4E8E: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM4E8E */ +/* ************************************************************************** */ +/** \addtogroup SAM4E8E_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M4 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M4 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M4 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M4 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M4 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M4 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M4 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M4 System Tick Interrupt */ +/****** SAM4E8E specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM4E8E Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM4E8E Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM4E8E Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM4E8E Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM4E8E Watchdog/Dual Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM4E8E Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM4E8E Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAM4E8E UART 0 (UART0) */ + PIOA_IRQn = 9, /**< 9 SAM4E8E Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 10, /**< 10 SAM4E8E Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 11, /**< 11 SAM4E8E Parallel I/O Controller C (PIOC) */ + PIOD_IRQn = 12, /**< 12 SAM4E8E Parallel I/O Controller D (PIOD) */ + PIOE_IRQn = 13, /**< 13 SAM4E8E Parallel I/O Controller E (PIOE) */ + USART0_IRQn = 14, /**< 14 SAM4E8E USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM4E8E USART 1 (USART1) */ + HSMCI_IRQn = 16, /**< 16 SAM4E8E Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 17, /**< 17 SAM4E8E Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 18, /**< 18 SAM4E8E Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 19, /**< 19 SAM4E8E Serial Peripheral Interface (SPI) */ + DMAC_IRQn = 20, /**< 20 SAM4E8E DMAC (DMAC) */ + TC0_IRQn = 21, /**< 21 SAM4E8E Timer/Counter 0 (TC0) */ + TC1_IRQn = 22, /**< 22 SAM4E8E Timer/Counter 1 (TC1) */ + TC2_IRQn = 23, /**< 23 SAM4E8E Timer/Counter 2 (TC2) */ + TC3_IRQn = 24, /**< 24 SAM4E8E Timer/Counter 3 (TC3) */ + TC4_IRQn = 25, /**< 25 SAM4E8E Timer/Counter 4 (TC4) */ + TC5_IRQn = 26, /**< 26 SAM4E8E Timer/Counter 5 (TC5) */ + TC6_IRQn = 27, /**< 27 SAM4E8E Timer/Counter 6 (TC6) */ + TC7_IRQn = 28, /**< 28 SAM4E8E Timer/Counter 7 (TC7) */ + TC8_IRQn = 29, /**< 29 SAM4E8E Timer/Counter 8 (TC8) */ + AFEC0_IRQn = 30, /**< 30 SAM4E8E Analog Front End 0 (AFEC0) */ + AFEC1_IRQn = 31, /**< 31 SAM4E8E Analog Front End 1 (AFEC1) */ + DACC_IRQn = 32, /**< 32 SAM4E8E Digital To Analog Converter (DACC) */ + ACC_IRQn = 33, /**< 33 SAM4E8E Analog Comparator (ACC) */ + ARM_IRQn = 34, /**< 34 SAM4E8E FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ + UDP_IRQn = 35, /**< 35 SAM4E8E USB DEVICE (UDP) */ + PWM_IRQn = 36, /**< 36 SAM4E8E PWM (PWM) */ + CAN0_IRQn = 37, /**< 37 SAM4E8E CAN0 (CAN0) */ + CAN1_IRQn = 38, /**< 38 SAM4E8E CAN1 (CAN1) */ + AES_IRQn = 39, /**< 39 SAM4E8E AES (AES) */ + GMAC_IRQn = 44, /**< 44 SAM4E8E EMAC (GMAC) */ + UART1_IRQn = 45, /**< 45 SAM4E8E UART (UART1) */ + + PERIPH_COUNT_IRQn = 46 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog/Dual Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pvReserved8; + void* pfnPIOA_Handler; /* 9 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 10 Parallel I/O Controller B */ + void* pfnPIOC_Handler; /* 11 Parallel I/O Controller C */ + void* pfnPIOD_Handler; /* 12 Parallel I/O Controller D */ + void* pfnPIOE_Handler; /* 13 Parallel I/O Controller E */ + void* pfnUSART0_Handler; /* 14 USART 0 */ + void* pfnUSART1_Handler; /* 15 USART 1 */ + void* pfnHSMCI_Handler; /* 16 Multimedia Card Interface */ + void* pfnTWI0_Handler; /* 17 Two Wire Interface 0 */ + void* pfnTWI1_Handler; /* 18 Two Wire Interface 1 */ + void* pfnSPI_Handler; /* 19 Serial Peripheral Interface */ + void* pfnDMAC_Handler; /* 20 DMAC */ + void* pfnTC0_Handler; /* 21 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 22 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 23 Timer/Counter 2 */ + void* pfnTC3_Handler; /* 24 Timer/Counter 3 */ + void* pfnTC4_Handler; /* 25 Timer/Counter 4 */ + void* pfnTC5_Handler; /* 26 Timer/Counter 5 */ + void* pfnTC6_Handler; /* 27 Timer/Counter 6 */ + void* pfnTC7_Handler; /* 28 Timer/Counter 7 */ + void* pfnTC8_Handler; /* 29 Timer/Counter 8 */ + void* pfnAFEC0_Handler; /* 30 Analog Front End 0 */ + void* pfnAFEC1_Handler; /* 31 Analog Front End 1 */ + void* pfnDACC_Handler; /* 32 Digital To Analog Converter */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnARM_Handler; /* 34 FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC */ + void* pfnUDP_Handler; /* 35 USB DEVICE */ + void* pfnPWM_Handler; /* 36 PWM */ + void* pfnCAN0_Handler; /* 37 CAN0 */ + void* pfnCAN1_Handler; /* 38 CAN1 */ + void* pfnAES_Handler; /* 39 AES */ + void* pvReserved40; + void* pvReserved41; + void* pvReserved42; + void* pvReserved43; + void* pfnGMAC_Handler; /* 44 EMAC */ + void* pfnUART1_Handler; /* 45 UART */ +} DeviceVectors; + +/* Cortex-M4 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void ARM_Handler ( void ); +void CAN0_Handler ( void ); +void CAN1_Handler ( void ); +void DACC_Handler ( void ); +void DMAC_Handler ( void ); +void EFC_Handler ( void ); +void GMAC_Handler ( void ); +void HSMCI_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOC_Handler ( void ); +void PIOD_Handler ( void ); +void PIOE_Handler ( void ); +void PMC_Handler ( void ); +void PWM_Handler ( void ); +void RSTC_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SPI_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC3_Handler ( void ); +void TC4_Handler ( void ); +void TC5_Handler ( void ); +void TC6_Handler ( void ); +void TC7_Handler ( void ); +void TC8_Handler ( void ); +void TWI0_Handler ( void ); +void TWI1_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UDP_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void WDT_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M4 Processor and Core Peripherals + */ + +#define __CM4_REV 0x0000 /**< SAM4E8E core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 0 /**< SAM4E8E does not provide a MPU */ +#define __FPU_PRESENT 1 /**< SAM4E8E does provide a FPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM4E8E uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_sam4e.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM4E8E */ +/* ************************************************************************** */ +/** \addtogroup SAM4E8E_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/can.h" +#include "component/chipid.h" +#include "component/cmcc.h" +#include "component/crccu.h" +#include "component/dacc.h" +#include "component/dmac.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/matrix.h" +#include "component/pdc.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/smc.h" +#include "component/spi.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/twi.h" +#include "component/uart.h" +#include "component/udp.h" +#include "component/usart.h" +#include "component/wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM4E8E */ +/* ************************************************************************** */ +/** \addtogroup SAM4E8E_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/pwm.h" +#include "instance/aes.h" +#include "instance/can0.h" +#include "instance/can1.h" +#include "instance/gmac.h" +#include "instance/crccu.h" +#include "instance/smc.h" +#include "instance/uart1.h" +#include "instance/hsmci.h" +#include "instance/udp.h" +#include "instance/spi.h" +#include "instance/tc0.h" +#include "instance/tc1.h" +#include "instance/tc2.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/twi0.h" +#include "instance/twi1.h" +#include "instance/afec0.h" +#include "instance/afec1.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/dmac.h" +#include "instance/cmcc.h" +#include "instance/matrix.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/pioc.h" +#include "instance/piod.h" +#include "instance/pioe.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM4E8E */ +/* ************************************************************************** */ +/** \addtogroup SAM4E8E_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog/Dual Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_SMC ( 8) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA ( 9) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (10) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (11) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_PIOD (12) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_PIOE (13) /**< \brief Parallel I/O Controller E (PIOE) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_HSMCI (16) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (17) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (18) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (19) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_DMAC (20) /**< \brief DMAC (DMAC) */ +#define ID_TC0 (21) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (22) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (23) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (24) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (25) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (26) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_TC6 (27) /**< \brief Timer/Counter 6 (TC6) */ +#define ID_TC7 (28) /**< \brief Timer/Counter 7 (TC7) */ +#define ID_TC8 (29) /**< \brief Timer/Counter 8 (TC8) */ +#define ID_AFEC0 (30) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_AFEC1 (31) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_DACC (32) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_ARM (34) /**< \brief FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ +#define ID_UDP (35) /**< \brief USB DEVICE (UDP) */ +#define ID_PWM (36) /**< \brief PWM (PWM) */ +#define ID_CAN0 (37) /**< \brief CAN0 (CAN0) */ +#define ID_CAN1 (38) /**< \brief CAN1 (CAN1) */ +#define ID_AES (39) /**< \brief AES (AES) */ +#define ID_GMAC (44) /**< \brief EMAC (GMAC) */ +#define ID_UART1 (45) /**< \brief UART (UART1) */ + +#define ID_PERIPH_COUNT (46) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM4E8E */ +/* ************************************************************************** */ +/** \addtogroup SAM4E8E_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define PWM (0x40000000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40000100U) /**< \brief (PDC_PWM ) Base Address */ +#define AES (0x40004000U) /**< \brief (AES ) Base Address */ +#define CAN0 (0x40010000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 (0x40014000U) /**< \brief (CAN1 ) Base Address */ +#define GMAC (0x40034000U) /**< \brief (GMAC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define SMC (0x40060000U) /**< \brief (SMC ) Base Address */ +#define UART1 (0x40060600U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ +#define HSMCI (0x40080000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI (0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define UDP (0x40084000U) /**< \brief (UDP ) Base Address */ +#define SPI (0x40088000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40088100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40090000U) /**< \brief (TC0 ) Base Address */ +#define PDC_TC0 (0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ +#define TC1 (0x40094000U) /**< \brief (TC1 ) Base Address */ +#define PDC_TC1 (0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ +#define TC2 (0x40098000U) /**< \brief (TC2 ) Base Address */ +#define USART0 (0x400A0000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x400A0100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x400A4000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x400A4100U) /**< \brief (PDC_USART1) Base Address */ +#define TWI0 (0x400A8000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x400AC000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define AFEC0 (0x400B0000U) /**< \brief (AFEC0 ) Base Address */ +#define PDC_AFEC0 (0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ +#define AFEC1 (0x400B4000U) /**< \brief (AFEC1 ) Base Address */ +#define PDC_AFEC1 (0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ +#define DACC (0x400B8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x400BC000U) /**< \brief (ACC ) Base Address */ +#define DMAC (0x400C0000U) /**< \brief (DMAC ) Base Address */ +#define CMCC (0x400C4000U) /**< \brief (CMCC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE (0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#else +#define PWM ((Pwm *)0x40000000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40000100U) /**< \brief (PDC_PWM ) Base Address */ +#define AES ((Aes *)0x40004000U) /**< \brief (AES ) Base Address */ +#define CAN0 ((Can *)0x40010000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 ((Can *)0x40014000U) /**< \brief (CAN1 ) Base Address */ +#define GMAC ((Gmac *)0x40034000U) /**< \brief (GMAC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define SMC ((Smc *)0x40060000U) /**< \brief (SMC ) Base Address */ +#define UART1 ((Uart *)0x40060600U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ +#define HSMCI ((Hsmci *)0x40080000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI ((Pdc *)0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define UDP ((Udp *)0x40084000U) /**< \brief (UDP ) Base Address */ +#define SPI ((Spi *)0x40088000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40088100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40090000U) /**< \brief (TC0 ) Base Address */ +#define PDC_TC0 ((Pdc *)0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ +#define TC1 ((Tc *)0x40094000U) /**< \brief (TC1 ) Base Address */ +#define PDC_TC1 ((Pdc *)0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ +#define TC2 ((Tc *)0x40098000U) /**< \brief (TC2 ) Base Address */ +#define USART0 ((Usart *)0x400A0000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x400A4000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x400A4100U) /**< \brief (PDC_USART1) Base Address */ +#define TWI0 ((Twi *)0x400A8000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x400AC000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define AFEC0 ((Afec *)0x400B0000U) /**< \brief (AFEC0 ) Base Address */ +#define PDC_AFEC0 ((Pdc *)0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ +#define AFEC1 ((Afec *)0x400B4000U) /**< \brief (AFEC1 ) Base Address */ +#define PDC_AFEC1 ((Pdc *)0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ +#define DACC ((Dacc *)0x400B8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x400BC000U) /**< \brief (ACC ) Base Address */ +#define DMAC ((Dmac *)0x400C0000U) /**< \brief (DMAC ) Base Address */ +#define CMCC ((Cmcc *)0x400C4000U) /**< \brief (CMCC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE ((Pio *)0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM4E8E */ +/* ************************************************************************** */ +/** \addtogroup SAM4E8E_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/sam4e8e.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM4E8E */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x80000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (8192u) +#define IFLASH_NB_OF_PAGES (1024u) +#define IFLASH_NB_OF_LOCK_BITS (128u) +#define IRAM_SIZE (0x20000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAM4E8E */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3703FUL) +#define CHIP_CIDR (0xA3CC0CE0UL) +#define CHIP_EXID (0x00120208UL) +#define NB_CH_AFE0 (16UL) +#define NB_CH_AFE1 (8UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM4E8E */ +/* ************************************************************************** */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (120000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Write Wait State */ +#define CHIP_FLASH_WRITE_WAIT_STATE (6U) + +/* Embedded Flash Read Wait State (VDDCORE set at 1.20V) */ +#define CHIP_FREQ_FWS_0 (20000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (40000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (60000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (80000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (100000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (123000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM4E8E_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/exceptions.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/exceptions.c new file mode 100644 index 000000000..57990ba5a --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/exceptions.c @@ -0,0 +1,202 @@ +/** + * \file + * + * \brief This file contains the default exception handlers. + * + * Copyright (c) 2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \note + * The exception handler has weak aliases. + * As they are weak aliases, any function with the same name will override + * this definition. + * + */ + +#include "exceptions.h" + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +#ifdef __GNUC__ +void Dummy_Hardfault_Handler( void ); +/* Cortex-M4 core handlers */ +void Reset_Handler (void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NMI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Hardfault_Handler"))); +void MemManage_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void BusFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void UsageFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DebugMon_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void SUPC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RSTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PMC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EFC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void UART0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SMC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOA_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOD_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOE_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HSMCI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TWI0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TWI1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SPI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC8_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void AFEC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void AFEC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DACC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void ACC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void ARM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void UDP_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PWM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void CAN0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void CAN1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void AES_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void GMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void UART1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* __GNUC__ */ + +#ifdef __ICCARM__ +/* Cortex-M4 core handlers */ +#pragma weak Reset_Handler=Dummy_Handler +#pragma weak NMI_Handler=Dummy_Handler +#pragma weak HardFault_Handler=Dummy_Handler +#pragma weak MemManage_Handler=Dummy_Handler +#pragma weak BusFault_Handler=Dummy_Handler +#pragma weak UsageFault_Handler=Dummy_Handler +#pragma weak SVC_Handler=Dummy_Handler +#pragma weak DebugMon_Handler=Dummy_Handler +#pragma weak PendSV_Handler=Dummy_Handler +#pragma weak SysTick_Handler=Dummy_Handler + +/* Peripherals handlers */ +#pragma weak SUPC_Handler=Dummy_Handler +#pragma weak RSTC_Handler=Dummy_Handler +#pragma weak RTC_Handler=Dummy_Handler +#pragma weak RTT_Handler=Dummy_Handler +#pragma weak WDT_Handler=Dummy_Handler +#pragma weak PMC_Handler=Dummy_Handler +#pragma weak EFC_Handler=Dummy_Handler +#pragma weak UART0_Handler=Dummy_Handler +#pragma weak SMC_Handler=Dummy_Handler +#pragma weak PIOA_Handler=Dummy_Handler +#pragma weak PIOB_Handler=Dummy_Handler +#pragma weak PIOC_Handler=Dummy_Handler +#pragma weak PIOD_Handler=Dummy_Handler +#pragma weak PIOE_Handler=Dummy_Handler +#pragma weak USART0_Handler=Dummy_Handler +#pragma weak USART1_Handler=Dummy_Handler +#pragma weak HSMCI_Handler=Dummy_Handler +#pragma weak TWI0_Handler=Dummy_Handler +#pragma weak TWI1_Handler=Dummy_Handler +#pragma weak SPI_Handler=Dummy_Handler +#pragma weak DMAC_Handler=Dummy_Handler +#pragma weak TC0_Handler=Dummy_Handler +#pragma weak TC1_Handler=Dummy_Handler +#pragma weak TC2_Handler=Dummy_Handler +#pragma weak TC3_Handler=Dummy_Handler +#pragma weak TC4_Handler=Dummy_Handler +#pragma weak TC5_Handler=Dummy_Handler +#pragma weak TC6_Handler=Dummy_Handler +#pragma weak TC7_Handler=Dummy_Handler +#pragma weak TC8_Handler=Dummy_Handler +#pragma weak AFEC0_Handler=Dummy_Handler +#pragma weak AFEC1_Handler=Dummy_Handler +#pragma weak DACC_Handler=Dummy_Handler +#pragma weak ACC_Handler=Dummy_Handler +#pragma weak ARM_Handler=Dummy_Handler +#pragma weak UDP_Handler=Dummy_Handler +#pragma weak PWM_Handler=Dummy_Handler +#pragma weak CAN0_Handler=Dummy_Handler +#pragma weak CAN1_Handler=Dummy_Handler +#pragma weak AES_Handler=Dummy_Handler +#pragma weak GMAC_Handler=Dummy_Handler +#pragma weak UART1_Handler=Dummy_Handler +#endif /* __ICCARM__ */ + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} + +void Dummy_Hardfault_Handler(void) +{ + while (1) { + } +} + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/exceptions.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/exceptions.h new file mode 100644 index 000000000..5682a29fd --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/exceptions.h @@ -0,0 +1,71 @@ +/** + * \file + * + * \brief This file contains the interface for default exception handlers. + * + * Copyright (c) 2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef EXCEPTIONS_H_INCLUDED +#define EXCEPTIONS_H_INCLUDED + +#include "sam4e.h" + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +/* Function prototype for exception table items (interrupt handler). */ +typedef void (*IntFunc) (void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ + +#endif /* EXCEPTIONS_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/gcc/startup_sam4e.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/gcc/startup_sam4e.c new file mode 100644 index 000000000..56ee3ec82 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/gcc/startup_sam4e.c @@ -0,0 +1,191 @@ +/** + * \file + * + * \brief Startup file for SAM4E. + * + * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#include "sam4e.h" +#include "exceptions.h" +#include "system_sam4e.h" +#if __FPU_USED /* CMSIS defined value to indicate usage of FPU */ +#include "fpu.h" +#endif + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + (void*) (&_estack), + + (void*) Reset_Handler, + (void*) NMI_Handler, + (void*) HardFault_Handler, + (void*) MemManage_Handler, + (void*) BusFault_Handler, + (void*) UsageFault_Handler, + (void*) (0UL), /* Reserved */ + (void*) (0UL), /* Reserved */ + (void*) (0UL), /* Reserved */ + (void*) (0UL), /* Reserved */ + (void*) SVC_Handler, + (void*) DebugMon_Handler, + (void*) (0UL), /* Reserved */ + (void*) PendSV_Handler, + (void*) SysTick_Handler, + + /* Configurable interrupts */ + (void*) SUPC_Handler, /* 0 Supply Controller */ + (void*) RSTC_Handler, /* 1 Reset Controller */ + (void*) RTC_Handler, /* 2 Real Time Clock */ + (void*) RTT_Handler, /* 3 Real Time Timer */ + (void*) WDT_Handler, /* 4 Watchdog/Dual Watchdog Timer */ + (void*) PMC_Handler, /* 5 Power Management Controller */ + (void*) EFC_Handler, /* 6 Enhanced Embedded Flash Controller */ + (void*) UART0_Handler, /* 7 UART 0 */ + (void*) Dummy_Handler, + (void*) PIOA_Handler, /* 9 Parallel I/O Controller A */ + (void*) PIOB_Handler, /* 10 Parallel I/O Controller B */ + (void*) PIOC_Handler, /* 11 Parallel I/O Controller C */ +#ifdef _SAM4E_PIOD_INSTANCE_ + (void*) PIOD_Handler, /* 12 Parallel I/O Controller D */ +#else + (void*) Dummy_Handler, +#endif +#ifdef _SAM4E_PIOE_INSTANCE_ + (void*) PIOE_Handler, /* 13 Parallel I/O Controller E */ +#else + (void*) Dummy_Handler, +#endif + (void*) USART0_Handler, /* 14 USART 0 */ + (void*) USART1_Handler, /* 15 USART 1 */ + (void*) HSMCI_Handler, /* 16 Multimedia Card Interface */ + (void*) TWI0_Handler, /* 17 Two Wire Interface 0 */ + (void*) TWI1_Handler, /* 18 Two Wire Interface 1 */ + (void*) SPI_Handler, /* 19 Serial Peripheral Interface */ + (void*) DMAC_Handler, /* 20 DMAC */ + (void*) TC0_Handler, /* 21 Timer/Counter 0 */ + (void*) TC1_Handler, /* 22 Timer/Counter 1 */ + (void*) TC2_Handler, /* 23 Timer/Counter 2 */ + (void*) TC3_Handler, /* 24 Timer/Counter 3 */ + (void*) TC4_Handler, /* 25 Timer/Counter 4 */ + (void*) TC5_Handler, /* 26 Timer/Counter 5 */ + (void*) TC6_Handler, /* 27 Timer/Counter 6 */ + (void*) TC7_Handler, /* 28 Timer/Counter 7 */ + (void*) TC8_Handler, /* 29 Timer/Counter 8 */ + (void*) AFEC0_Handler, /* 30 Analog Front End 0 */ + (void*) AFEC1_Handler, /* 31 Analog Front End 1 */ + (void*) DACC_Handler, /* 32 Digital To Analog Converter */ + (void*) ACC_Handler, /* 33 Analog Comparator */ + (void*) ARM_Handler, /* 34 FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC */ + (void*) UDP_Handler, /* 35 USB DEVICE */ + (void*) PWM_Handler, /* 36 PWM */ + (void*) CAN0_Handler, /* 37 CAN0 */ + (void*) CAN1_Handler, /* 38 CAN1 */ + (void*) AES_Handler, /* 39 AES */ + (void*) Dummy_Handler, + (void*) Dummy_Handler, + (void*) Dummy_Handler, + (void*) Dummy_Handler, +#ifdef _SAM4E_GMAC_INSTANCE_ + (void*) GMAC_Handler, /* 44 EMAC */ +#else + (void*) Dummy_Handler, +#endif + (void*) UART1_Handler /* 45 UART */ +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + +#if __FPU_USED + fpu_enable(); +#endif + + /* Initialize the C library */ + __libc_init_array(); + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/system_sam4e.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/system_sam4e.c new file mode 100644 index 000000000..906ed98c2 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/system_sam4e.c @@ -0,0 +1,231 @@ +/** + * \file + * + * \brief Provides the low-level initialization functions that called + * on chip startup. + * + * Copyright (c) 2011 - 2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#include "sam4e.h" + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +/* Clock Settings (120MHz) */ +#define SYS_BOARD_OSCOUNT (CKGR_MOR_MOSCXTST(0x8U)) +#define SYS_BOARD_PLLAR (CKGR_PLLAR_ONE \ + | CKGR_PLLAR_MULA(0x13U) \ + | CKGR_PLLAR_PLLACOUNT(0x3fU) \ + | CKGR_PLLAR_DIVA(0x1U)) +#define SYS_BOARD_MCKR (PMC_MCKR_PRES_CLK_2 | PMC_MCKR_CSS_PLLA_CLK) + +#define SYS_CKGR_MOR_KEY_VALUE CKGR_MOR_KEY(0x37) /* Key to unlock MOR register */ + +uint32_t SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + +/** + * \brief Setup the microcontroller system. + * Initialize the System and update the SystemFrequency variable. + */ +void SystemInit( void ) +{ + /* Set FWS according to SYS_BOARD_MCKR configuration */ + EFC->EEFC_FMR = EEFC_FMR_FWS(5); + + /* Initialize main oscillator */ + if ( !(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) ) { + PMC->CKGR_MOR = SYS_CKGR_MOR_KEY_VALUE | SYS_BOARD_OSCOUNT | + CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN; + + while ( !(PMC->PMC_SR & PMC_SR_MOSCXTS) ) { + } + } + + /* Switch to 3-20MHz Xtal oscillator */ + PMC->CKGR_MOR = SYS_CKGR_MOR_KEY_VALUE | SYS_BOARD_OSCOUNT | + CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN | + CKGR_MOR_MOSCSEL; + + while ( !(PMC->PMC_SR & PMC_SR_MOSCSELS) ) { + } + + PMC->PMC_MCKR = (PMC->PMC_MCKR & ~(uint32_t)PMC_MCKR_CSS_Msk) | + PMC_MCKR_CSS_MAIN_CLK; + + while ( !(PMC->PMC_SR & PMC_SR_MCKRDY) ) { + } + + /* Initialize PLLA */ + PMC->CKGR_PLLAR = SYS_BOARD_PLLAR; + while ( !(PMC->PMC_SR & PMC_SR_LOCKA) ) { + } + + /* Switch to main clock */ + PMC->PMC_MCKR = (SYS_BOARD_MCKR & ~PMC_MCKR_CSS_Msk) | + PMC_MCKR_CSS_MAIN_CLK; + while ( !(PMC->PMC_SR & PMC_SR_MCKRDY) ) { + } + + /* Switch to PLLA */ + PMC->PMC_MCKR = SYS_BOARD_MCKR; + while ( !(PMC->PMC_SR & PMC_SR_MCKRDY) ) { + } + + SystemCoreClock = CHIP_FREQ_CPU_MAX; +} + +void SystemCoreClockUpdate( void ) +{ + /* Determine clock frequency according to clock register values */ + switch (PMC->PMC_MCKR & (uint32_t) PMC_MCKR_CSS_Msk) { + case PMC_MCKR_CSS_SLOW_CLK: /* Slow clock */ + if ( SUPC->SUPC_SR & SUPC_SR_OSCSEL ) { + SystemCoreClock = CHIP_FREQ_XTAL_32K; + } else { + SystemCoreClock = CHIP_FREQ_SLCK_RC; + } + break; + + case PMC_MCKR_CSS_MAIN_CLK: /* Main clock */ + if ( PMC->CKGR_MOR & CKGR_MOR_MOSCSEL ) { + SystemCoreClock = CHIP_FREQ_XTAL_12M; + } else { + SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + + switch ( PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk ) { + case CKGR_MOR_MOSCRCF_4_MHz: + break; + + case CKGR_MOR_MOSCRCF_8_MHz: + SystemCoreClock *= 2U; + break; + + case CKGR_MOR_MOSCRCF_12_MHz: + SystemCoreClock *= 3U; + break; + + default: + break; + } + } + break; + + case PMC_MCKR_CSS_PLLA_CLK: /* PLLA clock */ + if ( PMC->CKGR_MOR & CKGR_MOR_MOSCSEL ) { + SystemCoreClock = CHIP_FREQ_XTAL_12M ; + } else { + SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + + switch ( PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk ) { + case CKGR_MOR_MOSCRCF_4_MHz: + break; + + case CKGR_MOR_MOSCRCF_8_MHz: + SystemCoreClock *= 2U; + break; + + case CKGR_MOR_MOSCRCF_12_MHz: + SystemCoreClock *= 3U; + break; + + default: + break; + } + } + + if ((uint32_t) (PMC->PMC_MCKR & (uint32_t) PMC_MCKR_CSS_Msk) == PMC_MCKR_CSS_PLLA_CLK) + { + SystemCoreClock *= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_MULA_Msk) >> CKGR_PLLAR_MULA_Pos) + 1U); + SystemCoreClock /= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_DIVA_Msk) >> CKGR_PLLAR_DIVA_Pos)); + } + break; + + default: + break; + } + + if ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) == PMC_MCKR_PRES_CLK_3) { + SystemCoreClock /= 3U; + } else { + SystemCoreClock >>= ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) >> + PMC_MCKR_PRES_Pos); + } +} + +/** + * Initialize flash. + */ +void system_init_flash( uint32_t ul_clk ) +{ + /* Set FWS for embedded Flash access according to operating frequency */ + if ( ul_clk < CHIP_FREQ_FWS_0 ) { + EFC->EEFC_FMR = EEFC_FMR_FWS(0); + } else { + if (ul_clk < CHIP_FREQ_FWS_1) { + EFC->EEFC_FMR = EEFC_FMR_FWS(1); + } else { + if (ul_clk < CHIP_FREQ_FWS_2) { + EFC->EEFC_FMR = EEFC_FMR_FWS(2); + } else { + if ( ul_clk < CHIP_FREQ_FWS_3 ) { + EFC->EEFC_FMR = EEFC_FMR_FWS(3); + } else { + if ( ul_clk < CHIP_FREQ_FWS_4 ) { + EFC->EEFC_FMR = EEFC_FMR_FWS(4); + } else { + EFC->EEFC_FMR = EEFC_FMR_FWS(5); + } + } + } + } + } +} + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/system_sam4e.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/system_sam4e.h new file mode 100644 index 000000000..d1238d602 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/system_sam4e.h @@ -0,0 +1,85 @@ +/** + * \file + * + * \brief Provides the low-level initialization functions that called + * on chip startup. + * + * Copyright (c) 2011 - 2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef SYSTEM_SAM4E_H_INCLUDED +#define SYSTEM_SAM4E_H_INCLUDED + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +#include + +extern uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock) */ + +/** + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemCoreClock variable. + */ +void SystemInit(void); + +/** + * @brief Updates the SystemCoreClock with current core Clock + * retrieved from cpu registers. + */ +void SystemCoreClockUpdate(void); + +/** + * Initialize flash. + */ +void system_init_flash(uint32_t dw_clk); + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ + +#endif /* SYSTEM_SAM4E_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/compiler.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/compiler.h new file mode 100644 index 000000000..8c9a5e4c6 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/compiler.h @@ -0,0 +1,1161 @@ +/** + * \file + * + * \brief Commonly used includes, types and macros. + * + * Copyright (c) 2010-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef UTILS_COMPILER_H +#define UTILS_COMPILER_H + +/** + * \defgroup group_sam_utils Compiler abstraction layer and code utilities + * + * Compiler abstraction layer and code utilities for AT91SAM. + * This module provides various abstraction layers and utilities to make code compatible between different compilers. + * + * \{ + */ +#include + +#if (defined __ICCARM__) +# include +#endif + +#include +#include "preprocessor.h" + +#include + +//_____ D E C L A R A T I O N S ____________________________________________ + +#ifndef __ASSEMBLY__ // Not defined for assembling. + +#include +#include +#include +#include + +#ifdef __ICCARM__ +/*! \name Compiler Keywords + * + * Port of some keywords from GCC to IAR Embedded Workbench. + */ +//! @{ +#define __asm__ asm +#define __inline__ inline +#define __volatile__ +//! @} + +#endif + +#define FUNC_PTR void * +/** + * \def UNUSED + * \brief Marking \a v as a unused parameter or value. + */ +#define UNUSED(v) (void)(v) + +/** + * \def unused + * \brief Marking \a v as a unused parameter or value. + */ +#define unused(v) do { (void)(v); } while(0) + +/** + * \def barrier + * \brief Memory barrier + */ +#define barrier() __DMB() + +/** + * \brief Emit the compiler pragma \a arg. + * + * \param arg The pragma directive as it would appear after \e \#pragma + * (i.e. not stringified). + */ +#define COMPILER_PRAGMA(arg) _Pragma(#arg) + +/** + * \def COMPILER_PACK_SET(alignment) + * \brief Set maximum alignment for subsequent struct and union + * definitions to \a alignment. + */ +#define COMPILER_PACK_SET(alignment) COMPILER_PRAGMA(pack(alignment)) + +/** + * \def COMPILER_PACK_RESET() + * \brief Set default alignment for subsequent struct and union + * definitions. + */ +#define COMPILER_PACK_RESET() COMPILER_PRAGMA(pack()) + + +/** + * \brief Set aligned boundary. + */ +#if (defined __GNUC__) || (defined __CC_ARM) +# define COMPILER_ALIGNED(a) __attribute__((__aligned__(a))) +#elif (defined __ICCARM__) +# define COMPILER_ALIGNED(a) COMPILER_PRAGMA(data_alignment = a) +#endif + +/** + * \brief Set word-aligned boundary. + */ +#if (defined __GNUC__) || defined(__CC_ARM) +#define COMPILER_WORD_ALIGNED __attribute__((__aligned__(4))) +#elif (defined __ICCARM__) +#define COMPILER_WORD_ALIGNED COMPILER_PRAGMA(data_alignment = 4) +#endif + +/** + * \def __always_inline + * \brief The function should always be inlined. + * + * This annotation instructs the compiler to ignore its inlining + * heuristics and inline the function no matter how big it thinks it + * becomes. + */ +#if defined(__CC_ARM) +# define __always_inline __forceinline +#elif (defined __GNUC__) +# define __always_inline inline __attribute__((__always_inline__)) +#elif (defined __ICCARM__) +# define __always_inline _Pragma("inline=forced") +#endif + +/*! \brief This macro is used to test fatal errors. + * + * The macro tests if the expression is false. If it is, a fatal error is + * detected and the application hangs up. If TEST_SUITE_DEFINE_ASSERT_MACRO + * is defined, a unit test version of the macro is used, to allow execution + * of further tests after a false expression. + * + * \param expr Expression to evaluate and supposed to be nonzero. + */ +#if defined(_ASSERT_ENABLE_) +# if defined(TEST_SUITE_DEFINE_ASSERT_MACRO) + // Assert() is defined in unit_test/suite.h +# include "unit_test/suite.h" +# else +#undef TEST_SUITE_DEFINE_ASSERT_MACRO +# define Assert(expr) \ + {\ + if (!(expr)) while (true);\ + } +# endif +#else +# define Assert(expr) ((void) 0) +#endif + +/* Define WEAK attribute */ +#if defined ( __CC_ARM ) /* Keil µVision 4 */ +# define WEAK __attribute__ ((weak)) +#elif defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ +# define WEAK __weak +#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ +# define WEAK __attribute__ ((weak)) +#endif + +/* Define NO_INIT attribute */ +#if defined ( __CC_ARM ) +# define NO_INIT __attribute__((zero_init)) +#elif defined ( __ICCARM__ ) +# define NO_INIT __no_init +#elif defined ( __GNUC__ ) +# define NO_INIT __attribute__((section(".no_init"))) +#endif + +/* Define RAMFUNC attribute */ +#if defined ( __CC_ARM ) /* Keil µVision 4 */ +# define RAMFUNC __attribute__ ((section(".ramfunc"))) +#elif defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ +# define RAMFUNC __ramfunc +#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ +# define RAMFUNC __attribute__ ((section(".ramfunc"))) +#endif + +/* Define OPTIMIZE_HIGH attribute */ +#if defined ( __CC_ARM ) /* Keil µVision 4 */ +# define OPTIMIZE_HIGH _Pragma("O3") +#elif defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ +# define OPTIMIZE_HIGH _Pragma("optimize=high") +#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ +# define OPTIMIZE_HIGH __attribute__((optimize(s))) +#endif + +#include "interrupt.h" + +/*! \name Usual Types + */ +//! @{ +typedef unsigned char Bool; //!< Boolean. +#ifndef __cplusplus +#if !defined(__bool_true_false_are_defined) +typedef unsigned char bool; //!< Boolean. +#endif +#endif +typedef int8_t S8 ; //!< 8-bit signed integer. +typedef uint8_t U8 ; //!< 8-bit unsigned integer. +typedef int16_t S16; //!< 16-bit signed integer. +typedef uint16_t U16; //!< 16-bit unsigned integer. +typedef uint16_t le16_t; +typedef uint16_t be16_t; +typedef int32_t S32; //!< 32-bit signed integer. +typedef uint32_t U32; //!< 32-bit unsigned integer. +typedef uint32_t le32_t; +typedef uint32_t be32_t; +typedef int64_t S64; //!< 64-bit signed integer. +typedef uint64_t U64; //!< 64-bit unsigned integer. +typedef float F32; //!< 32-bit floating-point number. +typedef double F64; //!< 64-bit floating-point number. +typedef uint32_t iram_size_t; +//! @} + + +/*! \name Status Types + */ +//! @{ +typedef bool Status_bool_t; //!< Boolean status. +typedef U8 Status_t; //!< 8-bit-coded status. +//! @} + + +/*! \name Aliasing Aggregate Types + */ +//! @{ + +//! 16-bit union. +typedef union +{ + S16 s16 ; + U16 u16 ; + S8 s8 [2]; + U8 u8 [2]; +} Union16; + +//! 32-bit union. +typedef union +{ + S32 s32 ; + U32 u32 ; + S16 s16[2]; + U16 u16[2]; + S8 s8 [4]; + U8 u8 [4]; +} Union32; + +//! 64-bit union. +typedef union +{ + S64 s64 ; + U64 u64 ; + S32 s32[2]; + U32 u32[2]; + S16 s16[4]; + U16 u16[4]; + S8 s8 [8]; + U8 u8 [8]; +} Union64; + +//! Union of pointers to 64-, 32-, 16- and 8-bit unsigned integers. +typedef union +{ + S64 *s64ptr; + U64 *u64ptr; + S32 *s32ptr; + U32 *u32ptr; + S16 *s16ptr; + U16 *u16ptr; + S8 *s8ptr ; + U8 *u8ptr ; +} UnionPtr; + +//! Union of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers. +typedef union +{ + volatile S64 *s64ptr; + volatile U64 *u64ptr; + volatile S32 *s32ptr; + volatile U32 *u32ptr; + volatile S16 *s16ptr; + volatile U16 *u16ptr; + volatile S8 *s8ptr ; + volatile U8 *u8ptr ; +} UnionVPtr; + +//! Union of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers. +typedef union +{ + const S64 *s64ptr; + const U64 *u64ptr; + const S32 *s32ptr; + const U32 *u32ptr; + const S16 *s16ptr; + const U16 *u16ptr; + const S8 *s8ptr ; + const U8 *u8ptr ; +} UnionCPtr; + +//! Union of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers. +typedef union +{ + const volatile S64 *s64ptr; + const volatile U64 *u64ptr; + const volatile S32 *s32ptr; + const volatile U32 *u32ptr; + const volatile S16 *s16ptr; + const volatile U16 *u16ptr; + const volatile S8 *s8ptr ; + const volatile U8 *u8ptr ; +} UnionCVPtr; + +//! Structure of pointers to 64-, 32-, 16- and 8-bit unsigned integers. +typedef struct +{ + S64 *s64ptr; + U64 *u64ptr; + S32 *s32ptr; + U32 *u32ptr; + S16 *s16ptr; + U16 *u16ptr; + S8 *s8ptr ; + U8 *u8ptr ; +} StructPtr; + +//! Structure of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers. +typedef struct +{ + volatile S64 *s64ptr; + volatile U64 *u64ptr; + volatile S32 *s32ptr; + volatile U32 *u32ptr; + volatile S16 *s16ptr; + volatile U16 *u16ptr; + volatile S8 *s8ptr ; + volatile U8 *u8ptr ; +} StructVPtr; + +//! Structure of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers. +typedef struct +{ + const S64 *s64ptr; + const U64 *u64ptr; + const S32 *s32ptr; + const U32 *u32ptr; + const S16 *s16ptr; + const U16 *u16ptr; + const S8 *s8ptr ; + const U8 *u8ptr ; +} StructCPtr; + +//! Structure of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers. +typedef struct +{ + const volatile S64 *s64ptr; + const volatile U64 *u64ptr; + const volatile S32 *s32ptr; + const volatile U32 *u32ptr; + const volatile S16 *s16ptr; + const volatile U16 *u16ptr; + const volatile S8 *s8ptr ; + const volatile U8 *u8ptr ; +} StructCVPtr; + +//! @} + +#endif // #ifndef __ASSEMBLY__ + +/*! \name Usual Constants + */ +//! @{ +#define DISABLE 0 +#define ENABLE 1 +#ifndef __cplusplus +#if !defined(__bool_true_false_are_defined) +#define false 0 +#define true 1 +#endif +#endif +#define PASS 0 +#define FAIL 1 +#define LOW 0 +#define HIGH 1 +//! @} + + +#ifndef __ASSEMBLY__ // not for assembling. + +//! \name Optimization Control +//@{ + +/** + * \def likely(exp) + * \brief The expression \a exp is likely to be true + */ +#ifndef likely +# define likely(exp) (exp) +#endif + +/** + * \def unlikely(exp) + * \brief The expression \a exp is unlikely to be true + */ +#ifndef unlikely +# define unlikely(exp) (exp) +#endif + +/** + * \def is_constant(exp) + * \brief Determine if an expression evaluates to a constant value. + * + * \param exp Any expression + * + * \return true if \a exp is constant, false otherwise. + */ +#if (defined __GNUC__) || (defined __CC_ARM) +# define is_constant(exp) __builtin_constant_p(exp) +#else +# define is_constant(exp) (0) +#endif + +//! @} + +/*! \name Bit-Field Handling + */ +//! @{ + +/*! \brief Reads the bits of a value specified by a given bit-mask. + * + * \param value Value to read bits from. + * \param mask Bit-mask indicating bits to read. + * + * \return Read bits. + */ +#define Rd_bits( value, mask) ((value) & (mask)) + +/*! \brief Writes the bits of a C lvalue specified by a given bit-mask. + * + * \param lvalue C lvalue to write bits to. + * \param mask Bit-mask indicating bits to write. + * \param bits Bits to write. + * + * \return Resulting value with written bits. + */ +#define Wr_bits(lvalue, mask, bits) ((lvalue) = ((lvalue) & ~(mask)) |\ + ((bits ) & (mask))) + +/*! \brief Tests the bits of a value specified by a given bit-mask. + * + * \param value Value of which to test bits. + * \param mask Bit-mask indicating bits to test. + * + * \return \c 1 if at least one of the tested bits is set, else \c 0. + */ +#define Tst_bits( value, mask) (Rd_bits(value, mask) != 0) + +/*! \brief Clears the bits of a C lvalue specified by a given bit-mask. + * + * \param lvalue C lvalue of which to clear bits. + * \param mask Bit-mask indicating bits to clear. + * + * \return Resulting value with cleared bits. + */ +#define Clr_bits(lvalue, mask) ((lvalue) &= ~(mask)) + +/*! \brief Sets the bits of a C lvalue specified by a given bit-mask. + * + * \param lvalue C lvalue of which to set bits. + * \param mask Bit-mask indicating bits to set. + * + * \return Resulting value with set bits. + */ +#define Set_bits(lvalue, mask) ((lvalue) |= (mask)) + +/*! \brief Toggles the bits of a C lvalue specified by a given bit-mask. + * + * \param lvalue C lvalue of which to toggle bits. + * \param mask Bit-mask indicating bits to toggle. + * + * \return Resulting value with toggled bits. + */ +#define Tgl_bits(lvalue, mask) ((lvalue) ^= (mask)) + +/*! \brief Reads the bit-field of a value specified by a given bit-mask. + * + * \param value Value to read a bit-field from. + * \param mask Bit-mask indicating the bit-field to read. + * + * \return Read bit-field. + */ +#define Rd_bitfield( value, mask) (Rd_bits( value, mask) >> ctz(mask)) + +/*! \brief Writes the bit-field of a C lvalue specified by a given bit-mask. + * + * \param lvalue C lvalue to write a bit-field to. + * \param mask Bit-mask indicating the bit-field to write. + * \param bitfield Bit-field to write. + * + * \return Resulting value with written bit-field. + */ +#define Wr_bitfield(lvalue, mask, bitfield) (Wr_bits(lvalue, mask, (U32)(bitfield) << ctz(mask))) + +//! @} + + +/*! \name Zero-Bit Counting + * + * Under GCC, __builtin_clz and __builtin_ctz behave like macros when + * applied to constant expressions (values known at compile time), so they are + * more optimized than the use of the corresponding assembly instructions and + * they can be used as constant expressions e.g. to initialize objects having + * static storage duration, and like the corresponding assembly instructions + * when applied to non-constant expressions (values unknown at compile time), so + * they are more optimized than an assembly periphrasis. Hence, clz and ctz + * ensure a possible and optimized behavior for both constant and non-constant + * expressions. + */ +//! @{ + +/*! \brief Counts the leading zero bits of the given value considered as a 32-bit integer. + * + * \param u Value of which to count the leading zero bits. + * + * \return The count of leading zero bits in \a u. + */ +#if (defined __GNUC__) || (defined __CC_ARM) +# define clz(u) __builtin_clz(u) +#elif (defined __ICCARM__) +# define clz(u) __CLZ(u) +#else +# define clz(u) (((u) == 0) ? 32 : \ + ((u) & (1ul << 31)) ? 0 : \ + ((u) & (1ul << 30)) ? 1 : \ + ((u) & (1ul << 29)) ? 2 : \ + ((u) & (1ul << 28)) ? 3 : \ + ((u) & (1ul << 27)) ? 4 : \ + ((u) & (1ul << 26)) ? 5 : \ + ((u) & (1ul << 25)) ? 6 : \ + ((u) & (1ul << 24)) ? 7 : \ + ((u) & (1ul << 23)) ? 8 : \ + ((u) & (1ul << 22)) ? 9 : \ + ((u) & (1ul << 21)) ? 10 : \ + ((u) & (1ul << 20)) ? 11 : \ + ((u) & (1ul << 19)) ? 12 : \ + ((u) & (1ul << 18)) ? 13 : \ + ((u) & (1ul << 17)) ? 14 : \ + ((u) & (1ul << 16)) ? 15 : \ + ((u) & (1ul << 15)) ? 16 : \ + ((u) & (1ul << 14)) ? 17 : \ + ((u) & (1ul << 13)) ? 18 : \ + ((u) & (1ul << 12)) ? 19 : \ + ((u) & (1ul << 11)) ? 20 : \ + ((u) & (1ul << 10)) ? 21 : \ + ((u) & (1ul << 9)) ? 22 : \ + ((u) & (1ul << 8)) ? 23 : \ + ((u) & (1ul << 7)) ? 24 : \ + ((u) & (1ul << 6)) ? 25 : \ + ((u) & (1ul << 5)) ? 26 : \ + ((u) & (1ul << 4)) ? 27 : \ + ((u) & (1ul << 3)) ? 28 : \ + ((u) & (1ul << 2)) ? 29 : \ + ((u) & (1ul << 1)) ? 30 : \ + 31) +#endif + +/*! \brief Counts the trailing zero bits of the given value considered as a 32-bit integer. + * + * \param u Value of which to count the trailing zero bits. + * + * \return The count of trailing zero bits in \a u. + */ +#if (defined __GNUC__) || (defined __CC_ARM) +# define ctz(u) __builtin_ctz(u) +#else +# define ctz(u) ((u) & (1ul << 0) ? 0 : \ + (u) & (1ul << 1) ? 1 : \ + (u) & (1ul << 2) ? 2 : \ + (u) & (1ul << 3) ? 3 : \ + (u) & (1ul << 4) ? 4 : \ + (u) & (1ul << 5) ? 5 : \ + (u) & (1ul << 6) ? 6 : \ + (u) & (1ul << 7) ? 7 : \ + (u) & (1ul << 8) ? 8 : \ + (u) & (1ul << 9) ? 9 : \ + (u) & (1ul << 10) ? 10 : \ + (u) & (1ul << 11) ? 11 : \ + (u) & (1ul << 12) ? 12 : \ + (u) & (1ul << 13) ? 13 : \ + (u) & (1ul << 14) ? 14 : \ + (u) & (1ul << 15) ? 15 : \ + (u) & (1ul << 16) ? 16 : \ + (u) & (1ul << 17) ? 17 : \ + (u) & (1ul << 18) ? 18 : \ + (u) & (1ul << 19) ? 19 : \ + (u) & (1ul << 20) ? 20 : \ + (u) & (1ul << 21) ? 21 : \ + (u) & (1ul << 22) ? 22 : \ + (u) & (1ul << 23) ? 23 : \ + (u) & (1ul << 24) ? 24 : \ + (u) & (1ul << 25) ? 25 : \ + (u) & (1ul << 26) ? 26 : \ + (u) & (1ul << 27) ? 27 : \ + (u) & (1ul << 28) ? 28 : \ + (u) & (1ul << 29) ? 29 : \ + (u) & (1ul << 30) ? 30 : \ + (u) & (1ul << 31) ? 31 : \ + 32) +#endif + +//! @} + + +/*! \name Bit Reversing + */ +//! @{ + +/*! \brief Reverses the bits of \a u8. + * + * \param u8 U8 of which to reverse the bits. + * + * \return Value resulting from \a u8 with reversed bits. + */ +#define bit_reverse8(u8) ((U8)(bit_reverse32((U8)(u8)) >> 24)) + +/*! \brief Reverses the bits of \a u16. + * + * \param u16 U16 of which to reverse the bits. + * + * \return Value resulting from \a u16 with reversed bits. + */ +#define bit_reverse16(u16) ((U16)(bit_reverse32((U16)(u16)) >> 16)) + +/*! \brief Reverses the bits of \a u32. + * + * \param u32 U32 of which to reverse the bits. + * + * \return Value resulting from \a u32 with reversed bits. + */ +#define bit_reverse32(u32) __RBIT(u32) + +/*! \brief Reverses the bits of \a u64. + * + * \param u64 U64 of which to reverse the bits. + * + * \return Value resulting from \a u64 with reversed bits. + */ +#define bit_reverse64(u64) ((U64)(((U64)bit_reverse32((U64)(u64) >> 32)) |\ + ((U64)bit_reverse32((U64)(u64)) << 32))) + +//! @} + + +/*! \name Alignment + */ +//! @{ + +/*! \brief Tests alignment of the number \a val with the \a n boundary. + * + * \param val Input value. + * \param n Boundary. + * + * \return \c 1 if the number \a val is aligned with the \a n boundary, else \c 0. + */ +#define Test_align(val, n ) (!Tst_bits( val, (n) - 1 ) ) + +/*! \brief Gets alignment of the number \a val with respect to the \a n boundary. + * + * \param val Input value. + * \param n Boundary. + * + * \return Alignment of the number \a val with respect to the \a n boundary. + */ +#define Get_align( val, n ) ( Rd_bits( val, (n) - 1 ) ) + +/*! \brief Sets alignment of the lvalue number \a lval to \a alg with respect to the \a n boundary. + * + * \param lval Input/output lvalue. + * \param n Boundary. + * \param alg Alignment. + * + * \return New value of \a lval resulting from its alignment set to \a alg with respect to the \a n boundary. + */ +#define Set_align(lval, n, alg) ( Wr_bits(lval, (n) - 1, alg) ) + +/*! \brief Aligns the number \a val with the upper \a n boundary. + * + * \param val Input value. + * \param n Boundary. + * + * \return Value resulting from the number \a val aligned with the upper \a n boundary. + */ +#define Align_up( val, n ) (((val) + ((n) - 1)) & ~((n) - 1)) + +/*! \brief Aligns the number \a val with the lower \a n boundary. + * + * \param val Input value. + * \param n Boundary. + * + * \return Value resulting from the number \a val aligned with the lower \a n boundary. + */ +#define Align_down(val, n ) ( (val) & ~((n) - 1)) + +//! @} + + +/*! \name Mathematics + * + * The same considerations as for clz and ctz apply here but GCC does not + * provide built-in functions to access the assembly instructions abs, min and + * max and it does not produce them by itself in most cases, so two sets of + * macros are defined here: + * - Abs, Min and Max to apply to constant expressions (values known at + * compile time); + * - abs, min and max to apply to non-constant expressions (values unknown at + * compile time), abs is found in stdlib.h. + */ +//! @{ + +/*! \brief Takes the absolute value of \a a. + * + * \param a Input value. + * + * \return Absolute value of \a a. + * + * \note More optimized if only used with values known at compile time. + */ +#define Abs(a) (((a) < 0 ) ? -(a) : (a)) + +/*! \brief Takes the minimal value of \a a and \a b. + * + * \param a Input value. + * \param b Input value. + * + * \return Minimal value of \a a and \a b. + * + * \note More optimized if only used with values known at compile time. + */ +#define Min(a, b) (((a) < (b)) ? (a) : (b)) + +/*! \brief Takes the maximal value of \a a and \a b. + * + * \param a Input value. + * \param b Input value. + * + * \return Maximal value of \a a and \a b. + * + * \note More optimized if only used with values known at compile time. + */ +#define Max(a, b) (((a) > (b)) ? (a) : (b)) + +// abs() is already defined by stdlib.h + +/*! \brief Takes the minimal value of \a a and \a b. + * + * \param a Input value. + * \param b Input value. + * + * \return Minimal value of \a a and \a b. + * + * \note More optimized if only used with values unknown at compile time. + */ +#define min(a, b) Min(a, b) + +/*! \brief Takes the maximal value of \a a and \a b. + * + * \param a Input value. + * \param b Input value. + * + * \return Maximal value of \a a and \a b. + * + * \note More optimized if only used with values unknown at compile time. + */ +#define max(a, b) Max(a, b) + +//! @} + + +/*! \brief Calls the routine at address \a addr. + * + * It generates a long call opcode. + * + * For example, `Long_call(0x80000000)' generates a software reset on a UC3 if + * it is invoked from the CPU supervisor mode. + * + * \param addr Address of the routine to call. + * + * \note It may be used as a long jump opcode in some special cases. + */ +#define Long_call(addr) ((*(void (*)(void))(addr))()) + + +/*! \name MCU Endianism Handling + * ARM is MCU little endianism. + */ +//! @{ +#define MSB(u16) (((U8 *)&(u16))[1]) //!< Most significant byte of \a u16. +#define LSB(u16) (((U8 *)&(u16))[0]) //!< Least significant byte of \a u16. + +#define MSH(u32) (((U16 *)&(u32))[1]) //!< Most significant half-word of \a u32. +#define LSH(u32) (((U16 *)&(u32))[0]) //!< Least significant half-word of \a u32. +#define MSB0W(u32) (((U8 *)&(u32))[3]) //!< Most significant byte of 1st rank of \a u32. +#define MSB1W(u32) (((U8 *)&(u32))[2]) //!< Most significant byte of 2nd rank of \a u32. +#define MSB2W(u32) (((U8 *)&(u32))[1]) //!< Most significant byte of 3rd rank of \a u32. +#define MSB3W(u32) (((U8 *)&(u32))[0]) //!< Most significant byte of 4th rank of \a u32. +#define LSB3W(u32) MSB0W(u32) //!< Least significant byte of 4th rank of \a u32. +#define LSB2W(u32) MSB1W(u32) //!< Least significant byte of 3rd rank of \a u32. +#define LSB1W(u32) MSB2W(u32) //!< Least significant byte of 2nd rank of \a u32. +#define LSB0W(u32) MSB3W(u32) //!< Least significant byte of 1st rank of \a u32. + +#define MSW(u64) (((U32 *)&(u64))[1]) //!< Most significant word of \a u64. +#define LSW(u64) (((U32 *)&(u64))[0]) //!< Least significant word of \a u64. +#define MSH0(u64) (((U16 *)&(u64))[3]) //!< Most significant half-word of 1st rank of \a u64. +#define MSH1(u64) (((U16 *)&(u64))[2]) //!< Most significant half-word of 2nd rank of \a u64. +#define MSH2(u64) (((U16 *)&(u64))[1]) //!< Most significant half-word of 3rd rank of \a u64. +#define MSH3(u64) (((U16 *)&(u64))[0]) //!< Most significant half-word of 4th rank of \a u64. +#define LSH3(u64) MSH0(u64) //!< Least significant half-word of 4th rank of \a u64. +#define LSH2(u64) MSH1(u64) //!< Least significant half-word of 3rd rank of \a u64. +#define LSH1(u64) MSH2(u64) //!< Least significant half-word of 2nd rank of \a u64. +#define LSH0(u64) MSH3(u64) //!< Least significant half-word of 1st rank of \a u64. +#define MSB0D(u64) (((U8 *)&(u64))[7]) //!< Most significant byte of 1st rank of \a u64. +#define MSB1D(u64) (((U8 *)&(u64))[6]) //!< Most significant byte of 2nd rank of \a u64. +#define MSB2D(u64) (((U8 *)&(u64))[5]) //!< Most significant byte of 3rd rank of \a u64. +#define MSB3D(u64) (((U8 *)&(u64))[4]) //!< Most significant byte of 4th rank of \a u64. +#define MSB4D(u64) (((U8 *)&(u64))[3]) //!< Most significant byte of 5th rank of \a u64. +#define MSB5D(u64) (((U8 *)&(u64))[2]) //!< Most significant byte of 6th rank of \a u64. +#define MSB6D(u64) (((U8 *)&(u64))[1]) //!< Most significant byte of 7th rank of \a u64. +#define MSB7D(u64) (((U8 *)&(u64))[0]) //!< Most significant byte of 8th rank of \a u64. +#define LSB7D(u64) MSB0D(u64) //!< Least significant byte of 8th rank of \a u64. +#define LSB6D(u64) MSB1D(u64) //!< Least significant byte of 7th rank of \a u64. +#define LSB5D(u64) MSB2D(u64) //!< Least significant byte of 6th rank of \a u64. +#define LSB4D(u64) MSB3D(u64) //!< Least significant byte of 5th rank of \a u64. +#define LSB3D(u64) MSB4D(u64) //!< Least significant byte of 4th rank of \a u64. +#define LSB2D(u64) MSB5D(u64) //!< Least significant byte of 3rd rank of \a u64. +#define LSB1D(u64) MSB6D(u64) //!< Least significant byte of 2nd rank of \a u64. +#define LSB0D(u64) MSB7D(u64) //!< Least significant byte of 1st rank of \a u64. + +#define BE16(x) Swap16(x) +#define LE16(x) (x) + +#define le16_to_cpu(x) (x) +#define cpu_to_le16(x) (x) +#define LE16_TO_CPU(x) (x) +#define CPU_TO_LE16(x) (x) + +#define be16_to_cpu(x) Swap16(x) +#define cpu_to_be16(x) Swap16(x) +#define BE16_TO_CPU(x) Swap16(x) +#define CPU_TO_BE16(x) Swap16(x) + +#define le32_to_cpu(x) (x) +#define cpu_to_le32(x) (x) +#define LE32_TO_CPU(x) (x) +#define CPU_TO_LE32(x) (x) + +#define be32_to_cpu(x) swap32(x) +#define cpu_to_be32(x) swap32(x) +#define BE32_TO_CPU(x) swap32(x) +#define CPU_TO_BE32(x) swap32(x) +//! @} + + +/*! \name Endianism Conversion + * + * The same considerations as for clz and ctz apply here but GCC's + * __builtin_bswap_32 and __builtin_bswap_64 do not behave like macros when + * applied to constant expressions, so two sets of macros are defined here: + * - Swap16, Swap32 and Swap64 to apply to constant expressions (values known + * at compile time); + * - swap16, swap32 and swap64 to apply to non-constant expressions (values + * unknown at compile time). + */ +//! @{ + +/*! \brief Toggles the endianism of \a u16 (by swapping its bytes). + * + * \param u16 U16 of which to toggle the endianism. + * + * \return Value resulting from \a u16 with toggled endianism. + * + * \note More optimized if only used with values known at compile time. + */ +#define Swap16(u16) ((U16)(((U16)(u16) >> 8) |\ + ((U16)(u16) << 8))) + +/*! \brief Toggles the endianism of \a u32 (by swapping its bytes). + * + * \param u32 U32 of which to toggle the endianism. + * + * \return Value resulting from \a u32 with toggled endianism. + * + * \note More optimized if only used with values known at compile time. + */ +#define Swap32(u32) ((U32)(((U32)Swap16((U32)(u32) >> 16)) |\ + ((U32)Swap16((U32)(u32)) << 16))) + +/*! \brief Toggles the endianism of \a u64 (by swapping its bytes). + * + * \param u64 U64 of which to toggle the endianism. + * + * \return Value resulting from \a u64 with toggled endianism. + * + * \note More optimized if only used with values known at compile time. + */ +#define Swap64(u64) ((U64)(((U64)Swap32((U64)(u64) >> 32)) |\ + ((U64)Swap32((U64)(u64)) << 32))) + +/*! \brief Toggles the endianism of \a u16 (by swapping its bytes). + * + * \param u16 U16 of which to toggle the endianism. + * + * \return Value resulting from \a u16 with toggled endianism. + * + * \note More optimized if only used with values unknown at compile time. + */ +#define swap16(u16) Swap16(u16) + +/*! \brief Toggles the endianism of \a u32 (by swapping its bytes). + * + * \param u32 U32 of which to toggle the endianism. + * + * \return Value resulting from \a u32 with toggled endianism. + * + * \note More optimized if only used with values unknown at compile time. + */ +#if (defined __GNUC__) +# define swap32(u32) ((U32)__builtin_bswap32((U32)(u32))) +#else +# define swap32(u32) Swap32(u32) +#endif + +/*! \brief Toggles the endianism of \a u64 (by swapping its bytes). + * + * \param u64 U64 of which to toggle the endianism. + * + * \return Value resulting from \a u64 with toggled endianism. + * + * \note More optimized if only used with values unknown at compile time. + */ +#if (defined __GNUC__) +# define swap64(u64) ((U64)__builtin_bswap64((U64)(u64))) +#else +# define swap64(u64) ((U64)(((U64)swap32((U64)(u64) >> 32)) |\ + ((U64)swap32((U64)(u64)) << 32))) +#endif + +//! @} + + +/*! \name Target Abstraction + */ +//! @{ + +#define _GLOBEXT_ extern //!< extern storage-class specifier. +#define _CONST_TYPE_ const //!< const type qualifier. +#define _MEM_TYPE_SLOW_ //!< Slow memory type. +#define _MEM_TYPE_MEDFAST_ //!< Fairly fast memory type. +#define _MEM_TYPE_FAST_ //!< Fast memory type. + +typedef U8 Byte; //!< 8-bit unsigned integer. + +#define memcmp_ram2ram memcmp //!< Target-specific memcmp of RAM to RAM. +#define memcmp_code2ram memcmp //!< Target-specific memcmp of RAM to NVRAM. +#define memcpy_ram2ram memcpy //!< Target-specific memcpy from RAM to RAM. +#define memcpy_code2ram memcpy //!< Target-specific memcpy from NVRAM to RAM. + +#define LSB0(u32) LSB0W(u32) //!< Least significant byte of 1st rank of \a u32. +#define LSB1(u32) LSB1W(u32) //!< Least significant byte of 2nd rank of \a u32. +#define LSB2(u32) LSB2W(u32) //!< Least significant byte of 3rd rank of \a u32. +#define LSB3(u32) LSB3W(u32) //!< Least significant byte of 4th rank of \a u32. +#define MSB3(u32) MSB3W(u32) //!< Most significant byte of 4th rank of \a u32. +#define MSB2(u32) MSB2W(u32) //!< Most significant byte of 3rd rank of \a u32. +#define MSB1(u32) MSB1W(u32) //!< Most significant byte of 2nd rank of \a u32. +#define MSB0(u32) MSB0W(u32) //!< Most significant byte of 1st rank of \a u32. + +//! @} + +/** + * \brief Calculate \f$ \left\lceil \frac{a}{b} \right\rceil \f$ using + * integer arithmetic. + * + * \param a An integer + * \param b Another integer + * + * \return (\a a / \a b) rounded up to the nearest integer. + */ +#define div_ceil(a, b) (((a) + (b) - 1) / (b)) + +#endif // #ifndef __ASSEMBLY__ + + +#if defined(__ICCARM__) +#define SHORTENUM __packed +#elif defined(__GNUC__) +#define SHORTENUM __attribute__((packed)) +#endif + +/* No operation */ +#if defined(__ICCARM__) +#define nop() __no_operation() +#elif defined(__GNUC__) +#define nop() (__NOP()) +#endif + +#define FLASH_DECLARE(x) const x +#define FLASH_EXTERN(x) extern const x +#define PGM_READ_BYTE(x) *(x) +#define PGM_READ_WORD(x) *(x) +#define MEMCPY_ENDIAN memcpy +#define PGM_READ_BLOCK(dst, src, len) memcpy((dst), (src), (len)) + +/*Defines the Flash Storage for the request and response of MAC*/ +#define CMD_ID_OCTET (0) + +/* Converting of values from CPU endian to little endian. */ +#define CPU_ENDIAN_TO_LE16(x) (x) +#define CPU_ENDIAN_TO_LE32(x) (x) +#define CPU_ENDIAN_TO_LE64(x) (x) + +/* Converting of values from little endian to CPU endian. */ +#define LE16_TO_CPU_ENDIAN(x) (x) +#define LE32_TO_CPU_ENDIAN(x) (x) +#define LE64_TO_CPU_ENDIAN(x) (x) + +/* Converting of constants from little endian to CPU endian. */ +#define CLE16_TO_CPU_ENDIAN(x) (x) +#define CLE32_TO_CPU_ENDIAN(x) (x) +#define CLE64_TO_CPU_ENDIAN(x) (x) + +/* Converting of constants from CPU endian to little endian. */ +#define CCPU_ENDIAN_TO_LE16(x) (x) +#define CCPU_ENDIAN_TO_LE32(x) (x) +#define CCPU_ENDIAN_TO_LE64(x) (x) + +#define ADDR_COPY_DST_SRC_16(dst, src) ((dst) = (src)) +#define ADDR_COPY_DST_SRC_64(dst, src) ((dst) = (src)) + +/** + * @brief Converts a 64-Bit value into a 8 Byte array + * + * @param[in] value 64-Bit value + * @param[out] data Pointer to the 8 Byte array to be updated with 64-Bit value + * @ingroup apiPalApi + */ +static inline void convert_64_bit_to_byte_array(uint64_t value, uint8_t *data) +{ + uint8_t val_index = 0; + + while (val_index < 8) + { + data[val_index++] = value & 0xFF; + value = value >> 8; + } +} + +/** + * @brief Converts a 16-Bit value into a 2 Byte array + * + * @param[in] value 16-Bit value + * @param[out] data Pointer to the 2 Byte array to be updated with 16-Bit value + * @ingroup apiPalApi + */ +static inline void convert_16_bit_to_byte_array(uint16_t value, uint8_t *data) +{ + data[0] = value & 0xFF; + data[1] = (value >> 8) & 0xFF; +} + +/* Converts a 16-Bit value into a 2 Byte array */ +static inline void convert_spec_16_bit_to_byte_array(uint16_t value, uint8_t *data) +{ + data[0] = value & 0xFF; + data[1] = (value >> 8) & 0xFF; +} + +/* Converts a 16-Bit value into a 2 Byte array */ +static inline void convert_16_bit_to_byte_address(uint16_t value, uint8_t *data) +{ + data[0] = value & 0xFF; + data[1] = (value >> 8) & 0xFF; +} + +/* + * @brief Converts a 2 Byte array into a 16-Bit value + * + * @param data Specifies the pointer to the 2 Byte array + * + * @return 16-Bit value + * @ingroup apiPalApi + */ +static inline uint16_t convert_byte_array_to_16_bit(uint8_t *data) +{ + return (data[0] | ((uint16_t)data[1] << 8)); +} + +/** + * @brief Converts a 8 Byte array into a 64-Bit value + * + * @param data Specifies the pointer to the 8 Byte array + * + * @return 64-Bit value + * @ingroup apiPalApi + */ +static inline uint64_t convert_byte_array_to_64_bit(uint8_t *data) +{ + union + { + uint64_t u64; + uint8_t u8[8]; + } long_addr; + + uint8_t val_index; + + for (val_index = 0; val_index < 8; val_index++) + { + long_addr.u8[val_index] = *data++; + } + + return long_addr.u64; +} +/** + * \} + */ + +#endif /* UTILS_COMPILER_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/fpu/fpu.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/fpu/fpu.h new file mode 100644 index 000000000..c28c39a9b --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/fpu/fpu.h @@ -0,0 +1,89 @@ +/** + * \file + * + * \brief FPU support for SAM. + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _FPU_H_INCLUDED_ +#define _FPU_H_INCLUDED_ + +#include + +/** Address for ARM CPACR */ +#define ADDR_CPACR 0xE000ED88 + +/** CPACR Register */ +#define REG_CPACR (*((volatile uint32_t *)ADDR_CPACR)) + +/** + * Enable FPU + */ +__always_inline static void fpu_enable(void) +{ + irqflags_t flags; + flags = cpu_irq_save(); + REG_CPACR |= (0xFu << 20); + __DSB(); + __ISB(); + cpu_irq_restore(flags); +} + +/** + * Disable FPU + */ +__always_inline static void fpu_disable(void) +{ + irqflags_t flags; + flags = cpu_irq_save(); + REG_CPACR &= ~(0xFu << 20); + __DSB(); + __ISB(); + cpu_irq_restore(flags); +} + +/** + * Check if FPU is enabled + */ +__always_inline static bool fpu_is_enabled(void) +{ + return (REG_CPACR & (0xFu << 20)); +} + +#endif /* _FPU_H_INCLUDED_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/header_files/io.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/header_files/io.h new file mode 100644 index 000000000..b0fbd29ca --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/header_files/io.h @@ -0,0 +1,95 @@ +/** + * \file + * + * \brief Arch file for SAM. + * + * This file defines common SAM series. + * + * Copyright (c) 2011 - 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _SAM_IO_ +#define _SAM_IO_ + +/* SAM3 family */ + +/* SAM3S series */ +#if (SAM3S) +# if (SAM3S8 || SAM3SD8) +# include "sam3s8.h" +# else +# include "sam3s.h" +# endif +#endif + +/* SAM3U series */ +#if (SAM3U) +# include "sam3u.h" +#endif + +/* SAM3N series */ +#if (SAM3N) +# include "sam3n.h" +#endif + +/* SAM3XA series */ +#if (SAM3XA) +# include "sam3xa.h" +#endif + +/* SAM4S series */ +#if (SAM4S) +# include "sam4s.h" +#endif + +/* SAM4L series */ +#if (SAM4L) +# include "sam4l.h" +#endif + +/* SAM4E series */ +#if (SAM4E) +# include "sam4e.h" +#endif + +/* SAM4N series */ +#if (SAM4N) +# include "sam4n.h" +#endif + +#endif /* _SAM_IO_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/linker_scripts/sam4e/sam4e16e/gcc/flash.ld b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/linker_scripts/sam4e/sam4e16e/gcc/flash.ld new file mode 100644 index 000000000..d01ef3ef3 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/linker_scripts/sam4e/sam4e16e/gcc/flash.ld @@ -0,0 +1,153 @@ +/** + * \file + * + * \brief Flash Linker script for SAM. + * + * Copyright (c) 2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00400000, LENGTH = 0x00100000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00020000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : 0x3000; + +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/make/Makefile.sam.in b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/make/Makefile.sam.in new file mode 100644 index 000000000..2dd582d6c --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/make/Makefile.sam.in @@ -0,0 +1,482 @@ +# List of available make goals: +# +# all Default target, builds the project +# clean Clean up the project +# rebuild Rebuild the project +# debug_flash Builds the project and debug in flash +# debug_sram Builds the project and debug in sram +# +# doc Build the documentation +# cleandoc Clean up the documentation +# rebuilddoc Rebuild the documentation +# +# \file +# +# Copyright (c) 2011 - 2013 Atmel Corporation. All rights reserved. +# +# \asf_license_start +# +# \page License +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# 2. 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. +# +# 3. The name of Atmel may not be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# 4. This software may only be redistributed and used in connection with an +# Atmel microcontroller product. +# +# THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE +# EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. +# +# \asf_license_stop +# + +# Include the config.mk file from the current working path, e.g., where the +# user called make. +include config.mk + +# Tool to use to generate documentation from the source code +DOCGEN ?= doxygen + +# Look for source files relative to the top-level source directory +VPATH := $(PRJ_PATH) + +# Output target file +project_type := $(PROJECT_TYPE) + +# Output target file +ifeq ($(project_type),flash) +target := $(TARGET_FLASH) +linker_script := $(PRJ_PATH)/$(LINKER_SCRIPT_FLASH) +debug_script := $(PRJ_PATH)/$(DEBUG_SCRIPT_FLASH) +else +target := $(TARGET_SRAM) +linker_script := $(PRJ_PATH)/$(LINKER_SCRIPT_SRAM) +debug_script := $(PRJ_PATH)/$(DEBUG_SCRIPT_SRAM) +endif + +# Output project name (target name minus suffix) +project := $(basename $(target)) + +# Output target file (typically ELF or static library) +ifeq ($(suffix $(target)),.a) +target_type := lib +else +ifeq ($(suffix $(target)),.elf) +target_type := elf +else +$(error "Target type $(target_type) is not supported") +endif +endif + +# Allow override of operating system detection. The user can add OS=Linux or +# OS=Windows on the command line to explicit set the host OS. +# +# This allows to work around broken uname utility on certain systems. +ifdef OS + ifeq ($(strip $(OS)), Linux) + os_type := Linux + endif + ifeq ($(strip $(OS)), Windows) + os_type := windows32_64 + endif +endif + +os_type ?= $(strip $(shell uname)) + +ifeq ($(os_type),windows32) +os := Windows +else +ifeq ($(os_type),windows64) +os := Windows +else +ifeq ($(os_type),windows32_64) +os ?= Windows +else +ifeq ($(os_type),) +os := Windows +else +# Default to Linux style operating system. Both Cygwin and mingw are fully +# compatible (for this Makefile) with Linux. +os := Linux +endif +endif +endif +endif + +# Output documentation directory and configuration file. +docdir := ../doxygen/html +doccfg := ../doxygen/doxyfile.doxygen + +CROSS ?= arm-none-eabi- +AR := $(CROSS)ar +AS := $(CROSS)as +CC := $(CROSS)gcc +CPP := $(CROSS)gcc -E +CXX := $(CROSS)g++ +LD := $(CROSS)g++ +NM := $(CROSS)nm +OBJCOPY := $(CROSS)objcopy +OBJDUMP := $(CROSS)objdump +SIZE := $(CROSS)size +GDB := $(CROSS)gdb + +RM := rm +ifeq ($(os),Windows) +RMDIR := rmdir /S /Q +else +RMDIR := rmdir -p --ignore-fail-on-non-empty +endif + +# On Windows, we need to override the shell to force the use of cmd.exe +ifeq ($(os),Windows) +SHELL := cmd +endif + +# Strings for beautifying output +MSG_CLEAN_FILES = "RM *.o *.d" +MSG_CLEAN_DIRS = "RMDIR $(strip $(clean-dirs))" +MSG_CLEAN_DOC = "RMDIR $(docdir)" +MSG_MKDIR = "MKDIR $(dir $@)" + +MSG_INFO = "INFO " + +MSG_ARCHIVING = "AR $@" +MSG_ASSEMBLING = "AS $@" +MSG_BINARY_IMAGE = "OBJCOPY $@" +MSG_COMPILING = "CC $@" +MSG_COMPILING_CXX = "CXX $@" +MSG_EXTENDED_LISTING = "OBJDUMP $@" +MSG_IHEX_IMAGE = "OBJCOPY $@" +MSG_LINKING = "LN $@" +MSG_PREPROCESSING = "CPP $@" +MSG_SIZE = "SIZE $@" +MSG_SYMBOL_TABLE = "NM $@" + +MSG_GENERATING_DOC = "DOXYGEN $(docdir)" + +# Don't use make's built-in rules and variables +MAKEFLAGS += -rR + +# Don't print 'Entering directory ...' +MAKEFLAGS += --no-print-directory + +# Function for reversing the order of a list +reverse = $(if $(1),$(call reverse,$(wordlist 2,$(words $(1)),$(1)))) $(firstword $(1)) + +# Hide command output by default, but allow the user to override this +# by adding V=1 on the command line. +# +# This is inspired by the Kbuild system used by the Linux kernel. +ifdef V + ifeq ("$(origin V)", "command line") + VERBOSE = $(V) + endif +endif +ifndef VERBOSE + VERBOSE = 0 +endif + +ifeq ($(VERBOSE), 1) + Q = +else + Q = @ +endif + +arflags-gnu-y := $(ARFLAGS) +asflags-gnu-y := $(ASFLAGS) +cflags-gnu-y := $(CFLAGS) +cxxflags-gnu-y := $(CXXFLAGS) +cppflags-gnu-y := $(CPPFLAGS) +cpuflags-gnu-y := +dbgflags-gnu-y := $(DBGFLAGS) +libflags-gnu-y := $(foreach LIB,$(LIBS),-l$(LIB)) +ldflags-gnu-y := $(LDFLAGS) +flashflags-gnu-y := +clean-files := +clean-dirs := + +clean-files += $(wildcard $(target) $(project).map) +clean-files += $(wildcard $(project).hex $(project).bin) +clean-files += $(wildcard $(project).lss $(project).sym) +clean-files += $(wildcard $(build)) + +# Use pipes instead of temporary files for communication between processes +cflags-gnu-y += -pipe +asflags-gnu-y += -pipe +ldflags-gnu-y += -pipe + +# Archiver flags. +arflags-gnu-y += rcs + +# Always enable warnings. And be very careful about implicit +# declarations. +cflags-gnu-y += -Wall -Wstrict-prototypes -Wmissing-prototypes +cflags-gnu-y += -Werror-implicit-function-declaration +cxxflags-gnu-y += -Wall +# IAR doesn't allow arithmetic on void pointers, so warn about that. +cflags-gnu-y += -Wpointer-arith +cxxflags-gnu-y += -Wpointer-arith + +# Preprocessor flags. +cppflags-gnu-y += $(foreach INC,$(addprefix $(PRJ_PATH)/,$(INC_PATH)),-I$(INC)) +asflags-gnu-y += $(foreach INC,$(addprefix $(PRJ_PATH)/,$(INC_PATH)),'-Wa,-I$(INC)') + +# CPU specific flags. +cpuflags-gnu-y += -mcpu=$(ARCH) -mthumb -D=__$(PART)__ + +# Dependency file flags. +depflags = -MD -MP -MQ $@ + +# Debug specific flags. +ifdef BUILD_DEBUG_LEVEL +dbgflags-gnu-y += -g$(BUILD_DEBUG_LEVEL) +else +dbgflags-gnu-y += -g3 +endif + +# Optimization specific flags. +ifdef BUILD_OPTIMIZATION +optflags-gnu-y = -O$(BUILD_OPTIMIZATION) +else +optflags-gnu-y = $(OPTIMIZATION) +endif + +# Always preprocess assembler files. +asflags-gnu-y += -x assembler-with-cpp +# Compile C files using the GNU99 standard. +cflags-gnu-y += -std=gnu99 +# Compile C++ files using the GNU++98 standard. +cxxflags-gnu-y += -std=gnu++98 + +# Don't use strict aliasing (very common in embedded applications). +cflags-gnu-y += -fno-strict-aliasing +cxxflags-gnu-y += -fno-strict-aliasing + +# Separate each function and data into its own separate section to allow +# garbage collection of unused sections. +cflags-gnu-y += -ffunction-sections -fdata-sections +cxxflags-gnu-y += -ffunction-sections -fdata-sections + +# Various cflags. +cflags-gnu-y += -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int +cflags-gnu-y += -Wmain -Wparentheses +cflags-gnu-y += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +cflags-gnu-y += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +cflags-gnu-y += -Wshadow -Wbad-function-cast -Wwrite-strings +cflags-gnu-y += -Wsign-compare -Waggregate-return +cflags-gnu-y += -Wmissing-declarations +cflags-gnu-y += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +cflags-gnu-y += -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long +cflags-gnu-y += -Wunreachable-code +cflags-gnu-y += -Wcast-align +cflags-gnu-y += --param max-inline-insns-single=500 + +# Garbage collect unreferred sections when linking. +ldflags-gnu-y += -Wl,--gc-sections + +# Use the linker script if provided by the project. +ifneq ($(strip $(linker_script)),) +ldflags-gnu-y += -Wl,-T $(linker_script) +endif + +# Output a link map file and a cross reference table +ldflags-gnu-y += -Wl,-Map=$(project).map,--cref + +# Add library search paths relative to the top level directory. +ldflags-gnu-y += $(foreach _LIB_PATH,$(addprefix $(PRJ_PATH)/,$(LIB_PATH)),-L$(_LIB_PATH)) + +a_flags = $(cpuflags-gnu-y) $(depflags) $(cppflags-gnu-y) $(asflags-gnu-y) -D__ASSEMBLY__ +c_flags = $(cpuflags-gnu-y) $(dbgflags-gnu-y) $(depflags) $(optflags-gnu-y) $(cppflags-gnu-y) $(cflags-gnu-y) +cxx_flags= $(cpuflags-gnu-y) $(dbgflags-gnu-y) $(depflags) $(optflags-gnu-y) $(cppflags-gnu-y) $(cxxflags-gnu-y) +l_flags = -Wl,--entry=Reset_Handler -Wl,--cref $(cpuflags-gnu-y) $(optflags-gnu-y) $(ldflags-gnu-y) +ar_flags = $(arflags-gnu-y) + +# Source files list and part informations must already be included before +# running this makefile + +# If a custom build directory is specified, use it -- force trailing / in directory name. +ifdef BUILD_DIR + build-dir := $(dir $(BUILD_DIR))$(if $(notdir $(BUILD_DIR)),$(notdir $(BUILD_DIR))/) +else + build-dir = +endif + +# Create object files list from source files list. +obj-y := $(addprefix $(build-dir), $(addsuffix .o,$(basename $(CSRCS) $(ASSRCS)))) +# Create dependency files list from source files list. +dep-files := $(wildcard $(foreach f,$(obj-y),$(basename $(f)).d)) + +clean-files += $(wildcard $(obj-y)) +clean-files += $(dep-files) + +clean-dirs += $(call reverse,$(sort $(wildcard $(dir $(obj-y))))) + +# Default target. +.PHONY: all +ifeq ($(project_type),all) +all: + $(MAKE) all PROJECT_TYPE=flash + $(MAKE) all PROJECT_TYPE=sram +else +ifeq ($(target_type),lib) +all: $(target) $(project).lss $(project).sym +else +ifeq ($(target_type),elf) +all: $(target) $(project).lss $(project).sym $(project).hex $(project).bin +endif +endif +endif + +# Clean up the project. +.PHONY: clean +clean: + @$(if $(strip $(clean-files)),echo $(MSG_CLEAN_FILES)) + $(if $(strip $(clean-files)),$(Q)$(RM) $(clean-files),) + @$(if $(strip $(clean-dirs)),echo $(MSG_CLEAN_DIRS)) +# Remove created directories, and make sure we only remove existing +# directories, since recursive rmdir might help us a bit on the way. +ifeq ($(os),Windows) + $(Q)$(if $(strip $(clean-dirs)), \ + $(RMDIR) $(strip $(subst /,\,$(clean-dirs)))) +else + $(Q)$(if $(strip $(clean-dirs)), \ + for directory in $(strip $(clean-dirs)); do \ + if [ -d "$$directory" ]; then \ + $(RMDIR) $$directory; \ + fi \ + done \ + ) +endif + +# Rebuild the project. +.PHONY: rebuild +rebuild: clean all + +# Debug the project in flash. +.PHONY: debug_flash +debug_flash: all + $(GDB) -x "$(PRJ_PATH)/$(DEBUG_SCRIPT_FLASH)" -ex "reset" -readnow -se $(TARGET_FLASH) + +# Debug the project in sram. +.PHONY: debug_sram +debug_sram: all + $(GDB) -x "$(PRJ_PATH)/$(DEBUG_SCRIPT_SRAM)" -ex "reset" -readnow -se $(TARGET_SRAM) + +.PHONY: objfiles +objfiles: $(obj-y) + +# Create object files from C source files. +$(build-dir)%.o: %.c $(MAKEFILE_PATH) config.mk + $(Q)test -d $(dir $@) || echo $(MSG_MKDIR) +ifeq ($(os),Windows) + $(Q)test -d $(patsubst %/,%,$(dir $@)) || mkdir $(subst /,\,$(dir $@)) +else + $(Q)test -d $(dir $@) || mkdir -p $(dir $@) +endif + @echo $(MSG_COMPILING) + $(Q)$(CC) $(c_flags) -c $< -o $@ + +# Create object files from C++ source files. +$(build-dir)%.o: %.cpp $(MAKEFILE_PATH) config.mk + $(Q)test -d $(dir $@) || echo $(MSG_MKDIR) +ifeq ($(os),Windows) + $(Q)test -d $(patsubst %/,%,$(dir $@)) || mkdir $(subst /,\,$(dir $@)) +else + $(Q)test -d $(dir $@) || mkdir -p $(dir $@) +endif + @echo $(MSG_COMPILING_CXX) + $(Q)$(CXX) $(cxx_flags) -c $< -o $@ + +# Preprocess and assemble: create object files from assembler source files. +$(build-dir)%.o: %.S $(MAKEFILE_PATH) config.mk + $(Q)test -d $(dir $@) || echo $(MSG_MKDIR) +ifeq ($(os),Windows) + $(Q)test -d $(patsubst %/,%,$(dir $@)) || mkdir $(subst /,\,$(dir $@)) +else + $(Q)test -d $(dir $@) || mkdir -p $(dir $@) +endif + @echo $(MSG_ASSEMBLING) + $(Q)$(CC) $(a_flags) -c $< -o $@ + +# Include all dependency files to add depedency to all header files in use. +include $(dep-files) + +ifeq ($(target_type),lib) +# Archive object files into an archive +$(target): $(MAKEFILE_PATH) config.mk $(obj-y) + @echo $(MSG_ARCHIVING) + $(Q)$(AR) $(ar_flags) $@ $(obj-y) + @echo $(MSG_SIZE) + $(Q)$(SIZE) -Bxt $@ +else +ifeq ($(target_type),elf) +# Link the object files into an ELF file. Also make sure the target is rebuilt +# if the common Makefile.sam.in or project config.mk is changed. +$(target): $(linker_script) $(MAKEFILE_PATH) config.mk $(obj-y) + @echo $(MSG_LINKING) + $(Q)$(LD) $(l_flags) $(obj-y) $(libflags-gnu-y) -o $@ + @echo $(MSG_SIZE) + $(Q)$(SIZE) -Ax $@ + $(Q)$(SIZE) -Bx $@ +endif +endif + +# Create extended function listing from target output file. +%.lss: $(target) + @echo $(MSG_EXTENDED_LISTING) + $(Q)$(OBJDUMP) -h -S $< > $@ + +# Create symbol table from target output file. +%.sym: $(target) + @echo $(MSG_SYMBOL_TABLE) + $(Q)$(NM) -n $< > $@ + +# Create Intel HEX image from ELF output file. +%.hex: $(target) + @echo $(MSG_IHEX_IMAGE) + $(Q)$(OBJCOPY) -O ihex $(flashflags-gnu-y) $< $@ + +# Create binary image from ELF output file. +%.bin: $(target) + @echo $(MSG_BINARY_IMAGE) + $(Q)$(OBJCOPY) -O binary $< $@ + +# Provide information about the detected host operating system. +.SECONDARY: info-os +info-os: + @echo $(MSG_INFO)$(os) build host detected + +# Build Doxygen generated documentation. +.PHONY: doc +doc: + @echo $(MSG_GENERATING_DOC) + $(Q)cd $(dir $(doccfg)) && $(DOCGEN) $(notdir $(doccfg)) + +# Clean Doxygen generated documentation. +.PHONY: cleandoc +cleandoc: + @$(if $(wildcard $(docdir)),echo $(MSG_CLEAN_DOC)) + $(Q)$(if $(wildcard $(docdir)),$(RM) --recursive $(docdir)) + +# Rebuild the Doxygen generated documentation. +.PHONY: rebuilddoc +rebuilddoc: cleandoc doc diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/mrepeat.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/mrepeat.h new file mode 100644 index 000000000..954dd5f02 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/mrepeat.h @@ -0,0 +1,336 @@ +/** + * \file + * + * \brief Preprocessor macro repeating utils. + * + * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _MREPEAT_H_ +#define _MREPEAT_H_ + +/** + * \defgroup group_sam_utils_mrepeat Preprocessor - Macro Repeat + * + * \ingroup group_sam_utils + * + * \{ + */ + +#include "preprocessor.h" + + +//! Maximal number of repetitions supported by MREPEAT. +#define MREPEAT_LIMIT 256 + +/*! \brief Macro repeat. + * + * This macro represents a horizontal repetition construct. + * + * \param count The number of repetitious calls to macro. Valid values range from 0 to MREPEAT_LIMIT. + * \param macro A binary operation of the form macro(n, data). This macro is expanded by MREPEAT with + * the current repetition number and the auxiliary data argument. + * \param data Auxiliary data passed to macro. + * + * \return macro(0, data) macro(1, data) ... macro(count - 1, data) + */ +#define MREPEAT(count, macro, data) TPASTE2(MREPEAT, count)(macro, data) + +#define MREPEAT0( macro, data) +#define MREPEAT1( macro, data) MREPEAT0( macro, data) macro( 0, data) +#define MREPEAT2( macro, data) MREPEAT1( macro, data) macro( 1, data) +#define MREPEAT3( macro, data) MREPEAT2( macro, data) macro( 2, data) +#define MREPEAT4( macro, data) MREPEAT3( macro, data) macro( 3, data) +#define MREPEAT5( macro, data) MREPEAT4( macro, data) macro( 4, data) +#define MREPEAT6( macro, data) MREPEAT5( macro, data) macro( 5, data) +#define MREPEAT7( macro, data) MREPEAT6( macro, data) macro( 6, data) +#define MREPEAT8( macro, data) MREPEAT7( macro, data) macro( 7, data) +#define MREPEAT9( macro, data) MREPEAT8( macro, data) macro( 8, data) +#define MREPEAT10( macro, data) MREPEAT9( macro, data) macro( 9, data) +#define MREPEAT11( macro, data) MREPEAT10( macro, data) macro( 10, data) +#define MREPEAT12( macro, data) MREPEAT11( macro, data) macro( 11, data) +#define MREPEAT13( macro, data) MREPEAT12( macro, data) macro( 12, data) +#define MREPEAT14( macro, data) MREPEAT13( macro, data) macro( 13, data) +#define MREPEAT15( macro, data) MREPEAT14( macro, data) macro( 14, data) +#define MREPEAT16( macro, data) MREPEAT15( macro, data) macro( 15, data) +#define MREPEAT17( macro, data) MREPEAT16( macro, data) macro( 16, data) +#define MREPEAT18( macro, data) MREPEAT17( macro, data) macro( 17, data) +#define MREPEAT19( macro, data) MREPEAT18( macro, data) macro( 18, data) +#define MREPEAT20( macro, data) MREPEAT19( macro, data) macro( 19, data) +#define MREPEAT21( macro, data) MREPEAT20( macro, data) macro( 20, data) +#define MREPEAT22( macro, data) MREPEAT21( macro, data) macro( 21, data) +#define MREPEAT23( macro, data) MREPEAT22( macro, data) macro( 22, data) +#define MREPEAT24( macro, data) MREPEAT23( macro, data) macro( 23, data) +#define MREPEAT25( macro, data) MREPEAT24( macro, data) macro( 24, data) +#define MREPEAT26( macro, data) MREPEAT25( macro, data) macro( 25, data) +#define MREPEAT27( macro, data) MREPEAT26( macro, data) macro( 26, data) +#define MREPEAT28( macro, data) MREPEAT27( macro, data) macro( 27, data) +#define MREPEAT29( macro, data) MREPEAT28( macro, data) macro( 28, data) +#define MREPEAT30( macro, data) MREPEAT29( macro, data) macro( 29, data) +#define MREPEAT31( macro, data) MREPEAT30( macro, data) macro( 30, data) +#define MREPEAT32( macro, data) MREPEAT31( macro, data) macro( 31, data) +#define MREPEAT33( macro, data) MREPEAT32( macro, data) macro( 32, data) +#define MREPEAT34( macro, data) MREPEAT33( macro, data) macro( 33, data) +#define MREPEAT35( macro, data) MREPEAT34( macro, data) macro( 34, data) +#define MREPEAT36( macro, data) MREPEAT35( macro, data) macro( 35, data) +#define MREPEAT37( macro, data) MREPEAT36( macro, data) macro( 36, data) +#define MREPEAT38( macro, data) MREPEAT37( macro, data) macro( 37, data) +#define MREPEAT39( macro, data) MREPEAT38( macro, data) macro( 38, data) +#define MREPEAT40( macro, data) MREPEAT39( macro, data) macro( 39, data) +#define MREPEAT41( macro, data) MREPEAT40( macro, data) macro( 40, data) +#define MREPEAT42( macro, data) MREPEAT41( macro, data) macro( 41, data) +#define MREPEAT43( macro, data) MREPEAT42( macro, data) macro( 42, data) +#define MREPEAT44( macro, data) MREPEAT43( macro, data) macro( 43, data) +#define MREPEAT45( macro, data) MREPEAT44( macro, data) macro( 44, data) +#define MREPEAT46( macro, data) MREPEAT45( macro, data) macro( 45, data) +#define MREPEAT47( macro, data) MREPEAT46( macro, data) macro( 46, data) +#define MREPEAT48( macro, data) MREPEAT47( macro, data) macro( 47, data) +#define MREPEAT49( macro, data) MREPEAT48( macro, data) macro( 48, data) +#define MREPEAT50( macro, data) MREPEAT49( macro, data) macro( 49, data) +#define MREPEAT51( macro, data) MREPEAT50( macro, data) macro( 50, data) +#define MREPEAT52( macro, data) MREPEAT51( macro, data) macro( 51, data) +#define MREPEAT53( macro, data) MREPEAT52( macro, data) macro( 52, data) +#define MREPEAT54( macro, data) MREPEAT53( macro, data) macro( 53, data) +#define MREPEAT55( macro, data) MREPEAT54( macro, data) macro( 54, data) +#define MREPEAT56( macro, data) MREPEAT55( macro, data) macro( 55, data) +#define MREPEAT57( macro, data) MREPEAT56( macro, data) macro( 56, data) +#define MREPEAT58( macro, data) MREPEAT57( macro, data) macro( 57, data) +#define MREPEAT59( macro, data) MREPEAT58( macro, data) macro( 58, data) +#define MREPEAT60( macro, data) MREPEAT59( macro, data) macro( 59, data) +#define MREPEAT61( macro, data) MREPEAT60( macro, data) macro( 60, data) +#define MREPEAT62( macro, data) MREPEAT61( macro, data) macro( 61, data) +#define MREPEAT63( macro, data) MREPEAT62( macro, data) macro( 62, data) +#define MREPEAT64( macro, data) MREPEAT63( macro, data) macro( 63, data) +#define MREPEAT65( macro, data) MREPEAT64( macro, data) macro( 64, data) +#define MREPEAT66( macro, data) MREPEAT65( macro, data) macro( 65, data) +#define MREPEAT67( macro, data) MREPEAT66( macro, data) macro( 66, data) +#define MREPEAT68( macro, data) MREPEAT67( macro, data) macro( 67, data) +#define MREPEAT69( macro, data) MREPEAT68( macro, data) macro( 68, data) +#define MREPEAT70( macro, data) MREPEAT69( macro, data) macro( 69, data) +#define MREPEAT71( macro, data) MREPEAT70( macro, data) macro( 70, data) +#define MREPEAT72( macro, data) MREPEAT71( macro, data) macro( 71, data) +#define MREPEAT73( macro, data) MREPEAT72( macro, data) macro( 72, data) +#define MREPEAT74( macro, data) MREPEAT73( macro, data) macro( 73, data) +#define MREPEAT75( macro, data) MREPEAT74( macro, data) macro( 74, data) +#define MREPEAT76( macro, data) MREPEAT75( macro, data) macro( 75, data) +#define MREPEAT77( macro, data) MREPEAT76( macro, data) macro( 76, data) +#define MREPEAT78( macro, data) MREPEAT77( macro, data) macro( 77, data) +#define MREPEAT79( macro, data) MREPEAT78( macro, data) macro( 78, data) +#define MREPEAT80( macro, data) MREPEAT79( macro, data) macro( 79, data) +#define MREPEAT81( macro, data) MREPEAT80( macro, data) macro( 80, data) +#define MREPEAT82( macro, data) MREPEAT81( macro, data) macro( 81, data) +#define MREPEAT83( macro, data) MREPEAT82( macro, data) macro( 82, data) +#define MREPEAT84( macro, data) MREPEAT83( macro, data) macro( 83, data) +#define MREPEAT85( macro, data) MREPEAT84( macro, data) macro( 84, data) +#define MREPEAT86( macro, data) MREPEAT85( macro, data) macro( 85, data) +#define MREPEAT87( macro, data) MREPEAT86( macro, data) macro( 86, data) +#define MREPEAT88( macro, data) MREPEAT87( macro, data) macro( 87, data) +#define MREPEAT89( macro, data) MREPEAT88( macro, data) macro( 88, data) +#define MREPEAT90( macro, data) MREPEAT89( macro, data) macro( 89, data) +#define MREPEAT91( macro, data) MREPEAT90( macro, data) macro( 90, data) +#define MREPEAT92( macro, data) MREPEAT91( macro, data) macro( 91, data) +#define MREPEAT93( macro, data) MREPEAT92( macro, data) macro( 92, data) +#define MREPEAT94( macro, data) MREPEAT93( macro, data) macro( 93, data) +#define MREPEAT95( macro, data) MREPEAT94( macro, data) macro( 94, data) +#define MREPEAT96( macro, data) MREPEAT95( macro, data) macro( 95, data) +#define MREPEAT97( macro, data) MREPEAT96( macro, data) macro( 96, data) +#define MREPEAT98( macro, data) MREPEAT97( macro, data) macro( 97, data) +#define MREPEAT99( macro, data) MREPEAT98( macro, data) macro( 98, data) +#define MREPEAT100(macro, data) MREPEAT99( macro, data) macro( 99, data) +#define MREPEAT101(macro, data) MREPEAT100(macro, data) macro(100, data) +#define MREPEAT102(macro, data) MREPEAT101(macro, data) macro(101, data) +#define MREPEAT103(macro, data) MREPEAT102(macro, data) macro(102, data) +#define MREPEAT104(macro, data) MREPEAT103(macro, data) macro(103, data) +#define MREPEAT105(macro, data) MREPEAT104(macro, data) macro(104, data) +#define MREPEAT106(macro, data) MREPEAT105(macro, data) macro(105, data) +#define MREPEAT107(macro, data) MREPEAT106(macro, data) macro(106, data) +#define MREPEAT108(macro, data) MREPEAT107(macro, data) macro(107, data) +#define MREPEAT109(macro, data) MREPEAT108(macro, data) macro(108, data) +#define MREPEAT110(macro, data) MREPEAT109(macro, data) macro(109, data) +#define MREPEAT111(macro, data) MREPEAT110(macro, data) macro(110, data) +#define MREPEAT112(macro, data) MREPEAT111(macro, data) macro(111, data) +#define MREPEAT113(macro, data) MREPEAT112(macro, data) macro(112, data) +#define MREPEAT114(macro, data) MREPEAT113(macro, data) macro(113, data) +#define MREPEAT115(macro, data) MREPEAT114(macro, data) macro(114, data) +#define MREPEAT116(macro, data) MREPEAT115(macro, data) macro(115, data) +#define MREPEAT117(macro, data) MREPEAT116(macro, data) macro(116, data) +#define MREPEAT118(macro, data) MREPEAT117(macro, data) macro(117, data) +#define MREPEAT119(macro, data) MREPEAT118(macro, data) macro(118, data) +#define MREPEAT120(macro, data) MREPEAT119(macro, data) macro(119, data) +#define MREPEAT121(macro, data) MREPEAT120(macro, data) macro(120, data) +#define MREPEAT122(macro, data) MREPEAT121(macro, data) macro(121, data) +#define MREPEAT123(macro, data) MREPEAT122(macro, data) macro(122, data) +#define MREPEAT124(macro, data) MREPEAT123(macro, data) macro(123, data) +#define MREPEAT125(macro, data) MREPEAT124(macro, data) macro(124, data) +#define MREPEAT126(macro, data) MREPEAT125(macro, data) macro(125, data) +#define MREPEAT127(macro, data) MREPEAT126(macro, data) macro(126, data) +#define MREPEAT128(macro, data) MREPEAT127(macro, data) macro(127, data) +#define MREPEAT129(macro, data) MREPEAT128(macro, data) macro(128, data) +#define MREPEAT130(macro, data) MREPEAT129(macro, data) macro(129, data) +#define MREPEAT131(macro, data) MREPEAT130(macro, data) macro(130, data) +#define MREPEAT132(macro, data) MREPEAT131(macro, data) macro(131, data) +#define MREPEAT133(macro, data) MREPEAT132(macro, data) macro(132, data) +#define MREPEAT134(macro, data) MREPEAT133(macro, data) macro(133, data) +#define MREPEAT135(macro, data) MREPEAT134(macro, data) macro(134, data) +#define MREPEAT136(macro, data) MREPEAT135(macro, data) macro(135, data) +#define MREPEAT137(macro, data) MREPEAT136(macro, data) macro(136, data) +#define MREPEAT138(macro, data) MREPEAT137(macro, data) macro(137, data) +#define MREPEAT139(macro, data) MREPEAT138(macro, data) macro(138, data) +#define MREPEAT140(macro, data) MREPEAT139(macro, data) macro(139, data) +#define MREPEAT141(macro, data) MREPEAT140(macro, data) macro(140, data) +#define MREPEAT142(macro, data) MREPEAT141(macro, data) macro(141, data) +#define MREPEAT143(macro, data) MREPEAT142(macro, data) macro(142, data) +#define MREPEAT144(macro, data) MREPEAT143(macro, data) macro(143, data) +#define MREPEAT145(macro, data) MREPEAT144(macro, data) macro(144, data) +#define MREPEAT146(macro, data) MREPEAT145(macro, data) macro(145, data) +#define MREPEAT147(macro, data) MREPEAT146(macro, data) macro(146, data) +#define MREPEAT148(macro, data) MREPEAT147(macro, data) macro(147, data) +#define MREPEAT149(macro, data) MREPEAT148(macro, data) macro(148, data) +#define MREPEAT150(macro, data) MREPEAT149(macro, data) macro(149, data) +#define MREPEAT151(macro, data) MREPEAT150(macro, data) macro(150, data) +#define MREPEAT152(macro, data) MREPEAT151(macro, data) macro(151, data) +#define MREPEAT153(macro, data) MREPEAT152(macro, data) macro(152, data) +#define MREPEAT154(macro, data) MREPEAT153(macro, data) macro(153, data) +#define MREPEAT155(macro, data) MREPEAT154(macro, data) macro(154, data) +#define MREPEAT156(macro, data) MREPEAT155(macro, data) macro(155, data) +#define MREPEAT157(macro, data) MREPEAT156(macro, data) macro(156, data) +#define MREPEAT158(macro, data) MREPEAT157(macro, data) macro(157, data) +#define MREPEAT159(macro, data) MREPEAT158(macro, data) macro(158, data) +#define MREPEAT160(macro, data) MREPEAT159(macro, data) macro(159, data) +#define MREPEAT161(macro, data) MREPEAT160(macro, data) macro(160, data) +#define MREPEAT162(macro, data) MREPEAT161(macro, data) macro(161, data) +#define MREPEAT163(macro, data) MREPEAT162(macro, data) macro(162, data) +#define MREPEAT164(macro, data) MREPEAT163(macro, data) macro(163, data) +#define MREPEAT165(macro, data) MREPEAT164(macro, data) macro(164, data) +#define MREPEAT166(macro, data) MREPEAT165(macro, data) macro(165, data) +#define MREPEAT167(macro, data) MREPEAT166(macro, data) macro(166, data) +#define MREPEAT168(macro, data) MREPEAT167(macro, data) macro(167, data) +#define MREPEAT169(macro, data) MREPEAT168(macro, data) macro(168, data) +#define MREPEAT170(macro, data) MREPEAT169(macro, data) macro(169, data) +#define MREPEAT171(macro, data) MREPEAT170(macro, data) macro(170, data) +#define MREPEAT172(macro, data) MREPEAT171(macro, data) macro(171, data) +#define MREPEAT173(macro, data) MREPEAT172(macro, data) macro(172, data) +#define MREPEAT174(macro, data) MREPEAT173(macro, data) macro(173, data) +#define MREPEAT175(macro, data) MREPEAT174(macro, data) macro(174, data) +#define MREPEAT176(macro, data) MREPEAT175(macro, data) macro(175, data) +#define MREPEAT177(macro, data) MREPEAT176(macro, data) macro(176, data) +#define MREPEAT178(macro, data) MREPEAT177(macro, data) macro(177, data) +#define MREPEAT179(macro, data) MREPEAT178(macro, data) macro(178, data) +#define MREPEAT180(macro, data) MREPEAT179(macro, data) macro(179, data) +#define MREPEAT181(macro, data) MREPEAT180(macro, data) macro(180, data) +#define MREPEAT182(macro, data) MREPEAT181(macro, data) macro(181, data) +#define MREPEAT183(macro, data) MREPEAT182(macro, data) macro(182, data) +#define MREPEAT184(macro, data) MREPEAT183(macro, data) macro(183, data) +#define MREPEAT185(macro, data) MREPEAT184(macro, data) macro(184, data) +#define MREPEAT186(macro, data) MREPEAT185(macro, data) macro(185, data) +#define MREPEAT187(macro, data) MREPEAT186(macro, data) macro(186, data) +#define MREPEAT188(macro, data) MREPEAT187(macro, data) macro(187, data) +#define MREPEAT189(macro, data) MREPEAT188(macro, data) macro(188, data) +#define MREPEAT190(macro, data) MREPEAT189(macro, data) macro(189, data) +#define MREPEAT191(macro, data) MREPEAT190(macro, data) macro(190, data) +#define MREPEAT192(macro, data) MREPEAT191(macro, data) macro(191, data) +#define MREPEAT193(macro, data) MREPEAT192(macro, data) macro(192, data) +#define MREPEAT194(macro, data) MREPEAT193(macro, data) macro(193, data) +#define MREPEAT195(macro, data) MREPEAT194(macro, data) macro(194, data) +#define MREPEAT196(macro, data) MREPEAT195(macro, data) macro(195, data) +#define MREPEAT197(macro, data) MREPEAT196(macro, data) macro(196, data) +#define MREPEAT198(macro, data) MREPEAT197(macro, data) macro(197, data) +#define MREPEAT199(macro, data) MREPEAT198(macro, data) macro(198, data) +#define MREPEAT200(macro, data) MREPEAT199(macro, data) macro(199, data) +#define MREPEAT201(macro, data) MREPEAT200(macro, data) macro(200, data) +#define MREPEAT202(macro, data) MREPEAT201(macro, data) macro(201, data) +#define MREPEAT203(macro, data) MREPEAT202(macro, data) macro(202, data) +#define MREPEAT204(macro, data) MREPEAT203(macro, data) macro(203, data) +#define MREPEAT205(macro, data) MREPEAT204(macro, data) macro(204, data) +#define MREPEAT206(macro, data) MREPEAT205(macro, data) macro(205, data) +#define MREPEAT207(macro, data) MREPEAT206(macro, data) macro(206, data) +#define MREPEAT208(macro, data) MREPEAT207(macro, data) macro(207, data) +#define MREPEAT209(macro, data) MREPEAT208(macro, data) macro(208, data) +#define MREPEAT210(macro, data) MREPEAT209(macro, data) macro(209, data) +#define MREPEAT211(macro, data) MREPEAT210(macro, data) macro(210, data) +#define MREPEAT212(macro, data) MREPEAT211(macro, data) macro(211, data) +#define MREPEAT213(macro, data) MREPEAT212(macro, data) macro(212, data) +#define MREPEAT214(macro, data) MREPEAT213(macro, data) macro(213, data) +#define MREPEAT215(macro, data) MREPEAT214(macro, data) macro(214, data) +#define MREPEAT216(macro, data) MREPEAT215(macro, data) macro(215, data) +#define MREPEAT217(macro, data) MREPEAT216(macro, data) macro(216, data) +#define MREPEAT218(macro, data) MREPEAT217(macro, data) macro(217, data) +#define MREPEAT219(macro, data) MREPEAT218(macro, data) macro(218, data) +#define MREPEAT220(macro, data) MREPEAT219(macro, data) macro(219, data) +#define MREPEAT221(macro, data) MREPEAT220(macro, data) macro(220, data) +#define MREPEAT222(macro, data) MREPEAT221(macro, data) macro(221, data) +#define MREPEAT223(macro, data) MREPEAT222(macro, data) macro(222, data) +#define MREPEAT224(macro, data) MREPEAT223(macro, data) macro(223, data) +#define MREPEAT225(macro, data) MREPEAT224(macro, data) macro(224, data) +#define MREPEAT226(macro, data) MREPEAT225(macro, data) macro(225, data) +#define MREPEAT227(macro, data) MREPEAT226(macro, data) macro(226, data) +#define MREPEAT228(macro, data) MREPEAT227(macro, data) macro(227, data) +#define MREPEAT229(macro, data) MREPEAT228(macro, data) macro(228, data) +#define MREPEAT230(macro, data) MREPEAT229(macro, data) macro(229, data) +#define MREPEAT231(macro, data) MREPEAT230(macro, data) macro(230, data) +#define MREPEAT232(macro, data) MREPEAT231(macro, data) macro(231, data) +#define MREPEAT233(macro, data) MREPEAT232(macro, data) macro(232, data) +#define MREPEAT234(macro, data) MREPEAT233(macro, data) macro(233, data) +#define MREPEAT235(macro, data) MREPEAT234(macro, data) macro(234, data) +#define MREPEAT236(macro, data) MREPEAT235(macro, data) macro(235, data) +#define MREPEAT237(macro, data) MREPEAT236(macro, data) macro(236, data) +#define MREPEAT238(macro, data) MREPEAT237(macro, data) macro(237, data) +#define MREPEAT239(macro, data) MREPEAT238(macro, data) macro(238, data) +#define MREPEAT240(macro, data) MREPEAT239(macro, data) macro(239, data) +#define MREPEAT241(macro, data) MREPEAT240(macro, data) macro(240, data) +#define MREPEAT242(macro, data) MREPEAT241(macro, data) macro(241, data) +#define MREPEAT243(macro, data) MREPEAT242(macro, data) macro(242, data) +#define MREPEAT244(macro, data) MREPEAT243(macro, data) macro(243, data) +#define MREPEAT245(macro, data) MREPEAT244(macro, data) macro(244, data) +#define MREPEAT246(macro, data) MREPEAT245(macro, data) macro(245, data) +#define MREPEAT247(macro, data) MREPEAT246(macro, data) macro(246, data) +#define MREPEAT248(macro, data) MREPEAT247(macro, data) macro(247, data) +#define MREPEAT249(macro, data) MREPEAT248(macro, data) macro(248, data) +#define MREPEAT250(macro, data) MREPEAT249(macro, data) macro(249, data) +#define MREPEAT251(macro, data) MREPEAT250(macro, data) macro(250, data) +#define MREPEAT252(macro, data) MREPEAT251(macro, data) macro(251, data) +#define MREPEAT253(macro, data) MREPEAT252(macro, data) macro(252, data) +#define MREPEAT254(macro, data) MREPEAT253(macro, data) macro(253, data) +#define MREPEAT255(macro, data) MREPEAT254(macro, data) macro(254, data) +#define MREPEAT256(macro, data) MREPEAT255(macro, data) macro(255, data) + +/** + * \} + */ + +#endif // _MREPEAT_H_ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/preprocessor.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/preprocessor.h new file mode 100644 index 000000000..fd544e3e6 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/preprocessor.h @@ -0,0 +1,52 @@ +/** + * \file + * + * \brief Preprocessor utils. + * + * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _PREPROCESSOR_H_ +#define _PREPROCESSOR_H_ + +#include "tpaste.h" +#include "stringz.h" +#include "mrepeat.h" + + +#endif // _PREPROCESSOR_H_ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/stringz.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/stringz.h new file mode 100644 index 000000000..063b94447 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/stringz.h @@ -0,0 +1,82 @@ +/** + * \file + * + * \brief Preprocessor stringizing utils. + * + * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _STRINGZ_H_ +#define _STRINGZ_H_ + +/** + * \defgroup group_sam_utils_stringz Preprocessor - Stringize + * + * \ingroup group_sam_utils + * + * \{ + */ + +/*! \brief Stringize. + * + * Stringize a preprocessing token, this token being allowed to be \#defined. + * + * May be used only within macros with the token passed as an argument if the token is \#defined. + * + * For example, writing STRINGZ(PIN) within a macro \#defined by PIN_NAME(PIN) + * and invoked as PIN_NAME(PIN0) with PIN0 \#defined as A0 is equivalent to + * writing "A0". + */ +#define STRINGZ(x) #x + +/*! \brief Absolute stringize. + * + * Stringize a preprocessing token, this token being allowed to be \#defined. + * + * No restriction of use if the token is \#defined. + * + * For example, writing ASTRINGZ(PIN0) anywhere with PIN0 \#defined as A0 is + * equivalent to writing "A0". + */ +#define ASTRINGZ(x) STRINGZ(x) + +/** + * \} + */ + +#endif // _STRINGZ_H_ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/tpaste.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/tpaste.h new file mode 100644 index 000000000..8894ba659 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/tpaste.h @@ -0,0 +1,102 @@ +/** + * \file + * + * \brief Preprocessor token pasting utils. + * + * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef _TPASTE_H_ +#define _TPASTE_H_ + +/** + * \defgroup group_sam_utils_tpaste Preprocessor - Token Paste + * + * \ingroup group_sam_utils + * + * \{ + */ + +/*! \name Token Paste + * + * Paste N preprocessing tokens together, these tokens being allowed to be \#defined. + * + * May be used only within macros with the tokens passed as arguments if the tokens are \#defined. + * + * For example, writing TPASTE2(U, WIDTH) within a macro \#defined by + * UTYPE(WIDTH) and invoked as UTYPE(UL_WIDTH) with UL_WIDTH \#defined as 32 is + * equivalent to writing U32. + */ +//! @{ +#define TPASTE2( a, b) a##b +#define TPASTE3( a, b, c) a##b##c +#define TPASTE4( a, b, c, d) a##b##c##d +#define TPASTE5( a, b, c, d, e) a##b##c##d##e +#define TPASTE6( a, b, c, d, e, f) a##b##c##d##e##f +#define TPASTE7( a, b, c, d, e, f, g) a##b##c##d##e##f##g +#define TPASTE8( a, b, c, d, e, f, g, h) a##b##c##d##e##f##g##h +#define TPASTE9( a, b, c, d, e, f, g, h, i) a##b##c##d##e##f##g##h##i +#define TPASTE10(a, b, c, d, e, f, g, h, i, j) a##b##c##d##e##f##g##h##i##j +//! @} + +/*! \name Absolute Token Paste + * + * Paste N preprocessing tokens together, these tokens being allowed to be \#defined. + * + * No restriction of use if the tokens are \#defined. + * + * For example, writing ATPASTE2(U, UL_WIDTH) anywhere with UL_WIDTH \#defined + * as 32 is equivalent to writing U32. + */ +//! @{ +#define ATPASTE2( a, b) TPASTE2( a, b) +#define ATPASTE3( a, b, c) TPASTE3( a, b, c) +#define ATPASTE4( a, b, c, d) TPASTE4( a, b, c, d) +#define ATPASTE5( a, b, c, d, e) TPASTE5( a, b, c, d, e) +#define ATPASTE6( a, b, c, d, e, f) TPASTE6( a, b, c, d, e, f) +#define ATPASTE7( a, b, c, d, e, f, g) TPASTE7( a, b, c, d, e, f, g) +#define ATPASTE8( a, b, c, d, e, f, g, h) TPASTE8( a, b, c, d, e, f, g, h) +#define ATPASTE9( a, b, c, d, e, f, g, h, i) TPASTE9( a, b, c, d, e, f, g, h, i) +#define ATPASTE10(a, b, c, d, e, f, g, h, i, j) TPASTE10(a, b, c, d, e, f, g, h, i, j) +//! @} + +/** + * \} + */ + +#endif // _TPASTE_H_ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/status_codes.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/status_codes.h new file mode 100644 index 000000000..3b99dfcad --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/status_codes.h @@ -0,0 +1,110 @@ +/** + * \file + * + * \brief Status code definitions. + * + * This file defines various status codes returned by functions, + * indicating success or failure as well as what kind of failure. + * + * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef STATUS_CODES_H_INCLUDED +#define STATUS_CODES_H_INCLUDED + +/* Note: this is a local workaround to avoid a pre-processor clash due to the + * lwIP macro ERR_TIMEOUT. */ +#if defined(__LWIP_ERR_H__) && defined(ERR_TIMEOUT) +#if (ERR_TIMEOUT != -3) + +/* Internal check to make sure that the later restore of lwIP's ERR_TIMEOUT + * macro is set to the correct value. Note that it is highly improbable that + * this value ever changes in lwIP. */ +#error ASF developers: check lwip err.h new value for ERR_TIMEOUT +#endif +#undef ERR_TIMEOUT +#endif + +/** + * Status code that may be returned by shell commands and protocol + * implementations. + * + * \note Any change to these status codes and the corresponding + * message strings is strictly forbidden. New codes can be added, + * however, but make sure that any message string tables are updated + * at the same time. + */ +enum status_code { + STATUS_OK = 0, //!< Success + STATUS_ERR_BUSY = 0x19, + STATUS_ERR_DENIED = 0x1C, + STATUS_ERR_TIMEOUT = 0x12, + ERR_IO_ERROR = -1, //!< I/O error + ERR_FLUSHED = -2, //!< Request flushed from queue + ERR_TIMEOUT = -3, //!< Operation timed out + ERR_BAD_DATA = -4, //!< Data integrity check failed + ERR_PROTOCOL = -5, //!< Protocol error + ERR_UNSUPPORTED_DEV = -6, //!< Unsupported device + ERR_NO_MEMORY = -7, //!< Insufficient memory + ERR_INVALID_ARG = -8, //!< Invalid argument + ERR_BAD_ADDRESS = -9, //!< Bad address + ERR_BUSY = -10, //!< Resource is busy + ERR_BAD_FORMAT = -11, //!< Data format not recognized + ERR_NO_TIMER = -12, //!< No timer available + ERR_TIMER_ALREADY_RUNNING = -13, //!< Timer already running + ERR_TIMER_NOT_RUNNING = -14, //!< Timer not running + + /** + * \brief Operation in progress + * + * This status code is for driver-internal use when an operation + * is currently being performed. + * + * \note Drivers should never return this status code to any + * callers. It is strictly for internal use. + */ + OPERATION_IN_PROGRESS = -128, +}; + +typedef enum status_code status_code_t; + +#if defined(__LWIP_ERR_H__) +#define ERR_TIMEOUT -3 +#endif + +#endif /* STATUS_CODES_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/syscalls/gcc/syscalls.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/syscalls/gcc/syscalls.c new file mode 100644 index 000000000..b23b999a0 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/syscalls/gcc/syscalls.c @@ -0,0 +1,147 @@ +/** + * \file + * + * \brief Syscalls for SAM (GCC). + * + * Copyright (c) 2011-2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#include +#include +#include +#include + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +#undef errno +extern int errno; +extern int _end; + +extern caddr_t _sbrk(int incr); +extern int link(char *old, char *new); +extern int _close(int file); +extern int _fstat(int file, struct stat *st); +extern int _isatty(int file); +extern int _lseek(int file, int ptr, int dir); +extern void _exit(int status); +extern void _kill(int pid, int sig); +extern int _getpid(void); + +extern caddr_t _sbrk(int incr) +{ + static unsigned char *heap = NULL; + unsigned char *prev_heap; + + if (heap == NULL) { + heap = (unsigned char *)&_end; + } + prev_heap = heap; + + heap += incr; + + return (caddr_t) prev_heap; +} + +extern int link(char *old, char *new) +{ + ( void ) old; + ( void ) new; + return -1; +} + +extern int _close(int file) +{ + ( void ) file; + return -1; +} + +extern int _fstat(int file, struct stat *st) +{ + ( void ) file; + ( void ) st; + st->st_mode = S_IFCHR; + + return 0; +} + +extern int _isatty(int file) +{ + ( void ) file; + return 1; +} + +extern int _lseek(int file, int ptr, int dir) +{ + ( void ) file; + ( void ) ptr; + ( void ) dir; + return 0; +} + +extern void _exit(int status) +{ + printf("Exiting with status %d.\n", status); + + for (;;); +} + +extern void _kill(int pid, int sig) +{ + ( void ) pid; + ( void ) sig; + return; +} + +extern int _getpid(void) +{ + return -1; +} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/arm_math.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/arm_math.h new file mode 100644 index 000000000..b01681c63 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/arm_math.h @@ -0,0 +1,7057 @@ +/* ---------------------------------------------------------------------- + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * $Date: 15. July 2011 + * $Revision: V1.0.10 + * + * Project: CMSIS DSP Library + * Title: arm_math.h + * + * Description: Public header file for CMSIS DSP Library + * + * Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 + * + * Version 1.0.10 2011/7/15 + * Big Endian support added and Merged M0 and M3/M4 Source code. + * + * Version 1.0.3 2010/11/29 + * Re-organized the CMSIS folders and updated documentation. + * + * Version 1.0.2 2010/11/11 + * Documentation updated. + * + * Version 1.0.1 2010/10/05 + * Production release and review comments incorporated. + * + * Version 1.0.0 2010/09/20 + * Production release and review comments incorporated. + * -------------------------------------------------------------------- */ + +/** + \mainpage CMSIS DSP Software Library + * + * Introduction + * + * This user manual describes the CMSIS DSP software library, + * a suite of common signal processing functions for use on Cortex-M processor based devices. + * + * The library is divided into a number of modules 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. + * + * Processor Support + * + * The library is completely written in C and is fully CMSIS compliant. + * High performance is achieved through maximum use of Cortex-M4 intrinsics. + * + * The supplied library source code also builds and runs on the Cortex-M3 and Cortex-M0 processor, + * with the DSP intrinsics being emulated through software. + * + * + * Toolchain Support + * + * The library has been developed and tested with MDK-ARM version 4.21. + * The library is being tested in GCC and IAR toolchains and updates on this activity will be made available shortly. + * + * Using the Library + * + * The library installer contains prebuilt versions of the libraries in the Lib folder. + * - arm_cortexM4lf_math.lib (Little endian and Floating Point Unit on Cortex-M4) + * - arm_cortexM4bf_math.lib (Big endian and Floating Point Unit on Cortex-M4) + * - arm_cortexM4l_math.lib (Little endian on Cortex-M4) + * - arm_cortexM4b_math.lib (Big endian on Cortex-M4) + * - arm_cortexM3l_math.lib (Little endian on Cortex-M3) + * - arm_cortexM3b_math.lib (Big endian on Cortex-M3) + * - arm_cortexM0l_math.lib (Little endian on Cortex-M0) + * - arm_cortexM0b_math.lib (Big endian on Cortex-M3) + * + * The library functions are declared in the public file arm_math.h which is placed in the Include folder. + * Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single + * public header file arm_math.h for Cortex-M4/M3/M0 with little endian and big endian. Same header file will be used for floating point unit(FPU) variants. + * Define the appropriate pre processor MACRO ARM_MATH_CM4 or ARM_MATH_CM3 or + * ARM_MATH_CM0 depending on the target processor in the application. + * + * Examples + * + * The library ships with a number of examples which demonstrate how to use the library functions. + * + * Building the Library + * + * The library installer contains project files to re build libraries on MDK Tool chain in the CMSIS\\DSP_Lib\\Source\\ARM folder. + * - arm_cortexM0b_math.uvproj + * - arm_cortexM0l_math.uvproj + * - arm_cortexM3b_math.uvproj + * - arm_cortexM3l_math.uvproj + * - arm_cortexM4b_math.uvproj + * - arm_cortexM4l_math.uvproj + * - arm_cortexM4bf_math.uvproj + * - arm_cortexM4lf_math.uvproj + * + * Each library project have differant pre-processor macros. + * + * 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_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 for checking on the input and output sizes of matrices + * + * ARM_MATH_ROUNDING: + * Define macro for rounding on support functions + * + * __FPU_PRESENT: + * Initialize macro __FPU_PRESENT = 1 when building on FPU supported Targets. Enable this macro for M4bf and M4lf libraries + * + * + * The project can be built by opening the appropriate project in MDK-ARM 4.21 chain and defining the optional pre processor MACROs detailed above. + * + * Copyright Notice + * + * Copyright (C) 2010 ARM Limited. All rights reserved. + */ + + +/** + * @defgroup groupMath Basic Math Functions + */ + +/** + * @defgroup groupFastMath Fast Math Functions + * This set of functions provides a fast approximation to sine, cosine, and square root. + * As compared to most of the other functions in the CMSIS math library, the fast math functions + * operate on individual values and not arrays. + * There are separate functions for Q15, Q31, and floating-point data. + * + */ + +/** + * @defgroup groupCmplxMath Complex Math Functions + * This set of functions operates on complex data vectors. + * The data in the complex arrays is stored in an interleaved fashion + * (real, imag, real, imag, ...). + * In the API functions, the number of samples in a complex array refers + * to the number of complex values; the array contains twice this number of + * real values. + */ + +/** + * @defgroup groupFilters Filtering Functions + */ + +/** + * @defgroup groupMatrix Matrix Functions + * + * This set of functions provides basic matrix math operations. + * The functions operate on matrix data structures. For example, + * the type + * definition for the floating-point matrix structure is shown + * below: + *
+ *     typedef struct
+ *     {
+ *       uint16_t numRows;     // number of rows of the matrix.
+ *       uint16_t numCols;     // number of columns of the matrix.
+ *       float32_t *pData;     // points to the data of the matrix.
+ *     } arm_matrix_instance_f32;
+ * 
+ * There are similar definitions for Q15 and Q31 data types. + * + * The structure specifies the size of the matrix and then points to + * an array of data. The array is of size numRows X numCols + * and the values are arranged in row order. That is, the + * matrix element (i, j) is stored at: + *
+ *     pData[i*numCols + j]
+ * 
+ * + * \par Init Functions + * There is an associated initialization function for each type of matrix + * data structure. + * The initialization function sets the values of the internal structure fields. + * Refer to the function arm_mat_init_f32(), arm_mat_init_q31() + * and arm_mat_init_q15() for floating-point, Q31 and Q15 types, respectively. + * + * \par + * Use of the initialization function is optional. However, if initialization function is used + * then the instance structure cannot be placed into a const data section. + * To place the instance structure in a const data + * section, manually initialize the data structure. For example: + *
+ * arm_matrix_instance_f32 S = {nRows, nColumns, pData};
+ * arm_matrix_instance_q31 S = {nRows, nColumns, pData};
+ * arm_matrix_instance_q15 S = {nRows, nColumns, pData};
+ * 
+ * where nRows specifies the number of rows, nColumns + * specifies the number of columns, and pData points to the + * data array. + * + * \par Size Checking + * By default all of the matrix functions perform size checking on the input and + * output matrices. For example, the matrix addition function verifies that the + * two input matrices and the output matrix all have the same number of rows and + * columns. If the size check fails the functions return: + *
+ *     ARM_MATH_SIZE_MISMATCH
+ * 
+ * Otherwise the functions return + *
+ *     ARM_MATH_SUCCESS
+ * 
+ * There is some overhead associated with this matrix size checking. + * The matrix size checking is enabled via the \#define + *
+ *     ARM_MATH_MATRIX_CHECK
+ * 
+ * within the library project settings. By default this macro is defined + * and size checking is enabled. By changing the project settings and + * undefining this macro size checking is eliminated and the functions + * run a bit faster. With size checking disabled the functions always + * return ARM_MATH_SUCCESS. + */ + +/** + * @defgroup groupTransforms Transform Functions + */ + +/** + * @defgroup groupController Controller Functions + */ + +/** + * @defgroup groupStats Statistics Functions + */ +/** + * @defgroup groupSupport Support Functions + */ + +/** + * @defgroup groupInterpolation Interpolation Functions + * These functions perform 1- and 2-dimensional interpolation of data. + * Linear interpolation is used for 1-dimensional data and + * bilinear interpolation is used for 2-dimensional data. + */ + +/** + * @defgroup groupExamples Examples + */ +#ifndef _ARM_MATH_H +#define _ARM_MATH_H + +#define __CMSIS_GENERIC /* disable NVIC and Systick functions */ + +#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" +#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 +#define PI 3.14159265358979f + + /** + * @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 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. + */ +#define __SIMD32(addr) (*(int32_t **) & (addr)) + +#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0) + /** + * @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) ) + +#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) && defined ( __CC_ARM ) +#define __CLZ __clz +#endif + +#if defined (ARM_MATH_CM0) && defined ( __TASKING__ ) +/* No need to redefine __CLZ */ +#endif + +#if defined (ARM_MATH_CM0) && ((defined (__ICCARM__)) ||(defined (__GNUC__)) ) + + __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) + + __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 */ + + + + /* + * @brief C custom defined intrinsic function for M3 and M0 processors + */ +#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0) + + /* + * @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 = (char) x; + s = (char) 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 = (char) x; + s = (char) 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))); + } + + + + +#endif /* (ARM_MATH_CM3) || defined (ARM_MATH_CM0) */ + + + /** + * @brief Instance structure for the Q7 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q7_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + } arm_fir_instance_q7; + + /** + * @brief Instance structure for the Q15 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + } arm_fir_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + } arm_fir_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + } arm_fir_instance_f32; + + + /** + * @brief Processing function for the Q7 FIR filter. + * @param[in] *S points to an instance of the Q7 FIR filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + void arm_fir_q7( + const arm_fir_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q7 FIR filter. + * @param[in,out] *S points to an instance of the Q7 FIR structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of samples that are processed. + * @return none + */ + void arm_fir_init_q7( + arm_fir_instance_q7 * S, + uint16_t numTaps, + q7_t * pCoeffs, + q7_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR filter. + * @param[in] *S points to an instance of the Q15 FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + void arm_fir_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the fast Q15 FIR filter for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q15 FIR filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + void arm_fir_fast_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q15 FIR filter. + * @param[in,out] *S points to an instance of the Q15 FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_ARGUMENT_ERROR if + * numTaps is not a supported value. + */ + + arm_status arm_fir_init_q15( + arm_fir_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR filter. + * @param[in] *S points to an instance of the Q31 FIR filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + void arm_fir_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the fast Q31 FIR filter for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q31 FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + void arm_fir_fast_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q31 FIR filter. + * @param[in,out] *S points to an instance of the Q31 FIR structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + * @return none. + */ + void arm_fir_init_q31( + arm_fir_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the floating-point FIR filter. + * @param[in] *S points to an instance of the floating-point FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + void arm_fir_f32( + const arm_fir_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point FIR filter. + * @param[in,out] *S points to an instance of the floating-point FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + * @return none. + */ + void arm_fir_init_f32( + arm_fir_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 Biquad cascade filter. + */ + typedef struct + { + int8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q15_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + q15_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + int8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ + + } arm_biquad_casd_df1_inst_q15; + + + /** + * @brief Instance structure for the Q31 Biquad cascade filter. + */ + typedef struct + { + uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q31_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + q31_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + uint8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ + + } arm_biquad_casd_df1_inst_q31; + + /** + * @brief Instance structure for the floating-point Biquad cascade filter. + */ + typedef struct + { + uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + float32_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + + + } arm_biquad_casd_df1_inst_f32; + + + + /** + * @brief Processing function for the Q15 Biquad cascade filter. + * @param[in] *S points to an instance of the Q15 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_biquad_cascade_df1_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q15 Biquad cascade filter. + * @param[in,out] *S points to an instance of the Q15 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format + * @return none + */ + + void arm_biquad_cascade_df1_init_q15( + arm_biquad_casd_df1_inst_q15 * S, + uint8_t numStages, + q15_t * pCoeffs, + q15_t * pState, + int8_t postShift); + + + /** + * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q15 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_biquad_cascade_df1_fast_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 Biquad cascade filter + * @param[in] *S points to an instance of the Q31 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_biquad_cascade_df1_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q31 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_biquad_cascade_df1_fast_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q31 Biquad cascade filter. + * @param[in,out] *S points to an instance of the Q31 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format + * @return none + */ + + void arm_biquad_cascade_df1_init_q31( + arm_biquad_casd_df1_inst_q31 * S, + uint8_t numStages, + q31_t * pCoeffs, + q31_t * pState, + int8_t postShift); + + /** + * @brief Processing function for the floating-point Biquad cascade filter. + * @param[in] *S points to an instance of the floating-point Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_biquad_cascade_df1_f32( + const arm_biquad_casd_df1_inst_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point Biquad cascade filter. + * @param[in,out] *S points to an instance of the floating-point Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @return none + */ + + void arm_biquad_cascade_df1_init_f32( + arm_biquad_casd_df1_inst_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Instance structure for the floating-point matrix structure. + */ + + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + float32_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_f32; + + /** + * @brief Instance structure for the Q15 matrix structure. + */ + + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + q15_t *pData; /**< points to the data of the matrix. */ + + } arm_matrix_instance_q15; + + /** + * @brief Instance structure for the Q31 matrix structure. + */ + + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + q31_t *pData; /**< points to the data of the matrix. */ + + } arm_matrix_instance_q31; + + + + /** + * @brief Floating-point matrix addition. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_add_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix addition. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_add_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix addition. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_add_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix transpose. + * @param[in] *pSrc points to the input matrix + * @param[out] *pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_trans_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix transpose. + * @param[in] *pSrc points to the input matrix + * @param[out] *pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_trans_q15( + const arm_matrix_instance_q15 * pSrc, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix transpose. + * @param[in] *pSrc points to the input matrix + * @param[out] *pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_trans_q31( + const arm_matrix_instance_q31 * pSrc, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix multiplication + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix multiplication + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState); + + /** + * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @param[in] *pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_mult_fast_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState); + + /** + * @brief Q31 matrix multiplication + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_mult_fast_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix subtraction + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_sub_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix subtraction + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_sub_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix subtraction + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_sub_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Floating-point matrix scaling. + * @param[in] *pSrc points to the input matrix + * @param[in] scale scale factor + * @param[out] *pDst points to the output matrix + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_scale_f32( + const arm_matrix_instance_f32 * pSrc, + float32_t scale, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix scaling. + * @param[in] *pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to output matrix + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_scale_q15( + const arm_matrix_instance_q15 * pSrc, + q15_t scaleFract, + int32_t shift, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix scaling. + * @param[in] *pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_scale_q31( + const arm_matrix_instance_q31 * pSrc, + q31_t scaleFract, + int32_t shift, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Q31 matrix initialization. + * @param[in,out] *S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] *pData points to the matrix data array. + * @return none + */ + + void arm_mat_init_q31( + arm_matrix_instance_q31 * S, + uint16_t nRows, + uint16_t nColumns, + q31_t *pData); + + /** + * @brief Q15 matrix initialization. + * @param[in,out] *S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] *pData points to the matrix data array. + * @return none + */ + + void arm_mat_init_q15( + arm_matrix_instance_q15 * S, + uint16_t nRows, + uint16_t nColumns, + q15_t *pData); + + /** + * @brief Floating-point matrix initialization. + * @param[in,out] *S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] *pData points to the matrix data array. + * @return none + */ + + void arm_mat_init_f32( + arm_matrix_instance_f32 * S, + uint16_t nRows, + uint16_t nColumns, + float32_t *pData); + + + + /** + * @brief Instance structure for the Q15 PID Control. + */ + typedef struct + { + q15_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ + #ifdef ARM_MATH_CM0 + 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 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; + + /** + * @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; + + /** + * @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; + + /** + * @brief Processing function for the Q15 CFFT/CIFFT. + * @param[in] *S points to an instance of the Q15 CFFT/CIFFT structure. + * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place. + * @return none. + */ + + void arm_cfft_radix4_q15( + const arm_cfft_radix4_instance_q15 * S, + q15_t * pSrc); + + /** + * @brief Initialization function for the Q15 CFFT/CIFFT. + * @param[in,out] *S points to an instance of the Q15 CFFT/CIFFT structure. + * @param[in] fftLen length of the FFT. + * @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. + * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. + */ + + arm_status arm_cfft_radix4_init_q15( + arm_cfft_radix4_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Processing function for the Q31 CFFT/CIFFT. + * @param[in] *S points to an instance of the Q31 CFFT/CIFFT structure. + * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place. + * @return none. + */ + + void arm_cfft_radix4_q31( + const arm_cfft_radix4_instance_q31 * S, + q31_t * pSrc); + + /** + * @brief Initialization function for the Q31 CFFT/CIFFT. + * @param[in,out] *S points to an instance of the Q31 CFFT/CIFFT structure. + * @param[in] fftLen length of the FFT. + * @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. + * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. + */ + + arm_status arm_cfft_radix4_init_q31( + arm_cfft_radix4_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Processing function for the floating-point CFFT/CIFFT. + * @param[in] *S points to an instance of the floating-point CFFT/CIFFT structure. + * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place. + * @return none. + */ + + void arm_cfft_radix4_f32( + const arm_cfft_radix4_instance_f32 * S, + float32_t * pSrc); + + /** + * @brief Initialization function for the floating-point CFFT/CIFFT. + * @param[in,out] *S points to an instance of the floating-point CFFT/CIFFT structure. + * @param[in] fftLen length of the FFT. + * @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. + * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. + */ + + arm_status arm_cfft_radix4_init_f32( + arm_cfft_radix4_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + + + /*---------------------------------------------------------------------- + * Internal functions prototypes FFT function + ----------------------------------------------------------------------*/ + + /** + * @brief Core function for the floating-point CFFT butterfly process. + * @param[in, out] *pSrc points to the in-place buffer of floating-point data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef points to the twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + + void arm_radix4_butterfly_f32( + float32_t * pSrc, + uint16_t fftLen, + float32_t * pCoef, + uint16_t twidCoefModifier); + + /** + * @brief Core function for the floating-point CIFFT butterfly process. + * @param[in, out] *pSrc points to the in-place buffer of floating-point data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @param[in] onebyfftLen value of 1/fftLen. + * @return none. + */ + + void arm_radix4_butterfly_inverse_f32( + float32_t * pSrc, + uint16_t fftLen, + float32_t * pCoef, + uint16_t twidCoefModifier, + float32_t onebyfftLen); + + /** + * @brief In-place bit reversal function. + * @param[in, out] *pSrc points to the in-place buffer of floating-point data type. + * @param[in] fftSize length of the FFT. + * @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table. + * @param[in] *pBitRevTab points to the bit reversal table. + * @return none. + */ + + void arm_bitreversal_f32( + float32_t *pSrc, + uint16_t fftSize, + uint16_t bitRevFactor, + uint16_t *pBitRevTab); + + /** + * @brief Core function for the Q31 CFFT butterfly process. + * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + + void arm_radix4_butterfly_q31( + q31_t *pSrc, + uint32_t fftLen, + q31_t *pCoef, + uint32_t twidCoefModifier); + + /** + * @brief Core function for the Q31 CIFFT butterfly process. + * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + + void arm_radix4_butterfly_inverse_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pCoef, + uint32_t twidCoefModifier); + + /** + * @brief In-place bit reversal function. + * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. + * @param[in] fftLen length of the FFT. + * @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table + * @param[in] *pBitRevTab points to bit reversal table. + * @return none. + */ + + void arm_bitreversal_q31( + q31_t * pSrc, + uint32_t fftLen, + uint16_t bitRevFactor, + uint16_t *pBitRevTab); + + /** + * @brief Core function for the Q15 CFFT butterfly process. + * @param[in, out] *pSrc16 points to the in-place buffer of Q15 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef16 points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + + void arm_radix4_butterfly_q15( + q15_t *pSrc16, + uint32_t fftLen, + q15_t *pCoef16, + uint32_t twidCoefModifier); + + /** + * @brief Core function for the Q15 CIFFT butterfly process. + * @param[in, out] *pSrc16 points to the in-place buffer of Q15 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef16 points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + + void arm_radix4_butterfly_inverse_q15( + q15_t *pSrc16, + uint32_t fftLen, + q15_t *pCoef16, + uint32_t twidCoefModifier); + + /** + * @brief In-place bit reversal function. + * @param[in, out] *pSrc points to the in-place buffer of Q15 data type. + * @param[in] fftLen length of the FFT. + * @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table + * @param[in] *pBitRevTab points to bit reversal table. + * @return none. + */ + + void arm_bitreversal_q15( + q15_t * pSrc, + uint32_t fftLen, + uint16_t bitRevFactor, + uint16_t *pBitRevTab); + + /** + * @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; + + /** + * @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; + + /** + * @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; + + /** + * @brief Processing function for the Q15 RFFT/RIFFT. + * @param[in] *S points to an instance of the Q15 RFFT/RIFFT structure. + * @param[in] *pSrc points to the input buffer. + * @param[out] *pDst points to the output buffer. + * @return none. + */ + + void arm_rfft_q15( + const arm_rfft_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst); + + /** + * @brief Initialization function for the Q15 RFFT/RIFFT. + * @param[in, out] *S points to an instance of the Q15 RFFT/RIFFT structure. + * @param[in] *S_CFFT points to an instance of the Q15 CFFT/CIFFT structure. + * @param[in] fftLenReal length of the FFT. + * @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. + * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. + */ + + 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); + + /** + * @brief Processing function for the Q31 RFFT/RIFFT. + * @param[in] *S points to an instance of the Q31 RFFT/RIFFT structure. + * @param[in] *pSrc points to the input buffer. + * @param[out] *pDst points to the output buffer. + * @return none. + */ + + void arm_rfft_q31( + const arm_rfft_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst); + + /** + * @brief Initialization function for the Q31 RFFT/RIFFT. + * @param[in, out] *S points to an instance of the Q31 RFFT/RIFFT structure. + * @param[in, out] *S_CFFT points to an instance of the Q31 CFFT/CIFFT structure. + * @param[in] fftLenReal length of the FFT. + * @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. + * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. + */ + + 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); + + /** + * @brief Initialization function for the floating-point RFFT/RIFFT. + * @param[in,out] *S points to an instance of the floating-point RFFT/RIFFT structure. + * @param[in,out] *S_CFFT points to an instance of the floating-point CFFT/CIFFT structure. + * @param[in] fftLenReal length of the FFT. + * @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. + * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. + */ + + 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); + + /** + * @brief Processing function for the floating-point RFFT/RIFFT. + * @param[in] *S points to an instance of the floating-point RFFT/RIFFT structure. + * @param[in] *pSrc points to the input buffer. + * @param[out] *pDst points to the output buffer. + * @return none. + */ + + void arm_rfft_f32( + const arm_rfft_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst); + + /** + * @brief Instance structure for the floating-point DCT4/IDCT4 function. + */ + + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + float32_t normalize; /**< normalizing factor. */ + float32_t *pTwiddle; /**< points to the twiddle factor table. */ + float32_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_f32 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_f32; + + /** + * @brief Initialization function for the floating-point DCT4/IDCT4. + * @param[in,out] *S points to an instance of floating-point DCT4/IDCT4 structure. + * @param[in] *S_RFFT points to an instance of floating-point RFFT/RIFFT structure. + * @param[in] *S_CFFT points to an instance of floating-point CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported transform length. + */ + + arm_status arm_dct4_init_f32( + arm_dct4_instance_f32 * S, + arm_rfft_instance_f32 * S_RFFT, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint16_t N, + uint16_t Nby2, + float32_t normalize); + + /** + * @brief Processing function for the floating-point DCT4/IDCT4. + * @param[in] *S points to an instance of the floating-point DCT4/IDCT4 structure. + * @param[in] *pState points to state buffer. + * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. + * @return none. + */ + + void arm_dct4_f32( + const arm_dct4_instance_f32 * S, + float32_t * pState, + float32_t * pInlineBuffer); + + /** + * @brief Instance structure for the Q31 DCT4/IDCT4 function. + */ + + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + q31_t normalize; /**< normalizing factor. */ + q31_t *pTwiddle; /**< points to the twiddle factor table. */ + q31_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_q31 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_q31; + + /** + * @brief Initialization function for the Q31 DCT4/IDCT4. + * @param[in,out] *S points to an instance of Q31 DCT4/IDCT4 structure. + * @param[in] *S_RFFT points to an instance of Q31 RFFT/RIFFT structure + * @param[in] *S_CFFT points to an instance of Q31 CFFT/CIFFT structure + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + */ + + arm_status arm_dct4_init_q31( + arm_dct4_instance_q31 * S, + arm_rfft_instance_q31 * S_RFFT, + arm_cfft_radix4_instance_q31 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q31_t normalize); + + /** + * @brief Processing function for the Q31 DCT4/IDCT4. + * @param[in] *S points to an instance of the Q31 DCT4 structure. + * @param[in] *pState points to state buffer. + * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. + * @return none. + */ + + void arm_dct4_q31( + const arm_dct4_instance_q31 * S, + q31_t * pState, + q31_t * pInlineBuffer); + + /** + * @brief Instance structure for the Q15 DCT4/IDCT4 function. + */ + + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + q15_t normalize; /**< normalizing factor. */ + q15_t *pTwiddle; /**< points to the twiddle factor table. */ + q15_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_q15 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_q15; + + /** + * @brief Initialization function for the Q15 DCT4/IDCT4. + * @param[in,out] *S points to an instance of Q15 DCT4/IDCT4 structure. + * @param[in] *S_RFFT points to an instance of Q15 RFFT/RIFFT structure. + * @param[in] *S_CFFT points to an instance of Q15 CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + */ + + arm_status arm_dct4_init_q15( + arm_dct4_instance_q15 * S, + arm_rfft_instance_q15 * S_RFFT, + arm_cfft_radix4_instance_q15 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q15_t normalize); + + /** + * @brief Processing function for the Q15 DCT4/IDCT4. + * @param[in] *S points to an instance of the Q15 DCT4 structure. + * @param[in] *pState points to state buffer. + * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. + * @return none. + */ + + void arm_dct4_q15( + const arm_dct4_instance_q15 * S, + q15_t * pState, + q15_t * pInlineBuffer); + + /** + * @brief Floating-point vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_add_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Q7 vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_add_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Q15 vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_add_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Q31 vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_add_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Floating-point vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_sub_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Q7 vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_sub_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Q15 vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_sub_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Q31 vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_sub_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Multiplies a floating-point vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scale scale factor to be applied + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_scale_f32( + float32_t * pSrc, + float32_t scale, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Multiplies a Q7 vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_scale_q7( + q7_t * pSrc, + q7_t scaleFract, + int8_t shift, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Multiplies a Q15 vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_scale_q15( + q15_t * pSrc, + q15_t scaleFract, + int8_t shift, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Multiplies a Q31 vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_scale_q31( + q31_t * pSrc, + q31_t scaleFract, + int8_t shift, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Q7 vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_abs_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Floating-point vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_abs_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Q15 vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_abs_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Q31 vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_abs_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Dot product of floating-point vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + */ + + void arm_dot_prod_f32( + float32_t * pSrcA, + float32_t * pSrcB, + uint32_t blockSize, + float32_t * result); + + /** + * @brief Dot product of Q7 vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + */ + + void arm_dot_prod_q7( + q7_t * pSrcA, + q7_t * pSrcB, + uint32_t blockSize, + q31_t * result); + + /** + * @brief Dot product of Q15 vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + */ + + void arm_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t blockSize, + q63_t * result); + + /** + * @brief Dot product of Q31 vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + */ + + void arm_dot_prod_q31( + q31_t * pSrcA, + q31_t * pSrcB, + uint32_t blockSize, + q63_t * result); + + /** + * @brief Shifts the elements of a Q7 vector a specified number of bits. + * @param[in] *pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_shift_q7( + q7_t * pSrc, + int8_t shiftBits, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Shifts the elements of a Q15 vector a specified number of bits. + * @param[in] *pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_shift_q15( + q15_t * pSrc, + int8_t shiftBits, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Shifts the elements of a Q31 vector a specified number of bits. + * @param[in] *pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_shift_q31( + q31_t * pSrc, + int8_t shiftBits, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Adds a constant offset to a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_offset_f32( + float32_t * pSrc, + float32_t offset, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Adds a constant offset to a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_offset_q7( + q7_t * pSrc, + q7_t offset, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Adds a constant offset to a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_offset_q15( + q15_t * pSrc, + q15_t offset, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Adds a constant offset to a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_offset_q31( + q31_t * pSrc, + q31_t offset, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Negates the elements of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_negate_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Negates the elements of a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_negate_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Negates the elements of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_negate_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Negates the elements of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_negate_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + /** + * @brief Copies the elements of a floating-point vector. + * @param[in] *pSrc input pointer + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_copy_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Copies the elements of a Q7 vector. + * @param[in] *pSrc input pointer + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_copy_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Copies the elements of a Q15 vector. + * @param[in] *pSrc input pointer + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_copy_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Copies the elements of a Q31 vector. + * @param[in] *pSrc input pointer + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_copy_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + /** + * @brief Fills a constant value into a floating-point vector. + * @param[in] value input value to be filled + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_fill_f32( + float32_t value, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Fills a constant value into a Q7 vector. + * @param[in] value input value to be filled + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_fill_q7( + q7_t value, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Fills a constant value into a Q15 vector. + * @param[in] value input value to be filled + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_fill_q15( + q15_t value, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Fills a constant value into a Q31 vector. + * @param[in] value input value to be filled + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_fill_q31( + q31_t value, + q31_t * pDst, + uint32_t blockSize); + +/** + * @brief Convolution of floating-point sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + */ + + void arm_conv_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + +/** + * @brief Convolution of Q15 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the 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 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. + * @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. + * @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 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. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + + arm_status arm_conv_partial_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Instance structure for the Q15 FIR decimator. + */ + + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR decimator. + */ + + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + + } arm_fir_decimate_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR decimator. + */ + + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + + } arm_fir_decimate_instance_f32; + + + + /** + * @brief Processing function for the floating-point FIR decimator. + * @param[in] *S points to an instance of the floating-point FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + */ + + void arm_fir_decimate_f32( + const arm_fir_decimate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point FIR decimator. + * @param[in,out] *S points to an instance of the floating-point FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + + arm_status arm_fir_decimate_init_f32( + arm_fir_decimate_instance_f32 * S, + uint16_t numTaps, + uint8_t M, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the Q15 FIR decimator. + * @param[in] *S points to an instance of the Q15 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + */ + + void arm_fir_decimate_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q15 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + */ + + void arm_fir_decimate_fast_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + + /** + * @brief Initialization function for the Q15 FIR decimator. + * @param[in,out] *S points to an instance of the Q15 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + + arm_status arm_fir_decimate_init_q15( + arm_fir_decimate_instance_q15 * S, + uint16_t numTaps, + uint8_t M, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR decimator. + * @param[in] *S points to an instance of the Q31 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + */ + + void arm_fir_decimate_q31( + const arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q31 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + */ + + void arm_fir_decimate_fast_q31( + arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR decimator. + * @param[in,out] *S points to an instance of the Q31 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + + arm_status arm_fir_decimate_init_q31( + arm_fir_decimate_instance_q31 * S, + uint16_t numTaps, + uint8_t M, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + + /** + * @brief Instance structure for the Q15 FIR interpolator. + */ + + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + q15_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ + } arm_fir_interpolate_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR interpolator. + */ + + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + q31_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ + } arm_fir_interpolate_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR interpolator. + */ + + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + float32_t *pState; /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */ + } arm_fir_interpolate_instance_f32; + + + /** + * @brief Processing function for the Q15 FIR interpolator. + * @param[in] *S points to an instance of the Q15 FIR interpolator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + + void arm_fir_interpolate_q15( + const arm_fir_interpolate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR interpolator. + * @param[in,out] *S points to an instance of the Q15 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficient buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + + arm_status arm_fir_interpolate_init_q15( + arm_fir_interpolate_instance_q15 * S, + uint8_t L, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR interpolator. + * @param[in] *S points to an instance of the Q15 FIR interpolator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + + void arm_fir_interpolate_q31( + const arm_fir_interpolate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q31 FIR interpolator. + * @param[in,out] *S points to an instance of the Q31 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficient buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + + arm_status arm_fir_interpolate_init_q31( + arm_fir_interpolate_instance_q31 * S, + uint8_t L, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point FIR interpolator. + * @param[in] *S points to an instance of the floating-point FIR interpolator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + + void arm_fir_interpolate_f32( + const arm_fir_interpolate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point FIR interpolator. + * @param[in,out] *S points to an instance of the floating-point FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficient buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + + arm_status arm_fir_interpolate_init_f32( + arm_fir_interpolate_instance_f32 * S, + uint8_t L, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + /** + * @brief Instance structure for the high precision Q31 Biquad cascade filter. + */ + + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q63_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ + q31_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + uint8_t postShift; /**< additional shift, in bits, applied to each output sample. */ + + } arm_biquad_cas_df1_32x64_ins_q31; + + + /** + * @param[in] *S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_biquad_cas_df1_32x64_q31( + const arm_biquad_cas_df1_32x64_ins_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @param[in,out] *S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] postShift shift to be applied to the output. Varies according to the coefficients format + * @return none + */ + + void arm_biquad_cas_df1_32x64_init_q31( + arm_biquad_cas_df1_32x64_ins_q31 * S, + uint8_t numStages, + q31_t * pCoeffs, + q63_t * pState, + uint8_t postShift); + + + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ + float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_df2T_instance_f32; + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in] *S points to an instance of the filter data structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_biquad_cascade_df2T_f32( + const arm_biquad_cascade_df2T_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] *S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @return none + */ + + void arm_biquad_cascade_df2T_init_f32( + arm_biquad_cascade_df2T_instance_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + + /** + * @brief Instance structure for the Q15 FIR lattice filter. + */ + + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + q15_t *pState; /**< points to the state variable array. The array is of length numStages. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR lattice filter. + */ + + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + q31_t *pState; /**< points to the state variable array. The array is of length numStages. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR lattice filter. + */ + + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + float32_t *pState; /**< points to the state variable array. The array is of length numStages. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_f32; + + /** + * @brief Initialization function for the Q15 FIR lattice filter. + * @param[in] *S points to an instance of the Q15 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] *pState points to the state buffer. The array is of length numStages. + * @return none. + */ + + void arm_fir_lattice_init_q15( + arm_fir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t * pCoeffs, + q15_t * pState); + + + /** + * @brief Processing function for the Q15 FIR lattice filter. + * @param[in] *S points to an instance of the Q15 FIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + void arm_fir_lattice_q15( + const arm_fir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q31 FIR lattice filter. + * @param[in] *S points to an instance of the Q31 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] *pState points to the state buffer. The array is of length numStages. + * @return none. + */ + + void arm_fir_lattice_init_q31( + arm_fir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t * pCoeffs, + q31_t * pState); + + + /** + * @brief Processing function for the Q31 FIR lattice filter. + * @param[in] *S points to an instance of the Q31 FIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_fir_lattice_q31( + const arm_fir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +/** + * @brief Initialization function for the floating-point FIR lattice filter. + * @param[in] *S points to an instance of the floating-point FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] *pState points to the state buffer. The array is of length numStages. + * @return none. + */ + + void arm_fir_lattice_init_f32( + arm_fir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + /** + * @brief Processing function for the floating-point FIR lattice filter. + * @param[in] *S points to an instance of the floating-point FIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_fir_lattice_f32( + const arm_fir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Instance structure for the Q15 IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + q15_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + q15_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_q15; + + /** + * @brief Instance structure for the Q31 IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + q31_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + q31_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_q31; + + /** + * @brief Instance structure for the floating-point IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + float32_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + float32_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_f32; + + /** + * @brief Processing function for the floating-point IIR lattice filter. + * @param[in] *S points to an instance of the floating-point IIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_iir_lattice_f32( + const arm_iir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point IIR lattice filter. + * @param[in] *S points to an instance of the floating-point IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize-1. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_iir_lattice_init_f32( + arm_iir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t *pkCoeffs, + float32_t *pvCoeffs, + float32_t *pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 IIR lattice filter. + * @param[in] *S points to an instance of the Q31 IIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_iir_lattice_q31( + const arm_iir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 IIR lattice filter. + * @param[in] *S points to an instance of the Q31 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_iir_lattice_init_q31( + arm_iir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t *pkCoeffs, + q31_t *pvCoeffs, + q31_t *pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 IIR lattice filter. + * @param[in] *S points to an instance of the Q15 IIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_iir_lattice_q15( + const arm_iir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + +/** + * @brief Initialization function for the Q15 IIR lattice filter. + * @param[in] *S points to an instance of the fixed-point Q15 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] *pkCoeffs points to reflection coefficient buffer. The array is of length numStages. + * @param[in] *pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1. + * @param[in] *pState points to state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process per call. + * @return none. + */ + + void arm_iir_lattice_init_q15( + arm_iir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t *pkCoeffs, + q15_t *pvCoeffs, + q15_t *pState, + uint32_t blockSize); + + /** + * @brief Instance structure for the floating-point LMS filter. + */ + + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + float32_t mu; /**< step size that controls filter coefficient updates. */ + } arm_lms_instance_f32; + + /** + * @brief Processing function for floating-point LMS filter. + * @param[in] *S points to an instance of the floating-point LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_f32( + const arm_lms_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + + /** + * @brief Initialization function for floating-point LMS filter. + * @param[in] *S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to the coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_init_f32( + arm_lms_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize); + + /** + * @brief Instance structure for the Q15 LMS filter. + */ + + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q15_t mu; /**< step size that controls filter coefficient updates. */ + uint32_t postShift; /**< bit shift applied to coefficients. */ + } arm_lms_instance_q15; + + + /** + * @brief Initialization function for the Q15 LMS filter. + * @param[in] *S points to an instance of the Q15 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to the coefficient buffer. + * @param[in] *pState points to the state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + * @return none. + */ + + void arm_lms_init_q15( + arm_lms_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint32_t postShift); + + /** + * @brief Processing function for Q15 LMS filter. + * @param[in] *S points to an instance of the Q15 LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_q15( + const arm_lms_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q31 LMS filter. + */ + + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q31_t mu; /**< step size that controls filter coefficient updates. */ + uint32_t postShift; /**< bit shift applied to coefficients. */ + + } arm_lms_instance_q31; + + /** + * @brief Processing function for Q31 LMS filter. + * @param[in] *S points to an instance of the Q15 LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_q31( + const arm_lms_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + + /** + * @brief Initialization function for Q31 LMS filter. + * @param[in] *S points to an instance of the Q31 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + * @return none. + */ + + void arm_lms_init_q31( + arm_lms_instance_q31 * S, + uint16_t numTaps, + q31_t *pCoeffs, + q31_t *pState, + q31_t mu, + uint32_t blockSize, + uint32_t postShift); + + /** + * @brief Instance structure for the floating-point normalized LMS filter. + */ + + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + float32_t mu; /**< step size that control filter coefficient updates. */ + float32_t energy; /**< saves previous frame energy. */ + float32_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_f32; + + /** + * @brief Processing function for floating-point normalized LMS filter. + * @param[in] *S points to an instance of the floating-point normalized LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_norm_f32( + arm_lms_norm_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + + /** + * @brief Initialization function for floating-point normalized LMS filter. + * @param[in] *S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_norm_init_f32( + arm_lms_norm_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q31 normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q31_t mu; /**< step size that controls filter coefficient updates. */ + uint8_t postShift; /**< bit shift applied to coefficients. */ + q31_t *recipTable; /**< points to the reciprocal initial value table. */ + q31_t energy; /**< saves previous frame energy. */ + q31_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_q31; + + /** + * @brief Processing function for Q31 normalized LMS filter. + * @param[in] *S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_norm_q31( + arm_lms_norm_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + + /** + * @brief Initialization function for Q31 normalized LMS filter. + * @param[in] *S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + * @return none. + */ + + void arm_lms_norm_init_q31( + arm_lms_norm_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint8_t postShift); + + /** + * @brief Instance structure for the Q15 normalized LMS filter. + */ + + typedef struct + { + uint16_t numTaps; /**< Number of coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q15_t mu; /**< step size that controls filter coefficient updates. */ + uint8_t postShift; /**< bit shift applied to coefficients. */ + q15_t *recipTable; /**< Points to the reciprocal initial value table. */ + q15_t energy; /**< saves previous frame energy. */ + q15_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_q15; + + /** + * @brief Processing function for Q15 normalized LMS filter. + * @param[in] *S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_norm_q15( + arm_lms_norm_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q15 normalized LMS filter. + * @param[in] *S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + * @return none. + */ + + void arm_lms_norm_init_q15( + arm_lms_norm_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint8_t postShift); + + /** + * @brief Correlation of floating-point sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + */ + + void arm_correlate_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + + /** + * @brief Correlation of Q15 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @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 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. + * @return none. + */ + + void arm_correlate_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + + /** + * @brief Instance structure for the floating-point sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + float32_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_f32; + + /** + * @brief Instance structure for the Q31 sparse FIR filter. + */ + + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q31_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q31; + + /** + * @brief Instance structure for the Q15 sparse FIR filter. + */ + + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q15_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q15; + + /** + * @brief Instance structure for the Q7 sparse FIR filter. + */ + + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q7_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q7; + + /** + * @brief Processing function for the floating-point sparse FIR filter. + * @param[in] *S points to an instance of the floating-point sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + + void arm_fir_sparse_f32( + arm_fir_sparse_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + float32_t * pScratchIn, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point sparse FIR filter. + * @param[in,out] *S points to an instance of the floating-point sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + */ + + void arm_fir_sparse_init_f32( + arm_fir_sparse_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 sparse FIR filter. + * @param[in] *S points to an instance of the Q31 sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + + void arm_fir_sparse_q31( + arm_fir_sparse_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + q31_t * pScratchIn, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q31 sparse FIR filter. + * @param[in,out] *S points to an instance of the Q31 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + */ + + void arm_fir_sparse_init_q31( + arm_fir_sparse_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + /** + * @brief Processing function for the Q15 sparse FIR filter. + * @param[in] *S points to an instance of the Q15 sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] *pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + + void arm_fir_sparse_q15( + arm_fir_sparse_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + q15_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 sparse FIR filter. + * @param[in,out] *S points to an instance of the Q15 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + */ + + void arm_fir_sparse_init_q15( + arm_fir_sparse_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + /** + * @brief Processing function for the Q7 sparse FIR filter. + * @param[in] *S points to an instance of the Q7 sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] *pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + + void arm_fir_sparse_q7( + arm_fir_sparse_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + q7_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q7 sparse FIR filter. + * @param[in,out] *S points to an instance of the Q7 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + */ + + void arm_fir_sparse_init_q7( + arm_fir_sparse_instance_q7 * S, + uint16_t numTaps, + q7_t * pCoeffs, + q7_t * pState, + int32_t *pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /* + * @brief Floating-point sin_cos function. + * @param[in] theta input value in degrees + * @param[out] *pSinVal points to the processed sine output. + * @param[out] *pCosVal points to the processed cos output. + * @return none. + */ + + void arm_sin_cos_f32( + float32_t theta, + float32_t *pSinVal, + float32_t *pCcosVal); + + /* + * @brief Q31 sin_cos function. + * @param[in] theta scaled input value in degrees + * @param[out] *pSinVal points to the processed sine output. + * @param[out] *pCosVal points to the processed cosine output. + * @return none. + */ + + void arm_sin_cos_q31( + q31_t theta, + q31_t *pSinVal, + q31_t *pCosVal); + + + /** + * @brief Floating-point complex conjugate. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + * @return none. + */ + + void arm_cmplx_conj_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + /** + * @brief Q31 complex conjugate. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + * @return none. + */ + + void arm_cmplx_conj_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + /** + * @brief Q15 complex conjugate. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + * @return none. + */ + + void arm_cmplx_conj_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + + /** + * @brief Floating-point complex magnitude squared + * @param[in] *pSrc points to the complex input vector + * @param[out] *pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + * @return none. + */ + + void arm_cmplx_mag_squared_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + /** + * @brief Q31 complex magnitude squared + * @param[in] *pSrc points to the complex input vector + * @param[out] *pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + * @return none. + */ + + void arm_cmplx_mag_squared_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + /** + * @brief Q15 complex magnitude squared + * @param[in] *pSrc points to the complex input vector + * @param[out] *pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + * @return none. + */ + + void arm_cmplx_mag_squared_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @ingroup groupController + */ + + /** + * @defgroup PID PID Motor Control + * + * A Proportional Integral Derivative (PID) controller is a generic feedback control + * loop mechanism widely used in industrial control systems. + * A PID controller is the most commonly used type of feedback controller. + * + * This set of functions implements (PID) controllers + * for Q15, Q31, and floating-point data types. The functions operate on a single sample + * of data and each call to the function returns a single processed value. + * S points to an instance of the PID control data structure. in + * is the input sample value. The functions return the output value. + * + * \par Algorithm: + *
+   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
+   *    A0 = Kp + Ki + Kd
+   *    A1 = (-Kp ) - (2 * Kd )
+   *    A2 = Kd  
+ * + * \par + * where \c Kp is proportional constant, \c Ki is Integral constant and \c Kd is Derivative constant + * + * \par + * \image html PID.gif "Proportional Integral Derivative Controller" + * + * \par + * The PID controller calculates an "error" value as the difference between + * the measured output and the reference input. + * The controller attempts to minimize the error by adjusting the process control inputs. + * The proportional value determines the reaction to the current error, + * the integral value determines the reaction based on the sum of recent errors, + * and the derivative value determines the reaction based on the rate at which the error has been changing. + * + * \par Instance Structure + * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure. + * A separate instance structure must be defined for each PID Controller. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Reset Functions + * There is also an associated reset function for each data type which clears the state array. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains. + * - Zeros out the values in the state buffer. + * + * \par + * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the PID Controller functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup PID + * @{ + */ + + /** + * @brief Process function for the floating-point PID Control. + * @param[in,out] *S is an instance of the floating-point PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + */ + + + __STATIC_INLINE float32_t arm_pid_f32( + arm_pid_instance_f32 * S, + float32_t in) + { + float32_t out; + + /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2] */ + out = (S->A0 * in) + + (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + + } + + /** + * @brief Process function for the Q31 PID Control. + * @param[in,out] *S points to an instance of the Q31 PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions. + * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. + */ + + __STATIC_INLINE q31_t arm_pid_q31( + arm_pid_instance_q31 * S, + q31_t in) + { + q63_t acc; + q31_t out; + + /* acc = A0 * x[n] */ + acc = (q63_t) S->A0 * in; + + /* acc += A1 * x[n-1] */ + acc += (q63_t) S->A1 * S->state[0]; + + /* acc += A2 * x[n-2] */ + acc += (q63_t) S->A2 * S->state[1]; + + /* convert output to 1.31 format to add y[n-1] */ + out = (q31_t) (acc >> 31u); + + /* out += y[n-1] */ + out += S->state[2]; + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + + } + + /** + * @brief Process function for the Q15 PID Control. + * @param[in,out] *S points to an instance of the Q15 PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + */ + + __STATIC_INLINE q15_t arm_pid_q15( + arm_pid_instance_q15 * S, + q15_t in) + { + q63_t acc; + q15_t out; + + /* Implementation of PID controller */ + + #ifdef ARM_MATH_CM0 + + /* acc = A0 * x[n] */ + acc = ((q31_t) S->A0 )* in ; + + #else + + /* acc = A0 * x[n] */ + acc = (q31_t) __SMUAD(S->A0, in); + + #endif + + #ifdef ARM_MATH_CM0 + + /* 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] ; + + #else + + /* acc += A1 * x[n-1] + A2 * x[n-2] */ + acc = __SMLALD(S->A1, (q31_t)__SIMD32(S->state), acc); + + #endif + + /* acc += y[n-1] */ + acc += (q31_t) S->state[2] << 15; + + /* saturate the output */ + out = (q15_t) (__SSAT((acc >> 15), 16)); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + + } + + /** + * @} end of PID group + */ + + + /** + * @brief Floating-point matrix inverse. + * @param[in] *src points to the instance of the input floating-point matrix structure. + * @param[out] *dst points to the instance of the output floating-point matrix structure. + * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. + * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. + */ + + arm_status arm_mat_inverse_f32( + const arm_matrix_instance_f32 * src, + arm_matrix_instance_f32 * dst); + + + + /** + * @ingroup groupController + */ + + + /** + * @defgroup clarke Vector Clarke Transform + * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector. + * Generally the Clarke transform uses three-phase currents Ia, Ib and Ic to calculate currents + * in the two-phase orthogonal stator axis Ialpha and Ibeta. + * When Ialpha is superposed with Ia as shown in the figure below + * \image html clarke.gif Stator current space vector and its components in (a,b). + * and Ia + Ib + Ic = 0, in this condition Ialpha and Ibeta + * can be calculated using only Ia and Ib. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html clarkeFormula.gif + * where Ia and Ib are the instantaneous stator phases and + * pIalpha and pIbeta are the two coordinates of time invariant vector. + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Clarke transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup clarke + * @{ + */ + + /** + * + * @brief Floating-point Clarke transform + * @param[in] Ia input three-phase coordinate a + * @param[in] Ib input three-phase coordinate b + * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta + * @return none. + */ + + __STATIC_INLINE void arm_clarke_f32( + float32_t Ia, + float32_t Ib, + float32_t * pIalpha, + float32_t * pIbeta) + { + /* Calculate pIalpha using the equation, pIalpha = Ia */ + *pIalpha = Ia; + + /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */ + *pIbeta = ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib); + + } + + /** + * @brief Clarke transform for Q31 version + * @param[in] Ia input three-phase coordinate a + * @param[in] Ib input three-phase coordinate b + * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition, hence there is no risk of overflow. + */ + + __STATIC_INLINE void arm_clarke_q31( + q31_t Ia, + q31_t Ib, + q31_t * pIalpha, + q31_t * pIbeta) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + + /* Calculating pIalpha from Ia by equation pIalpha = Ia */ + *pIalpha = Ia; + + /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */ + product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30); + + /* Intermediate product is calculated by (2/sqrt(3) * Ib) */ + product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30); + + /* pIbeta is calculated by adding the intermediate products */ + *pIbeta = __QADD(product1, product2); + } + + /** + * @} end of clarke group + */ + + /** + * @brief Converts the elements of the Q7 vector to Q31 vector. + * @param[in] *pSrc input pointer + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_q7_to_q31( + q7_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup inv_clarke Vector Inverse Clarke Transform + * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html clarkeInvFormula.gif + * where pIa and pIb are the instantaneous stator phases and + * Ialpha and Ibeta are the two coordinates of time invariant vector. + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Clarke transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup inv_clarke + * @{ + */ + + /** + * @brief Floating-point Inverse Clarke transform + * @param[in] Ialpha input two-phase orthogonal vector axis alpha + * @param[in] Ibeta input two-phase orthogonal vector axis beta + * @param[out] *pIa points to output three-phase coordinate a + * @param[out] *pIb points to output three-phase coordinate b + * @return none. + */ + + + __STATIC_INLINE void arm_inv_clarke_f32( + float32_t Ialpha, + float32_t Ibeta, + float32_t * pIa, + float32_t * pIb) + { + /* Calculating pIa from Ialpha by equation pIa = Ialpha */ + *pIa = Ialpha; + + /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */ + *pIb = -0.5 * Ialpha + (float32_t) 0.8660254039 *Ibeta; + + } + + /** + * @brief Inverse Clarke transform for Q31 version + * @param[in] Ialpha input two-phase orthogonal vector axis alpha + * @param[in] Ibeta input two-phase orthogonal vector axis beta + * @param[out] *pIa points to output three-phase coordinate a + * @param[out] *pIb points to output three-phase coordinate b + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the subtraction, hence there is no risk of overflow. + */ + + __STATIC_INLINE void arm_inv_clarke_q31( + q31_t Ialpha, + q31_t Ibeta, + q31_t * pIa, + q31_t * pIb) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + + /* Calculating pIa from Ialpha by equation pIa = Ialpha */ + *pIa = Ialpha; + + /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */ + product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31); + + /* Intermediate product is calculated by (1/sqrt(3) * pIb) */ + product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31); + + /* pIb is calculated by subtracting the products */ + *pIb = __QSUB(product2, product1); + + } + + /** + * @} end of inv_clarke group + */ + + /** + * @brief Converts the elements of the Q7 vector to Q15 vector. + * @param[in] *pSrc input pointer + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_q7_to_q15( + q7_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup park Vector Park Transform + * + * Forward Park transform converts the input two-coordinate vector to flux and torque components. + * The Park transform can be used to realize the transformation of the Ialpha and the Ibeta currents + * from the stationary to the moving reference frame and control the spatial relationship between + * the stator vector current and rotor flux vector. + * If we consider the d axis aligned with the rotor flux, the diagram below shows the + * current vector and the relationship from the two reference frames: + * \image html park.gif "Stator current space vector and its component in (a,b) and in the d,q rotating reference frame" + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html parkFormula.gif + * where Ialpha and Ibeta are the stator vector components, + * pId and pIq are rotor vector components and cosVal and sinVal are the + * cosine and sine values of theta (rotor flux position). + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Park transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup park + * @{ + */ + + /** + * @brief Floating-point Park transform + * @param[in] Ialpha input two-phase vector coordinate alpha + * @param[in] Ibeta input two-phase vector coordinate beta + * @param[out] *pId points to output rotor reference frame d + * @param[out] *pIq points to output rotor reference frame q + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * @return none. + * + * The function implements the forward Park transform. + * + */ + + __STATIC_INLINE void arm_park_f32( + float32_t Ialpha, + float32_t Ibeta, + float32_t * pId, + float32_t * pIq, + float32_t sinVal, + float32_t cosVal) + { + /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */ + *pId = Ialpha * cosVal + Ibeta * sinVal; + + /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */ + *pIq = -Ialpha * sinVal + Ibeta * cosVal; + + } + + /** + * @brief Park transform for Q31 version + * @param[in] Ialpha input two-phase vector coordinate alpha + * @param[in] Ibeta input two-phase vector coordinate beta + * @param[out] *pId points to output rotor reference frame d + * @param[out] *pIq points to output rotor reference frame q + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition and subtraction, hence there is no risk of overflow. + */ + + + __STATIC_INLINE void arm_park_q31( + q31_t Ialpha, + q31_t Ibeta, + q31_t * pId, + q31_t * pIq, + q31_t sinVal, + q31_t cosVal) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + q31_t product3, product4; /* Temporary variables used to store intermediate results */ + + /* Intermediate product is calculated by (Ialpha * cosVal) */ + product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31); + + /* Intermediate product is calculated by (Ibeta * sinVal) */ + product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31); + + + /* Intermediate product is calculated by (Ialpha * sinVal) */ + product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31); + + /* Intermediate product is calculated by (Ibeta * cosVal) */ + product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31); + + /* Calculate pId by adding the two intermediate products 1 and 2 */ + *pId = __QADD(product1, product2); + + /* Calculate pIq by subtracting the two intermediate products 3 from 4 */ + *pIq = __QSUB(product4, product3); + } + + /** + * @} end of park group + */ + + /** + * @brief Converts the elements of the Q7 vector to floating-point vector. + * @param[in] *pSrc is input pointer + * @param[out] *pDst is output pointer + * @param[in] blockSize is the number of samples to process + * @return none. + */ + void arm_q7_to_float( + q7_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @ingroup groupController + */ + + /** + * @defgroup inv_park Vector Inverse Park transform + * Inverse Park transform converts the input flux and torque components to two-coordinate vector. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html parkInvFormula.gif + * where pIalpha and pIbeta are the stator vector components, + * Id and Iq are rotor vector components and cosVal and sinVal are the + * cosine and sine values of theta (rotor flux position). + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Park transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup inv_park + * @{ + */ + + /** + * @brief Floating-point Inverse Park transform + * @param[in] Id input coordinate of rotor reference frame d + * @param[in] Iq input coordinate of rotor reference frame q + * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * @return none. + */ + + __STATIC_INLINE void arm_inv_park_f32( + float32_t Id, + float32_t Iq, + float32_t * pIalpha, + float32_t * pIbeta, + float32_t sinVal, + float32_t cosVal) + { + /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */ + *pIalpha = Id * cosVal - Iq * sinVal; + + /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */ + *pIbeta = Id * sinVal + Iq * cosVal; + + } + + + /** + * @brief Inverse Park transform for Q31 version + * @param[in] Id input coordinate of rotor reference frame d + * @param[in] Iq input coordinate of rotor reference frame q + * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition, hence there is no risk of overflow. + */ + + + __STATIC_INLINE void arm_inv_park_q31( + q31_t Id, + q31_t Iq, + q31_t * pIalpha, + q31_t * pIbeta, + q31_t sinVal, + q31_t cosVal) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + q31_t product3, product4; /* Temporary variables used to store intermediate results */ + + /* Intermediate product is calculated by (Id * cosVal) */ + product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31); + + /* Intermediate product is calculated by (Iq * sinVal) */ + product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31); + + + /* Intermediate product is calculated by (Id * sinVal) */ + product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31); + + /* Intermediate product is calculated by (Iq * cosVal) */ + product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31); + + /* Calculate pIalpha by using the two intermediate products 1 and 2 */ + *pIalpha = __QSUB(product1, product2); + + /* Calculate pIbeta by using the two intermediate products 3 and 4 */ + *pIbeta = __QADD(product4, product3); + + } + + /** + * @} end of Inverse park group + */ + + + /** + * @brief Converts the elements of the Q31 vector to floating-point vector. + * @param[in] *pSrc is input pointer + * @param[out] *pDst is output pointer + * @param[in] blockSize is the number of samples to process + * @return none. + */ + void arm_q31_to_float( + q31_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @ingroup groupInterpolation + */ + + /** + * @defgroup LinearInterpolate Linear Interpolation + * + * Linear interpolation is a method of curve fitting using linear polynomials. + * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line + * + * \par + * \image html LinearInterp.gif "Linear interpolation" + * + * \par + * A Linear Interpolate function calculates an output value(y), for the input(x) + * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values) + * + * \par Algorithm: + *
+   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
+   *       where x0, x1 are nearest values of input x
+   *             y0, y1 are nearest values to output y
+   * 
+ * + * \par + * This set of functions implements Linear interpolation process + * for Q7, Q15, Q31, and floating-point data types. The functions operate on a single + * sample of data and each call to the function returns a single processed value. + * S points to an instance of the Linear Interpolate function data structure. + * x is the input sample value. The functions returns the output value. + * + * \par + * if x is outside of the table boundary, Linear interpolation returns first value of the table + * if x is below input range and returns last value of table if x is above range. + */ + + /** + * @addtogroup LinearInterpolate + * @{ + */ + + /** + * @brief Process function for the floating-point Linear Interpolation Function. + * @param[in,out] *S is an instance of the floating-point Linear Interpolation structure + * @param[in] x input sample to process + * @return y processed output sample. + * + */ + + __STATIC_INLINE float32_t arm_linear_interp_f32( + arm_linear_interp_instance_f32 * S, + float32_t x) + { + + float32_t y; + float32_t x0, x1; /* Nearest input values */ + float32_t y0, y1; /* Nearest output values */ + float32_t xSpacing = S->xSpacing; /* spacing between input values */ + int32_t i; /* Index variable */ + float32_t *pYData = S->pYData; /* pointer to output table */ + + /* Calculation of index */ + i = (x - S->x1) / xSpacing; + + if(i < 0) + { + /* Iniatilize output for below specified range as least output value of table */ + y = pYData[0]; + } + else if(i >= S->nValues) + { + /* Iniatilize output for above specified range as last output value of table */ + y = pYData[S->nValues-1]; + } + else + { + /* Calculation of nearest input values */ + x0 = S->x1 + i * xSpacing; + x1 = S->x1 + (i +1) * xSpacing; + + /* Read of nearest output values */ + y0 = pYData[i]; + y1 = pYData[i + 1]; + + /* Calculation of output */ + y = y0 + (x - x0) * ((y1 - y0)/(x1-x0)); + + } + + /* returns output value */ + return (y); + } + + /** + * + * @brief Process function for the Q31 Linear Interpolation Function. + * @param[in] *pYData pointer to Q31 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + * + */ + + + __STATIC_INLINE q31_t arm_linear_interp_q31(q31_t *pYData, + q31_t x, uint32_t nValues) + { + q31_t y; /* output */ + q31_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & 0xFFF00000) >> 20); + + if(index >= (nValues - 1)) + { + return(pYData[nValues - 1]); + } + else if(index < 0) + { + return(pYData[0]); + } + else + { + + /* 20 bits for the fractional part */ + /* shift left by 11 to keep fract in 1.31 format */ + fract = (x & 0x000FFFFF) << 11; + + /* Read two nearest output values from the index in 1.31(q31) format */ + y0 = pYData[index]; + y1 = pYData[index + 1u]; + + /* Calculation of y0 * (1-fract) and y is in 2.30 format */ + y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32)); + + /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */ + y += ((q31_t) (((q63_t) y1 * fract) >> 32)); + + /* Convert y to 1.31 format */ + return (y << 1u); + + } + + } + + /** + * + * @brief Process function for the Q15 Linear Interpolation Function. + * @param[in] *pYData pointer to Q15 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + * + */ + + + __STATIC_INLINE q15_t arm_linear_interp_q15(q15_t *pYData, q31_t x, uint32_t nValues) + { + q63_t y; /* output */ + q15_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & 0xFFF00000) >> 20u); + + if(index >= (nValues - 1)) + { + return(pYData[nValues - 1]); + } + else if(index < 0) + { + return(pYData[0]); + } + else + { + /* 20 bits for the fractional part */ + /* fract is in 12.20 format */ + fract = (x & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y0 = pYData[index]; + y1 = pYData[index + 1u]; + + /* Calculation of y0 * (1-fract) and y is in 13.35 format */ + y = ((q63_t) y0 * (0xFFFFF - fract)); + + /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */ + y += ((q63_t) y1 * (fract)); + + /* convert y to 1.15 format */ + return (y >> 20); + } + + + } + + /** + * + * @brief Process function for the Q7 Linear Interpolation Function. + * @param[in] *pYData pointer to Q7 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + */ + + + __STATIC_INLINE q7_t arm_linear_interp_q7(q7_t *pYData, q31_t x, uint32_t nValues) + { + q31_t y; /* output */ + q7_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + 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 >= (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 and are in 1.7(q7) format */ + y0 = pYData[index]; + y1 = pYData[index + 1u]; + + /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */ + y = ((y0 * (0xFFFFF - fract))); + + /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */ + y += (y1 * fract); + + /* convert y to 1.7(q7) format */ + return (y >> 20u); + + } + + } + /** + * @} end of LinearInterpolate group + */ + + /** + * @brief Fast approximation to the trigonometric sine function for floating-point data. + * @param[in] x input value in radians. + * @return sin(x). + */ + + float32_t arm_sin_f32( + float32_t x); + + /** + * @brief Fast approximation to the trigonometric sine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + */ + + q31_t arm_sin_q31( + q31_t x); + + /** + * @brief Fast approximation to the trigonometric sine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + */ + + q15_t arm_sin_q15( + q15_t x); + + /** + * @brief Fast approximation to the trigonometric cosine function for floating-point data. + * @param[in] x input value in radians. + * @return cos(x). + */ + + float32_t arm_cos_f32( + float32_t x); + + /** + * @brief Fast approximation to the trigonometric cosine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + */ + + q31_t arm_cos_q31( + q31_t x); + + /** + * @brief Fast approximation to the trigonometric cosine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + */ + + q15_t arm_cos_q15( + q15_t x); + + + /** + * @ingroup groupFastMath + */ + + + /** + * @defgroup SQRT Square Root + * + * Computes the square root of a number. + * There are separate functions for Q15, Q31, and floating-point data types. + * The square root function is computed using the Newton-Raphson algorithm. + * This is an iterative algorithm of the form: + *
+   *      x1 = x0 - f(x0)/f'(x0)
+   * 
+ * where x1 is the current estimate, + * x0 is the previous estimate and + * f'(x0) is the derivative of f() evaluated at x0. + * For the square root function, the algorithm reduces to: + *
+   *     x0 = in/2                         [initial guess]
+   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
+   * 
+ */ + + + /** + * @addtogroup SQRT + * @{ + */ + + /** + * @brief Floating-point square root function. + * @param[in] in input value. + * @param[out] *pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + + __STATIC_INLINE arm_status arm_sqrt_f32( + float32_t in, float32_t *pOut) + { + if(in > 0) + { + +// #if __FPU_USED + #if (__FPU_USED == 1) && defined ( __CC_ARM ) + *pOut = __sqrtf(in); + #elif (__FPU_USED == 1) && defined ( __TMS_740 ) + *pOut = __builtin_sqrtf(in); + #else + *pOut = sqrtf(in); + #endif + + return (ARM_MATH_SUCCESS); + } + else + { + *pOut = 0.0f; + return (ARM_MATH_ARGUMENT_ERROR); + } + + } + + + /** + * @brief Q31 square root function. + * @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF. + * @param[out] *pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + arm_status arm_sqrt_q31( + q31_t in, q31_t *pOut); + + /** + * @brief Q15 square root function. + * @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF. + * @param[out] *pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + arm_status arm_sqrt_q15( + q15_t in, q15_t *pOut); + + /** + * @} end of SQRT group + */ + + + + + + + /** + * @brief floating-point Circular write function. + */ + + __STATIC_INLINE void arm_circularWrite_f32( + int32_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const int32_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0u; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if(wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = wOffset; + } + + + + /** + * @brief floating-point Circular Read function. + */ + __STATIC_INLINE void arm_circularRead_f32( + int32_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + int32_t * dst, + int32_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0u; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if(dst == (int32_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update rOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if(rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + /** + * @brief Q15 Circular write function. + */ + + __STATIC_INLINE void arm_circularWrite_q15( + q15_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const q15_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0u; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if(wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = wOffset; + } + + + + /** + * @brief Q15 Circular Read function. + */ + __STATIC_INLINE void arm_circularRead_q15( + q15_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + q15_t * dst, + q15_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if(dst == (q15_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update wOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if(rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Q7 Circular write function. + */ + + __STATIC_INLINE void arm_circularWrite_q7( + q7_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const q7_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0u; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if(wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = wOffset; + } + + + + /** + * @brief Q7 Circular Read function. + */ + __STATIC_INLINE void arm_circularRead_q7( + q7_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + q7_t * dst, + q7_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if(dst == (q7_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update rOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if(rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Sum of the squares of the elements of a Q31 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_power_q31( + q31_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + /** + * @brief Sum of the squares of the elements of a floating-point vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_power_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + /** + * @brief Sum of the squares of the elements of a Q15 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_power_q15( + q15_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + /** + * @brief Sum of the squares of the elements of a Q7 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_power_q7( + q7_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + /** + * @brief Mean value of a Q7 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_mean_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult); + + /** + * @brief Mean value of a Q15 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + void arm_mean_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + /** + * @brief Mean value of a Q31 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + void arm_mean_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + /** + * @brief Mean value of a floating-point vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + void arm_mean_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + /** + * @brief Variance of the elements of a floating-point vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_var_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + /** + * @brief Variance of the elements of a Q31 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_var_q31( + q31_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + /** + * @brief Variance of the elements of a Q15 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_var_q15( + q15_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + /** + * @brief Root Mean Square of the elements of a floating-point vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_rms_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + /** + * @brief Root Mean Square of the elements of a Q31 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_rms_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + /** + * @brief Root Mean Square of the elements of a Q15 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_rms_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + /** + * @brief Standard deviation of the elements of a floating-point vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_std_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + /** + * @brief Standard deviation of the elements of a Q31 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_std_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + /** + * @brief Standard deviation of the elements of a Q15 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_std_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + /** + * @brief Floating-point complex magnitude + * @param[in] *pSrc points to the complex input vector + * @param[out] *pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + * @return none. + */ + + void arm_cmplx_mag_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + /** + * @brief Q31 complex magnitude + * @param[in] *pSrc points to the complex input vector + * @param[out] *pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + * @return none. + */ + + void arm_cmplx_mag_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + /** + * @brief Q15 complex magnitude + * @param[in] *pSrc points to the complex input vector + * @param[out] *pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + * @return none. + */ + + void arm_cmplx_mag_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + /** + * @brief Q15 complex dot product + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] *realResult real part of the result returned here + * @param[out] *imagResult imaginary part of the result returned here + * @return none. + */ + + void arm_cmplx_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t numSamples, + q31_t * realResult, + q31_t * imagResult); + + /** + * @brief Q31 complex dot product + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] *realResult real part of the result returned here + * @param[out] *imagResult imaginary part of the result returned here + * @return none. + */ + + void arm_cmplx_dot_prod_q31( + q31_t * pSrcA, + q31_t * pSrcB, + uint32_t numSamples, + q63_t * realResult, + q63_t * imagResult); + + /** + * @brief Floating-point complex dot product + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] *realResult real part of the result returned here + * @param[out] *imagResult imaginary part of the result returned here + * @return none. + */ + + void arm_cmplx_dot_prod_f32( + float32_t * pSrcA, + float32_t * pSrcB, + uint32_t numSamples, + float32_t * realResult, + float32_t * imagResult); + + /** + * @brief Q15 complex-by-real multiplication + * @param[in] *pSrcCmplx points to the complex input vector + * @param[in] *pSrcReal points to the real input vector + * @param[out] *pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + * @return none. + */ + + void arm_cmplx_mult_real_q15( + q15_t * pSrcCmplx, + q15_t * pSrcReal, + q15_t * pCmplxDst, + uint32_t numSamples); + + /** + * @brief Q31 complex-by-real multiplication + * @param[in] *pSrcCmplx points to the complex input vector + * @param[in] *pSrcReal points to the real input vector + * @param[out] *pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + * @return none. + */ + + void arm_cmplx_mult_real_q31( + q31_t * pSrcCmplx, + q31_t * pSrcReal, + q31_t * pCmplxDst, + uint32_t numSamples); + + /** + * @brief Floating-point complex-by-real multiplication + * @param[in] *pSrcCmplx points to the complex input vector + * @param[in] *pSrcReal points to the real input vector + * @param[out] *pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + * @return none. + */ + + void arm_cmplx_mult_real_f32( + float32_t * pSrcCmplx, + float32_t * pSrcReal, + float32_t * pCmplxDst, + uint32_t numSamples); + + /** + * @brief Minimum value of a Q7 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *result is output pointer + * @param[in] index is the array index of the minimum value in the input buffer. + * @return none. + */ + + void arm_min_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * result, + uint32_t * index); + + /** + * @brief Minimum value of a Q15 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output pointer + * @param[in] *pIndex is the array index of the minimum value in the input buffer. + * @return none. + */ + + void arm_min_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + + /** + * @brief Minimum value of a Q31 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output pointer + * @param[out] *pIndex is the array index of the minimum value in the input buffer. + * @return none. + */ + void arm_min_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + + /** + * @brief Minimum value of a floating-point vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output pointer + * @param[out] *pIndex is the array index of the minimum value in the input buffer. + * @return none. + */ + + void arm_min_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + +/** + * @brief Maximum value of a Q7 vector. + * @param[in] *pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + + void arm_max_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult, + uint32_t * pIndex); + +/** + * @brief Maximum value of a Q15 vector. + * @param[in] *pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + + void arm_max_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + +/** + * @brief Maximum value of a Q31 vector. + * @param[in] *pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + + void arm_max_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + +/** + * @brief Maximum value of a floating-point vector. + * @param[in] *pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + + void arm_max_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + + /** + * @brief Q15 complex-by-complex multiplication + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + * @return none. + */ + + void arm_cmplx_mult_cmplx_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t numSamples); + + /** + * @brief Q31 complex-by-complex multiplication + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + * @return none. + */ + + void arm_cmplx_mult_cmplx_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t numSamples); + + /** + * @brief Floating-point complex-by-complex multiplication + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + * @return none. + */ + + void arm_cmplx_mult_cmplx_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t numSamples); + + /** + * @brief Converts the elements of the floating-point vector to Q31 vector. + * @param[in] *pSrc points to the floating-point input vector + * @param[out] *pDst points to the Q31 output vector + * @param[in] blockSize length of the input vector + * @return none. + */ + void arm_float_to_q31( + float32_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Converts the elements of the floating-point vector to Q15 vector. + * @param[in] *pSrc points to the floating-point input vector + * @param[out] *pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + * @return none + */ + void arm_float_to_q15( + float32_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Converts the elements of the floating-point vector to Q7 vector. + * @param[in] *pSrc points to the floating-point input vector + * @param[out] *pDst points to the Q7 output vector + * @param[in] blockSize length of the input vector + * @return none + */ + void arm_float_to_q7( + float32_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q31 vector to Q15 vector. + * @param[in] *pSrc is input pointer + * @param[out] *pDst is output pointer + * @param[in] blockSize is the number of samples to process + * @return none. + */ + void arm_q31_to_q15( + q31_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Converts the elements of the Q31 vector to Q7 vector. + * @param[in] *pSrc is input pointer + * @param[out] *pDst is output pointer + * @param[in] blockSize is the number of samples to process + * @return none. + */ + void arm_q31_to_q7( + q31_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Converts the elements of the Q15 vector to floating-point vector. + * @param[in] *pSrc is input pointer + * @param[out] *pDst is output pointer + * @param[in] blockSize is the number of samples to process + * @return none. + */ + void arm_q15_to_float( + q15_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to Q31 vector. + * @param[in] *pSrc is input pointer + * @param[out] *pDst is output pointer + * @param[in] blockSize is the number of samples to process + * @return none. + */ + void arm_q15_to_q31( + q15_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to Q7 vector. + * @param[in] *pSrc is input pointer + * @param[out] *pDst is output pointer + * @param[in] blockSize is the number of samples to process + * @return none. + */ + void arm_q15_to_q7( + q15_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @ingroup groupInterpolation + */ + + /** + * @defgroup BilinearInterpolate Bilinear Interpolation + * + * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid. + * The underlying function f(x, y) is sampled on a regular grid and the interpolation process + * determines values between the grid points. + * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension. + * Bilinear interpolation is often used in image processing to rescale images. + * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types. + * + * Algorithm + * \par + * The instance structure used by the bilinear interpolation functions describes a two dimensional data table. + * For floating-point, the instance structure is defined as: + *
+   *   typedef struct
+   *   {
+   *     uint16_t numRows;
+   *     uint16_t numCols;
+   *     float32_t *pData;
+   * } arm_bilinear_interp_instance_f32;
+   * 
+ * + * \par + * where numRows specifies the number of rows in the table; + * numCols specifies the number of columns in the table; + * and pData points to an array of size numRows*numCols values. + * The data table pTable is organized in row order and the supplied data values fall on integer indexes. + * That is, table element (x,y) is located at pTable[x + y*numCols] where x and y are integers. + * + * \par + * Let (x, y) specify the desired interpolation point. Then define: + *
+   *     XF = floor(x)
+   *     YF = floor(y)
+   * 
+ * \par + * The interpolated output point is computed as: + *
+   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
+   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))
+   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)
+   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)
+   * 
+ * Note that the coordinates (x, y) contain integer and fractional components. + * The integer components specify which portion of the table to use while the + * fractional components control the interpolation processor. + * + * \par + * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output. + */ + + /** + * @addtogroup BilinearInterpolate + * @{ + */ + + /** + * + * @brief Floating-point bilinear interpolation. + * @param[in,out] *S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate. + * @param[in] Y interpolation coordinate. + * @return out interpolated value. + */ + + + __STATIC_INLINE float32_t arm_bilinear_interp_f32( + const arm_bilinear_interp_instance_f32 * S, + float32_t X, + float32_t Y) + { + float32_t out; + float32_t f00, f01, f10, f11; + float32_t *pData = S->pData; + int32_t xIndex, yIndex, index; + float32_t xdiff, ydiff; + float32_t b1, b2, b3, b4; + + xIndex = (int32_t) X; + yIndex = (int32_t) Y; + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if(xIndex < 0 || xIndex > (S->numRows-1) || yIndex < 0 || yIndex > ( S->numCols-1)) + { + return(0); + } + + /* Calculation of index for two nearest points in X-direction */ + index = (xIndex - 1) + (yIndex-1) * S->numCols ; + + + /* Read two nearest points in X-direction */ + f00 = pData[index]; + f01 = pData[index + 1]; + + /* Calculation of index for two nearest points in Y-direction */ + index = (xIndex-1) + (yIndex) * S->numCols; + + + /* Read two nearest points in Y-direction */ + f10 = pData[index]; + f11 = pData[index + 1]; + + /* Calculation of intermediate values */ + b1 = f00; + b2 = f01 - f00; + b3 = f10 - f00; + b4 = f00 - f01 - f10 + f11; + + /* Calculation of fractional part in X */ + xdiff = X - xIndex; + + /* Calculation of fractional part in Y */ + ydiff = Y - yIndex; + + /* Calculation of bi-linear interpolated output */ + out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff; + + /* return to application */ + return (out); + + } + + /** + * + * @brief Q31 bilinear interpolation. + * @param[in,out] *S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + + __STATIC_INLINE q31_t arm_bilinear_interp_q31( + arm_bilinear_interp_instance_q31 * S, + q31_t X, + q31_t Y) + { + q31_t out; /* Temporary output */ + q31_t acc = 0; /* output */ + q31_t xfract, yfract; /* X, Y fractional parts */ + q31_t x1, x2, y1, y2; /* Nearest output values */ + int32_t rI, cI; /* Row and column indices */ + q31_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & 0xFFF00000) >> 20u); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & 0xFFF00000) >> 20u); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if(rI < 0 || rI > (S->numRows-1) || cI < 0 || cI > ( S->numCols-1)) + { + return(0); + } + + /* 20 bits for the fractional part */ + /* shift left xfract by 11 to keep 1.31 format */ + xfract = (X & 0x000FFFFF) << 11u; + + /* Read two nearest output values from the index */ + x1 = pYData[(rI) + nCols * (cI)]; + x2 = pYData[(rI) + nCols * (cI) + 1u]; + + /* 20 bits for the fractional part */ + /* shift left yfract by 11 to keep 1.31 format */ + yfract = (Y & 0x000FFFFF) << 11u; + + /* Read two nearest output values from the index */ + y1 = pYData[(rI) + nCols * (cI + 1)]; + y2 = pYData[(rI) + nCols * (cI + 1) + 1u]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */ + out = ((q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32)); + acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32)); + + /* x2 * (xfract) * (1-yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (xfract) >> 32)); + + /* y1 * (1 - xfract) * (yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); + + /* y2 * (xfract) * (yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) y2 * (xfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); + + /* Convert acc to 1.31(q31) format */ + return (acc << 2u); + + } + + /** + * @brief Q15 bilinear interpolation. + * @param[in,out] *S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + + __STATIC_INLINE q15_t arm_bilinear_interp_q15( + arm_bilinear_interp_instance_q15 * S, + q31_t X, + q31_t Y) + { + q63_t acc = 0; /* output */ + q31_t out; /* Temporary output */ + q15_t x1, x2, y1, y2; /* Nearest output values */ + q31_t xfract, yfract; /* X, Y fractional parts */ + int32_t rI, cI; /* Row and column indices */ + q15_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & 0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & 0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if(rI < 0 || rI > (S->numRows-1) || cI < 0 || cI > ( S->numCols-1)) + { + return(0); + } + + /* 20 bits for the fractional part */ + /* xfract should be in 12.20 format */ + xfract = (X & 0x000FFFFF); + + /* Read two nearest output values from the index */ + x1 = pYData[(rI) + nCols * (cI)]; + x2 = pYData[(rI) + nCols * (cI) + 1u]; + + + /* 20 bits for the fractional part */ + /* yfract should be in 12.20 format */ + yfract = (Y & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y1 = pYData[(rI) + nCols * (cI + 1)]; + y2 = pYData[(rI) + nCols * (cI + 1) + 1u]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */ + + /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */ + /* convert 13.35 to 13.31 by right shifting and out is in 1.31 */ + out = (q31_t) (((q63_t) x1 * (0xFFFFF - xfract)) >> 4u); + acc = ((q63_t) out * (0xFFFFF - yfract)); + + /* x2 * (xfract) * (1-yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) x2 * (0xFFFFF - yfract)) >> 4u); + acc += ((q63_t) out * (xfract)); + + /* y1 * (1 - xfract) * (yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) y1 * (0xFFFFF - xfract)) >> 4u); + acc += ((q63_t) out * (yfract)); + + /* y2 * (xfract) * (yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) y2 * (xfract)) >> 4u); + acc += ((q63_t) out * (yfract)); + + /* acc is in 13.51 format and down shift acc by 36 times */ + /* Convert out to 1.15 format */ + return (acc >> 36); + + } + + /** + * @brief Q7 bilinear interpolation. + * @param[in,out] *S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + + __STATIC_INLINE q7_t arm_bilinear_interp_q7( + arm_bilinear_interp_instance_q7 * S, + q31_t X, + q31_t Y) + { + q63_t acc = 0; /* output */ + q31_t out; /* Temporary output */ + q31_t xfract, yfract; /* X, Y fractional parts */ + q7_t x1, x2, y1, y2; /* Nearest output values */ + int32_t rI, cI; /* Row and column indices */ + q7_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & 0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & 0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if(rI < 0 || rI > (S->numRows-1) || cI < 0 || cI > ( S->numCols-1)) + { + return(0); + } + + /* 20 bits for the fractional part */ + /* xfract should be in 12.20 format */ + xfract = (X & 0x000FFFFF); + + /* Read two nearest output values from the index */ + x1 = pYData[(rI) + nCols * (cI)]; + x2 = pYData[(rI) + nCols * (cI) + 1u]; + + + /* 20 bits for the fractional part */ + /* yfract should be in 12.20 format */ + yfract = (Y & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y1 = pYData[(rI) + nCols * (cI + 1)]; + y2 = pYData[(rI) + nCols * (cI + 1) + 1u]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */ + out = ((x1 * (0xFFFFF - xfract))); + acc = (((q63_t) out * (0xFFFFF - yfract))); + + /* x2 * (xfract) * (1-yfract) in 2.22 and adding to acc */ + out = ((x2 * (0xFFFFF - yfract))); + acc += (((q63_t) out * (xfract))); + + /* y1 * (1 - xfract) * (yfract) in 2.22 and adding to acc */ + out = ((y1 * (0xFFFFF - xfract))); + acc += (((q63_t) out * (yfract))); + + /* y2 * (xfract) * (yfract) in 2.22 and adding to acc */ + out = ((y2 * (yfract))); + acc += (((q63_t) out * (xfract))); + + /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */ + return (acc >> 40); + + } + + /** + * @} end of BilinearInterpolate group + */ + + + + + + +#ifdef __cplusplus +} +#endif + + +#endif /* _ARM_MATH_H */ + + +/** + * + * End of file. + */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cm4.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cm4.h new file mode 100644 index 000000000..ef818e4d1 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cm4.h @@ -0,0 +1,1689 @@ +/**************************************************************************//** + * @file core_cm4.h + * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File + * @version V3.00 + * @date 03. February 2012 + * + * @note + * Copyright (C) 2009-2012 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM4_H_GENERIC +#define __CORE_CM4_H_GENERIC + +/** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** \ingroup Cortex_M4 + @{ + */ + +/* CMSIS CM4 definitions */ +#define __CM4_CMSIS_VERSION_MAIN (0x03) /*!< [31:16] CMSIS HAL main version */ +#define __CM4_CMSIS_VERSION_SUB (0x00) /*!< [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__ ) + /* add preprocessor checks to define __FPU_USED */ + #define __FPU_USED 0 +#endif + +#include /* standard types definitions */ +#include /* Core Instruction Access */ +#include /* Core Function Access */ +#include /* Compiler specific SIMD Intrinsics */ + +#endif /* __CORE_CM4_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM4_H_DEPENDANT +#define __CORE_CM4_H_DEPENDANT + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM4_REV + #define __CM4_REV 0x0000 + #warning "__CM4_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0 + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0 + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 4 + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0 + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/*@} end of group Cortex_M4 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ +#else + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ +#endif + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + + +/** \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + + +/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +#else + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ +#endif + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + + +/** \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/*@} end of group CMSIS_CORE */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IO uint32_t ISER[8]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24]; + __IO uint32_t ICER[8]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24]; + __IO uint32_t ISPR[8]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24]; + __IO uint32_t ICPR[8]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24]; + __IO uint32_t IABR[8]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56]; + __IO uint8_t IP[240]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644]; + __O uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0 /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL << NVIC_STIR_INTID_Pos) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IO uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IO uint8_t SHP[12]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IO uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IO uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IO uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IO uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IO uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IO uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __I uint32_t PFR[2]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __I uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __I uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __I uint32_t MMFR[4]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __I uint32_t ISAR[5]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5]; + __IO uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Registers Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* SCB Hard Fault Status Registers Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1]; + __I uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IO uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0 /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISOOFP_Pos 9 /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8 /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2 /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1 /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0 /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __O union + { + __O uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __O uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __O uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864]; + __IO uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15]; + __IO uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15]; + __IO uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ +} 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_TXENA_Pos 3 /*!< ITM TCR: TXENA Position */ +#define ITM_TCR_TXENA_Msk (1UL << ITM_TCR_TXENA_Pos) /*!< ITM TCR: TXENA 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 */ + +/*@}*/ /* 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_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0 /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL << MPU_RASR_ENABLE_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if (__FPU_PRESENT == 1) +/** \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1]; + __IO uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IO uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IO uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __I uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __I uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register */ +#define FPU_FPCCR_ASPEN_Pos 31 /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30 /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8 /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6 /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5 /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4 /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3 /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1 /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0 /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL << FPU_FPCCR_LSPACT_Pos) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register */ +#define FPU_FPCAR_ADDRESS_Pos 3 /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register */ +#define FPU_FPDSCR_AHP_Pos 26 /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25 /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24 /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22 /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28 /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24 /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20 /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16 /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12 /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8 /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4 /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0 /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL << FPU_MVFR0_A_SIMD_registers_Pos) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28 /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24 /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4 /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0 /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL << FPU_MVFR1_FtZ_mode_Pos) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ +#endif + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IO uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __O uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IO uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IO uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register */ +#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Cortex-M4 Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if (__MPU_PRESENT == 1) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#if (__FPU_PRESENT == 1) + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +/** \brief Set Priority Grouping + + The function sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** \brief Get Priority Grouping + + The function reads the priority grouping field from the NVIC Interrupt Controller. + + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void) +{ + return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ +} + + +/** \brief Enable External Interrupt + + The function enables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ +/* NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); enable interrupt */ + NVIC->ISER[(uint32_t)((int32_t)IRQn) >> 5] = (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); /* enable interrupt */ +} + + +/** \brief Disable External Interrupt + + The function disables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ +} + + +/** \brief Get Pending Interrupt + + The function reads the pending register in the NVIC and returns the pending bit + for the specified interrupt. + + \param [in] IRQn Interrupt number. + + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + */ +__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ +} + + +/** \brief Set Pending Interrupt + + The function sets the pending bit of an external interrupt. + + \param [in] IRQn Interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ +} + + +/** \brief Clear Pending Interrupt + + The function clears the pending bit of an external interrupt. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + + +/** \brief Get Active Interrupt + + The function reads the active register in NVIC and returns the active bit. + + \param [in] IRQn Interrupt number. + + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + */ +__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) +{ + return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ +} + + +/** \brief Set Interrupt Priority + + The function sets the priority of an interrupt. + + \note The priority cannot be set for every core interrupt. + + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + */ +__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M System Interrupts */ + else { + NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ +} + + +/** \brief Get Interrupt Priority + + The function reads the priority of an interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented + priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M system interrupts */ + else { + return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + +/** \brief Encode Priority + + The function encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the samllest possible priority group is set. + + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + return ( + ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | + ((SubPriority & ((1 << (SubPriorityBits )) - 1))) + ); +} + + +/** \brief Decode Priority + + The function decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. + + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); + *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); +} + + +/** \brief System Reset + + The function initiates a system reset request to reset the MCU. + */ +__STATIC_INLINE void NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if (__Vendor_SysTickConfig == 0) + +/** \brief System Tick Configuration + + The function initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + + \param [in] ticks Number of ticks between two interrupts. + + \return 0 Function succeeded. + \return 1 Function failed. + + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 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/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cm4_simd.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cm4_simd.h new file mode 100644 index 000000000..34b395a04 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cm4_simd.h @@ -0,0 +1,649 @@ +/**************************************************************************//** + * @file core_cm4_simd.h + * @brief CMSIS Cortex-M4 SIMD Header File + * @version V3.00 + * @date 19. January 2012 + * + * @note + * Copyright (C) 2010-2012 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#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) ) + + +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + + +#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +#include + +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + + +#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ +/* TI CCS specific functions */ + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +#include + +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + + +#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SMLALD(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +#define __SMLALDX(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SMLSLD(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +#define __SMLSLDX(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +/*-- 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/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cmFunc.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cmFunc.h new file mode 100644 index 000000000..1991ae3d9 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cmFunc.h @@ -0,0 +1,616 @@ +/**************************************************************************//** + * @file core_cmFunc.h + * @brief CMSIS Cortex-M Core Function Access Header File + * @version V3.00 + * @date 19. January 2012 + * + * @note + * Copyright (C) 2009-2012 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#ifndef __CORE_CMFUNC_H +#define __CORE_CMFUNC_H + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +#if (__ARMCC_VERSION < 400677) + #error "Please use ARM Compiler Toolchain V4.0.677 or later!" +#endif + +/* intrinsic void __enable_irq(); */ +/* intrinsic void __disable_irq(); */ + +/** \brief Get Control Register + + This function returns the content of the Control Register. + + \return Control Register value + */ +__STATIC_INLINE uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __ASM("control"); + return(__regControl); +} + + +/** \brief Set Control Register + + This function writes the given value to the Control Register. + + \param [in] control Control Register value to set + */ +__STATIC_INLINE void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __ASM("control"); + __regControl = control; +} + + +/** \brief Get IPSR Register + + This function returns the content of the IPSR Register. + + \return IPSR Register value + */ +__STATIC_INLINE uint32_t __get_IPSR(void) +{ + register uint32_t __regIPSR __ASM("ipsr"); + return(__regIPSR); +} + + +/** \brief Get APSR Register + + This function returns the content of the APSR Register. + + \return APSR Register value + */ +__STATIC_INLINE uint32_t __get_APSR(void) +{ + register uint32_t __regAPSR __ASM("apsr"); + return(__regAPSR); +} + + +/** \brief Get xPSR Register + + This function returns the content of the xPSR Register. + + \return xPSR Register value + */ +__STATIC_INLINE uint32_t __get_xPSR(void) +{ + register uint32_t __regXPSR __ASM("xpsr"); + return(__regXPSR); +} + + +/** \brief Get Process Stack Pointer + + This function returns the current value of the Process Stack Pointer (PSP). + + \return PSP Register value + */ +__STATIC_INLINE uint32_t __get_PSP(void) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + return(__regProcessStackPointer); +} + + +/** \brief Set Process Stack Pointer + + This function assigns the given value to the Process Stack Pointer (PSP). + + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + __regProcessStackPointer = topOfProcStack; +} + + +/** \brief Get Main Stack Pointer + + This function returns the current value of the Main Stack Pointer (MSP). + + \return MSP Register value + */ +__STATIC_INLINE uint32_t __get_MSP(void) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + return(__regMainStackPointer); +} + + +/** \brief Set Main Stack Pointer + + This function assigns the given value to the Main Stack Pointer (MSP). + + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + __regMainStackPointer = topOfMainStack; +} + + +/** \brief Get Priority Mask + + This function returns the current state of the priority mask bit from the Priority Mask Register. + + \return Priority Mask value + */ +__STATIC_INLINE uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __ASM("primask"); + return(__regPriMask); +} + + +/** \brief Set Priority Mask + + This function assigns the given value to the Priority Mask Register. + + \param [in] priMask Priority Mask + */ +__STATIC_INLINE void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __ASM("primask"); + __regPriMask = (priMask); +} + + +#if (__CORTEX_M >= 0x03) + +/** \brief Enable FIQ + + This function enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __enable_fault_irq __enable_fiq + + +/** \brief Disable FIQ + + This function disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq + + +/** \brief Get Base Priority + + This function returns the current value of the Base Priority register. + + \return Base Priority register value + */ +__STATIC_INLINE uint32_t __get_BASEPRI(void) +{ + register uint32_t __regBasePri __ASM("basepri"); + return(__regBasePri); +} + + +/** \brief Set Base Priority + + This function assigns the given value to the Base Priority register. + + \param [in] basePri Base Priority value to set + */ +__STATIC_INLINE void __set_BASEPRI(uint32_t basePri) +{ + register uint32_t __regBasePri __ASM("basepri"); + __regBasePri = (basePri & 0xff); +} + + +/** \brief Get Fault Mask + + This function returns the current value of the Fault Mask register. + + \return Fault Mask register value + */ +__STATIC_INLINE uint32_t __get_FAULTMASK(void) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + return(__regFaultMask); +} + + +/** \brief Set Fault Mask + + This function assigns the given value to the Fault Mask register. + + \param [in] faultMask Fault Mask value to set + */ +__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + __regFaultMask = (faultMask & (uint32_t)1); +} + +#endif /* (__CORTEX_M >= 0x03) */ + + +#if (__CORTEX_M == 0x04) + +/** \brief Get FPSCR + + This function returns the current value of the Floating Point Status/Control register. + + \return Floating Point Status/Control register value + */ +__STATIC_INLINE uint32_t __get_FPSCR(void) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + register uint32_t __regfpscr __ASM("fpscr"); + return(__regfpscr); +#else + return(0); +#endif +} + + +/** \brief Set FPSCR + + This function assigns the given value to the Floating Point Status/Control register. + + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_INLINE void __set_FPSCR(uint32_t fpscr) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + register uint32_t __regfpscr __ASM("fpscr"); + __regfpscr = (fpscr); +#endif +} + +#endif /* (__CORTEX_M == 0x04) */ + + +#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +#include + + +#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ +/* TI CCS specific functions */ + +#include + + +#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/** \brief Enable IRQ Interrupts + + This function enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i"); +} + + +/** \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"); +} + + +/** \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) ); +} + + +/** \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) ); +} + + +/** \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) ); +} + + +/** \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) ); +} + + +#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"); +} + + +/** \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"); +} + + +/** \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) ); +} + + +/** \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) ); +} + +#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; + + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + 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) + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) ); +#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/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cmInstr.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cmInstr.h new file mode 100644 index 000000000..7981634e7 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cmInstr.h @@ -0,0 +1,618 @@ +/**************************************************************************//** + * @file core_cmInstr.h + * @brief CMSIS Cortex-M Core Instruction Access Header File + * @version V3.00 + * @date 07. February 2012 + * + * @note + * Copyright (C) 2009-2012 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#ifndef __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 + */ +__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) +{ + rev16 r0, r0 + bx lr +} + + +/** \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__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value) +{ + revsh r0, r0 + bx lr +} + + +/** \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 + + +#if (__CORTEX_M >= 0x03) + +/** \brief Reverse bit order of value + + This function reverses the bit order of the given value. + + \param [in] value Value to reverse + \return Reversed value + */ +#define __RBIT __rbit + + +/** \brief LDR Exclusive (8 bit) + + This function performs a exclusive LDR command for 8 bit value. + + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) + + +/** \brief LDR Exclusive (16 bit) + + This function performs a exclusive LDR command for 16 bit values. + + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) + + +/** \brief LDR Exclusive (32 bit) + + This function performs a exclusive LDR command for 32 bit values. + + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) + + +/** \brief STR Exclusive (8 bit) + + This function performs a exclusive STR command for 8 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXB(value, ptr) __strex(value, ptr) + + +/** \brief STR Exclusive (16 bit) + + This function performs a exclusive STR command for 16 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXH(value, ptr) __strex(value, ptr) + + +/** \brief STR Exclusive (32 bit) + + This function performs a exclusive STR command for 32 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXW(value, ptr) __strex(value, ptr) + + +/** \brief Remove the exclusive lock + + This function removes the exclusive lock which is created by LDREX. + + */ +#define __CLREX __clrex + + +/** \brief Signed Saturate + + This function saturates a signed value. + + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __ssat + + +/** \brief Unsigned Saturate + + This function saturates an unsigned value. + + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __usat + + +/** \brief Count leading zeros + + This function counts the number of leading zeros of a data value. + + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ __clz + +#endif /* (__CORTEX_M >= 0x03) */ + + + +#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +#include + + +#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ +/* TI CCS specific functions */ + +#include + + +#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/** \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) +{ + uint32_t result; + + __ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + + +/** \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" : "=r" (result) : "r" (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) +{ + uint32_t result; + + __ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + + +/** \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) +{ + + __ASM volatile ("ror %0, %0, %1" : "+r" (op1) : "r" (op2) ); + return(op1); +} + + +#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) +{ + uint8_t result; + + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) ); + 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) +{ + uint16_t result; + + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) ); + 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) : "r" (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) : "r" (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) : "r" (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) : "r" (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"); +} + + +/** \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) +{ + uint8_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/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/README.txt b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/README.txt new file mode 100644 index 000000000..efa2ad16e --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/README.txt @@ -0,0 +1,37 @@ +* ------------------------------------------------------------------- +* Copyright (C) 2011 ARM Limited. All rights reserved. +* +* Date: 11 October 2011 +* Revision: V3.00 +* +* Project: Cortex Microcontroller Software Interface Standard (CMSIS) +* Title: Release Note for CMSIS +* +* ------------------------------------------------------------------- + + +NOTE - Open the index.html file to access CMSIS documentation + + +The Cortex Microcontroller Software Interface Standard (CMSIS) provides a single standard across all +Cortex-Mx processor series vendors. It enables code re-use and code sharing across software projects +and reduces time-to-market for new embedded applications. + +CMSIS is released under the terms of the end user license agreement ("CMSIS END USER LICENCE AGREEMENT.pdf"). +Any user of the software package is bound to the terms and conditions of the end user license agreement. + + +You will find the following sub-directories: + +Documentation - Contains CMSIS documentation. + +DSP_Lib - MDK project files, Examples and source files etc.. to build the + CMSIS DSP Software Library for Cortex-M0, Cortex-M3, Cortex-M4 processors. + +Include - CMSIS Core Support and CMSIS DSP Include Files. + +Lib - CMSIS DSP Libraries. + +RTOS - CMSIS RTOS API template header file. + +SVD - CMSIS SVD Schema files and Conversion Utility. diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/license.txt b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/license.txt new file mode 100644 index 000000000..b220574a5 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/license.txt @@ -0,0 +1,167 @@ +END USER LICENCE AGREEMENT FOR THE CORTEX MICROCONTROLLER SOFTWARE INTERFACE +STANDARD (CMSIS) SPECIFICATION AND SOFTWARE + +THIS END USER LICENCE AGREEMENT ("LICENCE") IS A LEGAL AGREEMENT BETWEEN YOU (EITHER A +SINGLE INDIVIDUAL, OR SINGLE LEGAL ENTITY) AND ARM LIMITED ("ARM") FOR THE USE OF THE +CMSIS SPECIFICATION, EXAMPLE CODE, DSP LIBRARY SPECIFICATION AND DSP LIBRARY +IMPLEMENTATION AS SUCH TERMS ARE DEFINED BELOW (COLLECTIVELY, THE "ARM +DELIVERABLES"). ARM IS ONLY WILLING TO LICENSE THE ARM DELIVERABLES TO YOU ON CONDITION +THAT YOU ACCEPT ALL OF THE TERMS IN THIS LICENCE. BY CLICKING "I AGREE", OR BY INSTALLING +OR OTHERWISE USING OR COPYING THE ARM DELIVERABLES YOU INDICATE THAT YOU AGREE TO +BE BOUND BY ALL THE TERMS OF THIS LICENCE. IF YOU DO NOT AGREE TO THE TERMS OF THIS +LICENCE, ARM IS UNWILLING TO LICENSE YOU TO USE THE ARM DELIVERABLES AND YOU MAY NOT +INSTALL, USE OR COPY THE ARM DELIVERABLES. + +"CMSIS Specification" means any documentation and C programming language files defining the application +programming interface, naming and coding conventions of the Cortex Microcontroller Software Interface +Standard (CMSIS) as well as the System View Description (SVD) documentation and associated XML schema +file. Notwithstanding the foregoing, "CMSIS Specification" shall not include (i) the implementation of other +published specifications referenced in the CMSIS Specification; (ii) any enabling technologies that may be +necessary to make or use any product or portion thereof that complies with the CMSIS Specification, but are not +themselves expressly set forth in the CMSIS Specification (e.g. compiler front ends, code generators, back ends, +libraries or other compiler, assembler or linker technologies; validation or debug software or hardware; +applications, operating system or driver software; RISC architecture; processor microarchitecture); (iii) +maskworks and physical layouts of integrated circuit designs; or (iv) RTL or other high level representations of +integrated circuit designs. + +"DSP Library Implementation" means any C programming language source code implementing the functionality +of the digital signal processor (DSP) algorithms and the application programming interface as defined in the DSP +Library Specification. The DSP Library Implementation makes use of CMSIS application programming interface +and therefore is targeted at Cortex-M class processors. + +"DSP Library Specification" means the DSP library documentation and C programming language file defining the +application programming interface of the DSP Library Implementation. Notwithstanding the foregoing, "DSP +Library Specification" shall not include (i) the implementation of other published specifications referenced in the +DSP Library Specification; (ii) any enabling technologies that may be necessary to make or use any product or +portion thereof that complies with the DSP Library Specification, but are not themselves expressly set forth in the +DSP Library Specification (e.g. compiler front ends, code generators, back ends, libraries or other compiler, +assembler or linker technologies; validation or debug software or hardware; applications, operating system or +driver software; RISC architecture; processor microarchitecture); (iii) maskworks and physical layouts of +integrated circuit designs; or (iv) RTL or other high level representations of integrated circuit designs. + +"Example Code" means any files in C, C++ or ARM assembly programming languages, associated project and +configuration files that demonstrate the usage of the CMSIS Specification, the DSP Library Specification and the +DSP Library Implementation, for microprocessors or device specific software applications that are for use with +microprocessors. + +1. LICENCE GRANTS. + +1.1 ARM hereby grants to you, subject to the terms and conditions of this Licence, a non-exclusive, nontransferable +licence, to; + +(i) use and copy the CMSIS Specification for the purpose of developing, having developed, manufacturing, +having manufactured, offering to sell, selling, supplying or otherwise distributing products that comply with the +CMSIS Specification, provided that you preserve any copyright notices which are included with, or in, the CMSIS +Specification and provided that you do not use ARM's name, logo or trademarks to market such products; + +(ii) use, copy, and modify (solely to the extent necessary to incorporate the whole or any part of the DSP Library +Specification into your documentation), the DSP Library Specification, for the purpose of developing, having +developed, manufacturing, having manufactured, offering to sell, selling, supplying or otherwise distributing +products that comply with the DSP Library Specification, and distribute and have distributed any documentation +created by or for you that has been derived from the DSP Library Specification with such products, provided that +you preserve any copyright notices which are included with, or in, the DSP Library Specification and provided that +you do not use ARM's name, logo or trademarks to market such products; + +(iii) use, copy, modify and sublicense the Example Code solely for the purpose of developing, having developed, +manufacturing, having manufactured, offering to sell, selling, supplying or otherwise distributing products that +comply with either or both the CMSIS Specification and the DSP Library Specification, provided that you preserve +any copyright notices which are included with, or in, the Example Code and that you do not use ARM's name, +logo or trademarks to market such products; + +(iv) use, copy and modify (provided that the logical functionality and the application programming interface of the +DSP Library Implementation are maintained) the DSP Library Implementation, solely for the purposes of +developing; (a) software applications for use with microprocessors manufactured or simulated under licence from +ARM ("Software Applications"); and (b) tools that are designed to develop software programs for use with +microprocessors manufactured or simulated under licence from ARM ("Tools"); and + +(v) subject to clause 1.1(vi) below; (a) distribute and sublicense the use of the DSP Library Implementation +(including any modified forms thereof created under Clause 1.1(iv) above) in binary or source format, solely as +incorporated into Software Library Applications and Tools to third parties; and (b) sublicense to such third parties +the right to use and copy the Tools for the purposes of developing and distribute software programs for use with +microprocessors manufactured or simulated under licence from ARM. + +(vi) CONDITIONS ON REDISTRIBUTION: If you choose to redistribute the whole or any part of the DSP Library +Implementation as incorporated into Software Library Applications or Tools, you agree to; (a) ensure that the +DSP Library Implementation is licensed for use only as part of Software Library Applications and Tools and only +for use with microprocessors manufactured or simulated under licence from ARM; (b) not to use ARM's name, +logo or trademarks to market Software Applications and Tools; and (c) include valid copyright notices on +Software Applications and Tools, and preserve any copyright notices which are included with, or in, the DSP +Library Implementation. + +2. RESTRICTIONS ON USE OF THE ARM DELIVERABLES. + +PERMITTED USERS: The ARM Deliverables shall be used only by you (either a single individual, or single legal +entity) your employees, or by your on-site bona fide sub-contractors for whose acts and omissions you hereby +agree to be responsible to ARM for to the same extent as you are for your employees, and provided always that +such sub-contractors; (i) are contractually obligated to use the ARM Deliverables only for your benefit, and (ii) +agree to assign all their work product and any rights they create therein in the supply of such work to you. +COPYRIGHT AND RESERVATION OF RIGHTS: The ARM Deliverables are owned by ARM or its licensors and +are protected by copyright and other intellectual property laws and international treaties. The ARM Deliverables +are licensed not sold. Except as expressly licensed herein, you acquire no right, title or interest in the ARM +Deliverables or any intellectual property therein. In no event shall the licences granted herein be construed as +granting you, expressly or by implication, estoppels or otherwise, a licence to use any ARM technology except +the ARM Deliverables. + +3. SUPPORT. + +ARM is not obligated to support the ARM Deliverables but may do so entirely at ARM's discretion. + +4. NO WARRANTY + +YOU AGREE THAT THE ARM DELIVERABLES ARE LICENSED "AS IS", AND THAT ARM EXPRESSLY +DISCLAIMS ALL REPRESENTATIONS, WARRANTIES, CONDITIONS OR OTHER TERMS, EXPRESS, +IMPLIED OR STATUTORY, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NONINFRINGEMENT, +SATISFACTORY QUALITY, AND FITNESS FOR A PARTICULAR PURPOSE. THE ARM +DELIVERABLES MAY CONTAIN ERRORS. ARM RESERVES THE RIGHT TO INCORPORATE +MODIFICATIONS TO THE ARM DELIVERABLES IN LATER REVISIONS OF THEM, AND TO MAKE +IMPROVEMENTS OR CHANGES IN THE ARM DELIVERABLES AT ANY TIME. + +5. LIMITATION OF LIABILITY. + +THE MAXIMUM LIABILITY OF ARM TO YOU IN AGGREGATE FOR ALL CLAIMS MADE AGAINST ARM IN +CONTRACT, TORT OR OTHERWISE UNDER OR IN CONNECTION WITH THE SUBJECT MATTER OF THIS +LICENCE SHALL NOT EXCEED THE GREATER OF (I) THE TOTAL OF SUMS PAID BY YOU TO ARM (IF +ANY) FOR THIS LICENCE AND (II) US$10.00. THE LIMITATIONS, EXCLUSIONS AND DISCLAIMERS IN +THIS LICENCE SHALL APPLY TO THE MAXIMUM EXTENT ALLOWED BY APPLICABLE LAW. + +6. U.S. GOVERNMENT END USERS. +US Government Restrictions: Use, duplication, reproduction, release, modification, disclosure or transfer of this +commercial product and accompanying documentation is restricted in accordance with the terms of this Licence. + +7. TERM AND TERMINATION. + +7.1 This Licence shall remain in force until terminated in accordance with the terms of Clause 7.2 or Clause 7.3 +below. + +7.2 Without prejudice to any of its other rights if you are in breach of any of the terms and conditions of this +Licence then ARM may terminate this Licence immediately upon giving written notice to you. You may terminate +this Licence at any time. + +7.3 This Licence shall immediately terminate and shall be unavailable to you if you or any party affiliated to you +asserts any patents against ARM, ARM affiliates, third parties who have a valid licence from ARM for the ARM +Deliverables, or any customers or distributors of any of them based upon a claim that your (or your affiliate) +patent is Necessary to implement the CMSIS Specification or DSP Library Specification. In this Licence; (i) +"affiliate" means any entity controlling, controlled by or under common control with a party (in fact or in law, via +voting securities, management control or otherwise) and "affiliated" shall be construed accordingly; (ii) "assert" +means to allege infringement in legal or administrative proceedings, or proceedings before any other competent +trade, arbitral or international authority; (iii) "Necessary" means with respect to any claims of any patent, those +claims which, without the appropriate permission of the patent owner, will be infringed when implementing the +CMSIS Specification or DSP Library Specification because no alternative, commercially reasonable, noninfringing +way of implementing the CMSIS Specification or DSP Library Specification is known. + +7.4 Upon termination of this Licence, you shall stop using the ARM Deliverables and destroy all copies of the +ARM Deliverables in your possession. The provisions of clauses 5, 6, 7, and 8 shall survive termination of this +Licence. + +8. GENERAL. + +This Licence is governed by English Law. Except where ARM agrees otherwise in a written contract signed by +you and ARM, this is the only agreement between you and ARM relating to the ARM Deliverables and it may only +be modified by written agreement between you and ARM. Except as expressly agreed in writing, this Licence +may not be modified by purchase orders, advertising or other representation by any person. If any clause or +sentence in this Licence is held by a court of law to be illegal or unenforceable the remaining provisions of this +Licence shall not be affected thereby. The failure by ARM to enforce any of the provisions of this Licence, unless +waived in writing, shall not constitute a waiver of ARM's rights to enforce such provision or any other provision of +this Licence in the future. This Licence may not be assigned without the prior written consent of ARM. + +ARM contract reference LEC-PRE-00489 diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/IntQueueTimer.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/IntQueueTimer.c new file mode 100644 index 000000000..fbcd6cdc3 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/IntQueueTimer.c @@ -0,0 +1,228 @@ +/* + FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. + All rights reserved + + VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. + + This file is part of the FreeRTOS distribution. + + FreeRTOS is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License (version 2) as published by the + Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. + + >>! NOTE: The modification to the GPL is included to allow you to !<< + >>! distribute a combined work that includes FreeRTOS without being !<< + >>! obliged to provide the source code for proprietary components !<< + >>! outside of the FreeRTOS kernel. !<< + + FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. Full license text is available on the following + link: http://www.freertos.org/a00114.html + + 1 tab == 4 spaces! + + *************************************************************************** + * * + * Having a problem? Start by reading the FAQ "My application does * + * not run, what could be wrong?". Have you defined configASSERT()? * + * * + * http://www.FreeRTOS.org/FAQHelp.html * + * * + *************************************************************************** + + *************************************************************************** + * * + * FreeRTOS provides completely free yet professionally developed, * + * robust, strictly quality controlled, supported, and cross * + * platform software that is more than just the market leader, it * + * is the industry's de facto standard. * + * * + * Help yourself get started quickly while simultaneously helping * + * to support the FreeRTOS project by purchasing a FreeRTOS * + * tutorial book, reference manual, or both: * + * http://www.FreeRTOS.org/Documentation * + * * + *************************************************************************** + + *************************************************************************** + * * + * Investing in training allows your team to be as productive as * + * possible as early as possible, lowering your overall development * + * cost, and enabling you to bring a more robust product to market * + * earlier than would otherwise be possible. Richard Barry is both * + * the architect and key author of FreeRTOS, and so also the world's * + * leading authority on what is the world's most popular real time * + * kernel for deeply embedded MCU designs. Obtaining your training * + * from Richard ensures your team will gain directly from his in-depth * + * product knowledge and years of usage experience. Contact Real Time * + * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * + * by Richard Barry: http://www.FreeRTOS.org/contact + * * + *************************************************************************** + + *************************************************************************** + * * + * You are receiving this top quality software for free. Please play * + * fair and reciprocate by reporting any suspected issues and * + * participating in the community forum: * + * http://www.FreeRTOS.org/support * + * * + * Thank you! * + * * + *************************************************************************** + + http://www.FreeRTOS.org - Documentation, books, training, latest versions, + license and Real Time Engineers Ltd. contact details. + + http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, + including FreeRTOS+Trace - an indispensable productivity tool, a DOS + compatible FAT file system, and our tiny thread aware UDP/IP stack. + + http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. + Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. + + http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High + Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS + licenses offer ticketed support, indemnification and commercial middleware. + + http://www.SafeRTOS.com - High Integrity Systems also provide a safety + engineered and independently SIL3 certified version for use in safety and + mission critical applications that require provable dependability. + + 1 tab == 4 spaces! +*/ + +/* + * Provides the two timers sources for the standard demo IntQueue test. Also + * includes a high frequency timer to maximise the interrupt nesting achieved. + */ + +/* Standard includes. */ +#include + +/* Scheduler includes. */ +#include "FreeRTOS.h" +#include "task.h" + +/* Demo includes. */ +#include "IntQueueTimer.h" +#include "IntQueue.h" + +/* System includes. */ +#include "board.h" +#include "asf.h" + +/* The frequencies at which the first two timers expire are slightly offset to +ensure they don't remain synchronised. The frequency of the highest priority +interrupt is 20 times faster so really hammers the interrupt entry and exit +code. */ +#define tmrTIMER_0_FREQUENCY ( 2000UL ) +#define tmrTIMER_1_FREQUENCY ( 1003UL ) +#define tmrTIMER_2_FREQUENCY ( 20000UL ) + +/* Priorities used by the timer interrupts - these are set differently to make +nesting likely/common. The high frequency timer operates above the max +system call interrupt priority, but does not use the RTOS API. */ +#define tmrTIMER_0_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ) +#define tmrTIMER_1_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY + 1 ) +#define tmrTIMER_2_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY - 1 ) + +/* The channels used within the TC0 timer. */ +#define tmrTIMER_0_CHANNEL ( 0 ) +#define tmrTIMER_1_CHANNEL ( 1 ) +#define tmrTIMER_2_CHANNEL ( 2 ) + +/* TC register bit specifics. */ +#define tmrTRIGGER_ON_RC ( 1UL << 4UL ) +#define trmDIVIDER ( 128 ) + +/*-----------------------------------------------------------*/ + +/* Handers for the timer interrupts. */ +void TC0_Handler( void ); +void TC1_Handler( void ); +void TC2_Handler( void ); + +/*-----------------------------------------------------------*/ + +/* Incremented by the high frequency timer, which operates above the max +syscall interrupt priority. This is just for inspection. */ +volatile uint32_t ulHighFrequencyTimerInterrupts = 0; + +/*-----------------------------------------------------------*/ + +void vInitialiseTimerForIntQueueTest( void ) +{ +uint32_t ulInputFrequency; + + /* Calculate the frequency of the clock that feeds the TC. */ + ulInputFrequency = configCPU_CLOCK_HZ; + ulInputFrequency /= trmDIVIDER; + + /* Three channels are used - two that run at or under + configMAX_SYSCALL_INTERRUPT_PRIORITY, and one that runs over + configMAX_SYSCALL_INTERRUPT_PRIORITY. */ + sysclk_enable_peripheral_clock( ID_TC0 ); + sysclk_enable_peripheral_clock( ID_TC1 ); + sysclk_enable_peripheral_clock( ID_TC2 ); + + /* Init TC channels to waveform mode - up mode clean on RC match. */ + tc_init( TC0, tmrTIMER_0_CHANNEL, TC_CMR_TCCLKS_TIMER_CLOCK4 | TC_CMR_WAVE | TC_CMR_ACPC_CLEAR | TC_CMR_CPCTRG ); + tc_init( TC0, tmrTIMER_1_CHANNEL, TC_CMR_TCCLKS_TIMER_CLOCK4 | TC_CMR_WAVE | TC_CMR_ACPC_CLEAR | TC_CMR_CPCTRG ); + tc_init( TC0, tmrTIMER_2_CHANNEL, TC_CMR_TCCLKS_TIMER_CLOCK4 | TC_CMR_WAVE | TC_CMR_ACPC_CLEAR | TC_CMR_CPCTRG ); + + tc_enable_interrupt( TC0, tmrTIMER_0_CHANNEL, tmrTRIGGER_ON_RC ); + tc_enable_interrupt( TC0, tmrTIMER_1_CHANNEL, tmrTRIGGER_ON_RC ); + tc_enable_interrupt( TC0, tmrTIMER_2_CHANNEL, tmrTRIGGER_ON_RC ); + + tc_write_rc( TC0, tmrTIMER_0_CHANNEL, ( ulInputFrequency / tmrTIMER_0_FREQUENCY ) ); + tc_write_rc( TC0, tmrTIMER_1_CHANNEL, ( ulInputFrequency / tmrTIMER_1_FREQUENCY ) ); + tc_write_rc( TC0, tmrTIMER_2_CHANNEL, ( ulInputFrequency / tmrTIMER_2_FREQUENCY ) ); + + NVIC_SetPriority( TC0_IRQn, tmrTIMER_0_PRIORITY ); + NVIC_SetPriority( TC1_IRQn, tmrTIMER_1_PRIORITY ); + NVIC_SetPriority( TC2_IRQn, tmrTIMER_2_PRIORITY ); + + NVIC_EnableIRQ( TC0_IRQn ); + NVIC_EnableIRQ( TC1_IRQn ); + NVIC_EnableIRQ( TC2_IRQn ); + + tc_start( TC0, tmrTIMER_0_CHANNEL ); + tc_start( TC0, tmrTIMER_1_CHANNEL ); + tc_start( TC0, tmrTIMER_2_CHANNEL ); +} +/*-----------------------------------------------------------*/ + +void TC0_Handler( void ) +{ + /* Handler for the first timer in the IntQueue test. Was the interrupt + caused by a compare on RC? */ + if( ( tc_get_status( TC0, tmrTIMER_0_CHANNEL ) & ~TC_SR_CPCS ) != 0 ) + { + portYIELD_FROM_ISR( xFirstTimerHandler() ); + } +} +/*-----------------------------------------------------------*/ + +void TC1_Handler( void ) +{ + /* Handler for the second timer in the IntQueue test. Was the interrupt + caused by a compare on RC? */ + if( ( tc_get_status( TC0, tmrTIMER_1_CHANNEL ) & ~TC_SR_CPCS ) != 0 ) + { + portYIELD_FROM_ISR( xSecondTimerHandler() ); + } +} +/*-----------------------------------------------------------*/ + +void TC2_Handler( void ) +{ + /* Handler for the high frequency timer that does nothing but increment a + variable to give an indication that it is running. Was the interrupt caused + by a compare on RC? */ + if( ( tc_get_status( TC0, tmrTIMER_2_CHANNEL ) & ~TC_SR_CPCS ) != 0 ) + { + ulHighFrequencyTimerInterrupts++; + } +} diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/IntQueueTimer.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/IntQueueTimer.h new file mode 100644 index 000000000..3be63652f --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/IntQueueTimer.h @@ -0,0 +1,104 @@ +/* + FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. + All rights reserved + + VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. + + This file is part of the FreeRTOS distribution. + + FreeRTOS is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License (version 2) as published by the + Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. + + >>! NOTE: The modification to the GPL is included to allow you to !<< + >>! distribute a combined work that includes FreeRTOS without being !<< + >>! obliged to provide the source code for proprietary components !<< + >>! outside of the FreeRTOS kernel. !<< + + FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. Full license text is available on the following + link: http://www.freertos.org/a00114.html + + 1 tab == 4 spaces! + + *************************************************************************** + * * + * Having a problem? Start by reading the FAQ "My application does * + * not run, what could be wrong?". Have you defined configASSERT()? * + * * + * http://www.FreeRTOS.org/FAQHelp.html * + * * + *************************************************************************** + + *************************************************************************** + * * + * FreeRTOS provides completely free yet professionally developed, * + * robust, strictly quality controlled, supported, and cross * + * platform software that is more than just the market leader, it * + * is the industry's de facto standard. * + * * + * Help yourself get started quickly while simultaneously helping * + * to support the FreeRTOS project by purchasing a FreeRTOS * + * tutorial book, reference manual, or both: * + * http://www.FreeRTOS.org/Documentation * + * * + *************************************************************************** + + *************************************************************************** + * * + * Investing in training allows your team to be as productive as * + * possible as early as possible, lowering your overall development * + * cost, and enabling you to bring a more robust product to market * + * earlier than would otherwise be possible. Richard Barry is both * + * the architect and key author of FreeRTOS, and so also the world's * + * leading authority on what is the world's most popular real time * + * kernel for deeply embedded MCU designs. Obtaining your training * + * from Richard ensures your team will gain directly from his in-depth * + * product knowledge and years of usage experience. Contact Real Time * + * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * + * by Richard Barry: http://www.FreeRTOS.org/contact + * * + *************************************************************************** + + *************************************************************************** + * * + * You are receiving this top quality software for free. Please play * + * fair and reciprocate by reporting any suspected issues and * + * participating in the community forum: * + * http://www.FreeRTOS.org/support * + * * + * Thank you! * + * * + *************************************************************************** + + http://www.FreeRTOS.org - Documentation, books, training, latest versions, + license and Real Time Engineers Ltd. contact details. + + http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, + including FreeRTOS+Trace - an indispensable productivity tool, a DOS + compatible FAT file system, and our tiny thread aware UDP/IP stack. + + http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. + Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. + + http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High + Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS + licenses offer ticketed support, indemnification and commercial middleware. + + http://www.SafeRTOS.com - High Integrity Systems also provide a safety + engineered and independently SIL3 certified version for use in safety and + mission critical applications that require provable dependability. + + 1 tab == 4 spaces! +*/ + +#ifndef INT_QUEUE_TIMER_H +#define INT_QUEUE_TIMER_H + +void vInitialiseTimerForIntQueueTest( void ); +BaseType_t xTimer0Handler( void ); +BaseType_t xTimer1Handler( void ); + +#endif + diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/LCDUtils.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/LCDUtils.c new file mode 100644 index 000000000..3e11a5820 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/LCDUtils.c @@ -0,0 +1,174 @@ +/** + * gfx_draw_bmpfile() is provided by and copyright to Atmel Corporation with the + * following usage restrictions: + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + */ + +/* Standard includes. */ +#include + +/* Library includes. */ +#include + +/* Bitmap. */ +#include "logo_atmel.h" + +/* Chip select number to be set for LCD. */ +#define ILI93XX_LCD_CS 1 + +/* + * Initialise the LCD and output a bitmap. + */ +void vInitialiseLCD( void ); + +/* + * Output a bitmap to the LCD. + */ +static void gfx_draw_bmpfile( const uint8_t *bmpImage ); + +/*-----------------------------------------------------------*/ + +COMPILER_PACK_SET( 1 ) +struct bmpfile_header { + /** signature, must be 4D42 hex */ + uint16_t type; + /** size of BMP file in bytes (unreliable) */ + uint32_t file_size; + /** reserved, must be zero */ + uint16_t reserved1; + /** reserved, must be zero */ + uint16_t reserved2; + /** offset to start of image data in bytes */ + uint32_t offset; + /** size of BITMAPINFOHEADER structure, must be 40 */ + uint32_t header_size; + /** image width in pixels */ + uint32_t width; + /** image height in pixels */ + uint32_t height; + /** number of planes in the image, must be 1 */ + uint16_t planes; + /** number of bits per pixel (1, 4, 8, 16, 24, 32) */ + uint16_t bits; + /** compression type (0=none, 1=RLE-8, 2=RLE-4) */ + uint32_t compression; + /** size of image data in bytes (including padding) */ + uint32_t inage_size; + /** horizontal resolution in pixels per meter */ + uint32_t h_resolution; + /** vertical resolution in pixels per meter */ + uint32_t v_resolution; + /** number of colors in image, or zero */ + uint32_t colours; + /** number of important colors, or zero */ + uint32_t important_colors; +}; +COMPILER_PACK_RESET() + +void vInitialiseLCD( void ) +{ +struct ili93xx_opt_t g_ili93xx_display_opt; + + /* Configure SMC interface for Lcd */ + smc_set_setup_timing( SMC, ILI93XX_LCD_CS, SMC_SETUP_NWE_SETUP( 2 ) | SMC_SETUP_NCS_WR_SETUP( 2 ) | SMC_SETUP_NRD_SETUP( 2 ) | SMC_SETUP_NCS_RD_SETUP( 2 ) ); + smc_set_pulse_timing( SMC, ILI93XX_LCD_CS, SMC_PULSE_NWE_PULSE( 4 ) | SMC_PULSE_NCS_WR_PULSE( 4 ) | SMC_PULSE_NRD_PULSE( 10 )| SMC_PULSE_NCS_RD_PULSE( 10 ) ); + smc_set_cycle_timing( SMC, ILI93XX_LCD_CS, SMC_CYCLE_NWE_CYCLE( 10 )| SMC_CYCLE_NRD_CYCLE( 22 ) ); + smc_set_mode( SMC, ILI93XX_LCD_CS, SMC_MODE_READ_MODE | SMC_MODE_WRITE_MODE ); + + /* Initialise the LCD. */ + g_ili93xx_display_opt.ul_width = ILI93XX_LCD_WIDTH; + g_ili93xx_display_opt.ul_height = ILI93XX_LCD_HEIGHT; + g_ili93xx_display_opt.foreground_color = COLOR_BLACK; + g_ili93xx_display_opt.background_color = COLOR_WHITE; + ili93xx_init( &g_ili93xx_display_opt ); + + /* Set backlight level */ + aat31xx_set_backlight(AAT31XX_AVG_BACKLIGHT_LEVEL); + + /* Turn on LCD */ + ili93xx_display_on(); + + /* Clear. */ + ili93xx_set_foreground_color( COLOR_WHITE ); + ili93xx_draw_filled_rectangle( 0, 0, ILI93XX_LCD_WIDTH, ILI93XX_LCD_HEIGHT ); + + /* Draw logos. */ + ili93xx_set_cursor_position( 0,0 ); + gfx_draw_bmpfile( logo_atmel_bmp ); + + /* Set foreground colour ready to write text. */ + ili93xx_set_foreground_color( COLOR_BLACK ); +} +/*-----------------------------------------------------------*/ + +static void gfx_draw_bmpfile( const uint8_t *bmpImage ) +{ + struct bmpfile_header *bmp_header; + uint32_t length; + uint32_t i = 0; + uint32_t offset; + uint16_t j; + + bmp_header = (struct bmpfile_header*) bmpImage; + length = bmp_header->height * bmp_header->width * 3; + offset = sizeof(struct bmpfile_header); + + if (ili93xx_device_type() == DEVICE_TYPE_ILI9325) { + + ili93xx_set_cursor_position(0, 0); + + /** Prepare to write in GRAM */ + LCD_IR(0); + LCD_IR(ILI9325_GRAM_DATA_REG); + for (i = offset; i < length; i += 3) { + /** Invert red and blue. */ + LCD_WD(bmpImage[i + 2]); + LCD_WD(bmpImage[i + 1]); + LCD_WD(bmpImage[i]); + } + } else if (ili93xx_device_type() == DEVICE_TYPE_ILI9341) { + ili93xx_set_window(0, 0, bmp_header->width - 15, bmp_header->height); + /** memory write command (R2Ch)*/ + LCD_IR(ILI9341_CMD_MEMORY_WRITE); + LCD_IR(ILI9341_CMD_WRITE_MEMORY_CONTINUE); + + /** the original image is mirrored */ + for (i= bmp_header->height - 1; i * bmp_header->width * 3 > offset; + i -=1) { + for (j = 45; j < bmp_header->width * 3; j += 3) { + LCD_WD(bmpImage[i * bmp_header->width * 3 + j + 2]); + LCD_WD(bmpImage[i * bmp_header->width * 3 + j + 1]); + LCD_WD(bmpImage[i * bmp_header->width * 3 + j]); + } + } + } +} diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ParTest.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ParTest.c new file mode 100644 index 000000000..55d6e16ab --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/ParTest.c @@ -0,0 +1,151 @@ +/* + FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. + All rights reserved + + VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. + + This file is part of the FreeRTOS distribution. + + FreeRTOS is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License (version 2) as published by the + Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. + + >>! NOTE: The modification to the GPL is included to allow you to !<< + >>! distribute a combined work that includes FreeRTOS without being !<< + >>! obliged to provide the source code for proprietary components !<< + >>! outside of the FreeRTOS kernel. !<< + + FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. Full license text is available on the following + link: http://www.freertos.org/a00114.html + + 1 tab == 4 spaces! + + *************************************************************************** + * * + * Having a problem? Start by reading the FAQ "My application does * + * not run, what could be wrong?". Have you defined configASSERT()? * + * * + * http://www.FreeRTOS.org/FAQHelp.html * + * * + *************************************************************************** + + *************************************************************************** + * * + * FreeRTOS provides completely free yet professionally developed, * + * robust, strictly quality controlled, supported, and cross * + * platform software that is more than just the market leader, it * + * is the industry's de facto standard. * + * * + * Help yourself get started quickly while simultaneously helping * + * to support the FreeRTOS project by purchasing a FreeRTOS * + * tutorial book, reference manual, or both: * + * http://www.FreeRTOS.org/Documentation * + * * + *************************************************************************** + + *************************************************************************** + * * + * Investing in training allows your team to be as productive as * + * possible as early as possible, lowering your overall development * + * cost, and enabling you to bring a more robust product to market * + * earlier than would otherwise be possible. Richard Barry is both * + * the architect and key author of FreeRTOS, and so also the world's * + * leading authority on what is the world's most popular real time * + * kernel for deeply embedded MCU designs. Obtaining your training * + * from Richard ensures your team will gain directly from his in-depth * + * product knowledge and years of usage experience. Contact Real Time * + * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * + * by Richard Barry: http://www.FreeRTOS.org/contact + * * + *************************************************************************** + + *************************************************************************** + * * + * You are receiving this top quality software for free. Please play * + * fair and reciprocate by reporting any suspected issues and * + * participating in the community forum: * + * http://www.FreeRTOS.org/support * + * * + * Thank you! * + * * + *************************************************************************** + + http://www.FreeRTOS.org - Documentation, books, training, latest versions, + license and Real Time Engineers Ltd. contact details. + + http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, + including FreeRTOS+Trace - an indispensable productivity tool, a DOS + compatible FAT file system, and our tiny thread aware UDP/IP stack. + + http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. + Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. + + http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High + Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS + licenses offer ticketed support, indemnification and commercial middleware. + + http://www.SafeRTOS.com - High Integrity Systems also provide a safety + engineered and independently SIL3 certified version for use in safety and + mission critical applications that require provable dependability. + + 1 tab == 4 spaces! +*/ + +/*----------------------------------------------------------- + * Simple IO routines to control the LEDs. + *-----------------------------------------------------------*/ + +/* Scheduler includes. */ +#include "FreeRTOS.h" +#include "task.h" + +/* Demo includes. */ +#include "partest.h" + +/* The number of LEDs available to the user on the evaluation kit. */ +#define partestNUM_LEDS ( 3UL ) + +/* The index of the pins to which the LEDs are connected. The ordering of the +LEDs in this array is intentional and matches the order they appear on the +hardware. */ +static const uint32_t ulLED[] = { LED0_GPIO, LED1_GPIO, LED2_GPIO }; + +/*-----------------------------------------------------------*/ + +void vParTestInitialise( void ) +{ + /* LEDs are initialised in the Atmel provided board initialisation + function. */ +} +/*-----------------------------------------------------------*/ + +void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) +{ + if( uxLED < partestNUM_LEDS ) + { + /* Turn the LED off. */ + taskENTER_CRITICAL(); + { + ioport_set_pin_level( ulLED[ uxLED ], !xValue ); + } + taskEXIT_CRITICAL(); + } +} +/*-----------------------------------------------------------*/ + +void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) +{ + if( uxLED < partestNUM_LEDS ) + { + taskENTER_CRITICAL(); + { + ioport_toggle_pin_level( ulLED[ uxLED ] ); + } + taskEXIT_CRITICAL(); + } +} + + + diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/RunTimeStatsTimer.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/RunTimeStatsTimer.c new file mode 100644 index 000000000..734fd6c4d --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/RunTimeStatsTimer.c @@ -0,0 +1,166 @@ +/* + FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. + All rights reserved + + VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. + + This file is part of the FreeRTOS distribution. + + FreeRTOS is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License (version 2) as published by the + Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. + + >>! NOTE: The modification to the GPL is included to allow you to !<< + >>! distribute a combined work that includes FreeRTOS without being !<< + >>! obliged to provide the source code for proprietary components !<< + >>! outside of the FreeRTOS kernel. !<< + + FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. Full license text is available on the following + link: http://www.freertos.org/a00114.html + + 1 tab == 4 spaces! + + *************************************************************************** + * * + * Having a problem? Start by reading the FAQ "My application does * + * not run, what could be wrong?". Have you defined configASSERT()? * + * * + * http://www.FreeRTOS.org/FAQHelp.html * + * * + *************************************************************************** + + *************************************************************************** + * * + * FreeRTOS provides completely free yet professionally developed, * + * robust, strictly quality controlled, supported, and cross * + * platform software that is more than just the market leader, it * + * is the industry's de facto standard. * + * * + * Help yourself get started quickly while simultaneously helping * + * to support the FreeRTOS project by purchasing a FreeRTOS * + * tutorial book, reference manual, or both: * + * http://www.FreeRTOS.org/Documentation * + * * + *************************************************************************** + + *************************************************************************** + * * + * Investing in training allows your team to be as productive as * + * possible as early as possible, lowering your overall development * + * cost, and enabling you to bring a more robust product to market * + * earlier than would otherwise be possible. Richard Barry is both * + * the architect and key author of FreeRTOS, and so also the world's * + * leading authority on what is the world's most popular real time * + * kernel for deeply embedded MCU designs. Obtaining your training * + * from Richard ensures your team will gain directly from his in-depth * + * product knowledge and years of usage experience. Contact Real Time * + * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * + * by Richard Barry: http://www.FreeRTOS.org/contact + * * + *************************************************************************** + + *************************************************************************** + * * + * You are receiving this top quality software for free. Please play * + * fair and reciprocate by reporting any suspected issues and * + * participating in the community forum: * + * http://www.FreeRTOS.org/support * + * * + * Thank you! * + * * + *************************************************************************** + + http://www.FreeRTOS.org - Documentation, books, training, latest versions, + license and Real Time Engineers Ltd. contact details. + + http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, + including FreeRTOS+Trace - an indispensable productivity tool, a DOS + compatible FAT file system, and our tiny thread aware UDP/IP stack. + + http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. + Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. + + http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High + Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS + licenses offer ticketed support, indemnification and commercial middleware. + + http://www.SafeRTOS.com - High Integrity Systems also provide a safety + engineered and independently SIL3 certified version for use in safety and + mission critical applications that require provable dependability. + + 1 tab == 4 spaces! +*/ + +/* FreeRTOS includes. */ +#include "FreeRTOS.h" + +/* Utility functions to implement run time stats on Cortex-M CPUs. The collected +run time data can be viewed through the CLI interface. See the following URL for +more information on run time stats: +http://www.freertos.org/rtos-run-time-stats.html */ + +/* Addresses of registers in the Cortex-M debug hardware. */ +#define rtsDWT_CYCCNT ( *( ( unsigned long * ) 0xE0001004 ) ) +#define rtsDWT_CONTROL ( *( ( unsigned long * ) 0xE0001000 ) ) +#define rtsSCB_DEMCR ( *( ( unsigned long * ) 0xE000EDFC ) ) +#define rtsTRCENA_BIT ( 0x01000000UL ) +#define rtsCOUNTER_ENABLE_BIT ( 0x01UL ) + +/* Simple shift divide for scaling to avoid an overflow occurring too soon. The +number of bits to shift depends on the clock speed. */ +#define runtimeSLOWER_CLOCK_SPEEDS ( 70000000UL ) +#define runtimeSHIFT_13 13 +#define runtimeOVERFLOW_BIT_13 ( 1UL << ( 32UL - runtimeSHIFT_13 ) ) +#define runtimeSHIFT_14 14 +#define runtimeOVERFLOW_BIT_14 ( 1UL << ( 32UL - runtimeSHIFT_14 ) ) + +/*-----------------------------------------------------------*/ + +void vConfigureTimerForRunTimeStats( void ) +{ + /* Enable TRCENA. */ + rtsSCB_DEMCR = rtsSCB_DEMCR | rtsTRCENA_BIT; + + /* Reset counter. */ + rtsDWT_CYCCNT = 0; + + /* Enable counter. */ + rtsDWT_CONTROL = rtsDWT_CONTROL | rtsCOUNTER_ENABLE_BIT; +} +/*-----------------------------------------------------------*/ + +uint32_t ulGetRunTimeCounterValue( void ) +{ +static unsigned long ulLastCounterValue = 0UL, ulOverflows = 0; +unsigned long ulValueNow; + + ulValueNow = rtsDWT_CYCCNT; + + /* Has the value overflowed since it was last read. */ + if( ulValueNow < ulLastCounterValue ) + { + ulOverflows++; + } + ulLastCounterValue = ulValueNow; + + /* Cannot use configCPU_CLOCK_HZ directly as it may itself not be a constant + but instead map to a variable that holds the clock speed. */ + + /* There is no prescale on the counter, so simulate in software. */ + if( configCPU_CLOCK_HZ < runtimeSLOWER_CLOCK_SPEEDS ) + { + ulValueNow >>= runtimeSHIFT_13; + ulValueNow += ( runtimeOVERFLOW_BIT_13 * ulOverflows ); + } + else + { + ulValueNow >>= runtimeSHIFT_14; + ulValueNow += ( runtimeOVERFLOW_BIT_14 * ulOverflows ); + } + + return ulValueNow; +} +/*-----------------------------------------------------------*/ + diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/asf.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/asf.h new file mode 100644 index 000000000..b5036d022 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/asf.h @@ -0,0 +1,107 @@ +/** + * \file + * + * \brief Autogenerated API include file for the Atmel Software Framework (ASF) + * + * Copyright (c) 2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef ASF_H +#define ASF_H + +/* + * This file includes all API header files for the selected drivers from ASF. + * Note: There might be duplicate includes required by more than one driver. + * + * The file is automatically generated and will be re-written when + * running the ASF driver selector tool. Any changes will be discarded. + */ + +// From module: Common SAM compiler driver +#include +#include + +// From module: Display - AAT31XX Backlight Controller +#include + +// From module: Display - ILI93xx LCD Controller +#include +#include +#include + +// From module: Ethernet MAC (GMAC) +#include + +// From module: Ethernet Physical Transceiver (ksz8051mnl) +#include + +// From module: Generic board support +#include + +// From module: IOPORT - General purpose I/O service +#include + +// From module: Interrupt management - SAM implementation +#include + +// From module: PMC - Power Management Controller +#include +#include + +// From module: Part identification macros +#include + +// From module: SAM FPU driver +#include + +// From module: SAM4E EK LED support enabled +#include + +// From module: SAM4E startup code +#include + +// From module: SMC - Static Memory Controller +#include + +// From module: System Clock Control - SAM4E implementation +#include + +// From module: TC - Timer Counter +#include + +#endif // ASF_H diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/FreeRTOSConfig.h new file mode 100644 index 000000000..e45697780 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/FreeRTOSConfig.h @@ -0,0 +1,278 @@ +/* + FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. + All rights reserved + + VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. + + This file is part of the FreeRTOS distribution. + + FreeRTOS is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License (version 2) as published by the + Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. + + >>! NOTE: The modification to the GPL is included to allow you to !<< + >>! distribute a combined work that includes FreeRTOS without being !<< + >>! obliged to provide the source code for proprietary components !<< + >>! outside of the FreeRTOS kernel. !<< + + FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. Full license text is available on the following + link: http://www.freertos.org/a00114.html + + 1 tab == 4 spaces! + + *************************************************************************** + * * + * Having a problem? Start by reading the FAQ "My application does * + * not run, what could be wrong?". Have you defined configASSERT()? * + * * + * http://www.FreeRTOS.org/FAQHelp.html * + * * + *************************************************************************** + + *************************************************************************** + * * + * FreeRTOS provides completely free yet professionally developed, * + * robust, strictly quality controlled, supported, and cross * + * platform software that is more than just the market leader, it * + * is the industry's de facto standard. * + * * + * Help yourself get started quickly while simultaneously helping * + * to support the FreeRTOS project by purchasing a FreeRTOS * + * tutorial book, reference manual, or both: * + * http://www.FreeRTOS.org/Documentation * + * * + *************************************************************************** + + *************************************************************************** + * * + * Investing in training allows your team to be as productive as * + * possible as early as possible, lowering your overall development * + * cost, and enabling you to bring a more robust product to market * + * earlier than would otherwise be possible. Richard Barry is both * + * the architect and key author of FreeRTOS, and so also the world's * + * leading authority on what is the world's most popular real time * + * kernel for deeply embedded MCU designs. Obtaining your training * + * from Richard ensures your team will gain directly from his in-depth * + * product knowledge and years of usage experience. Contact Real Time * + * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * + * by Richard Barry: http://www.FreeRTOS.org/contact + * * + *************************************************************************** + + *************************************************************************** + * * + * You are receiving this top quality software for free. Please play * + * fair and reciprocate by reporting any suspected issues and * + * participating in the community forum: * + * http://www.FreeRTOS.org/support * + * * + * Thank you! * + * * + *************************************************************************** + + http://www.FreeRTOS.org - Documentation, books, training, latest versions, + license and Real Time Engineers Ltd. contact details. + + http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, + including FreeRTOS+Trace - an indispensable productivity tool, a DOS + compatible FAT file system, and our tiny thread aware UDP/IP stack. + + http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. + Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. + + http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High + Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS + licenses offer ticketed support, indemnification and commercial middleware. + + http://www.SafeRTOS.com - High Integrity Systems also provide a safety + engineered and independently SIL3 certified version for use in safety and + mission critical applications that require provable dependability. + + 1 tab == 4 spaces! +*/ + + +#ifndef FREERTOS_CONFIG_H +#define FREERTOS_CONFIG_H + +/* Atmel library includes. */ +#include + +/*----------------------------------------------------------- + * Application specific definitions. + * + * These definitions should be adjusted for your particular hardware and + * application requirements. + * + * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE + * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. + * + * See http://www.freertos.org/a00110.html. + *----------------------------------------------------------*/ + +extern uint32_t SystemCoreClock; + +#define configUSE_PREEMPTION 1 +#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 +#define configUSE_QUEUE_SETS 1 +#define configUSE_IDLE_HOOK 1 +#define configUSE_TICK_HOOK 1 +#define configCPU_CLOCK_HZ ( SystemCoreClock ) +#define configTICK_RATE_HZ ( 1000 ) +#define configMAX_PRIORITIES ( 5 ) +#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 120 ) +#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 47 * 1024 ) ) +#define configMAX_TASK_NAME_LEN ( 10 ) +#define configUSE_TRACE_FACILITY 1 +#define configUSE_16_BIT_TICKS 0 +#define configIDLE_SHOULD_YIELD 1 +#define configUSE_MUTEXES 1 +#define configQUEUE_REGISTRY_SIZE 8 +#define configCHECK_FOR_STACK_OVERFLOW 2 +#define configUSE_RECURSIVE_MUTEXES 1 +#define configUSE_MALLOC_FAILED_HOOK 1 +#define configUSE_APPLICATION_TASK_TAG 0 +#define configUSE_COUNTING_SEMAPHORES 1 + +/* The full demo always has tasks to run so the tick will never be turned off. +The blinky demo will use the default tickless idle implementation to turn the +tick off. */ +#define configUSE_TICKLESS_IDLE 1 + +/* Run time stats gathering definitions. */ +void vConfigureTimerForRunTimeStats( void ); +uint32_t ulGetRunTimeCounterValue( void ); +#define configGENERATE_RUN_TIME_STATS 1 +#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vConfigureTimerForRunTimeStats() +#define portGET_RUN_TIME_COUNTER_VALUE() ulGetRunTimeCounterValue() + +/* This demo makes use of one or more example stats formatting functions. These +format the raw data provided by the uxTaskGetSystemState() function in to human +readable ASCII form. See the notes in the implementation of vTaskList() within +FreeRTOS/Source/tasks.c for limitations. */ +#define configUSE_STATS_FORMATTING_FUNCTIONS 1 + +/* Co-routine definitions. */ +#define configUSE_CO_ROUTINES 0 +#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) + +/* Software timer definitions. */ +#define configUSE_TIMERS 1 +#define configTIMER_TASK_PRIORITY ( 2 ) +#define configTIMER_QUEUE_LENGTH 5 +#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) + +/* Set the following definitions to 1 to include the API function, or zero +to exclude the API function. */ +#define INCLUDE_vTaskPrioritySet 1 +#define INCLUDE_uxTaskPriorityGet 1 +#define INCLUDE_vTaskDelete 1 +#define INCLUDE_vTaskCleanUpResources 1 +#define INCLUDE_vTaskSuspend 1 +#define INCLUDE_vTaskDelayUntil 1 +#define INCLUDE_vTaskDelay 1 +#define INCLUDE_eTaskGetState 1 +#define INCLUDE_xTimerPendFunctionCall 1 + +/* Cortex-M specific definitions. */ +#ifdef __NVIC_PRIO_BITS + /* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */ + #define configPRIO_BITS __NVIC_PRIO_BITS +#else + #define configPRIO_BITS 4 /* 15 priority levels */ +#endif + +/* The lowest interrupt priority that can be used in a call to a "set priority" +function. */ +#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0xf + +/* The highest interrupt priority that can be used by any interrupt service +routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL +INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER +PRIORITY THAN THIS! (higher priorities are lower numeric values. */ +#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 + +/* Interrupt priorities used by the kernel port layer itself. These are generic +to all Cortex-M ports, and do not rely on any particular library functions. */ +#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) +/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! +See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ +#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) + +/* Normal assert() semantics without relying on the provision of an assert.h +header file. */ +extern void vAssertCalled( uint32_t ulLine, const char *pcFile ); +#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __LINE__, __FILE__ ) + +/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS +standard names. */ +#define xPortPendSVHandler PendSV_Handler +#define vPortSVCHandler SVC_Handler +#define xPortSysTickHandler SysTick_Handler + +/* MAC address configuration. In a deployed production system this would +probably be read from an EEPROM. In the demo it is just hard coded. Make sure +each node on the network has a unique MAC address. */ +#define configMAC_ADDR0 0x00 +#define configMAC_ADDR1 0x11 +#define configMAC_ADDR2 0x22 +#define configMAC_ADDR3 0x33 +#define configMAC_ADDR4 0x44 +#define configMAC_ADDR5 0x45 + +/* Default IP address configuration. Used in ipconfigUSE_DNS is set to 0, or +ipconfigUSE_DNS is set to 1 but a DNS server cannot be contacted. */ +#define configIP_ADDR0 172 +#define configIP_ADDR1 25 +#define configIP_ADDR2 218 +#define configIP_ADDR3 200 + +/* Default gateway IP address configuration. Used in ipconfigUSE_DNS is set to +0, or ipconfigUSE_DNS is set to 1 but a DNS server cannot be contacted. */ +#define configGATEWAY_ADDR0 172 +#define configGATEWAY_ADDR1 25 +#define configGATEWAY_ADDR2 218 +#define configGATEWAY_ADDR3 2 + +/* Default DNS server configuration. OpenDNS addresses are 208.67.222.222 and +208.67.220.220. Used in ipconfigUSE_DNS is set to 0, or ipconfigUSE_DNS is set +to 1 but a DNS server cannot be contacted.*/ +#define configDNS_SERVER_ADDR0 208 +#define configDNS_SERVER_ADDR1 67 +#define configDNS_SERVER_ADDR2 222 +#define configDNS_SERVER_ADDR3 222 + +/* Default netmask configuration. Used in ipconfigUSE_DNS is set to 0, or +ipconfigUSE_DNS is set to 1 but a DNS server cannot be contacted. */ +#define configNET_MASK0 255 +#define configNET_MASK1 255 +#define configNET_MASK2 255 +#define configNET_MASK3 0 + +/* The address of the echo server. Used when the demo is build to include the +UDP echo tasks (when mainINCLUDE_ECHO_CLIENT_TASKS is set to 1 in +FreeRTOSConfig.h. +http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_UDP/Embedded_Ethernet_Examples/Common_Echo_Clients.shtml */ +#define configECHO_SERVER_ADDR0 172 +#define configECHO_SERVER_ADDR1 25 +#define configECHO_SERVER_ADDR2 218 +#define configECHO_SERVER_ADDR3 100 + + +/* The priority used by the Ethernet MAC driver interrupt. */ +#define configMAC_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ) + +/* Dimensions a buffer that can be used by the FreeRTOS+CLI command +interpreter. See the FreeRTOS+CLI documentation for more information: +http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_CLI/ */ +#define configCOMMAND_INT_MAX_OUTPUT_SIZE 1024 + +/* If configINCLUDE_DEMO_DEBUG_STATS is set to one, then a few basic IP trace +macros are defined to gather some UDP stack statistics that can then be viewed +through the CLI interface. */ +#define configINCLUDE_DEMO_DEBUG_STATS 1 + +#endif /* FREERTOS_CONFIG_H */ + diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/FreeRTOSIPConfig.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/FreeRTOSIPConfig.h new file mode 100644 index 000000000..16036be3c --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/FreeRTOSIPConfig.h @@ -0,0 +1,290 @@ +/* + * FreeRTOS+UDP V1.0.4 (C) 2014 Real Time Engineers ltd. + * All rights reserved + * + * This file is part of the FreeRTOS+UDP distribution. The FreeRTOS+UDP license + * terms are different to the FreeRTOS license terms. + * + * FreeRTOS+UDP uses a dual license model that allows the software to be used + * under a standard GPL open source license, or a commercial license. The + * standard GPL license (unlike the modified GPL license under which FreeRTOS + * itself is distributed) requires that all software statically linked with + * FreeRTOS+UDP is also distributed under the same GPL V2 license terms. + * Details of both license options follow: + * + * - Open source licensing - + * FreeRTOS+UDP is a free download and may be used, modified, evaluated and + * distributed without charge provided the user adheres to version two of the + * GNU General Public License (GPL) and does not remove the copyright notice or + * this text. The GPL V2 text is available on the gnu.org web site, and on the + * following URL: http://www.FreeRTOS.org/gpl-2.0.txt. + * + * - Commercial licensing - + * Businesses and individuals that for commercial or other reasons cannot comply + * with the terms of the GPL V2 license must obtain a commercial license before + * incorporating FreeRTOS+UDP into proprietary software for distribution in any + * form. Commercial licenses can be purchased from http://shop.freertos.org/udp + * and do not require any source files to be changed. + * + * FreeRTOS+UDP is distributed in the hope that it will be useful. You cannot + * use FreeRTOS+UDP unless you agree that you use the software 'as is'. + * FreeRTOS+UDP is provided WITHOUT ANY WARRANTY; without even the implied + * warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. Real Time Engineers Ltd. disclaims all conditions and terms, be they + * implied, expressed, or statutory. + * + * 1 tab == 4 spaces! + * + * http://www.FreeRTOS.org + * http://www.FreeRTOS.org/udp + * + */ + +/***************************************************************************** + * + * See the following URL for configuration information. + * http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_UDP/UDP_IP_Configuration.shtml + * + *****************************************************************************/ + +#ifndef FREERTOS_IP_CONFIG_H +#define FREERTOS_IP_CONFIG_H + +/* The IP stack executes it its own task (although any application task can make +use of its services through the published sockets API). ipconfigUDP_TASK_PRIORITY +sets the priority of the task that executes the IP stack. The priority is a +standard FreeRTOS task priority so can take any value from 0 (the lowest +priority) to (configMAX_PRIORITIES - 1) (the highest priority). +configMAX_PRIORITIES is a standard FreeRTOS configuration parameter defined in +FreeRTOSConfig.h, not FreeRTOSIPConfig.h. Consideration needs to be given as to +the priority assigned to the task executing the IP stack relative to the +priority assigned to tasks that use the IP stack. + +Note: If the application is started without the network cable plugged in then +this should be set to the lowest priority - otherwise the Atmel ASF GMAC driver +will poll the GMAC interface waiting for a connection to be established. The +driver uses a very long timeout and no lower priority tasks will be able to +execute during this time. This demo starts with the IP task running at the idle +priority - then raises the priority of the IP task in the network event hook +when a connection has been established. */ +#define ipconfigUDP_TASK_PRIORITY ( tskIDLE_PRIORITY ) + +/* The size, in words (not bytes), of the stack allocated to the FreeRTOS+UDP +task. This setting is less important when the FreeRTOS Win32 simulator is used +as the Win32 simulator only stores a fixed amount of information on the task +stack. FreeRTOS includes optional stack overflow detection, see: +http://www.freertos.org/Stacks-and-stack-overflow-checking.html */ +#define ipconfigUDP_TASK_STACK_SIZE_WORDS ( configMINIMAL_STACK_SIZE * 2 ) + +/* ipconfigRAND32() is called by the IP stack to generate a random number that +is then used as a DHCP transaction number. Random number generation is performed +via this macro to allow applications to use their own random number generation +method. For example, it might be possible to generate a random number by +sampling noise on an analogue input. */ +#define ipconfigRAND32() 1 + +/* If ipconfigUSE_NETWORK_EVENT_HOOK is set to 1 then FreeRTOS+UDP will call the +network event hook at the appropriate times. If ipconfigUSE_NETWORK_EVENT_HOOK +is not set to 1 then the network event hook will never be called. See +http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_UDP/API/vApplicationIPNetworkEventHook.shtml +*/ +#define ipconfigUSE_NETWORK_EVENT_HOOK 1 + +/* Sockets have a send block time attribute. If FreeRTOS_sendto() is called but +a network buffer cannot be obtained then the calling task is held in the Blocked +state (so other tasks can continue to executed) until either a network buffer +becomes available or the send block time expires. If the send block time expires +then the send operation is aborted. The maximum allowable send block time is +capped to the value set by ipconfigMAX_SEND_BLOCK_TIME_TICKS. Capping the +maximum allowable send block time prevents prevents a deadlock occurring when +all the network buffers are in use and the tasks that process (and subsequently +free) the network buffers are themselves blocked waiting for a network buffer. +ipconfigMAX_SEND_BLOCK_TIME_TICKS is specified in RTOS ticks. A time in +milliseconds can be converted to a time in ticks by dividing the time in +milliseconds by portTICK_PERIOD_MS. */ +#define ipconfigMAX_SEND_BLOCK_TIME_TICKS ( 20 / portTICK_PERIOD_MS ) + +/* If ipconfigUSE_DHCP is 1 then FreeRTOS+UDP will attempt to retrieve an IP +address, netmask, DNS server address and gateway address from a DHCP server. If +ipconfigUSE_DHCP is 0 then FreeRTOS+UDP will use a static IP address. The +stack will revert to using the static IP address even when ipconfigUSE_DHCP is +set to 1 if a valid configuration cannot be obtained from a DHCP server for any +reason. The static configuration used is that passed into the stack by the +FreeRTOS_IPInit() function call. */ +#define ipconfigUSE_DHCP 1 + +/* When ipconfigUSE_DHCP is set to 1, DHCP requests will be sent out at +increasing time intervals until either a reply is received from a DHCP server +and accepted, or the interval between transmissions reaches +ipconfigMAXIMUM_DISCOVER_TX_PERIOD. The IP stack will revert to using the +static IP address passed as a parameter to FreeRTOS_IPInit() if the +re-transmission time interval reaches ipconfigMAXIMUM_DISCOVER_TX_PERIOD without +a DHCP reply being received. */ +#define ipconfigMAXIMUM_DISCOVER_TX_PERIOD ( 999 / portTICK_PERIOD_MS ) + +/* The ARP cache is a table that maps IP addresses to MAC addresses. The IP +stack can only send a UDP message to a remove IP address if it knowns the MAC +address associated with the IP address, or the MAC address of the router used to +contact the remote IP address. When a UDP message is received from a remote IP +address the MAC address and IP address are added to the ARP cache. When a UDP +message is sent to a remote IP address that does not already appear in the ARP +cache then the UDP message is replaced by a ARP message that solicits the +required MAC address information. ipconfigARP_CACHE_ENTRIES defines the maximum +number of entries that can exist in the ARP table at any one time. */ +#define ipconfigARP_CACHE_ENTRIES 6 + +/* ARP requests that do not result in an ARP response will be re-transmitted a +maximum of ipconfigMAX_ARP_RETRANSMISSIONS times before the ARP request is +aborted. */ +#define ipconfigMAX_ARP_RETRANSMISSIONS ( 5 ) + +/* ipconfigMAX_ARP_AGE defines the maximum time between an entry in the ARP +table being created or refreshed and the entry being removed because it is stale. +New ARP requests are sent for ARP cache entries that are nearing their maximum +age. ipconfigMAX_ARP_AGE is specified in tens of seconds, so a value of 150 is +equal to 1500 seconds (or 25 minutes). */ +#define ipconfigMAX_ARP_AGE 150 + +/* Implementing FreeRTOS_inet_addr() necessitates the use of string handling +routines, which are relatively large. To save code space the full +FreeRTOS_inet_addr() implementation is made optional, and a smaller and faster +alternative called FreeRTOS_inet_addr_quick() is provided. FreeRTOS_inet_addr() +takes an IP in decimal dot format (for example, "192.168.0.1") as its parameter. +FreeRTOS_inet_addr_quick() takes an IP address as four separate numerical octets +(for example, 192, 168, 0, 1) as its parameters. If +ipconfigINCLUDE_FULL_INET_ADDR is set to 1 then both FreeRTOS_inet_addr() and +FreeRTOS_indet_addr_quick() are available. If ipconfigINCLUDE_FULL_INET_ADDR is +not set to 1 then only FreeRTOS_indet_addr_quick() is available. */ +#define ipconfigINCLUDE_FULL_INET_ADDR 1 + +/* ipconfigNUM_NETWORK_BUFFERS defines the total number of network buffer that +are available to the IP stack. The total number of network buffers is limited +to ensure the total amount of RAM that can be consumed by the IP stack is capped +to a pre-determinable value. */ +#define ipconfigNUM_NETWORK_BUFFERS 10 + +/* A FreeRTOS queue is used to send events from application tasks to the IP +stack. ipconfigEVENT_QUEUE_LENGTH sets the maximum number of events that can +be queued for processing at any one time. The event queue must be a minimum of +5 greater than the total number of network buffers. */ +#define ipconfigEVENT_QUEUE_LENGTH ( ipconfigNUM_NETWORK_BUFFERS + 5 ) + +/* The address of a socket is the combination of its IP address and its port +number. FreeRTOS_bind() is used to manually allocate a port number to a socket +(to 'bind' the socket to a port), but manual binding is not normally necessary +for client sockets (those sockets that initiate outgoing connections rather than +wait for incoming connections on a known port number). If +ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND is set to 1 then calling +FreeRTOS_sendto() on a socket that has not yet been bound will result in the IP +stack automatically binding the socket to a port number from the range +socketAUTO_PORT_ALLOCATION_START_NUMBER to 0xffff. If +ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND is set to 0 then calling FreeRTOS_sendto() +on a socket that has not yet been bound will result in the send operation being +aborted. */ +#define ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND 1 + +/* Defines the Time To Live (TTL) values used in outgoing UDP packets. */ +#define updconfigIP_TIME_TO_LIVE 128 + +/* If ipconfigCAN_FRAGMENT_OUTGOING_PACKETS is set to 1 then UDP packets that +contain more data than will fit in a single network frame will be fragmented +across multiple IP packets. Also see the ipconfigNETWORK_MTU setting. If +ipconfigCAN_FRAGMENT_OUTGOING_PACKETS is 1 then (ipconfigNETWORK_MTU - 28) must +be divisible by 8. Setting ipconfigCAN_FRAGMENT_OUTGOING_PACKETS to 1 will +increase both the code size and execution time. */ +#define ipconfigCAN_FRAGMENT_OUTGOING_PACKETS 0 + +/* The MTU is the maximum number of bytes the payload of a network frame can +contain. For normal Ethernet V2 frames the maximum MTU is 1500. Setting a +lower value can save RAM, depending on the buffer management scheme used. If +ipconfigCAN_FRAGMENT_OUTGOING_PACKETS is 1 then (ipconfigNETWORK_MTU - 28) must +be divisible by 8. */ +#define ipconfigNETWORK_MTU 1500 /* Leave at 1500 for SAM4E. */ + +/* Set ipconfigUSE_DNS to 1 to include a basic DNS client/resolver. DNS is used +through the FreeRTOS_gethostbyname() API function. */ +#define ipconfigUSE_DNS 1 + +/* If ipconfigREPLY_TO_INCOMING_PINGS is set to 1 then the IP stack will +generate replies to incoming ICMP echo (ping) requests. */ +#define ipconfigREPLY_TO_INCOMING_PINGS 1 + +/* If ipconfigSUPPORT_OUTGOING_PINGS is set to 1 then the +FreeRTOS_SendPingRequest() API function is available. */ +#define ipconfigSUPPORT_OUTGOING_PINGS 1 + +/* If ipconfigSUPPORT_SELECT_FUNCTION is set to 1 then the FreeRTOS_select() +(and associated) API function is available. */ +#define ipconfigSUPPORT_SELECT_FUNCTION 1 + +/* Used for stack testing only, and must be implemented in the network +interface. */ +#define updconfigLOOPBACK_ETHERNET_PACKETS 0 + +/* If ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES is set to 1 then Ethernet frames +that are not in Ethernet II format will be dropped. This option is included for +potential future IP stack developments. */ +#define ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES 1 + +/* If ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES is set to 1 then it is the +responsibility of the Ethernet interface to filter out packets that are of no +interest. If the Ethernet interface does not implement this functionality, then +set ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES to 0 to have the IP stack +perform the filtering instead (it is much less efficient for the stack to do it +because the packet will already have been passed into the stack). If the +Ethernet driver does all the necessary filtering in hardware then software +filtering can be removed by using a value other than 1 or 0. */ +#define ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES 0 + +/* If ipconfigETHERNET_DRIVER_ADDS_UDP_CHECKSUM is set to 1 then a UDP checksum +will not be calculated and added to a packet before the packet is sent to the +hardware for transmission. */ +#define ipconfigETHERNET_DRIVER_ADDS_UDP_CHECKSUM 0 + +/* If ipconfigETHERNET_DRIVER_ADDS_IP_CHECKSUM is set to 1 then an IP checksum +will not be calculated and added to a packet before the packet is sent to the +hardware for transmission. */ +#define ipconfigETHERNET_DRIVER_ADDS_IP_CHECKSUM 0 + +/* If ipconfigETHERNET_DRIVER_CHECKS_IP_CHECKSUM is set to 1 then the IP +checksum will be ignored on incoming packets on the assumption IP packets with +an invalid checksum are not passed to the stack. */ +#define ipconfigETHERNET_DRIVER_CHECKS_IP_CHECKSUM 0 + +/* If ipconfigETHERNET_DRIVER_CHECKS_UDP_CHECKSUM is set to 1 then the UDP +checksum will be ignored on incoming packets on the assumption the UDP packets +with an invalid checksum are not passed to the stack. */ +#define ipconfigETHERNET_DRIVER_CHECKS_UDP_CHECKSUM 0 + +/* Set ipconfigFREERTOS_PLUS_NABTO to 1 to support the Nabto protocol, or 0 to +exclude support for the Nabto protocol. If ipconfigFREERTOS_PLUS_NABTO is set +to one then the project must build the Nabto source code (or reference a +pre-build Nabto library. */ +#define ipconfigFREERTOS_PLUS_NABTO 0 + +/* Sets the size of the stack used by the Nabto service task. The Nabto event +handler executes in the context of the Nabto service task. If the event handler +uses a lot of stack then it is possible the value set here will need to be +increased. It is recommended to have FreeRTOS stack overflow checking turned +on during development (see the configCHECK_FOR_STACK_OVERFLOW in +FreeRTOSConfig.h and in the documentation. */ +#define ipconfigNABTO_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE * 2 ) + +/* Sets the priority of the Nabto service task. This is a standard FreeRTOS +task priority so can take values between 0 (the lowest priority) and +configMAX_PRIORITIES - 1 (the highest priority). Also see the definition of +ipconfigUDP_TASK_PRIORITY. This would normally be set to be either one higher +or one lower than ipconfigUDP_TASK_PRIORITY, depending on the application. */ +#define ipconfigNABTO_TASK_PRIORITY ( ipconfigUDP_TASK_PRIORITY + 1 ) + +/* The windows simulator cannot really simulate MAC interrupts, and needs to +block occasionally to allow other tasks to run. */ +#ifdef _WINDOWS_ + #define configWINDOWS_MAC_INTERRUPT_SIMULATOR_DELAY ( 3 / portTICK_PERIOD_MS ) +#endif + +/* The example IP trace macros are included here so the definitions are +available in all the FreeRTOS+UDP source files. */ +#include "DemoIPTrace.h" + +#endif /* FREERTOS_IP_CONFIG_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_aat31xx.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_aat31xx.h new file mode 100644 index 000000000..0d757c52f --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_aat31xx.h @@ -0,0 +1,59 @@ +/** + * \file + * + * \brief AAT31XX configuration. + * + * Copyright (c) 2011-2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +//! Configuration of the AAT31XX Backlight driver + +#ifndef CONF_AAT31XX_H_INCLUDED +#define CONF_AAT31XX_H_INCLUDED + +#include "board.h" + +#if !defined(BOARD_AAT31XX_SET_GPIO) + + #warning The AAT31XX PIN configuration does not exist in the board definition file. Using default settings. + + #define BOARD_AAT31XX_SET_GPIO PIO_PC13_IDX /* Should use the PIN index of which pin is connected with EN/SET of AAT31XX device */ + +#endif + +#endif /* CONF_AAT31XX_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_board.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_board.h new file mode 100644 index 000000000..e616581ec --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_board.h @@ -0,0 +1,99 @@ +/** + * \file + * + * \brief SAM4E-EK board configuration. + * + * Copyright (c) 2012-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef CONF_BOARD_H_INCLUDED +#define CONF_BOARD_H_INCLUDED + +/* Configure UART pins */ +//#define CONF_BOARD_UART_CONSOLE + +/* Enable ETH PHY: KSZ8051MNL feature */ +#define CONF_BOARD_KSZ8051MNL + +/** Configure LCD EBI pins */ +#define CONF_BOARD_ILI93XX + +/** Configure Backlight control pin */ +#define CONF_BOARD_AAT3155 + +/* + * LED pins are not configured for PWM function here. + * Because those LED pins are enabled for PIO function by default. + * You can enable them according to application. + */ +/* Configure PWM LED0 pin */ +//#define CONF_BOARD_PWM_LED0 + +/* Configure PWM LED1 pin */ +//#define CONF_BOARD_PWM_LED1 + +/* Configure PWM LED2 pin */ +//#define CONF_BOARD_PWM_LED2 + +/* Configure PWM LED3 pin */ +//#define CONF_BOARD_PWM_LED3 + +/* + * USART pins are configured as basic serial port by default. + * You can enable other pins according application. + */ +/* Configure USART RXD pin */ +//#define CONF_BOARD_USART_RXD + +/* Configure USART TXD pin */ +//#define CONF_BOARD_USART_TXD + +/* Configure USART CTS pin */ +//#define CONF_BOARD_USART_CTS + +/* Configure USART RTS pin */ +//#define CONF_BOARD_USART_RTS + +/* Configure USART synchronous communication SCK pin */ +//#define CONF_BOARD_USART_SCK + +/* Configure ADM3312 enable pin */ +//#define CONF_BOARD_ADM3312_EN +//#define CONF_BOARD_ADM3312_EN_DISABLE_AT_INIT + +#endif /* CONF_BOARD_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_clock.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_clock.h new file mode 100644 index 000000000..65f41e2cf --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_clock.h @@ -0,0 +1,94 @@ +/** + * \file + * + * \brief SAM4E clock configuration. + * + * Copyright (c) 2012-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef CONF_CLOCK_H_INCLUDED +#define CONF_CLOCK_H_INCLUDED + +// ===== System Clock (MCK) Source Options +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_SLCK_RC +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_SLCK_XTAL +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_SLCK_BYPASS +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_4M_RC +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_8M_RC +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_12M_RC +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_XTAL +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_BYPASS +#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK + +// ===== System Clock (MCK) Prescaler Options (Fmck = Fsys / (SYSCLK_PRES)) +//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 +#define CONFIG_SYSCLK_PRES SYSCLK_PRES_2 +//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_4 +//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_8 +//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_16 +//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_32 +//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_64 +//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_3 + +// ===== PLL0 (A) Options (Fpll = (Fclk * PLL_mul) / PLL_div) +// Use mul and div effective values here. +#define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL +#define CONFIG_PLL0_MUL 16 +#define CONFIG_PLL0_DIV 1 + + +// ===== USB Clock Source Options (Fusb = FpllX / USB_div) +// Use div effective value here. +#define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL0 +#define CONFIG_USBCLK_DIV 2 + +// ===== Target frequency (System clock) +// - XTAL frequency: 12MHz +// - System clock source: PLLA +// - System clock prescaler: 2 (divided by 2) +// - PLLA source: XTAL +// - PLLA output: XTAL * 16 / 1 +// - System clock: 12 * 16 / 1 / 2 = 96MHz +// ===== Target frequency (USB Clock) +// - USB clock source: PLLA +// - USB clock divider: 2 (divided by 2) +// - PLLA output: XTAL * 16 / 2 +// - USB clock: 12 * 16 / 2 / 2 = 48MHz + + +#endif /* CONF_CLOCK_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_eth.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_eth.h new file mode 100644 index 000000000..842c2293b --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_eth.h @@ -0,0 +1,77 @@ + /** + * \file + * + * \brief GMAC (Ethernet MAC) driver for SAM. + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +#ifndef CONF_EMAC_H_INCLUDED +#define CONF_EMAC_H_INCLUDED + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +#include "gmac.h" + +/** Number of buffer for RX */ +#define GMAC_RX_BUFFERS 64 + +/** Number of buffer for TX */ +#define GMAC_TX_BUFFERS 16 + +/** MAC PHY operation max retry count */ +#define MAC_PHY_RETRY_MAX 1000000 + +/** Ethernet MII/RMII mode */ +#define ETH_PHY_MODE GMAC_PHY_MII + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* CONF_EMAC_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_ili93xx.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_ili93xx.h new file mode 100644 index 000000000..53ee3cbec --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/conf_ili93xx.h @@ -0,0 +1,62 @@ +/** + * \file + * + * \brief ILI93XX configuration. + * + * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ + +//! Configuration of the ILI93XX (ILI9325 or ILI9341) LCD display driver + +#ifndef CONF_ILI93XX_H_INCLUDED +#define CONF_ILI93XX_H_INCLUDED + +#include "board.h" + +#if !defined(BOARD_ILI93XX_ADDR) || !defined(BOARD_ILI93XX_RS) + + #warning The ILI93XX EBI configuration does not exist in the board definition file. Using default settings. + + /** The base address, depends on which SMC chip select is used by ILI9325. */ + #define BOARD_ILI93XX_ADDR 0x61000000 + /** Register select (1 << 1) */ + #define BOARD_ILI93XX_RS 1 << 1 + +#endif + +#endif /* CONF_ILI93XX_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/config_fat_sl.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/config_fat_sl.h new file mode 100644 index 000000000..8647077ee --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/config_fat_sl.h @@ -0,0 +1,67 @@ +/* + * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded + * + * FreeRTOS+FAT SL is an complementary component provided to Real Time Engineers + * Ltd. by HCC Embedded for use with FreeRTOS. It is not, in itself, part of + * the FreeRTOS kernel. FreeRTOS+FAT SL is licensed separately from FreeRTOS, + * and uses a different license to FreeRTOS. FreeRTOS+FAT SL uses a dual + * license model, information on which is provided below: + * + * - Open source licensing - + * FreeRTOS+FAT SL is a free download and may be used, modified and distributed + * without charge provided the user adheres to version two of the GNU General + * Public license (GPL) and does not remove the copyright notice or this text. + * The GPL V2 text is available on the gnu.org web site, and on the following + * URL: http://www.FreeRTOS.org/gpl-2.0.txt + * + * - Commercial licensing - + * Businesses and individuals who wish to incorporate FreeRTOS+FAT SL into + * proprietary software for redistribution in any form must first obtain a + * commercial license - and in-so-doing support the maintenance, support and + * further development of the FreeRTOS+FAT SL product. Commercial licenses can + * be obtained from http://shop.freertos.org and do not require any source files + * to be changed. + * + * FreeRTOS+FAT SL is distributed in the hope that it will be useful. You + * cannot use FreeRTOS+FAT SL unless you agree that you use the software 'as + * is'. FreeRTOS+FAT SL is provided WITHOUT ANY WARRANTY; without even the + * implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. Real Time Engineers Ltd. and HCC Embedded disclaims all + * conditions and terms, be they implied, expressed, or statutory. + * + * http://www.FreeRTOS.org + * http://www.FreeRTOS.org/FreeRTOS-Plus + * + */ + +#ifndef _CONFIG_FAT_SL_H +#define _CONFIG_FAT_SL_H + +#include "../version/ver_fat_sl.h" +#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2 + #error Incompatible FAT_SL version number! +#endif + +#include "../api/api_mdriver.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/************************************************************************** +** +** FAT SL user settings +** +**************************************************************************/ +#define F_SECTOR_SIZE 512u /* Disk sector size. */ +#define F_FS_THREAD_AWARE 1 /* Set to one if the file system will be access from more than one task. */ +#define F_MAXPATH 64 /* Maximum length a file name (including its full path) can be. */ +#define F_MAX_LOCK_WAIT_TICKS 20 /* The maximum number of RTOS ticks to wait when attempting to obtain a lock on the file system when F_FS_THREAD_AWARE is set to 1. */ + +#ifdef __cplusplus +} +#endif + +#endif /* _CONFIG_FAT_SL_H */ + diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/config_mdriver_ram.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/config_mdriver_ram.h new file mode 100644 index 000000000..de630faf2 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/config/config_mdriver_ram.h @@ -0,0 +1,52 @@ +/* + * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded + * + * FreeRTOS+FAT SL is an complementary component provided to Real Time Engineers + * Ltd. by HCC Embedded for use with FreeRTOS. It is not, in itself, part of + * the FreeRTOS kernel. FreeRTOS+FAT SL is licensed separately from FreeRTOS, + * and uses a different license to FreeRTOS. FreeRTOS+FAT SL uses a dual + * license model, information on which is provided below: + * + * - Open source licensing - + * FreeRTOS+FAT SL is a free download and may be used, modified and distributed + * without charge provided the user adheres to version two of the GNU General + * Public license (GPL) and does not remove the copyright notice or this text. + * The GPL V2 text is available on the gnu.org web site, and on the following + * URL: http://www.FreeRTOS.org/gpl-2.0.txt + * + * - Commercial licensing - + * Businesses and individuals who wish to incorporate FreeRTOS+FAT SL into + * proprietary software for redistribution in any form must first obtain a + * commercial license - and in-so-doing support the maintenance, support and + * further development of the FreeRTOS+FAT SL product. Commercial licenses can + * be obtained from http://shop.freertos.org and do not require any source files + * to be changed. + * + * FreeRTOS+FAT SL is distributed in the hope that it will be useful. You + * cannot use FreeRTOS+FAT SL unless you agree that you use the software 'as + * is'. FreeRTOS+FAT SL is provided WITHOUT ANY WARRANTY; without even the + * implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. Real Time Engineers Ltd. and HCC Embedded disclaims all + * conditions and terms, be they implied, expressed, or statutory. + * + * http://www.FreeRTOS.org + * http://www.FreeRTOS.org/FreeRTOS-Plus + * + */ + +#ifndef _CONFIG_MDRIVER_RAM_H_ +#define _CONFIG_MDRIVER_RAM_H_ + +#include "../version/ver_mdriver_ram.h" +#if VER_MDRIVER_RAM_MAJOR != 1 || VER_MDRIVER_RAM_MINOR != 2 + #error Incompatible MDRIVER_RAM version number! +#endif + +#define MDRIVER_RAM_SECTOR_SIZE 512 /* Sector size */ + +#define MDRIVER_RAM_VOLUME0_SIZE (28 * 1024) /* definition for size of ramdrive0 */ + +#define MDRIVER_MEM_LONG_ACCESS 1 /* set this value to 1 if 32bit access available */ + +#endif /* ifndef _CONFIG_MDRIVER_RAM_H_ */ + diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/logo_atmel.h b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/logo_atmel.h new file mode 100644 index 000000000..c2ce4b9f7 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/logo_atmel.h @@ -0,0 +1,15412 @@ +/** + * \file + * + * \brief Atmel logo for the FreeRTOS Web/DSP Demo. + * + * Copyright (c) 2013 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * + * \asf_license_stop + * + */ +#ifndef __ATMEL_LOGO_H__ +#define __ATMEL_LOGO_H__ +const uint8_t logo_atmel_bmp[230454]= +{ +0x42,0x4d,0x36,0x84,0x03,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28, +0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x40,0x01,0x00,0x00,0x01,0x00,0x18,0x00, +0x00,0x00,0x00,0x00,0x00,0x84,0x03,0x00,0x13,0x0b,0x00,0x00,0x13,0x0b,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfb,0xfa,0xff,0xfb,0xfc,0xff,0xfb, +0xfc,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xfe,0xfd,0xff,0xfe,0xfd, +0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xfb, +0xfc,0xff,0xfb,0xfa,0xff,0xfb,0xfa,0xfe,0xff,0xfd,0xf7,0xff,0xfd,0xf4,0xff, +0xfd,0xf5,0xff,0xfd,0xf5,0xff,0xfd,0xf5,0xff,0xfd,0xf5,0xff,0xfd,0xf6,0xff, +0xfd,0xf6,0xff,0xfe,0xf7,0xff,0xfe,0xf7,0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff, +0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfa,0xfa,0xff,0xf7,0xfd,0xff, +0xf3,0xff,0xff,0xf2,0xff,0xff,0xf2,0xff,0xff,0xf2,0xfe,0xff,0xf2,0xfe,0xff, +0xf2,0xfe,0xff,0xf2,0xfe,0xff,0xf0,0xfd,0xff,0xf0,0xfd,0xff,0xf0,0xfc,0xff, +0xf0,0xfc,0xff,0xf0,0xfc,0xff,0xf0,0xfc,0xff,0xf0,0xfc,0xff,0xf2,0xfe,0xff, +0xf1,0xff,0xfb,0xf3,0xff,0xf6,0xf3,0xff,0xf6,0xf3,0xff,0xf6,0xf5,0xff,0xf8, +0xf5,0xff,0xf8,0xf5,0xff,0xf8,0xf5,0xff,0xf8,0xf9,0xff,0xfb,0xf9,0xff,0xfb, +0xf9,0xff,0xfb,0xf9,0xff,0xfb,0xf9,0xff,0xfb,0xf9,0xff,0xfb,0xfa,0xff,0xfd, +0xfe,0xff,0xfb,0xff,0xff,0xf6,0xff,0xff,0xf6,0xff,0xff,0xf6,0xff,0xff,0xf6, +0xff,0xff,0xf7,0xff,0xff,0xf7,0xff,0xff,0xf8,0xff,0xff,0xf8,0xff,0xfb,0xf2, +0xff,0xfc,0xf3,0xff,0xfd,0xf5,0xff,0xfe,0xf6,0xff,0xff,0xf7,0xff,0xff,0xf8, +0xff,0xff,0xf9,0xff,0xff,0xf9,0xfc,0xfd,0xf9,0xfb,0xff,0xfa,0xfd,0xff,0xfc, +0xfd,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc, +0xff,0xff,0xf9,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xf9, +0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xfc,0xff,0xfc,0xff,0xff,0xf9,0xff, +0xff,0xf9,0xff,0xff,0xf8,0xff,0xff,0xf8,0xff,0xff,0xf7,0xff,0xff,0xf7,0xfd, +0xff,0xf7,0xfd,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff,0xff,0xfb,0xfe, +0xfe,0xf9,0xfa,0xfb,0xf6,0xf7,0xf8,0xf3,0xf4,0xf5,0xf1,0xf6,0xfa,0xf9,0xff, +0xf8,0xf8,0xff,0xf9,0xf9,0xff,0xfa,0xfa,0xff,0xfb,0xfc,0xff,0xfb,0xfc,0xff, +0xfb,0xfd,0xff,0xfb,0xfe,0xff,0xf5,0xf8,0xfd,0xf7,0xfa,0xfe,0xfa,0xfe,0xff, +0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xfa, +0xfa,0xff,0xf5,0xfa,0xff,0xf1,0xf7,0xff,0xef,0xf4,0xff,0xea,0xf0,0xff,0xe8, +0xee,0xff,0xe3,0xe8,0xff,0xdd,0xe5,0xff,0xd7,0xf3,0xff,0xe4,0xee,0xff,0xdf, +0xe8,0xff,0xd7,0xe1,0xff,0xcf,0xdc,0xff,0xcc,0xd8,0xff,0xc6,0xd1,0xf9,0xbf, +0xc7,0xf8,0xb4,0xb1,0xf2,0xa3,0xa6,0xf2,0x9a,0x99,0xeb,0x92,0x8c,0xe4,0x86, +0x7f,0xdc,0x79,0x77,0xd6,0x6e,0x74,0xcf,0x68,0x76,0xca,0x64,0x92,0xd9,0x79, +0xb0,0xeb,0x96,0xd4,0xfe,0xb7,0xec,0xff,0xd4,0xfb,0xff,0xe9,0xfd,0xff,0xf2, +0xff,0xff,0xfb,0xf5,0xf4,0xf6,0xfd,0xf9,0xfe,0xff,0xfd,0xff,0xff,0xfe,0xff, +0xff,0xff,0xfe,0xfe,0xff,0xfb,0xfd,0xff,0xf9,0xfd,0xfe,0xfa,0xfe,0xff,0xfd, +0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfa,0xfa,0xff,0xfa,0xfa,0xff,0xfa, +0xfc,0xff,0xfa,0xfe,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfb, +0xff,0xfe,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xfe,0xff,0xfb,0xfc,0xff,0xfb, +0xfc,0xff,0xfb,0xfa,0xff,0xfb,0xfc,0xfe,0xff,0xfc,0xf9,0xff,0xfe,0xf8,0xff, +0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff, +0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfe,0xf9,0xff,0xfe,0xf9,0xff,0xfe,0xf9,0xff, +0xfe,0xf9,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfc,0xfb,0xff,0xf9,0xfe,0xff, +0xf5,0xff,0xfe,0xf5,0xff,0xfe,0xf5,0xff,0xfe,0xf5,0xff,0xff,0xf3,0xff,0xff, +0xf3,0xff,0xff,0xf3,0xfe,0xff,0xf3,0xfd,0xff,0xf2,0xfe,0xff,0xf2,0xfd,0xff, +0xf2,0xfc,0xff,0xf2,0xfc,0xff,0xf2,0xfb,0xff,0xf2,0xfb,0xff,0xf3,0xfd,0xff, +0xf4,0xff,0xfd,0xf6,0xff,0xf9,0xf6,0xff,0xf9,0xf6,0xff,0xf9,0xf8,0xff,0xfa, +0xf8,0xff,0xfa,0xf8,0xff,0xfa,0xf8,0xff,0xfa,0xfa,0xff,0xfc,0xfa,0xff,0xfc, +0xfa,0xff,0xfc,0xfa,0xff,0xfc,0xfa,0xff,0xfc,0xfa,0xff,0xfc,0xfb,0xff,0xfe, +0xfd,0xff,0xfe,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa, +0xff,0xfe,0xf9,0xff,0xfe,0xf9,0xff,0xfc,0xf9,0xff,0xfc,0xf9,0xff,0xfe,0xfb, +0xff,0xfe,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc, +0xff,0xff,0xfc,0xff,0xff,0xfc,0xf9,0xfc,0xfa,0xf7,0xfc,0xfa,0xfa,0xfd,0xfb, +0xfa,0xfd,0xfb,0xf9,0xfc,0xfa,0xf9,0xfc,0xfa,0xf9,0xfc,0xfa,0xfa,0xfe,0xf9, +0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc,0xfd,0xff,0xfb,0xfc,0xfe,0xf8, +0xf9,0xfc,0xf3,0xf7,0xfa,0xf1,0xf8,0xf8,0xf2,0xff,0xfe,0xfd,0xff,0xfd,0xfe, +0xff,0xfd,0xfe,0xff,0xfe,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfc, +0xff,0xff,0xfc,0xfd,0xfa,0xf6,0xfe,0xfb,0xf7,0xfe,0xfe,0xf8,0xff,0xff,0xfa, +0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xfd,0xff,0xfb,0xf6,0xff,0xfa, +0xf4,0xff,0xfa,0xf3,0xff,0xf9,0xf2,0xfe,0xf8,0xf0,0xfd,0xf5,0xef,0xfc,0xf4, +0xee,0xfc,0xf1,0xee,0xfc,0xf1,0xf6,0xff,0xf8,0xf6,0xff,0xf8,0xf6,0xff,0xf7, +0xf1,0xff,0xf2,0xed,0xfd,0xec,0xe8,0xf8,0xe7,0xe5,0xf5,0xe4,0xe1,0xf5,0xde, +0xd2,0xf0,0xcd,0xcb,0xed,0xc5,0xc4,0xe6,0xbd,0xbb,0xdf,0xb5,0xb3,0xd7,0xab, +0xab,0xd1,0xa1,0xa2,0xcb,0x98,0x9d,0xc7,0x90,0x7e,0xab,0x72,0x7a,0xa8,0x6d, +0x71,0xa2,0x64,0x6c,0x9e,0x5e,0x66,0x9b,0x58,0x62,0x98,0x53,0x5e,0x94,0x4e, +0x57,0x92,0x47,0x4a,0x93,0x3d,0x43,0x94,0x37,0x3a,0x93,0x33,0x33,0x90,0x2d, +0x2c,0x8c,0x27,0x28,0x89,0x21,0x28,0x84,0x1d,0x2c,0x7f,0x1c,0x3f,0x86,0x29, +0x3f,0x7a,0x26,0x62,0x8b,0x47,0x9d,0xbc,0x85,0xd5,0xe8,0xc1,0xf8,0xff,0xeb, +0xfd,0xff,0xf7,0xfd,0xfe,0xfa,0xf9,0xf9,0xf9,0xfe,0xfb,0xfd,0xff,0xfd,0xfd, +0xfe,0xfc,0xfb,0xfd,0xfe,0xfa,0xff,0xff,0xfc,0xff,0xff,0xfc,0xfd,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xf8,0xf9,0xff,0xf8,0xf9,0xff,0xf8, +0xfa,0xff,0xf8,0xfc,0xff,0xf8,0xfe,0xff,0xf8,0xff,0xff,0xf8,0xff,0xff,0xf8, +0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xfe,0xff,0xfa,0xfc,0xff,0xfa, +0xfc,0xff,0xfa,0xfc,0xff,0xfa,0xfc,0xff,0xfd,0xfc,0xfc,0xff,0xfc,0xfb,0xff, +0xfc,0xfb,0xff,0xfc,0xfb,0xff,0xfc,0xfb,0xff,0xfc,0xfb,0xff,0xfc,0xfb,0xff, +0xfc,0xfc,0xff,0xfc,0xfc,0xff,0xfc,0xfc,0xff,0xfc,0xfc,0xff,0xfc,0xfd,0xff, +0xfc,0xfd,0xff,0xfc,0xfd,0xff,0xfc,0xfd,0xff,0xfc,0xfe,0xfe,0xfc,0xff,0xfa, +0xfa,0xff,0xf7,0xfa,0xff,0xf8,0xfa,0xff,0xf8,0xfa,0xff,0xfa,0xf9,0xff,0xfb, +0xf9,0xff,0xfd,0xf7,0xff,0xfe,0xf7,0xff,0xff,0xf7,0xfe,0xff,0xf5,0xfe,0xff, +0xf5,0xfd,0xff,0xf3,0xfc,0xff,0xf3,0xfc,0xff,0xf3,0xfc,0xff,0xf5,0xfc,0xff, +0xf9,0xfd,0xfe,0xfb,0xfd,0xfd,0xf9,0xfe,0xfd,0xf9,0xfe,0xfd,0xf9,0xfe,0xfd, +0xf9,0xfe,0xfd,0xf9,0xfe,0xfc,0xf9,0xfe,0xfc,0xfb,0xff,0xfe,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfe, +0xfd,0xff,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff, +0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfc,0xff, +0xff,0xfd,0xff,0xff,0xfc,0xff,0xfe,0xfa,0xff,0xfb,0xf9,0xff,0xf9,0xf7,0xfd, +0xf8,0xf6,0xfc,0xf5,0xf6,0xfa,0xfb,0xfe,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff, +0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff, +0xf7,0xfd,0xfc,0xf7,0xfe,0xfb,0xf9,0xff,0xfd,0xf8,0xff,0xfc,0xfa,0xff,0xfc, +0xfa,0xff,0xfb,0xfa,0xff,0xfb,0xfa,0xff,0xf8,0xfc,0xff,0xf4,0xfc,0xff,0xf1, +0xfc,0xff,0xf1,0xfc,0xff,0xf1,0xfd,0xff,0xf2,0xfb,0xff,0xf2,0xfb,0xff,0xf1, +0xfb,0xff,0xf1,0xf8,0xff,0xee,0xf7,0xff,0xed,0xf5,0xff,0xeb,0xf3,0xff,0xe9, +0xef,0xff,0xe5,0xed,0xfe,0xe3,0xeb,0xfc,0xe1,0xe7,0xfe,0xde,0xde,0xff,0xd8, +0xd7,0xfe,0xd1,0xd0,0xf7,0xca,0xc7,0xee,0xc1,0xbd,0xe4,0xb7,0xb4,0xdb,0xae, +0xad,0xd4,0xa7,0xa9,0xd0,0xa3,0x94,0xbb,0x8d,0x8f,0xb6,0x88,0x86,0xad,0x7f, +0x7c,0xa3,0x75,0x74,0x9b,0x6d,0x6e,0x95,0x67,0x6a,0x92,0x62,0x63,0x94,0x5c, +0x52,0x91,0x4c,0x49,0x91,0x45,0x45,0x8d,0x41,0x40,0x8a,0x3e,0x3e,0x89,0x3b, +0x3c,0x88,0x37,0x38,0x84,0x32,0x35,0x81,0x2f,0x3c,0x89,0x35,0x3a,0x88,0x31, +0x37,0x86,0x2f,0x37,0x87,0x2e,0x38,0x88,0x2f,0x3b,0x8b,0x30,0x3c,0x8c,0x31, +0x3b,0x8f,0x31,0x3e,0x96,0x32,0x3c,0x99,0x30,0x3a,0x9c,0x32,0x39,0x9e,0x34, +0x38,0xa0,0x35,0x3a,0x9f,0x36,0x3f,0x9d,0x38,0x46,0x9a,0x3b,0x31,0x77,0x1d, +0x37,0x70,0x21,0x3e,0x67,0x24,0x43,0x63,0x2a,0x68,0x7f,0x52,0xb4,0xc4,0xa2, +0xf3,0xff,0xe5,0xfb,0xff,0xf2,0xfb,0xff,0xf9,0xfe,0xff,0xfd,0xfb,0xfc,0xfa, +0xf9,0xfa,0xf6,0xfc,0xfd,0xf9,0xff,0xff,0xfc,0xff,0xff,0xfe,0xfb,0xfb,0xfb, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfa,0xf9,0xff,0xf8,0xfa,0xff,0xf8, +0xfa,0xff,0xf8,0xfc,0xff,0xf8,0xfe,0xff,0xf8,0xff,0xff,0xf8,0xff,0xff,0xf8, +0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xfe,0xff,0xfa,0xfe,0xff,0xfb, +0xfc,0xff,0xfb,0xfe,0xff,0xfb,0xfc,0xff,0xfd,0xfd,0xff,0xff,0xfd,0xff,0xff, +0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xfe, +0xfd,0xff,0xfe,0xfc,0xff,0xfd,0xfc,0xff,0xfd,0xfc,0xff,0xfb,0xfc,0xff,0xfb, +0xfc,0xff,0xfb,0xfc,0xff,0xfb,0xfc,0xff,0xfa,0xfe,0xff,0xf8,0xff,0xff,0xf7, +0xff,0xff,0xf6,0xff,0xff,0xf7,0xff,0xff,0xf7,0xff,0xff,0xf8,0xff,0xff,0xfa, +0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfe,0xfe,0xfe,0xfc,0xfe,0xff,0xfc,0xfd,0xff, +0xfa,0xfd,0xff,0xfa,0xfd,0xff,0xf9,0xfc,0xff,0xf9,0xfc,0xff,0xfa,0xfc,0xff, +0xfe,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff, +0xfe,0xfd,0xff,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfc,0xfe,0xfe,0xfc,0xff,0xfd, +0xfc,0xff,0xfd,0xfa,0xff,0xfd,0xfa,0xff,0xfd,0xfa,0xff,0xfb,0xfa,0xff,0xfd, +0xfa,0xff,0xfe,0xfe,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff, +0xff,0xfc,0xff,0xff,0xfc,0xff,0xfd,0xfc,0xff,0xfd,0xfc,0xff,0xfb,0xfe,0xff, +0xfb,0xfe,0xff,0xfa,0xfe,0xff,0xfa,0xff,0xff,0xf8,0xff,0xff,0xf8,0xff,0xff, +0xf8,0xff,0xff,0xf6,0xff,0xff,0xf5,0xff,0xfd,0xf2,0xff,0xfa,0xf0,0xff,0xf7, +0xf0,0xff,0xf7,0xf1,0xff,0xf8,0xf2,0xff,0xf7,0xef,0xff,0xf5,0xee,0xff,0xf3, +0xf0,0xff,0xf5,0xee,0xff,0xf4,0xed,0xff,0xf3,0xec,0xff,0xf0,0xeb,0xff,0xef, +0xe8,0xff,0xed,0xe9,0xff,0xec,0xe6,0xff,0xe7,0xe5,0xff,0xdd,0xe2,0xff,0xd7, +0xdd,0xfe,0xd2,0xd7,0xf8,0xcc,0xcf,0xf2,0xc6,0xc8,0xeb,0xbf,0xc4,0xe8,0xba, +0xc1,0xe5,0xb7,0xb4,0xd8,0xa9,0xaf,0xd5,0xa5,0xa7,0xcd,0x9d,0x9c,0xc2,0x92, +0x90,0xb6,0x84,0x83,0xac,0x79,0x7d,0xa3,0x71,0x73,0xa3,0x69,0x64,0x9e,0x57, +0x5d,0x9e,0x52,0x5a,0x9a,0x4e,0x54,0x95,0x49,0x4f,0x8f,0x43,0x49,0x8a,0x3e, +0x46,0x86,0x3a,0x43,0x84,0x38,0x4c,0x8c,0x40,0x48,0x89,0x3d,0x45,0x85,0x39, +0x40,0x81,0x36,0x3f,0x7e,0x34,0x3f,0x80,0x35,0x43,0x83,0x37,0x3e,0x88,0x36, +0x3b,0x93,0x39,0x34,0x95,0x35,0x35,0x96,0x36,0x38,0x99,0x39,0x3c,0x9d,0x3c, +0x41,0xa0,0x3f,0x42,0xa1,0x40,0x42,0xa1,0x40,0x45,0xa4,0x43,0x45,0xa4,0x43, +0x46,0xa5,0x44,0x47,0xa6,0x45,0x4a,0xaa,0x46,0x4d,0xad,0x49,0x50,0xb0,0x4c, +0x54,0xb1,0x4e,0x55,0xb1,0x4c,0x56,0xb2,0x4b,0x52,0xb3,0x4b,0x51,0xb4,0x4e, +0x51,0xb3,0x4f,0x52,0xb1,0x50,0x57,0xae,0x52,0x5d,0xab,0x54,0x62,0xa3,0x54, +0x6b,0x9f,0x59,0x67,0x8e,0x50,0x4e,0x6e,0x37,0x3d,0x57,0x27,0x55,0x6e,0x42, +0xa1,0xb9,0x8f,0xec,0xff,0xde,0xf9,0xff,0xf2,0xfd,0xff,0xf9,0xfd,0xff,0xfb, +0xfb,0xfc,0xf8,0xfd,0xfe,0xfa,0xff,0xff,0xfe,0xff,0xff,0xff,0xfa,0xf9,0xfb, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfe,0xfa,0xff,0xfd,0xfc,0xff,0xfd, +0xfe,0xff,0xfd,0xfe,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa, +0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfe, +0xfe,0xfe,0xfe,0xff,0xfd,0xff,0xfe,0xfe,0xfe,0xff,0xff,0xfc,0xff,0xff,0xfb, +0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf8, +0xff,0xff,0xf8,0xfe,0xff,0xf7,0xfe,0xff,0xf7,0xfe,0xff,0xf6,0xfe,0xff,0xf6, +0xfe,0xff,0xf6,0xfe,0xff,0xf6,0xfe,0xff,0xf4,0xff,0xff,0xf6,0xff,0xff,0xf7, +0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfd,0xfb, +0xff,0xfd,0xfb,0xff,0xfe,0xfb,0xff,0xfd,0xfd,0xff,0xfd,0xfe,0xff,0xfd,0xfe, +0xff,0xfd,0xfe,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfc,0xff, +0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff, +0xff,0xfc,0xff,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xfe,0xfd,0xff,0xfe,0xfd, +0xfe,0xff,0xfd,0xfe,0xff,0xfb,0xfe,0xff,0xfb,0xfc,0xff,0xfa,0xfc,0xff,0xfb, +0xfa,0xff,0xfb,0xf7,0xff,0xfd,0xf7,0xff,0xfe,0xf7,0xff,0xfe,0xf4,0xff,0xfc, +0xf3,0xfe,0xfb,0xf0,0xfe,0xfa,0xef,0xff,0xf8,0xef,0xff,0xf8,0xf0,0xff,0xfa, +0xef,0xff,0xf9,0xec,0xff,0xf6,0xeb,0xff,0xf5,0xe7,0xff,0xf3,0xe6,0xff,0xf1, +0xe4,0xfe,0xf0,0xe3,0xff,0xec,0xe8,0xff,0xec,0xe5,0xff,0xe6,0xe1,0xff,0xe2, +0xde,0xfe,0xdf,0xdb,0xfe,0xdc,0xd9,0xfc,0xda,0xd3,0xf9,0xd5,0xcf,0xf6,0xd0, +0xc2,0xeb,0xc5,0xbd,0xe7,0xbe,0xb4,0xde,0xb5,0xa6,0xd3,0xa8,0x99,0xc6,0x9b, +0x8c,0xbb,0x8d,0x84,0xb2,0x84,0x7c,0xb0,0x7a,0x68,0xa7,0x62,0x64,0xa7,0x5c, +0x5f,0xa2,0x57,0x59,0x9c,0x51,0x53,0x96,0x4b,0x4d,0x90,0x45,0x48,0x8b,0x40, +0x44,0x89,0x3e,0x3f,0x84,0x39,0x3e,0x83,0x38,0x3d,0x83,0x36,0x3b,0x81,0x34, +0x39,0x7f,0x32,0x35,0x7d,0x30,0x36,0x7c,0x2f,0x31,0x7f,0x28,0x34,0x8c,0x28, +0x32,0x90,0x25,0x36,0x92,0x28,0x38,0x96,0x2b,0x3c,0x98,0x2e,0x3e,0x9c,0x31, +0x41,0x9d,0x34,0x42,0x9f,0x36,0x41,0x9c,0x35,0x41,0x9d,0x36,0x43,0x9e,0x37, +0x45,0xa1,0x3c,0x4a,0xa4,0x40,0x4e,0xaa,0x45,0x52,0xac,0x48,0x51,0xaf,0x4a, +0x45,0xab,0x45,0x42,0xab,0x44,0x42,0xab,0x44,0x44,0xad,0x46,0x48,0xb0,0x4b, +0x4c,0xb2,0x4d,0x4c,0xb1,0x4f,0x4b,0xb0,0x4e,0x50,0xb3,0x51,0x51,0xb3,0x53, +0x53,0xb4,0x54,0x53,0xb4,0x54,0x54,0xb4,0x56,0x55,0xb5,0x57,0x57,0xb7,0x59, +0x5d,0xb8,0x5b,0x60,0xb2,0x59,0x62,0xb1,0x5a,0x60,0xb1,0x5a,0x5c,0xb1,0x5c, +0x5c,0xb1,0x5d,0x5f,0xb0,0x61,0x64,0xad,0x64,0x6a,0xab,0x66,0x78,0xac,0x70, +0x7d,0xa7,0x70,0x84,0xa8,0x74,0x88,0xa9,0x76,0x6c,0x8d,0x5a,0x39,0x5b,0x25, +0x47,0x6c,0x34,0x90,0xb0,0x81,0xe4,0xf5,0xda,0xf6,0xff,0xf0,0xfb,0xff,0xf8, +0xfc,0xff,0xfa,0xfa,0xfd,0xfb,0xfd,0xff,0xff,0xff,0xfe,0xff,0xfd,0xfc,0xfe, +0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff, +0xfd,0xff,0xff,0xfd,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xff,0xfe,0xfd,0xff,0xff,0xfc,0xff, +0xff,0xfd,0xff,0xff,0xfe,0xfe,0xff,0xfe,0xfe,0xff,0xfe,0xfd,0xff,0xfe,0xfd, +0xff,0xfe,0xfd,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xff,0xfd,0xff, +0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff,0xff,0xff,0xfc,0xff,0xff,0xfb, +0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf8, +0xff,0xff,0xf8,0xfe,0xff,0xf7,0xfe,0xff,0xf6,0xfe,0xff,0xf6,0xfe,0xff,0xf6, +0xfe,0xff,0xf6,0xfe,0xff,0xf6,0xfe,0xff,0xf4,0xff,0xff,0xf6,0xff,0xfe,0xfa, +0xff,0xfc,0xfd,0xff,0xfc,0xfd,0xff,0xfc,0xfd,0xff,0xfc,0xfd,0xff,0xfd,0xfd, +0xff,0xfd,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfb, +0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb, +0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa, +0xfe,0xff,0xf8,0xfe,0xff,0xf8,0xfc,0xff,0xf7,0xfb,0xff,0xf6,0xf9,0xff,0xf5, +0xf9,0xff,0xf3,0xf8,0xff,0xf3,0xf8,0xff,0xf2,0xf6,0xff,0xf2,0xf6,0xff,0xf2, +0xf2,0xff,0xf0,0xef,0xff,0xf0,0xec,0xff,0xee,0xeb,0xff,0xec,0xe6,0xff,0xe7, +0xe3,0xff,0xe4,0xdd,0xff,0xde,0xd9,0xfe,0xdc,0xd5,0xfe,0xd9,0xcb,0xf4,0xcf, +0xc5,0xf1,0xca,0xbd,0xe9,0xc2,0xb3,0xdf,0xb6,0xa7,0xd5,0xab,0x9d,0xcb,0xa1, +0x93,0xc3,0x99,0x8f,0xc0,0x92,0x7c,0xae,0x78,0x77,0xaa,0x70,0x6e,0xa4,0x69, +0x68,0x9e,0x63,0x63,0x99,0x5e,0x5b,0x94,0x57,0x54,0x8d,0x4e,0x4d,0x8a,0x48, +0x47,0x84,0x42,0x45,0x84,0x3f,0x44,0x83,0x3e,0x41,0x83,0x3c,0x3f,0x81,0x3a, +0x3c,0x81,0x38,0x3b,0x80,0x37,0x38,0x80,0x33,0x2f,0x82,0x2d,0x2e,0x86,0x2c, +0x31,0x88,0x2e,0x34,0x8c,0x32,0x38,0x8f,0x35,0x3b,0x93,0x39,0x3e,0x95,0x3b, +0x3f,0x97,0x3d,0x42,0x9a,0x40,0x43,0x9b,0x41,0x45,0x9e,0x41,0x48,0xa1,0x44, +0x4b,0xa4,0x47,0x4e,0xa7,0x4a,0x50,0xa9,0x4c,0x4f,0xac,0x4b,0x4e,0xb0,0x46, +0x4c,0xb2,0x43,0x4f,0xb2,0x46,0x4e,0xb3,0x47,0x51,0xb4,0x48,0x50,0xb4,0x4a, +0x53,0xb5,0x4b,0x51,0xb4,0x4c,0x56,0xb7,0x4f,0x55,0xb8,0x52,0x58,0xb8,0x53, +0x57,0xb9,0x55,0x58,0xb7,0x56,0x54,0xb5,0x54,0x54,0xb3,0x52,0x52,0xb0,0x51, +0x59,0xb5,0x5c,0x5a,0xb3,0x5d,0x58,0xb1,0x5b,0x59,0xb1,0x5d,0x5c,0xb2,0x5e, +0x5d,0xb2,0x60,0x5c,0xaf,0x60,0x5b,0xad,0x60,0x62,0xb2,0x65,0x64,0xb3,0x69, +0x6a,0xb6,0x6e,0x6d,0xb9,0x71,0x6f,0xbb,0x74,0x72,0xbe,0x77,0x77,0xc0,0x7a, +0x7d,0xc2,0x7f,0x8c,0xc8,0x88,0x90,0xc9,0x8a,0x92,0xcf,0x8f,0x96,0xd5,0x97, +0x9d,0xdc,0x9e,0xa4,0xe1,0xa7,0xad,0xe5,0xb0,0xb6,0xe6,0xb6,0xc2,0xea,0xc0, +0xd1,0xf3,0xcb,0xcf,0xef,0xc6,0xd2,0xf1,0xc4,0xbf,0xe4,0xb2,0x75,0xa1,0x66, +0x34,0x64,0x22,0x35,0x61,0x26,0xca,0xe3,0xbd,0xe9,0xf7,0xdf,0xfa,0xff,0xf4, +0xfb,0xff,0xf9,0xf6,0xfb,0xf9,0xfb,0xfd,0xfe,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xfd,0xff,0xfe, +0xfd,0xff,0xff,0xfd,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff, +0xfb,0xf3,0xfd,0xff,0xfa,0xff,0xfb,0xf5,0xfa,0xf8,0xf3,0xf5,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfc,0xfe,0xff,0xfb,0xff,0xfe,0xfa,0xff, +0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfd,0xff,0xfc,0xfb,0xfd,0xfd,0xfd,0xfd, +0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe, +0xff,0xff,0xfe,0xfd,0xfe,0xfa,0xfd,0xfe,0xfa,0xfd,0xfe,0xfa,0xfd,0xff,0xf9, +0xfd,0xff,0xf9,0xfd,0xff,0xf9,0xfc,0xfe,0xf8,0xfe,0xfd,0xf9,0xff,0xfc,0xfe, +0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xfe, +0xff,0xfd,0xfc,0xfd,0xfe,0xfa,0xfc,0xfe,0xf8,0xfa,0xff,0xf6,0xfb,0xff,0xf6, +0xfa,0xff,0xf6,0xfb,0xff,0xf7,0xfa,0xff,0xf5,0xfa,0xff,0xf5,0xf8,0xff,0xf2, +0xf2,0xff,0xec,0xef,0xff,0xe9,0xf0,0xff,0xe8,0xec,0xff,0xe5,0xeb,0xff,0xe4, +0xe9,0xff,0xe1,0xe7,0xff,0xdf,0xe5,0xff,0xde,0xe1,0xfc,0xda,0xdc,0xfb,0xd6, +0xd6,0xf5,0xce,0xcc,0xee,0xc6,0xc3,0xe5,0xbd,0xb9,0xdc,0xb4,0xb3,0xd7,0xad, +0xac,0xd6,0xa6,0x91,0xc7,0x86,0x87,0xc3,0x7c,0x7f,0xb9,0x72,0x71,0xad,0x66, +0x68,0xa4,0x5d,0x60,0x9f,0x55,0x5c,0x9b,0x51,0x5a,0x9b,0x4f,0x52,0x93,0x47, +0x4e,0x93,0x43,0x4c,0x91,0x41,0x46,0x8e,0x3c,0x42,0x8a,0x38,0x3f,0x87,0x34, +0x3a,0x85,0x31,0x39,0x84,0x2e,0x3b,0x85,0x2d,0x3b,0x85,0x2d,0x3d,0x87,0x2f, +0x3c,0x89,0x2e,0x3e,0x8b,0x30,0x3d,0x8d,0x30,0x3f,0x8f,0x32,0x3e,0x90,0x31, +0x41,0x93,0x34,0x41,0x96,0x34,0x43,0x98,0x36,0x45,0x9d,0x39,0x49,0xa1,0x3d, +0x4c,0xa4,0x40,0x4f,0xa7,0x43,0x4f,0xa9,0x45,0x4c,0xa8,0x49,0x49,0xa9,0x4b, +0x4c,0xaa,0x4c,0x4b,0xab,0x4d,0x4e,0xac,0x4e,0x4d,0xad,0x4f,0x50,0xad,0x52, +0x4f,0xae,0x53,0x52,0xb1,0x56,0x52,0xb1,0x56,0x55,0xb2,0x57,0x55,0xb2,0x57, +0x55,0xb2,0x57,0x55,0xb2,0x57,0x55,0xb2,0x57,0x57,0xb1,0x58,0x56,0xac,0x58, +0x56,0xab,0x59,0x58,0xab,0x5c,0x58,0xad,0x5d,0x5a,0xad,0x5e,0x5a,0xae,0x60, +0x5c,0xae,0x61,0x5b,0xae,0x63,0x5b,0xad,0x62,0x5c,0xae,0x65,0x60,0xb0,0x69, +0x63,0xb5,0x6d,0x68,0xb8,0x73,0x6c,0xbd,0x78,0x70,0xc0,0x7b,0x76,0xc0,0x80, +0x88,0xc2,0x8c,0x90,0xc2,0x92,0x94,0xc5,0x97,0x99,0xca,0x9c,0xa1,0xcf,0xa4, +0xa6,0xd4,0xaa,0xab,0xd7,0xb0,0xad,0xd8,0xb3,0xc0,0xe8,0xc5,0xc5,0xea,0xca, +0xcb,0xed,0xcf,0xd1,0xf3,0xd5,0xd7,0xf6,0xdb,0xdb,0xfa,0xdf,0xdd,0xfb,0xe2, +0xdf,0xfc,0xe2,0xea,0xff,0xe9,0xea,0xff,0xe8,0xe7,0xff,0xe6,0xe6,0xff,0xe7, +0xe4,0xff,0xe7,0xe5,0xff,0xea,0xe9,0xff,0xed,0xea,0xff,0xee,0xe7,0xfd,0xea, +0xf3,0xff,0xf2,0xe2,0xf8,0xdf,0xee,0xff,0xe9,0xde,0xff,0xd6,0x8c,0xbf,0x81, +0x50,0x8d,0x43,0x39,0x70,0x2b,0x46,0x68,0x39,0xf3,0xff,0xe7,0xee,0xfe,0xe7, +0xfa,0xff,0xf7,0xf3,0xf8,0xf6,0xfd,0xfe,0xff,0xfe,0xfc,0xff,0xff,0xfd,0xff, +0xff,0xfe,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0xff,0xff,0xfc,0xfd,0xff,0xfe, +0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf4,0xe7,0xf7,0xfe,0xf3,0xff,0xff,0xfa,0xff, +0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xfe,0xfe,0xff,0xff,0xff, +0xff,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xff,0xfd,0xff,0xff, +0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe,0xfb,0xff,0xfc, +0xfa,0xff,0xfb,0xfa,0xff,0xfa,0xf9,0xff,0xf9,0xf8,0xff,0xf8,0xf8,0xff,0xf8, +0xf7,0xff,0xf5,0xf9,0xff,0xf7,0xf9,0xff,0xf6,0xfa,0xff,0xf7,0xfa,0xff,0xf7, +0xfb,0xff,0xf8,0xfb,0xff,0xf8,0xfb,0xff,0xf8,0xfa,0xff,0xf8,0xf2,0xff,0xf5, +0xf1,0xff,0xf8,0xf1,0xff,0xf7,0xf1,0xff,0xf6,0xf2,0xff,0xf6,0xf1,0xff,0xf3, +0xef,0xff,0xf2,0xee,0xff,0xef,0xed,0xff,0xec,0xe7,0xff,0xe5,0xe1,0xfe,0xdd, +0xd9,0xf7,0xd4,0xcf,0xf0,0xcb,0xc7,0xe9,0xc1,0xc0,0xe2,0xb9,0xbc,0xe0,0xb4, +0xb2,0xdc,0xac,0xab,0xd9,0xa4,0xa2,0xd0,0x9b,0x97,0xc5,0x90,0x88,0xb9,0x83, +0x7d,0xae,0x76,0x73,0xa6,0x6d,0x6e,0xa1,0x67,0x66,0x99,0x5f,0x61,0x97,0x5b, +0x5d,0x93,0x57,0x55,0x8e,0x4f,0x4f,0x88,0x49,0x47,0x83,0x43,0x43,0x80,0x3e, +0x40,0x80,0x38,0x40,0x87,0x31,0x3d,0x88,0x2c,0x3a,0x85,0x29,0x38,0x83,0x27, +0x36,0x84,0x26,0x38,0x86,0x28,0x38,0x89,0x2a,0x3a,0x8b,0x2a,0x3f,0x90,0x2f, +0x3f,0x92,0x2f,0x41,0x94,0x31,0x44,0x98,0x32,0x47,0x9b,0x35,0x4a,0x9e,0x38, +0x4a,0xa1,0x39,0x4b,0xa1,0x3b,0x57,0xa9,0x4a,0x57,0xa8,0x4b,0x58,0xa9,0x4c, +0x59,0xaa,0x4d,0x58,0xac,0x4d,0x58,0xac,0x4d,0x59,0xad,0x4e,0x57,0xae,0x4c, +0x5b,0xb2,0x50,0x59,0xb3,0x50,0x59,0xb3,0x4f,0x57,0xb3,0x4e,0x57,0xb3,0x4e, +0x56,0xb2,0x4d,0x56,0xb2,0x4b,0x56,0xb0,0x50,0x5b,0xb2,0x5c,0x5b,0xb0,0x60, +0x5c,0xb1,0x61,0x5c,0xb1,0x61,0x5d,0xb2,0x62,0x5d,0xb2,0x62,0x5f,0xb1,0x64, +0x5f,0xb1,0x64,0x5a,0xac,0x5f,0x5b,0xad,0x60,0x5e,0xb0,0x63,0x63,0xb3,0x66, +0x67,0xb7,0x6a,0x6a,0xba,0x6d,0x6c,0xbc,0x6f,0x70,0xbc,0x75,0x7c,0xbf,0x82, +0x82,0xbe,0x88,0x86,0xc1,0x8e,0x8c,0xc7,0x94,0x91,0xcc,0x9a,0x96,0xd1,0x9f, +0x9a,0xd4,0xa4,0x9c,0xd6,0xa6,0xab,0xe4,0xb7,0xad,0xe6,0xb9,0xb1,0xe9,0xbe, +0xb6,0xee,0xc5,0xbb,0xf3,0xca,0xc0,0xf8,0xcf,0xc4,0xfc,0xd3,0xcb,0xfb,0xd7, +0xdb,0xfc,0xe1,0xe1,0xfb,0xe4,0xe5,0xfb,0xe8,0xe7,0xfd,0xea,0xeb,0xfe,0xed, +0xed,0xff,0xf1,0xf0,0xff,0xf4,0xf1,0xff,0xf6,0xec,0xf9,0xf1,0xed,0xf9,0xf3, +0xf1,0xfa,0xf7,0xf5,0xfc,0xf9,0xf7,0xfd,0xfc,0xf7,0xfd,0xfc,0xf7,0xfc,0xfd, +0xf8,0xfc,0xfd,0xf7,0xfc,0xfb,0xf7,0xfc,0xfa,0xf5,0xff,0xf8,0xf3,0xff,0xf5, +0xf2,0xff,0xf5,0xf2,0xff,0xf6,0xf4,0xff,0xf9,0xf7,0xff,0xfb,0xf7,0xff,0xfd, +0xf8,0xff,0xfc,0xec,0xfd,0xf0,0xef,0xff,0xf0,0xe3,0xff,0xdf,0x94,0xcd,0x90, +0x5a,0xa0,0x53,0x48,0x89,0x3e,0x39,0x62,0x29,0xca,0xe4,0xbc,0xeb,0xfe,0xe3, +0xf8,0xff,0xf5,0xf7,0xfe,0xfb,0xfd,0xfd,0xff,0xfc,0xf9,0xff,0xff,0xfb,0xff, +0xff,0xfe,0xff,0xff,0xff,0xfe,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfc, +0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff, +0xff,0xfd,0xff,0xf9,0xf9,0xf9,0xf8,0xfc,0xf7,0xf7,0xfe,0xf7,0xf0,0xf9,0xef, +0xf0,0xfc,0xf0,0xf1,0xfe,0xf0,0xf0,0xff,0xf1,0xf2,0xff,0xf4,0xf3,0xff,0xf6, +0xf3,0xff,0xf8,0xf5,0xff,0xf8,0xf3,0xff,0xf5,0xf4,0xff,0xf2,0xf4,0xff,0xf0, +0xf3,0xff,0xef,0xf2,0xff,0xec,0xf1,0xff,0xeb,0xf0,0xff,0xea,0xef,0xff,0xe9, +0xef,0xff,0xe8,0xf1,0xff,0xea,0xee,0xff,0xe7,0xea,0xff,0xe3,0xe4,0xfb,0xdb, +0xdd,0xf4,0xd4,0xd7,0xee,0xce,0xd3,0xea,0xca,0xcb,0xe9,0xc6,0xb5,0xe2,0xbb, +0xab,0xe0,0xb5,0xa4,0xd9,0xad,0x9b,0xd1,0xa2,0x90,0xc7,0x96,0x86,0xbe,0x8b, +0x7e,0xb7,0x80,0x79,0xb3,0x79,0x6a,0xa5,0x68,0x67,0xa5,0x63,0x63,0xa2,0x5d, +0x5f,0x9f,0x57,0x5a,0x9b,0x50,0x56,0x97,0x4b,0x52,0x94,0x45,0x4e,0x93,0x43, +0x3c,0x85,0x35,0x3a,0x86,0x35,0x38,0x85,0x34,0x37,0x84,0x33,0x36,0x83,0x32, +0x35,0x83,0x30,0x34,0x82,0x2f,0x31,0x81,0x2e,0x34,0x84,0x31,0x36,0x87,0x32, +0x39,0x8a,0x35,0x3b,0x8e,0x39,0x40,0x94,0x3c,0x42,0x98,0x40,0x45,0x9b,0x43, +0x49,0x9d,0x44,0x52,0xa2,0x47,0x53,0xa4,0x47,0x54,0xa5,0x48,0x55,0xa6,0x49, +0x58,0xa9,0x4c,0x5a,0xac,0x4d,0x5d,0xaf,0x50,0x5e,0xb0,0x51,0x5b,0xad,0x4e, +0x59,0xae,0x4c,0x5a,0xaf,0x4d,0x5b,0xb1,0x4d,0x5d,0xb3,0x4f,0x5e,0xb4,0x50, +0x5f,0xb5,0x51,0x5f,0xb3,0x55,0x5d,0xaa,0x59,0x5d,0xa8,0x5e,0x5f,0xaa,0x60, +0x60,0xab,0x61,0x62,0xac,0x64,0x62,0xae,0x66,0x63,0xaf,0x67,0x64,0xb1,0x67, +0x5c,0xa9,0x5f,0x5b,0xaa,0x60,0x5d,0xac,0x62,0x5e,0xb0,0x65,0x61,0xb3,0x68, +0x64,0xb6,0x6b,0x66,0xb8,0x6d,0x6b,0xb7,0x70,0x77,0xb7,0x7c,0x7d,0xb7,0x81, +0x80,0xba,0x84,0x84,0xbe,0x88,0x88,0xc1,0x8e,0x8c,0xc5,0x92,0x90,0xc8,0x95, +0x92,0xca,0x97,0xa7,0xde,0xad,0xa9,0xe0,0xaf,0xad,0xe3,0xb4,0xb3,0xe7,0xb8, +0xb8,0xec,0xbd,0xbd,0xf1,0xc2,0xc1,0xf5,0xc6,0xc6,0xf4,0xca,0xd4,0xf6,0xd7, +0xd8,0xf5,0xdb,0xda,0xf7,0xde,0xdd,0xfa,0xe1,0xe0,0xfc,0xe5,0xe3,0xff,0xe8, +0xe6,0xff,0xed,0xe7,0xff,0xee,0xe5,0xff,0xed,0xe6,0xff,0xf0,0xe6,0xff,0xf0, +0xe7,0xff,0xf2,0xe8,0xff,0xf3,0xe9,0xff,0xf4,0xe9,0xff,0xf4,0xeb,0xff,0xf5, +0xf3,0xff,0xf9,0xf4,0xff,0xf9,0xf6,0xff,0xfb,0xf6,0xff,0xfc,0xf8,0xff,0xfc, +0xf8,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfd,0xfe,0xff, +0xfd,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff, +0xff,0xfa,0xff,0xff,0xf6,0xff,0xff,0xf6,0xff,0xff,0xf9,0xff,0xff,0xfb,0xff, +0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfc,0xff,0xfe,0xfa,0xff, +0xfd,0xfd,0xff,0xf3,0xfb,0xfa,0xf1,0xff,0xf5,0xe0,0xff,0xe3,0x99,0xd5,0x99, +0x61,0xad,0x5f,0x54,0x9d,0x4d,0x3c,0x6b,0x2d,0x97,0xb7,0x88,0xed,0xff,0xe4, +0xf6,0xff,0xf4,0xf8,0xff,0xfc,0xfd,0xfc,0xff,0xfc,0xf8,0xff,0xff,0xfb,0xff, +0xff,0xfd,0xff,0xff,0xff,0xfe,0xff,0xff,0xfb,0xff,0xff,0xf9,0xff,0xff,0xfc, +0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xf6,0xf3,0xf5,0xf9,0xfa,0xf8, +0xfd,0xff,0xfb,0xf6,0xfe,0xf3,0xf8,0xff,0xf5,0xf4,0xff,0xf1,0xea,0xff,0xe7, +0xf1,0xff,0xee,0xef,0xff,0xed,0xed,0xff,0xed,0xea,0xff,0xea,0xe5,0xff,0xe6, +0xe2,0xff,0xe5,0xdf,0xfc,0xe2,0xde,0xfd,0xde,0xd2,0xf6,0xcc,0xcc,0xf4,0xc4, +0xc7,0xed,0xbd,0xbc,0xe5,0xb2,0xb4,0xda,0xaa,0xa8,0xd1,0x9e,0xa3,0xc9,0x97, +0x9d,0xc7,0x92,0x87,0xad,0x7b,0x82,0xac,0x77,0x7f,0xa6,0x72,0x77,0xa1,0x6a, +0x72,0x99,0x65,0x69,0x93,0x5c,0x67,0x8f,0x58,0x5c,0x8e,0x54,0x4b,0x90,0x4d, +0x43,0x92,0x49,0x41,0x90,0x47,0x3e,0x8d,0x43,0x3b,0x8b,0x3e,0x37,0x88,0x39, +0x34,0x86,0x34,0x34,0x84,0x31,0x32,0x83,0x2c,0x33,0x85,0x2c,0x34,0x87,0x2b, +0x37,0x8b,0x2d,0x3a,0x8e,0x2f,0x3c,0x91,0x2f,0x40,0x93,0x30,0x3f,0x93,0x34, +0x49,0xa0,0x44,0x49,0xa1,0x47,0x4a,0xa2,0x48,0x4c,0xa4,0x4a,0x4e,0xa6,0x4c, +0x50,0xa8,0x4e,0x52,0xaa,0x50,0x53,0xab,0x51,0x56,0xae,0x54,0x54,0xaf,0x52, +0x57,0xaf,0x55,0x55,0xb0,0x53,0x56,0xb1,0x54,0x57,0xb2,0x55,0x57,0xb2,0x55, +0x5a,0xb1,0x59,0x59,0xa8,0x57,0x5d,0xa8,0x5a,0x5e,0xa9,0x5b,0x60,0xab,0x5d, +0x61,0xac,0x5e,0x62,0xad,0x5f,0x62,0xad,0x5f,0x64,0xac,0x5f,0x63,0xab,0x5e, +0x63,0xab,0x5e,0x64,0xad,0x5d,0x64,0xad,0x5d,0x65,0xae,0x5e,0x66,0xaf,0x5f, +0x68,0xaf,0x5f,0x68,0xac,0x65,0x74,0xb3,0x7b,0x75,0xb2,0x80,0x78,0xb4,0x84, +0x7b,0xb7,0x87,0x7f,0xbb,0x8b,0x83,0xbe,0x91,0x85,0xc0,0x93,0x87,0xc2,0x95, +0x98,0xd3,0xa6,0x9b,0xd6,0xa9,0x9d,0xdb,0xad,0xa4,0xe1,0xb5,0xaa,0xe7,0xbb, +0xb1,0xee,0xc2,0xb5,0xf2,0xc6,0xbe,0xf3,0xcb,0xce,0xf7,0xd7,0xd4,0xf8,0xda, +0xd7,0xfb,0xdd,0xdd,0xff,0xe1,0xe2,0xff,0xe8,0xe6,0xff,0xec,0xe9,0xff,0xef, +0xec,0xff,0xf0,0xe5,0xff,0xea,0xe7,0xff,0xeb,0xe9,0xff,0xee,0xeb,0xff,0xf0, +0xef,0xff,0xf2,0xef,0xff,0xf2,0xef,0xff,0xf2,0xf3,0xff,0xf4,0xf8,0xff,0xf7, +0xfb,0xff,0xf8,0xfb,0xff,0xf9,0xfb,0xff,0xf9,0xfb,0xff,0xfb,0xfb,0xff,0xfb, +0xfb,0xff,0xfc,0xfa,0xff,0xfb,0xfb,0xff,0xfc,0xfb,0xff,0xfe,0xfb,0xff,0xfe, +0xfa,0xff,0xfd,0xf9,0xfe,0xfd,0xf7,0xfc,0xfb,0xf6,0xfb,0xfa,0xf5,0xfb,0xfa, +0xf2,0xfc,0xf6,0xf0,0xfc,0xf6,0xf3,0xfd,0xf7,0xf3,0xfd,0xf7,0xf4,0xfd,0xfa, +0xf6,0xfd,0xfa,0xf7,0xfd,0xfc,0xf7,0xfd,0xfc,0xf9,0xfd,0xfe,0xf9,0xfd,0xfe, +0xfb,0xfc,0xff,0xfb,0xfc,0xff,0xfb,0xfb,0xff,0xfb,0xfb,0xff,0xfd,0xfa,0xff, +0xff,0xf8,0xff,0xff,0xf4,0xff,0xff,0xf3,0xff,0xff,0xf6,0xff,0xff,0xf8,0xff, +0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xf9,0xff,0xff,0xf4,0xff, +0xff,0xfa,0xff,0xf6,0xfa,0xff,0xf1,0xff,0xf9,0xde,0xff,0xe3,0x9d,0xda,0xa2, +0x62,0xb0,0x63,0x5a,0xa6,0x55,0x52,0x85,0x41,0x6f,0x93,0x5d,0xf3,0xff,0xe9, +0xf3,0xff,0xef,0xf5,0xfc,0xf9,0xfd,0xfc,0xff,0xfc,0xf8,0xff,0xff,0xfb,0xff, +0xff,0xfd,0xff,0xff,0xff,0xfe,0xff,0xff,0xf9,0xff,0xff,0xf8,0xff,0xff,0xfb, +0xfb,0xff,0xfe,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf2,0xf8,0xed,0xf3,0xfc,0xef,0xfa,0xff,0xf4, +0xf6,0xff,0xf0,0xda,0xf2,0xd4,0xca,0xe9,0xc4,0xc1,0xe5,0xb9,0xa9,0xd3,0xa3, +0x96,0xc4,0x90,0x8e,0xbf,0x89,0x84,0xb7,0x7e,0x77,0xab,0x75,0x6f,0xa3,0x6d, +0x69,0x9d,0x68,0x66,0x9a,0x65,0x65,0x9a,0x61,0x58,0x93,0x4f,0x54,0x93,0x49, +0x53,0x90,0x46,0x4d,0x8d,0x41,0x4a,0x87,0x3d,0x44,0x84,0x38,0x43,0x81,0x35, +0x3f,0x80,0x31,0x40,0x7e,0x32,0x3f,0x80,0x31,0x43,0x81,0x33,0x43,0x85,0x34, +0x47,0x85,0x37,0x47,0x89,0x38,0x4a,0x89,0x39,0x44,0x8c,0x39,0x3c,0x93,0x37, +0x37,0x98,0x38,0x3d,0x9b,0x3c,0x41,0x9f,0x40,0x47,0xa4,0x43,0x4a,0xa7,0x46, +0x4c,0xa9,0x48,0x4f,0xaa,0x47,0x55,0xb0,0x4d,0x56,0xb0,0x4c,0x56,0xb0,0x4c, +0x58,0xb0,0x4c,0x59,0xb2,0x4b,0x59,0xb2,0x4b,0x5b,0xb1,0x4b,0x5a,0xb1,0x4f, +0x5b,0xaf,0x57,0x5b,0xad,0x5b,0x5b,0xad,0x5b,0x5b,0xad,0x5b,0x5b,0xad,0x5b, +0x5b,0xad,0x5b,0x5b,0xad,0x5b,0x5b,0xad,0x5b,0x5b,0xad,0x5b,0x5c,0xae,0x5c, +0x5f,0xae,0x5f,0x60,0xaf,0x60,0x61,0xb0,0x61,0x63,0xb2,0x63,0x64,0xb3,0x64, +0x66,0xaf,0x69,0x6f,0xad,0x77,0x73,0xac,0x7f,0x79,0xb0,0x83,0x7e,0xb5,0x88, +0x83,0xb8,0x8c,0x86,0xbb,0x8f,0x88,0xbd,0x91,0x8b,0xbe,0x92,0x9e,0xd1,0xa5, +0xa3,0xd4,0xa8,0xa8,0xd8,0xae,0xb0,0xde,0xb4,0xb7,0xe5,0xbb,0xbd,0xeb,0xc1, +0xc3,0xef,0xc6,0xc6,0xf1,0xcc,0xd0,0xf7,0xde,0xd1,0xf6,0xe2,0xd3,0xf7,0xe6, +0xd7,0xfb,0xea,0xda,0xfe,0xed,0xde,0xff,0xf2,0xe0,0xff,0xf5,0xe1,0xff,0xf6, +0xdf,0xff,0xf6,0xdf,0xff,0xf6,0xe3,0xff,0xf8,0xe5,0xff,0xfb,0xe6,0xff,0xfc, +0xe6,0xff,0xfc,0xe6,0xff,0xfe,0xea,0xff,0xfc,0xf1,0xff,0xfb,0xf4,0xff,0xf9, +0xf3,0xff,0xf8,0xf4,0xff,0xf7,0xf4,0xff,0xf9,0xf3,0xff,0xf8,0xf2,0xfe,0xf8, +0xf4,0xfe,0xf8,0xf6,0xff,0xfa,0xf8,0xff,0xfa,0xf8,0xff,0xfc,0xf8,0xff,0xfc, +0xf8,0xfd,0xfc,0xf8,0xfd,0xfc,0xf8,0xfd,0xfc,0xfa,0xfd,0xfb,0xfe,0xfb,0xf6, +0xff,0xfc,0xf4,0xff,0xfc,0xf4,0xff,0xfd,0xf5,0xff,0xfd,0xf5,0xff,0xfe,0xf6, +0xff,0xfd,0xf8,0xff,0xfd,0xf8,0xff,0xfe,0xf9,0xff,0xfd,0xfa,0xff,0xfe,0xfb, +0xff,0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfc, +0xf6,0xff,0xf9,0xf1,0xff,0xf8,0xf3,0xff,0xf8,0xf3,0xff,0xf8,0xf3,0xff,0xf8, +0xf4,0xff,0xf8,0xf4,0xff,0xf8,0xf4,0xff,0xf8,0xf3,0xff,0xf6,0xf3,0xff,0xf6, +0xf4,0xff,0xf7,0xf4,0xff,0xf7,0xf5,0xff,0xfa,0xf5,0xff,0xfa,0xf6,0xff,0xfb, +0xfa,0xff,0xff,0xff,0xf6,0xff,0xff,0xf5,0xff,0xff,0xf8,0xff,0xff,0xfb,0xff, +0xff,0xfc,0xfb,0xff,0xfc,0xfb,0xff,0xfb,0xfc,0xff,0xf8,0xff,0xff,0xf5,0xff, +0xff,0xfa,0xff,0xfb,0xfd,0xff,0xf3,0xff,0xfb,0xe3,0xff,0xeb,0xa9,0xe2,0xaf, +0x68,0xb2,0x6a,0x5e,0xaa,0x59,0x5d,0x94,0x4b,0x4f,0x77,0x3d,0xf1,0xff,0xe6, +0xf0,0xff,0xee,0xf4,0xfd,0xfa,0xfb,0xfc,0xff,0xfa,0xf5,0xff,0xff,0xfa,0xff, +0xff,0xfd,0xff,0xff,0xff,0xfc,0xff,0xff,0xf8,0xff,0xff,0xf7,0xff,0xff,0xf9, +0xfb,0xff,0xfe,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xee,0xf6,0xff,0xeb,0xef,0xff,0xe6, +0xbf,0xdf,0xb6,0x84,0xaa,0x7a,0x63,0x90,0x58,0x58,0x8d,0x4e,0x4e,0x8a,0x44, +0x4b,0x8c,0x41,0x46,0x8a,0x3d,0x3f,0x85,0x38,0x3a,0x82,0x35,0x38,0x80,0x33, +0x39,0x81,0x35,0x3b,0x83,0x37,0x3d,0x85,0x38,0x3f,0x8b,0x3a,0x40,0x8e,0x3a, +0x44,0x92,0x3e,0x48,0x97,0x40,0x4d,0x9b,0x47,0x52,0xa1,0x4a,0x55,0xa4,0x4d, +0x57,0xa7,0x4e,0x55,0xa4,0x4d,0x56,0xa6,0x4d,0x57,0xa7,0x4e,0x59,0xa9,0x4e, +0x5c,0xac,0x53,0x5e,0xae,0x53,0x5f,0xaf,0x54,0x5e,0xb1,0x55,0x56,0xb2,0x53, +0x54,0xb2,0x53,0x54,0xb2,0x53,0x57,0xb2,0x55,0x56,0xb1,0x54,0x58,0xb1,0x54, +0x57,0xaf,0x55,0x57,0xae,0x54,0x5a,0xae,0x56,0x5b,0xaf,0x57,0x60,0xae,0x5a, +0x62,0xb0,0x5c,0x65,0xb2,0x5e,0x66,0xb2,0x60,0x68,0xb4,0x62,0x6a,0xb2,0x65, +0x62,0xa8,0x62,0x66,0xa8,0x67,0x6c,0xab,0x6d,0x72,0xb1,0x73,0x78,0xb7,0x79, +0x7e,0xbd,0x7f,0x82,0xc1,0x83,0x85,0xc3,0x87,0x8f,0xcb,0x8f,0x92,0xcd,0x93, +0x97,0xd2,0x98,0x9f,0xd9,0x9f,0xa6,0xdf,0xa8,0xad,0xe6,0xaf,0xb5,0xec,0xb5, +0xb7,0xeb,0xbb,0xc1,0xee,0xcd,0xc5,0xed,0xd4,0xc9,0xf1,0xd8,0xcf,0xf6,0xdd, +0xd4,0xfb,0xe2,0xd9,0xfd,0xe5,0xdc,0xff,0xea,0xdf,0xff,0xeb,0xd9,0xf8,0xe3, +0xdc,0xf8,0xe5,0xe0,0xfa,0xe8,0xe3,0xfd,0xed,0xe8,0xff,0xf0,0xeb,0xff,0xf3, +0xed,0xff,0xf5,0xef,0xff,0xf8,0xe8,0xfe,0xf2,0xe8,0xfd,0xf4,0xe9,0xfe,0xf5, +0xea,0xff,0xf7,0xed,0xff,0xf8,0xee,0xff,0xfb,0xef,0xff,0xfd,0xf1,0xff,0xfe, +0xf1,0xfe,0xff,0xf0,0xfd,0xff,0xf0,0xfb,0xff,0xef,0xfa,0xfe,0xed,0xf7,0xfe, +0xec,0xf6,0xfd,0xeb,0xf4,0xfd,0xec,0xf4,0xfb,0xf8,0xff,0xff,0xfa,0xff,0xff, +0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xfe,0xf9,0xfd,0xfe,0xfa,0xfc,0xfd, +0xfa,0xfb,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff, +0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfd,0xff,0xff,0xff,0xfe, +0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb, +0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xfa,0xf7,0xff,0xfb,0xf8,0xff,0xfb,0xf8, +0xff,0xfc,0xf9,0xff,0xfc,0xfb,0xff,0xfd,0xfa,0xff,0xfd,0xfc,0xff,0xff,0xfb, +0xf9,0xff,0xf8,0xf5,0xff,0xf7,0xf5,0xff,0xf7,0xf5,0xff,0xf7,0xf5,0xff,0xf7, +0xf5,0xff,0xf7,0xf5,0xff,0xf7,0xf4,0xff,0xf6,0xf8,0xff,0xf8,0xf8,0xff,0xf8, +0xf8,0xff,0xf8,0xf8,0xff,0xf8,0xf8,0xff,0xf8,0xf8,0xff,0xf8,0xf8,0xff,0xf8, +0xf8,0xff,0xfe,0xf9,0xf9,0xff,0xf9,0xf9,0xff,0xf9,0xfc,0xff,0xfb,0xff,0xfa, +0xfc,0xff,0xf5,0xff,0xff,0xf4,0xff,0xfd,0xf8,0xff,0xfa,0xfc,0xff,0xf7,0xff, +0xff,0xf9,0xff,0xfd,0xfc,0xff,0xf4,0xff,0xfc,0xe7,0xff,0xef,0xb2,0xe9,0xb8, +0x68,0xb1,0x6b,0x5f,0xa7,0x5a,0x58,0x90,0x45,0x39,0x62,0x24,0xeb,0xff,0xe0, +0xf2,0xff,0xf0,0xf8,0xff,0xff,0xfb,0xfc,0xff,0xf9,0xf4,0xff,0xff,0xfa,0xff, +0xff,0xfd,0xff,0xff,0xff,0xfc,0xff,0xff,0xf8,0xff,0xff,0xf7,0xff,0xff,0xf9, +0xfb,0xff,0xfe,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xe4,0xde,0xfe,0xcf,0xa6,0xcb,0x99, +0x6c,0x97,0x5e,0x4c,0x81,0x3e,0x47,0x82,0x38,0x47,0x8a,0x39,0x49,0x95,0x3d, +0x4d,0x9e,0x41,0x4d,0xa2,0x40,0x4b,0xa5,0x42,0x4e,0xa8,0x45,0x51,0xac,0x49, +0x55,0xaf,0x4f,0x58,0xb2,0x52,0x5a,0xb3,0x56,0x56,0xae,0x5b,0x56,0xad,0x5d, +0x56,0xad,0x5d,0x55,0xad,0x5a,0x55,0xac,0x5c,0x54,0xac,0x59,0x54,0xac,0x59, +0x53,0xab,0x57,0x56,0xae,0x5b,0x57,0xaf,0x5b,0x57,0xaf,0x5b,0x57,0xb0,0x5a, +0x58,0xb0,0x5c,0x58,0xb1,0x5b,0x58,0xb1,0x5b,0x5a,0xaf,0x5d,0x5e,0xad,0x63, +0x63,0xaf,0x67,0x67,0xb3,0x6c,0x6d,0xb6,0x72,0x72,0xba,0x78,0x77,0xbd,0x7e, +0x7b,0xbe,0x81,0x7f,0xbe,0x86,0x8a,0xc6,0x90,0x8d,0xc8,0x96,0x94,0xca,0x9b, +0x99,0xce,0xa2,0xa1,0xd3,0xa9,0xa8,0xd7,0xb0,0xac,0xdb,0xb4,0xb0,0xdd,0xb6, +0xcc,0xf5,0xd0,0xcf,0xf5,0xd1,0xd3,0xf6,0xd4,0xd6,0xf9,0xd7,0xda,0xfa,0xdb, +0xdd,0xfd,0xde,0xe0,0xff,0xe0,0xe1,0xff,0xe2,0xea,0xff,0xe9,0xeb,0xff,0xec, +0xeb,0xff,0xec,0xed,0xff,0xec,0xed,0xff,0xed,0xee,0xff,0xee,0xf0,0xff,0xee, +0xec,0xff,0xef,0xe8,0xff,0xf0,0xe7,0xff,0xf2,0xe8,0xff,0xf4,0xe9,0xff,0xf4, +0xea,0xff,0xf6,0xed,0xff,0xf7,0xf0,0xff,0xfa,0xf2,0xff,0xfa,0xf4,0xff,0xfb, +0xf6,0xff,0xfc,0xf8,0xff,0xfc,0xfa,0xff,0xfe,0xfb,0xff,0xfe,0xf9,0xfe,0xfc, +0xf7,0xfc,0xfa,0xf6,0xfd,0xf6,0xfb,0xff,0xf7,0xfb,0xff,0xf4,0xfb,0xff,0xf4, +0xfb,0xff,0xf5,0xfd,0xff,0xf5,0xfd,0xff,0xf7,0xfd,0xff,0xf8,0xff,0xff,0xf9, +0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfe,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff,0xf6,0xfb,0xf9,0xf5,0xfc,0xf9, +0xf6,0xfd,0xfa,0xf8,0xff,0xfc,0xfa,0xff,0xfd,0xfb,0xff,0xff,0xfd,0xff,0xff, +0xfd,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff, +0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, +0xfd,0xff,0xff,0xfc,0xfe,0xfe,0xfb,0xfd,0xfd,0xfa,0xfc,0xfc,0xf9,0xfb,0xfb, +0xf8,0xfb,0xf9,0xf8,0xfb,0xf9,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe, +0xfd,0xff,0xfe,0xfd,0xff,0xff,0xfc,0xff,0xfd,0xfb,0xfd,0xfd,0xfc,0xfc,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfc,0xff,0xff,0xfc, +0xff,0xff,0xfb,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xff,0xfa, +0xfd,0xff,0xfe,0xf6,0xff,0xff,0xf4,0xff,0xff,0xf3,0xff,0xfa,0xf5,0xff,0xf3, +0xf8,0xff,0xee,0xfd,0xff,0xee,0xff,0xff,0xf2,0xff,0xfd,0xf6,0xff,0xfb,0xfe, +0xff,0xf5,0xfd,0xff,0xfd,0xff,0xf1,0xfd,0xf7,0xe9,0xff,0xee,0xb9,0xed,0xbe, +0x6a,0xb1,0x6f,0x60,0xa8,0x5c,0x57,0x8f,0x42,0x34,0x5f,0x1e,0xe2,0xff,0xd6, +0xf1,0xff,0xef,0xf8,0xff,0xff,0xfb,0xfb,0xff,0xf9,0xf3,0xff,0xff,0xfa,0xff, +0xff,0xfd,0xff,0xff,0xff,0xfc,0xff,0xff,0xf7,0xff,0xff,0xf5,0xff,0xff,0xf9, +0xfb,0xff,0xfe,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xea,0xff,0xd9,0xc4,0xf0,0xb3,0x77,0xa6,0x68, +0x4c,0x7e,0x3e,0x60,0x96,0x53,0x73,0xb1,0x6b,0x6d,0xb0,0x65,0x66,0xaf,0x5f, +0x60,0xae,0x5a,0x60,0xb1,0x5a,0x60,0xb4,0x5b,0x5f,0xb6,0x5c,0x60,0xb4,0x5b, +0x60,0xb1,0x5a,0x5f,0xae,0x57,0x5d,0xa9,0x5b,0x5e,0xa8,0x66,0x60,0xa8,0x6c, +0x62,0xab,0x6d,0x66,0xaf,0x71,0x6a,0xb3,0x75,0x6d,0xb6,0x78,0x70,0xb9,0x7b, +0x72,0xbc,0x7c,0x77,0xc0,0x82,0x7a,0xc4,0x84,0x7f,0xc9,0x89,0x86,0xd0,0x90, +0x8e,0xd8,0x98,0x95,0xdf,0x9f,0x9b,0xe5,0xa5,0xa1,0xe6,0xa9,0xb3,0xec,0xb9, +0xb9,0xed,0xbe,0xbf,0xf0,0xc4,0xc5,0xf6,0xca,0xcb,0xfb,0xd1,0xd1,0xfe,0xd7, +0xd6,0xff,0xdd,0xd7,0xff,0xe1,0xdc,0xff,0xe6,0xdf,0xff,0xe9,0xe2,0xff,0xec, +0xe6,0xff,0xef,0xe8,0xff,0xf3,0xeb,0xff,0xf6,0xed,0xff,0xf8,0xf1,0xff,0xf8, +0xef,0xff,0xf0,0xf1,0xff,0xf0,0xf2,0xff,0xf1,0xf4,0xff,0xf1,0xf5,0xff,0xf4, +0xf6,0xff,0xf5,0xf9,0xff,0xf7,0xf9,0xff,0xf7,0xf7,0xff,0xf6,0xf8,0xff,0xf7, +0xf8,0xff,0xf9,0xfa,0xff,0xfa,0xfa,0xff,0xfb,0xfb,0xff,0xfc,0xfb,0xff,0xfc, +0xfa,0xff,0xfc,0xf6,0xff,0xfb,0xf4,0xff,0xfb,0xf5,0xff,0xfa,0xf4,0xff,0xfa, +0xf4,0xff,0xfa,0xf4,0xff,0xfa,0xf6,0xff,0xfc,0xf7,0xff,0xfd,0xf5,0xfb,0xfa, +0xf7,0xfc,0xfb,0xfb,0xfb,0xfb,0xfd,0xfc,0xfe,0xff,0xfd,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xff,0xfe,0xff,0xff,0xf4,0xff,0xff,0xf1,0xff,0xff,0xf1, +0xff,0xff,0xf3,0xff,0xff,0xf4,0xff,0xff,0xf4,0xff,0xff,0xf7,0xff,0xff,0xf8, +0xff,0xff,0xf7,0xff,0xfe,0xf9,0xff,0xfd,0xfa,0xff,0xfd,0xfa,0xff,0xfc,0xfc, +0xff,0xfc,0xfc,0xff,0xfb,0xfd,0xff,0xfc,0xfc,0xff,0xfd,0xfc,0xfb,0xff,0xfa, +0xfb,0xfe,0xfc,0xfb,0xfe,0xfc,0xfd,0xfe,0xfc,0xfd,0xfe,0xfc,0xfd,0xfd,0xfd, +0xff,0xfd,0xfd,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xfd,0xfc,0xff, +0xf9,0xfd,0xfe,0xfc,0xfe,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff, +0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xf9,0xff,0xfd,0xf9,0xff,0xfd,0xf9,0xff,0xfd, +0xf9,0xff,0xfe,0xfa,0xff,0xff,0xf8,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff, +0xff,0xfc,0xfe,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfc,0xfc,0xff,0xfb,0xfb, +0xff,0xfb,0xf8,0xff,0xfb,0xf8,0xff,0xfc,0xf9,0xff,0xfe,0xfb,0xff,0xff,0xfc, +0xff,0xff,0xfc,0xf6,0xff,0xff,0xf3,0xff,0xfe,0xf3,0xff,0xf8,0xf4,0xff,0xf4, +0xf8,0xff,0xf1,0xfa,0xff,0xf0,0xff,0xff,0xf3,0xff,0xff,0xf8,0xff,0xfe,0xff, +0xff,0xf8,0xfd,0xff,0xfe,0xff,0xef,0xfc,0xf4,0xea,0xff,0xee,0xc2,0xf3,0xc5, +0x73,0xb4,0x76,0x67,0xac,0x61,0x60,0x9b,0x4b,0x39,0x68,0x23,0xda,0xfe,0xd0, +0xec,0xff,0xeb,0xf3,0xfb,0xfa,0xfd,0xfb,0xff,0xfe,0xf7,0xff,0xff,0xfb,0xff, +0xff,0xfd,0xff,0xff,0xff,0xfc,0xff,0xff,0xf9,0xff,0xff,0xf9,0xfd,0xff,0xfc, +0xfb,0xff,0xff,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xcd,0x87,0xc2,0x77,0x5f,0x95,0x52, +0x75,0xa9,0x6d,0x79,0xaa,0x76,0x6f,0xa0,0x72,0x74,0xa7,0x7b,0x76,0xac,0x81, +0x79,0xb2,0x85,0x78,0xb4,0x84,0x7d,0xb8,0x86,0x87,0xbf,0x8e,0x95,0xc7,0x97, +0x9e,0xcc,0x9d,0xaa,0xd1,0xa3,0xb0,0xd3,0xab,0xbb,0xdd,0xbf,0xb2,0xd2,0xb9, +0xc5,0xe5,0xcc,0xc9,0xe9,0xd0,0xcc,0xec,0xd3,0xda,0xfa,0xe1,0xd4,0xf4,0xdb, +0xd4,0xf5,0xda,0xdd,0xfd,0xe4,0xe1,0xff,0xe7,0xe1,0xff,0xe7,0xdd,0xfe,0xe3, +0xdf,0xff,0xe5,0xe7,0xff,0xed,0xea,0xff,0xf0,0xea,0xff,0xef,0xeb,0xff,0xea, +0xed,0xff,0xed,0xed,0xff,0xed,0xee,0xff,0xee,0xef,0xff,0xef,0xf1,0xff,0xf0, +0xf2,0xff,0xf3,0xf2,0xff,0xf4,0xf7,0xff,0xf8,0xf6,0xff,0xf7,0xf8,0xff,0xf9, +0xf8,0xff,0xfa,0xf7,0xfe,0xf9,0xf6,0xfd,0xf8,0xf6,0xfd,0xf8,0xf7,0xfd,0xf8, +0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xfb, +0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfc,0xfe,0xff,0xfb,0xfc,0xff,0xfb, +0xfc,0xff,0xfd,0xfa,0xff,0xfd,0xfa,0xff,0xfd,0xfa,0xff,0xfd,0xf9,0xff,0xfe, +0xfa,0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfe, +0xfd,0xff,0xfe,0xfb,0xff,0xfe,0xfa,0xff,0xfe,0xf7,0xfd,0xfc,0xfb,0xff,0xff, +0xfa,0xff,0xfe,0xfc,0xfc,0xfc,0xfd,0xfb,0xfb,0xff,0xfa,0xfb,0xff,0xfc,0xfd, +0xff,0xff,0xfe,0xff,0xfe,0xfe,0xff,0xfe,0xfc,0xff,0xfe,0xfc,0xff,0xff,0xfc, +0xff,0xff,0xfb,0xff,0xfd,0xf8,0xfe,0xfe,0xf8,0xff,0xff,0xfb,0xff,0xff,0xfb, +0xff,0xff,0xfb,0xff,0xff,0xfc,0xfe,0xfd,0xf9,0xff,0xfc,0xf8,0xff,0xfb,0xfa, +0xff,0xfc,0xfc,0xff,0xfe,0xfe,0xff,0xfe,0xfe,0xff,0xfa,0xfa,0xff,0xfd,0xfc, +0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfc,0xfb,0xff,0xfd,0xfc,0xff,0xff,0xfe, +0xff,0xfe,0xfe,0xff,0xfe,0xfe,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xff,0xfd,0xff, +0xff,0xfc,0xfe,0xff,0xfa,0xfc,0xfb,0xf9,0xf9,0xfb,0xf9,0xf8,0xfc,0xfd,0xf9, +0xff,0xff,0xfb,0xfd,0xff,0xf9,0xfb,0xff,0xfb,0xfa,0xff,0xfa,0xf7,0xfe,0xf9, +0xf8,0xff,0xfc,0xf8,0xff,0xff,0xf6,0xff,0xff,0xf8,0xfe,0xff,0xf8,0xff,0xff, +0xf8,0xff,0xff,0xf3,0xfd,0xf7,0xf3,0xf9,0xf4,0xf7,0xfb,0xf6,0xff,0xff,0xfc, +0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xfb,0xf6,0xff,0xff,0xfb,0xff,0xf9,0xf5, +0xf3,0xed,0xe8,0xed,0xe7,0xe2,0xe9,0xe5,0xe0,0xe5,0xe1,0xdc,0xda,0xd6,0xd1, +0xce,0xce,0xc8,0xb9,0xbe,0xbc,0xb1,0xba,0xb7,0xa6,0xb1,0xa9,0xb5,0xc0,0xb6, +0xfa,0xff,0xf9,0xf9,0xff,0xf7,0xee,0xef,0xeb,0xff,0xff,0xfe,0xff,0xfa,0xfc, +0xff,0xfd,0xff,0xfb,0xfe,0xfc,0xf6,0xff,0xf7,0xe5,0xff,0xe6,0xcc,0xfb,0xcd, +0x7b,0xb9,0x7d,0x60,0xa5,0x5c,0x60,0xa1,0x4c,0x34,0x6c,0x21,0xca,0xee,0xc2, +0xf3,0xff,0xf4,0xf4,0xf8,0xf9,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfd,0xff, +0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfe,0xfd,0xff,0xff,0xfb,0xfe,0xff, +0xfb,0xff,0xff,0xfd,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xba,0xfc,0xaa,0x77,0xb8,0x69,0x87,0xc0,0x7c, +0xb8,0xea,0xb4,0xbf,0xeb,0xc2,0xc4,0xed,0xce,0xcf,0xf6,0xdd,0xcf,0xf6,0xe0, +0xd3,0xfd,0xe6,0xd3,0xfd,0xe6,0xd8,0xff,0xe7,0xdf,0xff,0xea,0xe8,0xff,0xed, +0xee,0xff,0xee,0xf5,0xff,0xf0,0xf8,0xff,0xf4,0xf5,0xff,0xf6,0xf3,0xff,0xf8, +0xf4,0xff,0xf7,0xf3,0xff,0xf8,0xec,0xf7,0xef,0xf3,0xff,0xf8,0xf2,0xfd,0xf5, +0xf6,0xff,0xfb,0xf2,0xfd,0xf5,0xf6,0xff,0xfb,0xf8,0xff,0xfb,0xf6,0xff,0xfb, +0xf8,0xff,0xfb,0xf6,0xff,0xfb,0xf8,0xff,0xfb,0xf1,0xfc,0xf4,0xfd,0xff,0xfb, +0xfd,0xff,0xfb,0xff,0xff,0xfc,0xfd,0xff,0xfb,0xff,0xff,0xfc,0xfc,0xff,0xfb, +0xfd,0xfe,0xfa,0xfd,0xfe,0xfa,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,0xfd,0xfd,0xfd,0xfd,0xfe,0xfc, +0xff,0xfe,0xfa,0xff,0xff,0xf9,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfc, +0xff,0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xfe,0xf9,0xf7,0xf6,0xf8,0xf9,0xf7, +0xfa,0xfa,0xfa,0xfa,0xfc,0xfc,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff, +0xfd,0xff,0xff,0xff,0xfe,0xfd,0xff,0xfc,0xf9,0xfe,0xfa,0xf9,0xfd,0xfb,0xfa, +0xfd,0xfe,0xfc,0xfd,0xff,0xfe,0xfb,0xff,0xff,0xfa,0xff,0xfe,0xfb,0xff,0xff, +0xfb,0xff,0xff,0xfd,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe, +0xff,0xff,0xfc,0xff,0xfe,0xfe,0xff,0xf7,0xf9,0xff,0xf7,0xfb,0xff,0xfb,0xfc, +0xff,0xfb,0xfc,0xff,0xfc,0xfb,0xfd,0xfe,0xfc,0xfd,0xff,0xfc,0xfb,0xff,0xfc, +0xf8,0xfe,0xf9,0xfa,0xff,0xfb,0xfd,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfe, +0xff,0xff,0xfe,0xff,0xfc,0xfc,0xff,0xf9,0xf9,0xff,0xff,0xfe,0xff,0xff,0xfe, +0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfc,0xfb,0xfd,0xf9,0xf8,0xfc,0xf7,0xf6, +0xfb,0xf7,0xf6,0xfc,0xf7,0xf6,0xf9,0xf5,0xf4,0xfa,0xf5,0xf4,0xfd,0xf9,0xf8, +0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xfe,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0xff,0xff,0xfb, +0xfc,0xff,0xf6,0xf5,0xfa,0xf1,0xf4,0xfc,0xf2,0xee,0xf5,0xee,0xe5,0xeb,0xe6, +0xdb,0xe2,0xdf,0xd3,0xd8,0xd9,0xcc,0xd1,0xd4,0xc4,0xc8,0xcd,0xbd,0xc4,0xc7, +0xb3,0xbe,0xbb,0xa9,0xb6,0xae,0x9e,0xa8,0xa2,0x92,0x9a,0x93,0x86,0x8c,0x87, +0x79,0x7d,0x77,0x6e,0x6e,0x68,0x66,0x63,0x5e,0x38,0x34,0x2f,0x2c,0x28,0x23, +0x1c,0x18,0x13,0x11,0x0e,0x09,0x0d,0x0a,0x05,0x08,0x08,0x02,0x04,0x04,0x00, +0x00,0x01,0x00,0x07,0x0a,0x08,0x08,0x0d,0x0b,0x0d,0x12,0x10,0x3f,0x45,0x40, +0xed,0xf2,0xf0,0xfb,0xff,0xff,0xfc,0xfb,0xfd,0xff,0xfe,0xff,0xff,0xf9,0xfe, +0xff,0xfd,0xff,0xfb,0xff,0xfa,0xf4,0xff,0xf5,0xe5,0xff,0xe6,0xcd,0xfc,0xce, +0x7d,0xba,0x80,0x61,0xa6,0x5d,0x5f,0xa2,0x4d,0x35,0x6f,0x21,0xc4,0xe8,0xbc, +0xf3,0xff,0xf4,0xf5,0xf9,0xfa,0xff,0xfb,0xff,0xff,0xfb,0xfe,0xff,0xff,0xfe, +0xff,0xff,0xf9,0xff,0xff,0xfb,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfb,0xfd,0xff, +0xfb,0xfe,0xff,0xff,0xff,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xe8,0x9e,0x6b,0xa7,0x61,0xa5,0xd8,0x9e, +0xe2,0xff,0xdf,0xdb,0xff,0xdd,0xe1,0xff,0xe8,0xe6,0xff,0xef,0xe1,0xfb,0xed, +0xe4,0xff,0xf2,0xe8,0xff,0xf4,0xea,0xff,0xf6,0xec,0xff,0xf4,0xef,0xff,0xf3, +0xf1,0xff,0xf0,0xf5,0xff,0xf0,0xf6,0xfe,0xf3,0xf6,0xfe,0xf7,0xf8,0xff,0xfc, +0xf4,0xfb,0xf6,0xf8,0xff,0xfc,0xf1,0xf8,0xf3,0xf3,0xfd,0xf7,0xf2,0xf9,0xf4, +0xf8,0xff,0xfc,0xf7,0xfe,0xf9,0xf7,0xff,0xfb,0xf9,0xff,0xfb,0xf4,0xfe,0xf8, +0xf6,0xfd,0xf8,0xf7,0xff,0xfb,0xfa,0xff,0xfc,0xf8,0xff,0xfa,0xf5,0xfb,0xf6, +0xf5,0xfb,0xf6,0xf8,0xfb,0xf9,0xf7,0xfd,0xf8,0xfa,0xfd,0xfb,0xf9,0xfe,0xfc, +0xfc,0xff,0xfd,0xfc,0xff,0xfd,0xf5,0xf8,0xf6,0xf6,0xf9,0xf7,0xf7,0xf9,0xf9, +0xf9,0xfb,0xfb,0xfb,0xfd,0xfd,0xfc,0xfe,0xfe,0xfd,0xff,0xff,0xfb,0xff,0xff, +0xfa,0xff,0xfe,0xfa,0xff,0xfc,0xfb,0xff,0xfe,0xfa,0xff,0xfd,0xf9,0xfe,0xfc, +0xfa,0xfd,0xfb,0xf9,0xfc,0xfa,0xfb,0xfc,0xfa,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfc,0xfc,0xfa,0xfa,0xfa,0xf8,0xf8,0xf8, +0xf7,0xf7,0xf7,0xff,0xff,0xfe,0xff,0xff,0xfe,0xfe,0xff,0xfd,0xfd,0xfe,0xfc, +0xfd,0xff,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xfe,0xf2,0xf7,0xf6, +0xf3,0xf8,0xf7,0xf7,0xf9,0xf9,0xf8,0xfa,0xfa,0xfa,0xfb,0xf9,0xf9,0xfa,0xf8, +0xf9,0xf7,0xf6,0xfa,0xf6,0xf5,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xff,0xff,0xff,0xfe,0xff,0xfd,0xf7,0xfc,0xfa,0xf2,0xf9,0xf6,0xee,0xf5,0xf2, +0xfa,0xff,0xfe,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfc,0xff,0xfd,0xff,0xfd,0xfd, +0xff,0xfb,0xfc,0xff,0xfb,0xfc,0xff,0xfc,0xfd,0xf3,0xf5,0xf5,0xf1,0xf7,0xf6, +0xf5,0xfa,0xf9,0xf8,0xfe,0xfd,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff, +0xfa,0xff,0xff,0xfb,0xff,0xff,0xf4,0xfa,0xf9,0xe8,0xed,0xec,0xdd,0xe3,0xe2, +0xd5,0xda,0xd9,0xc9,0xcf,0xce,0xbb,0xc0,0xbf,0xaf,0xb4,0xb3,0xae,0xb0,0xb1, +0xa6,0xa5,0xa7,0x97,0x96,0x98,0x88,0x89,0x87,0x75,0x79,0x74,0x60,0x64,0x5e, +0x48,0x4c,0x46,0x35,0x3c,0x35,0x0f,0x16,0x0f,0x0c,0x13,0x0c,0x0b,0x0f,0x0a, +0x09,0x0b,0x0b,0x0a,0x09,0x0b,0x09,0x08,0x0c,0x09,0x05,0x0b,0x06,0x05,0x09, +0x00,0x04,0x03,0x00,0x06,0x01,0x01,0x06,0x04,0x01,0x07,0x02,0x00,0x05,0x03, +0x00,0x03,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x0b,0x0c,0x0a,0x05,0x08,0x06, +0x00,0x03,0x01,0x00,0x01,0x00,0x01,0x04,0x02,0x03,0x08,0x06,0x06,0x0b,0x0a, +0x09,0x0b,0x0b,0x00,0x00,0x00,0x03,0x03,0x03,0x04,0x07,0x05,0x30,0x33,0x31, +0xf6,0xf8,0xf8,0xff,0xff,0xff,0xf2,0xef,0xf1,0xf8,0xf2,0xf7,0xff,0xf8,0xff, +0xff,0xfe,0xff,0xfb,0xff,0xfa,0xf6,0xff,0xf5,0xe6,0xff,0xe7,0xd0,0xff,0xd1, +0x81,0xbe,0x84,0x63,0xa8,0x5f,0x60,0xa3,0x4e,0x3a,0x74,0x26,0xb8,0xdd,0xaf, +0xf3,0xff,0xf4,0xf7,0xfb,0xfc,0xff,0xfc,0xff,0xff,0xfb,0xfe,0xff,0xff,0xfc, +0xff,0xff,0xf9,0xff,0xff,0xfb,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfb,0xfd,0xff, +0xfb,0xfe,0xff,0xff,0xff,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xa9,0xe2,0xa3,0x59,0x8f,0x53,0x9a,0xc9,0x98, +0xe6,0xff,0xe5,0xe6,0xff,0xe8,0xee,0xff,0xf3,0xf1,0xff,0xf8,0xf1,0xff,0xf9, +0xf2,0xff,0xfa,0xf4,0xff,0xfc,0xf6,0xff,0xfc,0xf4,0xff,0xf9,0xf7,0xff,0xf8, +0xfa,0xff,0xf8,0xfd,0xff,0xf9,0xfc,0xff,0xfa,0xed,0xf3,0xee,0xfa,0xff,0xfc, +0xeb,0xf1,0xec,0xfa,0xff,0xfc,0xfa,0xff,0xfb,0xfa,0xff,0xfc,0xf6,0xfc,0xf7, +0xfa,0xff,0xfc,0xfb,0xff,0xfc,0xfa,0xff,0xfc,0xfa,0xff,0xfb,0xf6,0xfd,0xf8, +0xf6,0xfc,0xf7,0xf8,0xff,0xfa,0xfb,0xff,0xfc,0xfb,0xff,0xfc,0xfa,0xff,0xfd, +0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfb,0xff,0xfe, +0xfb,0xff,0xff,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfb,0xff,0xff, +0xfa,0xff,0xff,0xfb,0xff,0xff,0xf8,0xfe,0xfd,0xf8,0xfd,0xfc,0xf6,0xfc,0xfb, +0xf5,0xff,0xfe,0xf5,0xff,0xfe,0xf5,0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xff, +0xfa,0xff,0xfe,0xfb,0xff,0xff,0xfd,0xff,0xff,0xf8,0xfa,0xfa,0xfb,0xfb,0xfb, +0xfc,0xfc,0xfc,0xff,0xfe,0xfe,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xff,0xff,0xff,0xf9,0xf9,0xf9,0xf7,0xfa,0xf8,0xf8,0xfb,0xf9,0xfb,0xfe,0xfc, +0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xf9,0xfe,0xfd,0xfd,0xff,0xff, +0xfd,0xff,0xff,0xfd,0xff,0xff,0xfc,0xfe,0xfe,0xfc,0xff,0xfd,0xfd,0xff,0xfe, +0xfd,0xff,0xfe,0xfd,0xff,0xff,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xf9,0xfb,0xfb, +0xfd,0xff,0xff,0xfb,0xff,0xfe,0xfa,0xff,0xfe,0xf8,0xff,0xfe,0xf6,0xff,0xfc, +0xe7,0xee,0xeb,0xe4,0xeb,0xe8,0xde,0xe3,0xe2,0xd8,0xda,0xda,0xd1,0xd1,0xd1, +0xcb,0xc9,0xc9,0xc6,0xc1,0xc2,0xc1,0xbf,0xbf,0xa7,0xad,0xac,0x99,0xa4,0xa2, +0x89,0x94,0x92,0x77,0x82,0x80,0x63,0x6e,0x6c,0x4e,0x59,0x57,0x3a,0x45,0x43, +0x2d,0x38,0x36,0x03,0x0e,0x0c,0x00,0x0a,0x08,0x00,0x07,0x05,0x00,0x07,0x05, +0x00,0x0a,0x08,0x01,0x0c,0x0a,0x00,0x0b,0x09,0x01,0x09,0x08,0x06,0x09,0x0d, +0x06,0x07,0x0b,0x04,0x06,0x07,0x03,0x08,0x07,0x07,0x0c,0x0a,0x07,0x0e,0x09, +0x06,0x0c,0x07,0x03,0x0a,0x03,0x02,0x08,0x03,0x03,0x07,0x02,0x04,0x05,0x03, +0x06,0x04,0x04,0x09,0x04,0x06,0x0b,0x04,0x09,0x0d,0x03,0x09,0x0d,0x03,0x09, +0x09,0x04,0x05,0x0d,0x09,0x08,0x10,0x0e,0x0d,0x0f,0x10,0x0e,0x0d,0x0e,0x0c, +0x08,0x0b,0x09,0x06,0x0b,0x09,0x06,0x0b,0x09,0x01,0x06,0x05,0x03,0x08,0x07, +0x04,0x0a,0x09,0x05,0x0a,0x0b,0x04,0x08,0x09,0x01,0x05,0x06,0x00,0x02,0x03, +0x00,0x01,0x02,0x18,0x15,0x17,0x28,0x25,0x27,0x39,0x39,0x39,0x62,0x62,0x62, +0xed,0xed,0xed,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xf7,0xff, +0xff,0xfd,0xff,0xfd,0xfe,0xfc,0xf6,0xff,0xf7,0xe7,0xff,0xe9,0xd3,0xff,0xd6, +0x85,0xc2,0x88,0x63,0xa9,0x62,0x60,0xa5,0x4e,0x40,0x7a,0x2c,0xa7,0xce,0xa0, +0xf2,0xff,0xf1,0xf8,0xfe,0xfd,0xff,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xff,0xfc, +0xff,0xff,0xf9,0xff,0xff,0xfb,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfb,0xfd,0xff, +0xfb,0xfe,0xff,0xff,0xff,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xba,0xee,0xb9,0x5d,0x8e,0x5c,0x81,0xac,0x81, +0xd5,0xf8,0xd6,0xef,0xff,0xf1,0xf3,0xff,0xf7,0xf8,0xff,0xfb,0xfb,0xff,0xfe, +0xf8,0xfa,0xfa,0xfa,0xfc,0xfd,0xfa,0xf9,0xfb,0xf6,0xf6,0xf6,0xf7,0xf7,0xf7, +0xfe,0xfc,0xfb,0xff,0xfd,0xfc,0xfb,0xf9,0xf8,0xfd,0xff,0xfc,0xfb,0xff,0xfc, +0xf2,0xf6,0xf1,0xfb,0xff,0xfc,0xfa,0xfe,0xf9,0xfb,0xff,0xfc,0xfa,0xfe,0xf9, +0xf7,0xfd,0xf8,0xfb,0xff,0xfa,0xf9,0xff,0xfa,0xfb,0xff,0xfa,0xfa,0xff,0xfb, +0xfb,0xff,0xfa,0xf6,0xfc,0xf7,0xf6,0xfa,0xf5,0xf4,0xf9,0xf7,0xfb,0xff,0xff, +0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa,0xfe,0xff,0xf7,0xfb,0xfc,0xf5,0xfa,0xf9, +0xf2,0xf7,0xf8,0xf1,0xf7,0xf6,0xf0,0xf6,0xf5,0xf1,0xf7,0xf6,0xf2,0xf8,0xf7, +0xf2,0xfa,0xf9,0xf6,0xfc,0xfb,0xf5,0xfd,0xfc,0xf9,0xff,0xfd,0xf7,0xff,0xfe, +0xf4,0xff,0xff,0xf4,0xff,0xff,0xf4,0xff,0xff,0xf5,0xff,0xfe,0xf4,0xfe,0xfe, +0xf5,0xfd,0xfc,0xf6,0xfb,0xfc,0xf7,0xfc,0xfb,0xfd,0xff,0xff,0xfe,0xfe,0xfe, +0xff,0xfd,0xfd,0xff,0xfb,0xfc,0xfe,0xfa,0xf9,0xfe,0xf9,0xf8,0xfd,0xf8,0xf7, +0xfb,0xf6,0xf7,0xfb,0xfd,0xfd,0xf9,0xff,0xfe,0xfa,0xff,0xff,0xfb,0xff,0xff, +0xfd,0xff,0xff,0xfa,0xfc,0xfc,0xf4,0xf6,0xf6,0xee,0xf0,0xf0,0xef,0xef,0xef, +0xe8,0xea,0xea,0xde,0xe0,0xe0,0xd1,0xd3,0xd3,0xc1,0xc6,0xc5,0xb4,0xba,0xb9, +0xab,0xb1,0xb0,0xa6,0xac,0xab,0x9e,0xa3,0xa2,0x93,0x98,0x96,0x7f,0x86,0x83, +0x69,0x70,0x6d,0x50,0x56,0x55,0x33,0x3b,0x3a,0x1a,0x22,0x21,0x0a,0x12,0x11, +0x00,0x01,0x00,0x00,0x01,0x00,0x01,0x05,0x06,0x07,0x09,0x0a,0x09,0x08,0x0a, +0x07,0x04,0x06,0x02,0x00,0x01,0x00,0x00,0x01,0x00,0x06,0x05,0x00,0x05,0x04, +0x00,0x06,0x05,0x01,0x09,0x08,0x04,0x0c,0x0b,0x04,0x0c,0x0b,0x01,0x09,0x08, +0x00,0x04,0x03,0x01,0x09,0x08,0x01,0x09,0x08,0x00,0x07,0x06,0x00,0x02,0x01, +0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x08,0x07,0x05,0x0d,0x0c,0x01,0x04,0x08, +0x03,0x06,0x0a,0x04,0x08,0x09,0x00,0x06,0x05,0x00,0x02,0x01,0x00,0x02,0x00, +0x00,0x02,0x00,0x00,0x03,0x00,0x00,0x03,0x01,0x01,0x04,0x02,0x05,0x06,0x04, +0x0b,0x06,0x07,0x10,0x07,0x0a,0x14,0x09,0x0c,0x19,0x0b,0x0f,0x1c,0x0d,0x11, +0x38,0x2a,0x2b,0x46,0x39,0x37,0x5c,0x50,0x4e,0x6f,0x68,0x65,0x81,0x7d,0x7c, +0x91,0x92,0x90,0xa0,0xa2,0xa2,0xa9,0xae,0xad,0xac,0xb1,0xb2,0xb5,0xba,0xbb, +0xc3,0xc7,0xc8,0xd0,0xd3,0xd7,0xdd,0xde,0xe2,0xe7,0xe6,0xea,0xef,0xee,0xf2, +0xf5,0xf1,0xf6,0xff,0xf9,0xfe,0xff,0xfc,0xfe,0xff,0xfc,0xfe,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xfe,0xf3,0xfb,0xff,0xf1,0xfc,0xff,0xf6,0xff, +0xff,0xfc,0xff,0xfd,0xfe,0xfc,0xf8,0xff,0xf7,0xe8,0xff,0xea,0xd7,0xff,0xdc, +0x8a,0xc7,0x8f,0x66,0xac,0x65,0x61,0xa6,0x4f,0x44,0x81,0x31,0x94,0xbe,0x8e, +0xee,0xff,0xef,0xfa,0xff,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xff,0xfc, +0xff,0xff,0xf8,0xff,0xff,0xf9,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfb,0xfd,0xff, +0xfb,0xfe,0xff,0xff,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xcb,0xfc,0xd0,0x7f,0xad,0x83,0x6e,0x97,0x72, +0xb4,0xd6,0xb7,0xea,0xff,0xed,0xee,0xff,0xf1,0xef,0xf6,0xef,0xf2,0xf3,0xf1, +0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfa,0xff,0xff,0xfd,0xff, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xf6,0xf4,0xf3,0xff,0xff,0xfe,0xef,0xf3,0xee, +0xff,0xff,0xfc,0xfa,0xfe,0xf9,0xf6,0xf7,0xf3,0xfc,0xff,0xfb,0xfb,0xfc,0xf8, +0xf8,0xfc,0xf7,0xff,0xff,0xfc,0xf9,0xfd,0xf8,0xf8,0xf9,0xf5,0xf8,0xfc,0xf7, +0xfc,0xfd,0xf9,0xfb,0xff,0xfa,0xff,0xff,0xfc,0xfd,0xff,0xfe,0xf8,0xfa,0xfb, +0xf8,0xf9,0xfd,0xfa,0xfb,0xff,0xfc,0xfd,0xff,0xfd,0xfe,0xff,0xfb,0xff,0xff, +0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff, +0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xfe,0xf7,0xff,0xfe, +0xf2,0xfa,0xfa,0xf0,0xf9,0xfc,0xf1,0xf9,0xf9,0xf1,0xf9,0xf9,0xf0,0xf8,0xf8, +0xf1,0xf6,0xf7,0xf0,0xf5,0xf6,0xf1,0xf5,0xf6,0xe0,0xe2,0xe2,0xde,0xde,0xde, +0xd9,0xd7,0xd7,0xd2,0xcd,0xce,0xca,0xc5,0xc4,0xc1,0xbc,0xbb,0xbc,0xb4,0xb4, +0xb5,0xb1,0xb0,0x90,0x94,0x95,0x87,0x8c,0x8d,0x78,0x7d,0x7e,0x65,0x6a,0x69, +0x4f,0x51,0x51,0x36,0x36,0x36,0x1e,0x1e,0x1e,0x0f,0x0f,0x0f,0x03,0x01,0x01, +0x03,0x03,0x03,0x07,0x07,0x07,0x07,0x09,0x09,0x06,0x0b,0x0a,0x03,0x09,0x08, +0x01,0x06,0x07,0x00,0x04,0x05,0x00,0x04,0x01,0x00,0x06,0x03,0x01,0x08,0x05, +0x05,0x0c,0x09,0x07,0x0d,0x0c,0x07,0x0d,0x0c,0x04,0x0a,0x09,0x01,0x06,0x07, +0x10,0x14,0x15,0x0c,0x10,0x11,0x07,0x09,0x0a,0x02,0x04,0x05,0x03,0x02,0x04, +0x07,0x06,0x08,0x0e,0x0b,0x0d,0x0f,0x0f,0x0f,0x02,0x04,0x04,0x00,0x05,0x04, +0x02,0x04,0x04,0x01,0x06,0x05,0x04,0x06,0x06,0x01,0x06,0x05,0x01,0x03,0x03, +0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x04,0x03,0x08,0x0a,0x0a,0x0a,0x0f,0x0e, +0x11,0x13,0x13,0x1a,0x1f,0x1e,0x2c,0x2e,0x2e,0x38,0x3a,0x3a,0x58,0x5a,0x5b, +0x67,0x69,0x6a,0x7b,0x7f,0x80,0x8c,0x91,0x92,0x99,0x9f,0x9e,0xa2,0xaa,0xa9, +0xaf,0xb7,0xb6,0xb8,0xc1,0xbe,0xc5,0xcc,0xc9,0xca,0xcf,0xcd,0xd2,0xd5,0xd3, +0xdc,0xda,0xd9,0xe6,0xe0,0xe1,0xef,0xe7,0xe8,0xfb,0xee,0xf0,0xff,0xf2,0xf3, +0xff,0xfe,0xfc,0xff,0xfe,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfc, +0xfa,0xfb,0xf7,0xf5,0xfa,0xf8,0xf4,0xfb,0xf8,0xf8,0xff,0xff,0xfa,0xff,0xff, +0xfa,0xfe,0xff,0xf8,0xfa,0xfb,0xf8,0xf7,0xfb,0xfd,0xf7,0xfc,0xff,0xf9,0xfe, +0xff,0xfc,0xff,0xfd,0xf6,0xfb,0xfa,0xf4,0xf9,0xff,0xfb,0xfd,0xff,0xfe,0xff, +0xf2,0xed,0xef,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xf6,0xff, +0xff,0xfb,0xff,0xff,0xfd,0xfd,0xf8,0xff,0xf8,0xea,0xff,0xed,0xdd,0xff,0xe1, +0x8f,0xcc,0x94,0x69,0xaf,0x68,0x61,0xa9,0x4f,0x4a,0x88,0x36,0x85,0xaf,0x7f, +0xea,0xff,0xec,0xf8,0xff,0xff,0xfe,0xfc,0xff,0xff,0xfd,0xfe,0xff,0xff,0xfc, +0xff,0xff,0xf8,0xff,0xff,0xf9,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfb,0xfd,0xff, +0xfd,0xfe,0xff,0xff,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xcd,0xfe,0xd8,0xab,0xd9,0xb5,0x69,0x93,0x70, +0x93,0xb7,0x99,0xe5,0xff,0xe9,0xf4,0xff,0xf4,0xfb,0xff,0xf8,0xff,0xff,0xfc, +0xff,0xf9,0xfc,0xff,0xf9,0xff,0xff,0xf4,0xfd,0xff,0xf2,0xfa,0xff,0xf8,0xfe, +0xff,0xfb,0xfe,0xf0,0xee,0xee,0xd9,0xda,0xd8,0x9d,0x9e,0x9c,0x9b,0x9c,0x9a, +0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe, +0xfe,0xff,0xfd,0xff,0xff,0xfe,0xfe,0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe, +0xff,0xff,0xfe,0xf9,0xfa,0xf8,0xf6,0xf4,0xf3,0xf5,0xf5,0xf5,0xff,0xfe,0xff, +0xff,0xfd,0xff,0xfd,0xfb,0xff,0xf9,0xf8,0xfc,0xf5,0xf4,0xf8,0xef,0xf0,0xf4, +0xec,0xed,0xf1,0xea,0xec,0xed,0xda,0xdc,0xdd,0xd6,0xd8,0xd9,0xcd,0xcf,0xcf, +0xc0,0xc5,0xc4,0xb4,0xb9,0xb8,0xa9,0xae,0xad,0xa0,0xa5,0xa3,0x9d,0x9f,0x9f, +0x8a,0x8c,0x8d,0x81,0x80,0x84,0x6b,0x6c,0x70,0x50,0x51,0x55,0x33,0x35,0x36, +0x19,0x1b,0x1c,0x05,0x07,0x08,0x00,0x00,0x01,0x08,0x08,0x08,0x07,0x07,0x07, +0x08,0x06,0x05,0x09,0x05,0x04,0x09,0x04,0x03,0x08,0x03,0x02,0x07,0x02,0x00, +0x05,0x01,0x00,0x03,0x05,0x06,0x01,0x05,0x06,0x03,0x07,0x08,0x07,0x09,0x0a, +0x0b,0x0b,0x0b,0x0d,0x0b,0x0b,0x09,0x07,0x06,0x07,0x05,0x04,0x0a,0x06,0x05, +0x07,0x05,0x04,0x06,0x04,0x04,0x04,0x04,0x04,0x03,0x05,0x06,0x03,0x07,0x08, +0x05,0x08,0x0c,0x06,0x0b,0x0c,0x00,0x03,0x00,0x00,0x06,0x01,0x01,0x08,0x05, +0x03,0x08,0x06,0x02,0x07,0x06,0x00,0x05,0x04,0x00,0x02,0x03,0x00,0x01,0x05, +0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x00,0x01,0x07,0x06,0x08,0x1b,0x18,0x1a, +0x34,0x31,0x33,0x4c,0x4c,0x4c,0x5d,0x5b,0x5b,0x81,0x7b,0x7c,0x88,0x83,0x82, +0x95,0x8d,0x8d,0xa1,0x9c,0x9b,0xb1,0xa9,0xa9,0xbc,0xb7,0xb6,0xca,0xc2,0xc2, +0xcf,0xca,0xc9,0xde,0xd6,0xd6,0xe0,0xdb,0xda,0xe8,0xe0,0xe0,0xea,0xe5,0xe4, +0xf0,0xe8,0xe8,0xf6,0xf1,0xf0,0xff,0xfa,0xfa,0xff,0xfe,0xff,0xff,0xfd,0xfe, +0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xf7,0xfd,0xfc, +0xf2,0xfa,0xf9,0xf2,0xfa,0xf9,0xf5,0xfd,0xfc,0xf9,0xff,0xfe,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xfe,0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfc, +0xff,0xf6,0xed,0xff,0xf9,0xef,0xff,0xfd,0xf2,0xff,0xff,0xf5,0xfe,0xff,0xf7, +0xfb,0xff,0xf8,0xf8,0xff,0xf9,0xf6,0xff,0xfb,0xf6,0xff,0xfc,0xf8,0xff,0xfc, +0xf8,0xfd,0xfb,0xfa,0xfb,0xf9,0xff,0xfa,0xfb,0xff,0xfd,0xfe,0xff,0xfd,0xff, +0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfd,0xff,0xff,0xfe,0xfe, +0xf8,0xf3,0xf5,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xf6,0xff,0xff,0xf5,0xff, +0xff,0xfb,0xff,0xff,0xfc,0xfd,0xf7,0xff,0xf7,0xeb,0xff,0xee,0xe1,0xff,0xe5, +0x92,0xce,0x98,0x6b,0xb1,0x6b,0x62,0xaa,0x50,0x4d,0x8e,0x39,0x78,0xa6,0x72, +0xe9,0xff,0xeb,0xf8,0xff,0xfe,0xfb,0xfc,0xff,0xff,0xfd,0xfe,0xff,0xff,0xfb, +0xff,0xff,0xf8,0xff,0xff,0xf9,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, +0xfd,0xfe,0xff,0xff,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xd9,0xff,0xe8,0xd6,0xff,0xe4,0x6d,0x98,0x77, +0x73,0x9c,0x7c,0xcd,0xef,0xd1,0xe1,0xfb,0xe3,0xf7,0xff,0xf4,0xfb,0xfe,0xf5, +0xff,0xfc,0xfc,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfc,0xff, +0xff,0xfe,0xff,0xee,0xf1,0xef,0xd2,0xd6,0xd1,0x0a,0x0b,0x09,0x25,0x23,0x22, +0xe1,0xdf,0xde,0xfc,0xfa,0xf9,0xff,0xfd,0xfc,0xfa,0xf8,0xf7,0xf3,0xf1,0xf0, +0xec,0xea,0xe9,0xdd,0xdb,0xda,0xe7,0xe5,0xe4,0xf9,0xf7,0xf6,0xff,0xff,0xfe, +0xf7,0xf5,0xf4,0xd2,0xd0,0xcf,0xad,0xab,0xaa,0x98,0x96,0x96,0x84,0x80,0x85, +0x7a,0x76,0x7b,0x68,0x64,0x6a,0x50,0x4c,0x51,0x37,0x33,0x38,0x1f,0x1b,0x20, +0x0d,0x09,0x0e,0x03,0x00,0x02,0x09,0x06,0x08,0x09,0x06,0x08,0x07,0x07,0x07, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x08,0x09,0x07,0x0a,0x08,0x08, +0x0a,0x01,0x04,0x0b,0x02,0x05,0x0b,0x01,0x07,0x0a,0x03,0x06,0x0b,0x06,0x08, +0x0a,0x07,0x09,0x0a,0x07,0x09,0x09,0x09,0x09,0x05,0x05,0x05,0x05,0x05,0x05, +0x06,0x07,0x05,0x08,0x06,0x05,0x0b,0x07,0x06,0x0c,0x08,0x07,0x0c,0x09,0x05, +0x0b,0x09,0x08,0x06,0x05,0x07,0x02,0x03,0x07,0x01,0x03,0x04,0x03,0x03,0x03, +0x05,0x05,0x05,0x09,0x07,0x06,0x08,0x06,0x05,0x07,0x06,0x02,0x09,0x07,0x06, +0x0a,0x08,0x07,0x0d,0x0b,0x0a,0x17,0x17,0x17,0x2d,0x2d,0x2d,0x46,0x48,0x49, +0x60,0x61,0x65,0x71,0x73,0x74,0x84,0x89,0x87,0x8d,0x93,0x8e,0x9c,0x9f,0x9d, +0xa9,0xac,0xaa,0xb6,0xb6,0xb6,0xc1,0xc0,0xc2,0xce,0xca,0xcf,0xd5,0xd1,0xd6, +0xe5,0xdf,0xe4,0xe9,0xe4,0xe6,0xed,0xea,0xec,0xf4,0xf2,0xf2,0xfb,0xf9,0xf9, +0xfd,0xfd,0xfd,0xfd,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfc,0xf9,0xff,0xfe,0xfb, +0xff,0xff,0xfc,0xff,0xfd,0xfa,0xff,0xfa,0xf7,0xff,0xf9,0xf6,0xff,0xfc,0xf9, +0xff,0xff,0xfc,0xff,0xfb,0xf8,0xff,0xfb,0xf8,0xff,0xfb,0xf8,0xff,0xfd,0xfa, +0xff,0xfe,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfb,0xff,0xfd,0xfa,0xff,0xff,0xfe, +0xff,0xfd,0xfc,0xfd,0xfb,0xfa,0xf9,0xf9,0xf9,0xf9,0xfb,0xfb,0xf9,0xfe,0xfd, +0xfa,0xff,0xff,0xf8,0xff,0xff,0xf5,0xfd,0xfc,0xf5,0xff,0xfe,0xf6,0xff,0xfe, +0xf4,0xff,0xfa,0xf1,0xfd,0xf7,0xf0,0xfd,0xf5,0xf3,0xff,0xf8,0xf7,0xff,0xf7, +0xfa,0xff,0xf4,0xfa,0xff,0xf1,0xf6,0xff,0xf0,0xf3,0xff,0xef,0xed,0xff,0xf0, +0xe8,0xff,0xef,0xe7,0xff,0xf0,0xe4,0xff,0xf1,0xe8,0xff,0xf4,0xe8,0xff,0xf3, +0xee,0xff,0xf4,0xf5,0xff,0xf6,0xfa,0xff,0xfa,0xff,0xff,0xfa,0xff,0xfd,0xf8, +0xfd,0xfa,0xf6,0xf8,0xfa,0xfa,0xfb,0xff,0xff,0xfb,0xff,0xff,0xf1,0xf3,0xf3, +0xff,0xff,0xff,0xff,0xfc,0xfe,0xff,0xf8,0xff,0xff,0xf5,0xff,0xff,0xf5,0xff, +0xff,0xfa,0xff,0xff,0xfc,0xfe,0xf9,0xff,0xf8,0xee,0xff,0xf0,0xe3,0xff,0xe8, +0x94,0xcf,0x9c,0x6c,0xb2,0x6c,0x60,0xaa,0x50,0x4d,0x90,0x3b,0x6f,0xa0,0x6a, +0xe7,0xff,0xea,0xf6,0xff,0xfc,0xfa,0xfc,0xfd,0xff,0xfe,0xfd,0xff,0xff,0xfb, +0xff,0xff,0xf8,0xff,0xff,0xf9,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, +0xfd,0xfe,0xff,0xff,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xd5,0xff,0xe6,0xdf,0xff,0xee,0x7d,0xad,0x89, +0x73,0xa2,0x7c,0xae,0xd9,0xb4,0xdd,0xff,0xde,0xe6,0xfc,0xe3,0xf9,0xff,0xf3, +0xff,0xff,0xfb,0xff,0xf9,0xfb,0xff,0xf4,0xfb,0xff,0xf5,0xfb,0xfd,0xf6,0xf9, +0xdc,0xdd,0xdb,0xa9,0xb2,0xa8,0x8f,0x98,0x8e,0x0d,0x0e,0x0a,0x03,0x01,0x00, +0x4b,0x49,0x48,0x49,0x47,0x46,0x34,0x32,0x31,0x08,0x06,0x05,0x14,0x12,0x11, +0x02,0x00,0x00,0x0e,0x0c,0x0b,0x06,0x04,0x03,0xee,0xec,0xeb,0xff,0xff,0xfe, +0xff,0xff,0xfe,0xba,0xb8,0xb7,0x12,0x10,0x0f,0x04,0x02,0x02,0x09,0x04,0x06, +0x0b,0x06,0x08,0x0d,0x07,0x0c,0x0c,0x07,0x09,0x0b,0x06,0x08,0x0a,0x05,0x07, +0x0b,0x06,0x08,0x0c,0x07,0x09,0x06,0x00,0x02,0x09,0x03,0x04,0x0d,0x07,0x08, +0x0e,0x08,0x09,0x0c,0x06,0x07,0x09,0x03,0x04,0x07,0x01,0x02,0x0b,0x00,0x02, +0x15,0x04,0x07,0x12,0x00,0x02,0x15,0x04,0x08,0x14,0x06,0x08,0x0a,0x00,0x01, +0x09,0x01,0x02,0x0d,0x08,0x09,0x09,0x07,0x06,0x06,0x07,0x05,0x15,0x16,0x14, +0x33,0x34,0x32,0x49,0x4a,0x48,0x58,0x59,0x55,0x72,0x73,0x6f,0x8d,0x8c,0x88, +0x92,0x90,0x8f,0xa3,0xa0,0xa2,0xaa,0xa6,0xab,0xbb,0xb8,0xba,0xb6,0xb6,0xb6, +0xd1,0xd2,0xd0,0xc7,0xc8,0xc4,0xd3,0xd4,0xd0,0xd9,0xdb,0xd5,0xec,0xed,0xe9, +0xea,0xeb,0xe7,0xf4,0xf5,0xf1,0xfc,0xfd,0xfb,0xfa,0xfa,0xfa,0xff,0xfd,0xff, +0xff,0xfd,0xff,0xfd,0xfa,0xfc,0xfe,0xff,0xfd,0xfe,0xff,0xfb,0xff,0xfe,0xfd, +0xff,0xfe,0xfd,0xff,0xfd,0xfe,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff, +0xff,0xf9,0xfc,0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xfd,0xfc,0xfe,0xff,0xfb, +0xfb,0xff,0xfc,0xfa,0xff,0xfb,0xf7,0xff,0xf5,0xfc,0xff,0xf8,0xfc,0xff,0xf8, +0xfc,0xff,0xf8,0xfc,0xff,0xf8,0xfc,0xff,0xf8,0xfb,0xff,0xf7,0xfb,0xff,0xf7, +0xfa,0xff,0xf6,0xfd,0xff,0xf9,0xfa,0xff,0xf6,0xf8,0xfd,0xf4,0xf9,0xfe,0xf5, +0xfb,0xff,0xf7,0xfc,0xff,0xf8,0xfa,0xff,0xf6,0xf9,0xfc,0xf3,0xff,0xfd,0xf8, +0xff,0xfd,0xf9,0xff,0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xff,0xfe,0xfe,0xfe, +0xf8,0xfc,0xfd,0xf7,0xfc,0xfd,0xf6,0xff,0xff,0xf4,0xff,0xff,0xe9,0xfa,0xf6, +0xed,0xff,0xfc,0xe7,0xff,0xf6,0xe5,0xff,0xf5,0xd5,0xf7,0xe6,0xdc,0xff,0xec, +0xdf,0xff,0xec,0xda,0xff,0xe7,0xd1,0xff,0xe0,0xc7,0xf9,0xd9,0xbe,0xf2,0xd4, +0xb6,0xef,0xd0,0xb3,0xeb,0xce,0xb2,0xea,0xcd,0xbc,0xf1,0xd6,0xbb,0xeb,0xd1, +0xc4,0xee,0xd7,0xd6,0xfa,0xe4,0xe8,0xff,0xef,0xee,0xff,0xf1,0xf3,0xff,0xf4, +0xf6,0xff,0xf7,0xf4,0xff,0xfc,0xf3,0xff,0xfe,0xec,0xfa,0xf4,0xf6,0xff,0xfc, +0xf3,0xfa,0xf7,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xf8,0xff, +0xff,0xfa,0xff,0xff,0xfb,0xfd,0xfb,0xff,0xfb,0xf0,0xff,0xf1,0xde,0xff,0xe2, +0xb4,0xeb,0xbc,0x65,0xaa,0x67,0x5e,0xa9,0x4d,0x53,0x98,0x41,0x48,0x79,0x41, +0xe9,0xff,0xea,0xf4,0xff,0xfa,0xf6,0xfa,0xfb,0xff,0xff,0xfe,0xff,0xfe,0xf6, +0xff,0xff,0xf8,0xff,0xff,0xf9,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, +0xfd,0xfd,0xff,0xff,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0xff,0xe9,0xe1,0xff,0xf0,0xa9,0xd9,0xb5, +0x5e,0x90,0x68,0x86,0xb8,0x8e,0xd3,0xff,0xd6,0xec,0xff,0xeb,0xef,0xff,0xeb, +0xfc,0xff,0xf5,0xf8,0xf0,0xf0,0xff,0xfc,0xff,0xff,0xf9,0xff,0xc4,0xbe,0xbf, +0x14,0x18,0x12,0x03,0x0f,0x03,0x00,0x07,0x00,0x00,0x02,0x00,0x19,0x17,0x16, +0x17,0x15,0x14,0x02,0x00,0x00,0x0f,0x0d,0x0c,0x05,0x03,0x02,0x06,0x04,0x03, +0x02,0x00,0x00,0x09,0x07,0x06,0x0f,0x0d,0x0c,0xad,0xab,0xaa,0xff,0xff,0xfe, +0xfc,0xfa,0xf9,0xe6,0xe4,0xe3,0x25,0x23,0x22,0x04,0x02,0x01,0x02,0x00,0x00, +0x04,0x02,0x02,0x06,0x04,0x04,0x06,0x04,0x04,0x08,0x03,0x04,0x07,0x02,0x03, +0x08,0x03,0x04,0x0b,0x05,0x06,0x2d,0x27,0x28,0x3c,0x34,0x35,0x50,0x48,0x49, +0x68,0x60,0x61,0x80,0x78,0x79,0x97,0x8c,0x8e,0xa8,0x9d,0x9f,0xb5,0xa7,0xa9, +0xca,0xb5,0xb7,0xcc,0xb7,0xb9,0xd6,0xc4,0xc5,0xdc,0xcc,0xcd,0xda,0xce,0xce, +0xe2,0xda,0xda,0xec,0xe9,0xe5,0xe6,0xe7,0xe3,0xf1,0xf5,0xf0,0xf5,0xf8,0xf6, +0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfc,0xff,0xfb,0xfc,0xff,0xfb,0xff,0xff,0xfc, +0xfd,0xfe,0xfc,0xfb,0xf6,0xf8,0xfc,0xf7,0xf9,0xff,0xff,0xff,0xf3,0xf4,0xf2, +0xfd,0xff,0xfc,0xf1,0xf9,0xf2,0xfa,0xff,0xf9,0xf8,0xff,0xf9,0xf2,0xfd,0xf3, +0xf1,0xfc,0xf2,0xfa,0xff,0xfa,0xfd,0xff,0xfc,0xf9,0xfa,0xf8,0xfb,0xf9,0xf9, +0xff,0xfc,0xfe,0xfe,0xf9,0xfb,0xff,0xfe,0xfd,0xff,0xff,0xfb,0xff,0xfe,0xfd, +0xff,0xfe,0xfd,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff, +0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xff,0xfe,0xf9,0xfd,0xf8,0xf2,0xfb,0xf1, +0xf0,0xfe,0xf2,0xf1,0xff,0xf4,0xef,0xff,0xf3,0xef,0xff,0xf7,0xec,0xff,0xf6, +0xea,0xff,0xf4,0xe8,0xff,0xf2,0xe8,0xff,0xf2,0xe9,0xff,0xf3,0xea,0xff,0xf4, +0xeb,0xff,0xf5,0xec,0xff,0xf6,0xec,0xff,0xf6,0xed,0xff,0xf7,0xed,0xff,0xf7, +0xed,0xff,0xf7,0xed,0xff,0xf7,0xea,0xff,0xf4,0xee,0xff,0xf2,0xf8,0xff,0xf5, +0xfe,0xff,0xf8,0xff,0xff,0xfb,0xfe,0xff,0xfb,0xfc,0xfa,0xf9,0xf9,0xf9,0xf9, +0xfc,0xfe,0xff,0xfa,0xff,0xff,0xeb,0xf6,0xf4,0xf2,0xff,0xfd,0xe4,0xfc,0xf4, +0xde,0xff,0xf1,0xd0,0xf7,0xe7,0xbf,0xee,0xd8,0xa3,0xd8,0xbd,0x9a,0xd6,0xb7, +0x73,0xb9,0x94,0x6c,0xbb,0x90,0x6b,0xb9,0x90,0x6a,0xb9,0x90,0x69,0xbb,0x91, +0x69,0xbd,0x93,0x6e,0xbf,0x98,0x6f,0xc0,0x99,0x72,0xbf,0x99,0x78,0xc0,0x9c, +0x7c,0xc0,0x9d,0x80,0xbd,0x9b,0x83,0xba,0x99,0x91,0xc3,0xa3,0xb2,0xe0,0xc3, +0xd3,0xfb,0xe2,0xda,0xfc,0xeb,0xe4,0xff,0xf3,0xe8,0xff,0xf5,0xed,0xff,0xf9, +0xed,0xfe,0xf5,0xf4,0xfd,0xfa,0xfc,0xfb,0xfd,0xff,0xfc,0xff,0xff,0xf9,0xff, +0xff,0xfa,0xff,0xff,0xfb,0xfe,0xfb,0xff,0xfb,0xf0,0xff,0xf3,0xe0,0xff,0xe3, +0xb7,0xec,0xc0,0x69,0xab,0x6a,0x5d,0xaa,0x4e,0x51,0x99,0x3f,0x3f,0x72,0x39, +0xe8,0xff,0xe9,0xf1,0xff,0xf8,0xf8,0xfd,0xfc,0xff,0xff,0xfc,0xff,0xff,0xf8, +0xff,0xff,0xf8,0xfd,0xff,0xf9,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, +0xff,0xfd,0xff,0xff,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xe5,0xff,0xf1,0xe6,0xff,0xf1,0xd7,0xff,0xe1, +0x65,0x9a,0x6f,0x68,0x9f,0x70,0xb7,0xeb,0xbb,0xe6,0xff,0xe7,0xea,0xff,0xe8, +0xf8,0xff,0xf3,0xff,0xff,0xfa,0xfc,0xf1,0xf4,0xff,0xf6,0xf9,0x93,0x8f,0x8e, +0x00,0x02,0x00,0x00,0x07,0x00,0x0f,0x1e,0x10,0x03,0x07,0x02,0x03,0x01,0x01, +0x02,0x00,0x00,0x0c,0x0a,0x0a,0x1c,0x1a,0x1a,0x03,0x01,0x01,0x23,0x21,0x21, +0x3b,0x39,0x39,0x4e,0x4c,0x4c,0x59,0x57,0x57,0x9a,0x98,0x98,0xfd,0xfb,0xfb, +0xf1,0xef,0xef,0xff,0xff,0xff,0xad,0xab,0xab,0xab,0xac,0xaa,0xc3,0xc7,0xc2, +0xc5,0xcb,0xc6,0xcf,0xd3,0xce,0xd7,0xdb,0xd6,0xe0,0xe1,0xdf,0xe7,0xe8,0xe6, +0xf1,0xef,0xee,0xf8,0xf4,0xf3,0xfe,0xf9,0xf8,0xff,0xf9,0xf9,0xff,0xfb,0xfc, +0xff,0xf9,0xfb,0xff,0xf6,0xf8,0xff,0xf4,0xf6,0xff,0xf3,0xf7,0xff,0xf4,0xf6, +0xff,0xf3,0xf0,0xff,0xf7,0xf1,0xff,0xfe,0xf8,0xff,0xfd,0xf6,0xfa,0xf6,0xf1, +0xfe,0xfe,0xf8,0xfd,0xff,0xfb,0xf6,0xfd,0xf6,0xf8,0xff,0xf9,0xf5,0xff,0xf9, +0xf9,0xff,0xfb,0xfa,0xff,0xfc,0xfa,0xff,0xfb,0xf8,0xfe,0xf9,0xf9,0xfc,0xfa, +0xfc,0xfd,0xfb,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xff,0xfe,0xf7,0xfd,0xf8, +0xf6,0xff,0xf9,0xee,0xff,0xf3,0xef,0xff,0xf7,0xed,0xff,0xf7,0xed,0xff,0xf7, +0xef,0xff,0xf7,0xf3,0xff,0xf8,0xf6,0xff,0xf9,0xfa,0xff,0xfb,0xfc,0xfd,0xfb, +0xff,0xfc,0xfd,0xff,0xfd,0xfe,0xff,0xfe,0xfd,0xff,0xfe,0xfb,0xff,0xfd,0xfd, +0xff,0xfd,0xfd,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff, +0xff,0xfb,0xfc,0xff,0xff,0xfe,0xfd,0xff,0xfb,0xf7,0xff,0xf8,0xf1,0xff,0xf7, +0xed,0xff,0xf4,0xe8,0xff,0xef,0xdc,0xff,0xea,0xcf,0xff,0xe7,0xc5,0xfc,0xe1, +0xba,0xf1,0xd6,0xae,0xe5,0xca,0xa4,0xdb,0xc0,0x9c,0xd3,0xb8,0x98,0xcf,0xb4, +0x97,0xce,0xb3,0x97,0xce,0xb3,0x9c,0xd3,0xb8,0xa4,0xdb,0xc0,0xae,0xe5,0xca, +0xb9,0xf0,0xd5,0xc5,0xfc,0xe1,0xcf,0xff,0xeb,0xdd,0xff,0xf4,0xed,0xff,0xf5, +0xf6,0xff,0xf7,0xf2,0xfe,0xf2,0xf5,0xfc,0xf5,0xfb,0xff,0xfa,0xff,0xff,0xff, +0xff,0xfe,0xff,0xf8,0xfc,0xfd,0xf8,0xff,0xff,0xf1,0xff,0xfc,0xd0,0xeb,0xe1, +0x96,0xbd,0xad,0x8a,0xbe,0xa6,0x7c,0xbc,0x9e,0x74,0xbc,0x98,0x6b,0xbe,0x97, +0x62,0xc5,0x97,0x59,0xc6,0x95,0x57,0xc4,0x94,0x56,0xc3,0x93,0x55,0xc2,0x92, +0x55,0xc2,0x92,0x57,0xc1,0x92,0x59,0xc1,0x92,0x53,0xb9,0x8a,0x57,0xba,0x8c, +0x5f,0xbe,0x91,0x68,0xc3,0x96,0x6b,0xc2,0x96,0x6c,0xc1,0x95,0x71,0xc3,0x98, +0x7e,0xc7,0xa1,0xa8,0xdf,0xc4,0xba,0xe8,0xd2,0xd4,0xff,0xea,0xe2,0xff,0xf3, +0xea,0xff,0xf8,0xe6,0xf9,0xf0,0xf7,0xfe,0xfb,0xff,0xfd,0xff,0xff,0xfa,0xff, +0xff,0xfb,0xff,0xff,0xfb,0xff,0xfd,0xff,0xfc,0xf2,0xff,0xf4,0xe3,0xff,0xe7, +0xbc,0xee,0xc6,0x70,0xaf,0x71,0x5f,0xac,0x50,0x50,0x99,0x3d,0x31,0x67,0x2c, +0xe4,0xff,0xe7,0xf1,0xff,0xf8,0xfa,0xff,0xff,0xfd,0xfe,0xfa,0xff,0xff,0xf8, +0xff,0xff,0xf7,0xfd,0xff,0xf8,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, +0xff,0xfd,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xf8,0xe4,0xff,0xeb,0xe5,0xff,0xec, +0x96,0xc8,0x9e,0x64,0x9f,0x6d,0x90,0xc9,0x96,0xd4,0xff,0xd9,0xea,0xff,0xeb, +0xf0,0xff,0xee,0xff,0xff,0xfb,0xf6,0xed,0xf0,0xff,0xfc,0xff,0x9e,0x98,0x99, +0x10,0x12,0x0c,0x00,0x0d,0x00,0x71,0x7e,0x6e,0xc8,0xcc,0xc7,0x5e,0x5e,0x5e, +0x12,0x10,0x10,0x82,0x82,0x82,0xec,0xea,0xea,0xeb,0xeb,0xeb,0xfe,0xfc,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xfa,0xfa,0xf6,0xf4,0xf4,0xff,0xff,0xff, +0xfb,0xf9,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xfe,0xf0,0xfb,0xf3, +0xee,0xfe,0xf3,0xf2,0xff,0xf5,0xf5,0xff,0xf6,0xf5,0xff,0xf8,0xf9,0xff,0xfa, +0xfb,0xff,0xfb,0xff,0xff,0xfc,0xfb,0xfa,0xf6,0xff,0xfb,0xfa,0xff,0xfd,0xfe, +0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfe,0xfe, +0xff,0xff,0xf7,0xff,0xff,0xf7,0xff,0xff,0xf7,0xfd,0xff,0xf7,0xf5,0xff,0xf3, +0xf8,0xff,0xf8,0xf4,0xff,0xf8,0xf1,0xff,0xf6,0xf2,0xff,0xf8,0xf2,0xff,0xf9, +0xef,0xfc,0xf4,0xf0,0xfa,0xf4,0xf7,0xfd,0xf8,0xf7,0xfb,0xf6,0xf9,0xfa,0xf8, +0xff,0xff,0xfe,0xfa,0xf5,0xf6,0xfd,0xf9,0xf8,0xfd,0xff,0xfc,0xf5,0xff,0xfa, +0xea,0xff,0xf3,0xe0,0xff,0xef,0xdf,0xff,0xf1,0xd5,0xff,0xea,0xd2,0xfc,0xe5, +0xd6,0xfd,0xe8,0xda,0xfa,0xe9,0xe4,0xfb,0xed,0xf6,0xff,0xfb,0xfd,0xff,0xfc, +0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfe,0xfd,0xff,0xfe,0xfb,0xff,0xfd,0xfd, +0xff,0xfc,0xfe,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfd,0xfe, +0xfe,0xfc,0xfb,0xf8,0xfe,0xf9,0xf3,0xff,0xf6,0xee,0xff,0xf4,0xe6,0xff,0xf2, +0xdb,0xff,0xea,0xc2,0xf4,0xd2,0xa5,0xe2,0xbe,0x80,0xc8,0xa4,0x76,0xc6,0xa1, +0x72,0xc2,0x9f,0x6e,0xbe,0x99,0x6c,0xbc,0x99,0x6b,0xbb,0x96,0x6c,0xbc,0x99, +0x6d,0xbd,0x98,0x6b,0xbb,0x98,0x6c,0xbc,0x97,0x6c,0xbc,0x99,0x6d,0xbd,0x98, +0x71,0xc1,0x9e,0x7b,0xcb,0xa6,0x89,0xd9,0xb6,0x9d,0xe2,0xc1,0xcc,0xfb,0xe1, +0xdf,0xff,0xec,0xec,0xff,0xf6,0xf3,0xff,0xf8,0xf8,0xff,0xfb,0xfd,0xff,0xfe, +0xfd,0xfd,0xfd,0xf7,0xf9,0xf9,0xf1,0xf8,0xf5,0xf3,0xff,0xfc,0xd1,0xef,0xe2, +0x84,0xb2,0x9c,0x7c,0xb8,0x9a,0x68,0xb2,0x8e,0x62,0xb6,0x8c,0x50,0xb2,0x84, +0x4f,0xbd,0x8d,0x4a,0xbf,0x8e,0x4b,0xc0,0x8f,0x4d,0xc0,0x8f,0x4e,0xc1,0x90, +0x51,0xc1,0x91,0x54,0xc3,0x91,0x54,0xc3,0x91,0x64,0xd1,0xa0,0x5b,0xc9,0x95, +0x55,0xc1,0x8d,0x55,0xc1,0x8d,0x58,0xc4,0x90,0x58,0xc4,0x90,0x52,0xbe,0x8a, +0x56,0xb6,0x87,0x74,0xbe,0x9a,0x86,0xc5,0xa5,0xae,0xe8,0xcb,0xc6,0xf9,0xdd, +0xe1,0xff,0xf4,0xe2,0xff,0xef,0xf3,0xff,0xfb,0xf9,0xfe,0xfd,0xff,0xfb,0xff, +0xff,0xfb,0xff,0xff,0xfb,0xff,0xfd,0xff,0xfe,0xf3,0xff,0xf6,0xe7,0xff,0xeb, +0xc3,0xf2,0xcc,0x77,0xb5,0x79,0x62,0xaf,0x53,0x4e,0x99,0x3d,0x28,0x5e,0x22, +0xdc,0xff,0xdf,0xf0,0xff,0xf6,0xfa,0xff,0xff,0xf9,0xfb,0xf5,0xff,0xff,0xf8, +0xff,0xff,0xf7,0xfd,0xff,0xf8,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, +0xff,0xfd,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xfa,0xf5,0xff,0xf5,0xe3,0xff,0xe7, +0xc7,0xf2,0xcd,0x6d,0xa5,0x74,0x72,0xad,0x7a,0xc2,0xf5,0xc9,0xe8,0xff,0xeb, +0xf0,0xff,0xf1,0xf3,0xf4,0xf2,0xff,0xfb,0xff,0xff,0xfa,0xff,0xda,0xd1,0xd4, +0x16,0x15,0x11,0x04,0x0d,0x00,0xcc,0xd6,0xc9,0xfd,0xff,0xfc,0xab,0xad,0xad, +0x15,0x15,0x15,0x4e,0x50,0x50,0xf0,0xf0,0xf0,0xfd,0xff,0xff,0xf4,0xf4,0xf4, +0xf2,0xf4,0xf4,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xf5,0xf7,0xf7, +0xff,0xff,0xff,0xee,0xf0,0xf0,0xff,0xff,0xff,0xf1,0xf8,0xf3,0xef,0xff,0xf8, +0xea,0xff,0xf5,0xec,0xff,0xf5,0xec,0xff,0xf6,0xeb,0xff,0xf4,0xeb,0xff,0xf2, +0xef,0xff,0xf4,0xf5,0xff,0xf8,0xfa,0xff,0xfc,0xfb,0xff,0xfe,0xff,0xff,0xff, +0xff,0xfd,0xfd,0xfe,0xf9,0xfb,0xfd,0xf6,0xf9,0xff,0xf5,0xfb,0xfb,0xf9,0xf8, +0xf6,0xff,0xf5,0xea,0xff,0xed,0xe8,0xff,0xed,0xe6,0xff,0xec,0xde,0xfd,0xe8, +0xe0,0xff,0xed,0xe4,0xff,0xf1,0xde,0xfb,0xeb,0xe1,0xfb,0xed,0xed,0xff,0xf9, +0xf3,0xff,0xfb,0xf5,0xff,0xfb,0xfb,0xff,0xfc,0xfe,0xff,0xfd,0xfa,0xf8,0xf7, +0xff,0xff,0xfe,0xff,0xff,0xfe,0xfe,0xff,0xfd,0xf5,0xff,0xfa,0xe0,0xf8,0xec, +0xbb,0xe1,0xcf,0xb0,0xe2,0xca,0xac,0xe6,0xca,0xa0,0xe0,0xc3,0x97,0xd4,0xb8, +0x9c,0xd7,0xbb,0xa2,0xd2,0xba,0xb8,0xde,0xcc,0xe4,0xfc,0xf0,0xf6,0xff,0xfb, +0xfb,0xfc,0xfa,0xff,0xfb,0xfa,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfd,0xfe, +0xff,0xfd,0xfe,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfd,0xfe,0xff,0xfe,0xfe, +0xfa,0xff,0xfb,0xf4,0xff,0xf9,0xea,0xff,0xf5,0xd4,0xfc,0xe3,0xb9,0xee,0xcd, +0x9e,0xdd,0xb6,0x83,0xca,0x9f,0x6b,0xbb,0x8c,0x59,0xb4,0x87,0x55,0xb7,0x89, +0x57,0xb8,0x8c,0x5a,0xbc,0x8e,0x5e,0xbf,0x93,0x62,0xc4,0x96,0x65,0xc6,0x9a, +0x66,0xc8,0x9a,0x61,0xc2,0x96,0x60,0xc2,0x94,0x5d,0xbe,0x92,0x58,0xba,0x8c, +0x54,0xb5,0x89,0x56,0xb8,0x8a,0x5d,0xbe,0x92,0x6a,0xc2,0x9a,0x85,0xca,0xa9, +0xaf,0xe6,0xcb,0xd6,0xff,0xed,0xe6,0xff,0xf7,0xec,0xff,0xf6,0xf2,0xfc,0xf6, +0xfb,0xfd,0xfd,0xff,0xff,0xff,0xf1,0xf6,0xf4,0xf4,0xff,0xfb,0xe1,0xfe,0xef, +0x97,0xc3,0xac,0x83,0xc2,0xa2,0x6e,0xbd,0x94,0x6c,0xc8,0x97,0x5e,0xc3,0x90, +0x5c,0xc3,0x96,0x5c,0xc2,0x98,0x5c,0xc2,0x98,0x5e,0xc2,0x98,0x5e,0xc0,0x94, +0x5d,0xbe,0x92,0x5b,0xbd,0x8f,0x5a,0xbd,0x8d,0x57,0xbb,0x8b,0x57,0xc0,0x8f, +0x58,0xc4,0x90,0x53,0xc2,0x8e,0x4b,0xc0,0x89,0x49,0xc0,0x89,0x49,0xc4,0x8c, +0x53,0xc5,0x90,0x5d,0xb8,0x8b,0x66,0xb4,0x8b,0x84,0xcd,0xa7,0x9c,0xdf,0xba, +0xd0,0xff,0xe8,0xde,0xff,0xef,0xed,0xff,0xf9,0xf2,0xfb,0xf8,0xff,0xfc,0xff, +0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xff,0xfe,0xf5,0xff,0xf7,0xe9,0xff,0xed, +0xca,0xf4,0xd1,0x80,0xbc,0x80,0x63,0xb0,0x54,0x4e,0x9c,0x3e,0x25,0x5e,0x21, +0xd2,0xf7,0xd5,0xf2,0xff,0xf8,0xf8,0xff,0xfe,0xf8,0xfc,0xf6,0xff,0xff,0xf8, +0xff,0xff,0xf7,0xfd,0xff,0xf8,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, +0xff,0xfd,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xfe,0xff,0xff,0xfc,0xe9,0xfc,0xe9, +0xda,0xff,0xdd,0x79,0xaf,0x80,0x6a,0xa5,0x73,0xaf,0xe4,0xb8,0xe2,0xff,0xe9, +0xf0,0xff,0xf4,0xfa,0xfa,0xfa,0xff,0xf6,0xff,0xff,0xf8,0xff,0xfd,0xee,0xf6, +0x69,0x63,0x64,0x00,0x04,0x00,0x77,0x7f,0x74,0xf5,0xf9,0xf4,0xf3,0xf5,0xf5, +0xb8,0xba,0xba,0xba,0xbc,0xbc,0xfa,0xfc,0xfc,0xf7,0xf9,0xf9,0xf9,0xfb,0xfb, +0xfd,0xff,0xff,0xea,0xec,0xec,0xfd,0xff,0xff,0xfd,0xff,0xff,0xf8,0xfa,0xfa, +0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xf6,0xff,0xfc,0xe2,0xff,0xef, +0xdc,0xff,0xed,0xdf,0xff,0xee,0xdf,0xff,0xef,0xe0,0xff,0xef,0xe6,0xff,0xf3, +0xec,0xff,0xf7,0xf1,0xff,0xf9,0xef,0xff,0xf7,0xf4,0xff,0xfa,0xfa,0xff,0xfe, +0xfb,0xff,0xff,0xfe,0xfd,0xff,0xfe,0xfb,0xfd,0xff,0xfb,0xff,0xf9,0xff,0xfd, +0xde,0xff,0xec,0xbd,0xef,0xcf,0xb1,0xe3,0xc5,0xae,0xe1,0xc5,0xa7,0xda,0xbe, +0xa3,0xd6,0xbb,0xa5,0xd3,0xbc,0xa1,0xcc,0xb7,0x9f,0xc5,0xb3,0xce,0xed,0xde, +0xe7,0xfd,0xf1,0xed,0xfc,0xf4,0xfb,0xff,0xfe,0xff,0xff,0xfe,0xfc,0xf7,0xf6, +0xff,0xfd,0xfc,0xff,0xff,0xfe,0xf4,0xfb,0xf6,0xdf,0xf2,0xe9,0xbd,0xde,0xcf, +0x7e,0xaf,0x99,0x74,0xb4,0x97,0x71,0xbc,0x9c,0x66,0xb8,0x95,0x6c,0xbb,0x9a, +0x72,0xbd,0x9d,0x76,0xb6,0x99,0x97,0xc8,0xb2,0xd6,0xf7,0xe8,0xf1,0xff,0xf9, +0xf6,0xfd,0xf8,0xfd,0xfe,0xfc,0xfe,0xff,0xfd,0xff,0xfe,0xfd,0xff,0xfd,0xfe, +0xff,0xfd,0xfe,0xff,0xfd,0xff,0xff,0xfd,0xff,0xfe,0xfe,0xfe,0xfa,0xff,0xfd, +0xf0,0xff,0xf7,0xeb,0xff,0xf7,0xd5,0xff,0xe8,0xaf,0xe5,0xc7,0x83,0xc9,0xa1, +0x6b,0xbb,0x8c,0x62,0xbc,0x87,0x60,0xc0,0x8a,0x63,0xcb,0x96,0x60,0xc9,0x96, +0x5f,0xc8,0x95,0x5d,0xc6,0x93,0x59,0xc2,0x8f,0x56,0xbf,0x8c,0x53,0xbc,0x89, +0x52,0xbb,0x88,0x52,0xbb,0x88,0x54,0xbd,0x8a,0x58,0xc1,0x8e,0x5a,0xc3,0x90, +0x5b,0xc4,0x91,0x5b,0xc4,0x91,0x5c,0xc5,0x92,0x61,0xc5,0x95,0x5a,0xb3,0x8b, +0x75,0xc2,0xa0,0x96,0xd6,0xb9,0xb7,0xe8,0xd2,0xdd,0xfc,0xed,0xf3,0xff,0xfb, +0xfb,0xff,0xfe,0xfa,0xfb,0xf9,0xfd,0xff,0xfc,0xf8,0xff,0xf9,0xea,0xff,0xf4, +0xa9,0xd6,0xbc,0x78,0xb8,0x94,0x60,0xb3,0x86,0x62,0xc4,0x90,0x5f,0xc3,0x8f, +0x63,0xb9,0x91,0x69,0xb9,0x96,0x6e,0xbb,0x99,0x72,0xbe,0x9c,0x75,0xbf,0x9b, +0x77,0xc0,0x9a,0x73,0xbe,0x98,0x70,0xbe,0x95,0x6b,0xbd,0x92,0x67,0xc1,0x93, +0x63,0xc3,0x94,0x5c,0xc5,0x92,0x57,0xc9,0x94,0x54,0xcc,0x95,0x4d,0xca,0x92, +0x4b,0xc3,0x8c,0x5f,0xc6,0x93,0x60,0xbc,0x8d,0x66,0xbb,0x8e,0x77,0xc3,0x99, +0xab,0xeb,0xc7,0xd4,0xff,0xe9,0xea,0xff,0xf7,0xf0,0xfe,0xf8,0xfe,0xfd,0xff, +0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xff,0xfe,0xf5,0xff,0xf7,0xed,0xff,0xf0, +0xd0,0xf7,0xd7,0x88,0xc2,0x88,0x63,0xb1,0x53,0x51,0xa0,0x3f,0x2c,0x65,0x26, +0xc5,0xea,0xc8,0xf1,0xff,0xf8,0xf6,0xff,0xfc,0xfc,0xff,0xfa,0xff,0xff,0xf8, +0xff,0xff,0xf7,0xfd,0xff,0xf8,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, +0xff,0xfd,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0xff,0xff,0xfd,0xff,0xfb,0xff,0xf7, +0xe4,0xff,0xe5,0x9b,0xce,0xa2,0x6c,0xa6,0x76,0x90,0xc5,0x9a,0xd5,0xfe,0xdf, +0xe6,0xf7,0xec,0xff,0xfe,0xff,0xf7,0xe5,0xf6,0xff,0xf7,0xff,0xfe,0xec,0xf9, +0xc4,0xb8,0xbe,0x1c,0x19,0x14,0x1e,0x21,0x18,0xf5,0xf8,0xf6,0xf4,0xf9,0xf8, +0xfb,0xff,0xff,0xfa,0xff,0xfe,0xfb,0xff,0xff,0xf2,0xf7,0xf6,0xfb,0xff,0xff, +0xed,0xf2,0xf1,0xf1,0xf6,0xf5,0xe9,0xee,0xed,0xe4,0xe9,0xe8,0xc2,0xc7,0xc6, +0xe1,0xe6,0xe5,0xfb,0xff,0xff,0xf4,0xf9,0xf8,0xf1,0xff,0xf9,0xb2,0xdc,0xc5, +0xaa,0xde,0xc0,0xa8,0xd9,0xbd,0xa3,0xd3,0xb7,0x9f,0xcc,0xb2,0xa0,0xc7,0xb1, +0xa3,0xc5,0xb4,0xa8,0xc5,0xb6,0xe4,0xfc,0xf2,0xeb,0xfd,0xf6,0xf2,0xff,0xfc, +0xf8,0xff,0xff,0xfb,0xff,0xff,0xfc,0xfe,0xff,0xfe,0xfd,0xff,0xf3,0xff,0xfc, +0xb0,0xe5,0xca,0x7d,0xc6,0xa0,0x6d,0xb5,0x91,0x76,0xbe,0x9a,0x79,0xbe,0x9d, +0x76,0xb9,0x9a,0x7b,0xb8,0x9c,0x83,0xba,0xa1,0x8b,0xb9,0xa6,0xd1,0xf6,0xe6, +0xec,0xff,0xf9,0xf1,0xff,0xf8,0xfb,0xff,0xfe,0xff,0xff,0xfe,0xfe,0xf3,0xf5, +0xff,0xf8,0xf8,0xfd,0xff,0xfe,0xf4,0xff,0xfb,0xe8,0xff,0xf5,0xc5,0xef,0xdd, +0x76,0xb3,0x99,0x6d,0xb9,0x9a,0x69,0xc3,0x9f,0x60,0xc1,0x99,0x5a,0xb9,0x94, +0x63,0xbd,0x99,0x64,0xb0,0x91,0x83,0xc0,0xa6,0xc9,0xf3,0xe1,0xec,0xff,0xf9, +0xf0,0xfe,0xf8,0xfb,0xff,0xfc,0xfa,0xff,0xfd,0xfc,0xff,0xfd,0xfe,0xfe,0xfe, +0xfe,0xfe,0xfe,0xfe,0xfd,0xff,0xfc,0xfe,0xff,0xf9,0xff,0xfe,0xf3,0xff,0xfd, +0xe9,0xff,0xf7,0xd3,0xf7,0xe6,0xae,0xe1,0xc5,0x83,0xc8,0xa3,0x67,0xba,0x8d, +0x5d,0xbd,0x87,0x5d,0xc8,0x8a,0x60,0xcd,0x8f,0x59,0xc2,0x89,0x59,0xc1,0x8a, +0x59,0xc1,0x8a,0x5a,0xc2,0x8b,0x5b,0xc3,0x8c,0x5d,0xc5,0x8e,0x5f,0xc7,0x90, +0x61,0xc9,0x92,0x61,0xc9,0x92,0x60,0xc8,0x91,0x5e,0xc6,0x8f,0x5c,0xc4,0x8d, +0x5b,0xc3,0x8c,0x59,0xc1,0x8a,0x56,0xbe,0x87,0x54,0xbc,0x87,0x54,0xbe,0x8f, +0x57,0xb8,0x90,0x62,0xb3,0x92,0x80,0xc1,0xa7,0xb9,0xe3,0xd2,0xea,0xff,0xf8, +0xfa,0xff,0xfe,0xf4,0xf5,0xf3,0xf8,0xf7,0xf3,0xf5,0xfd,0xf3,0xef,0xff,0xf5, +0xd5,0xfe,0xe3,0x86,0xc5,0x9e,0x67,0xb9,0x88,0x62,0xc3,0x8b,0x66,0xbf,0x8d, +0x8c,0xc8,0xa9,0x9e,0xca,0xb3,0xab,0xd5,0xbe,0xb9,0xe1,0xc8,0xc5,0xec,0xd2, +0xcd,0xf5,0xd9,0xd1,0xfa,0xde,0xcf,0xfe,0xde,0xc2,0xf8,0xd5,0xa6,0xe7,0xc0, +0x7f,0xcb,0xa1,0x5e,0xb6,0x88,0x50,0xb5,0x82,0x51,0xc0,0x8a,0x50,0xc7,0x90, +0x4f,0xc6,0x8f,0x59,0xc8,0x90,0x62,0xc7,0x93,0x5a,0xb9,0x86,0x64,0xb9,0x8c, +0x89,0xd0,0xa8,0xc9,0xff,0xe1,0xe6,0xff,0xf5,0xf1,0xff,0xf9,0xfc,0xfe,0xff, +0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xf6,0xff,0xf7,0xee,0xff,0xf3, +0xd6,0xfa,0xdc,0x8f,0xc6,0x8f,0x63,0xb0,0x54,0x53,0xa4,0x43,0x34,0x70,0x30, +0xb6,0xdf,0xba,0xf1,0xff,0xf8,0xf2,0xfb,0xf8,0xfd,0xff,0xfb,0xff,0xff,0xf8, +0xff,0xff,0xf7,0xfd,0xff,0xf8,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, +0xff,0xfd,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xf6,0xe8,0xee,0xfd,0xff,0xf9, +0xed,0xff,0xef,0xc4,0xf1,0xca,0x70,0xa5,0x79,0x70,0xa4,0x7c,0xce,0xf7,0xd8, +0xe1,0xf8,0xe9,0xfb,0xff,0xff,0xff,0xf6,0xff,0xff,0xf2,0xff,0xff,0xf9,0xff, +0xff,0xf2,0xfa,0xed,0xe7,0xe8,0xff,0xff,0xfc,0xf6,0xf8,0xf8,0xfb,0xff,0xff, +0xd6,0xd8,0xd8,0x5d,0x62,0x61,0x59,0x5b,0x5b,0x34,0x39,0x38,0x20,0x22,0x22, +0x13,0x18,0x17,0x0f,0x11,0x11,0x00,0x01,0x00,0x0c,0x0e,0x0e,0x0a,0x0f,0x0e, +0x9f,0xa1,0xa1,0xf6,0xfb,0xfa,0xfc,0xfe,0xfe,0xec,0xfd,0xf4,0x89,0xb6,0x9c, +0x7e,0xba,0x98,0x7a,0xba,0x97,0x76,0xb8,0x95,0x72,0xb6,0x93,0x75,0xb6,0x96, +0x7d,0xb7,0x9b,0x86,0xb7,0xa1,0xd7,0xfc,0xec,0xe4,0xfd,0xf3,0xf0,0xff,0xfb, +0xf7,0xff,0xfe,0xf9,0xfe,0xff,0xf8,0xfb,0xff,0xf7,0xfa,0xfe,0xe8,0xff,0xf8, +0xb1,0xf1,0xd3,0x71,0xc7,0x9d,0x59,0xb2,0x87,0x64,0xbe,0x93,0x66,0xc0,0x95, +0x5f,0xb7,0x8f,0x65,0xb5,0x90,0x74,0xb8,0x99,0x81,0xb8,0x9f,0xd6,0xfc,0xea, +0xed,0xff,0xf9,0xf0,0xfa,0xf4,0xfc,0xfd,0xfb,0xff,0xfe,0xff,0xff,0xf9,0xfb, +0xff,0xfe,0xff,0xf9,0xfc,0xfa,0xf4,0xff,0xfc,0xec,0xff,0xfb,0xcf,0xf9,0xe8, +0x79,0xb6,0x9c,0x6c,0xbb,0x9a,0x62,0xc2,0x99,0x51,0xbd,0x8f,0x53,0xc1,0x91, +0x5c,0xc5,0x98,0x56,0xb4,0x8b,0x72,0xbd,0x9d,0xba,0xee,0xd7,0xde,0xff,0xf0, +0xe9,0xf7,0xf1,0xfa,0xff,0xfe,0xf9,0xff,0xfd,0xfa,0xff,0xfe,0xfc,0xfe,0xfe, +0xfc,0xfe,0xff,0xfc,0xfe,0xff,0xfa,0xff,0xfe,0xf7,0xff,0xfd,0xf0,0xff,0xfa, +0xe6,0xff,0xf7,0xbc,0xed,0xd1,0x84,0xc4,0xa0,0x61,0xb2,0x85,0x5c,0xbb,0x88, +0x61,0xcb,0x90,0x57,0xca,0x8b,0x4b,0xbe,0x7f,0x58,0xc5,0x8d,0x5d,0xc2,0x8e, +0x64,0xc0,0x8f,0x6b,0xc1,0x91,0x75,0xc4,0x98,0x7d,0xca,0x9e,0x81,0xd0,0xa4, +0x85,0xd4,0xa8,0x7c,0xcd,0xa0,0x74,0xc5,0x98,0x69,0xbd,0x8d,0x63,0xb9,0x89, +0x61,0xbd,0x8a,0x63,0xc3,0x8d,0x62,0xc7,0x90,0x5e,0xc8,0x93,0x54,0xc1,0x90, +0x5c,0xc5,0x98,0x62,0xc2,0x99,0x68,0xba,0x97,0x84,0xc1,0xa5,0xb5,0xde,0xc9, +0xe7,0xf9,0xec,0xfd,0xff,0xf9,0xff,0xff,0xfb,0xf7,0xfc,0xf3,0xef,0xff,0xf4, +0xde,0xff,0xec,0x89,0xbd,0x9f,0x82,0xc5,0xa0,0x9e,0xe9,0xbd,0xba,0xfb,0xd4, +0xda,0xff,0xeb,0xe8,0xfe,0xf2,0xee,0xff,0xf5,0xf1,0xff,0xf8,0xf3,0xff,0xf7, +0xf3,0xff,0xf4,0xef,0xff,0xf0,0xe9,0xff,0xed,0xe4,0xff,0xec,0xde,0xff,0xec, +0xc6,0xff,0xdd,0x99,0xe5,0xbb,0x6c,0xc8,0x99,0x53,0xbc,0x89,0x4f,0xc1,0x8c, +0x51,0xc9,0x8f,0x4a,0xbe,0x83,0x5d,0xce,0x92,0x57,0xbd,0x86,0x61,0xbc,0x8b, +0x79,0xc3,0x99,0xc1,0xfa,0xdb,0xe0,0xff,0xf1,0xee,0xff,0xf8,0xfa,0xff,0xfe, +0xff,0xfe,0xff,0xff,0xfc,0xfe,0xfd,0xff,0xfe,0xf6,0xff,0xf7,0xf0,0xff,0xf4, +0xda,0xfb,0xe0,0x94,0xc7,0x95,0x61,0xaf,0x57,0x55,0xa5,0x48,0x3b,0x78,0x38, +0xae,0xd8,0xaf,0xf1,0xff,0xf5,0xef,0xfa,0xf2,0xfd,0xff,0xfb,0xfd,0xff,0xf9, +0xff,0xff,0xf9,0xff,0xff,0xfb,0xfd,0xff,0xff,0xfd,0xfe,0xff,0xfd,0xfd,0xff, +0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xfd,0xff,0xf3,0xfc,0xf2, +0xe7,0xfe,0xe8,0xe0,0xff,0xe5,0x88,0xb7,0x90,0x74,0xa3,0x7c,0xa4,0xd0,0xab, +0xea,0xff,0xf0,0xe4,0xf7,0xe6,0xfb,0xff,0xfc,0xfd,0xfa,0xfc,0xfc,0xf5,0xfa, +0xff,0xfc,0xff,0xfe,0xf7,0xfc,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfb,0xfd,0xfd, +0xf1,0xf1,0xf1,0x47,0x49,0x49,0x0d,0x0d,0x0d,0x05,0x07,0x07,0x0e,0x0e,0x0e, +0x00,0x02,0x02,0x00,0x00,0x00,0x0a,0x0c,0x0c,0x04,0x04,0x04,0x0c,0x0e,0x0e, +0x37,0x37,0x37,0xf4,0xf6,0xf6,0xff,0xff,0xff,0xf0,0xff,0xf7,0xb2,0xda,0xc1, +0x7d,0xbb,0x97,0x67,0xb6,0x8b,0x67,0xc3,0x94,0x59,0xbf,0x8f,0x58,0xc1,0x90, +0x63,0xc4,0x98,0x69,0xb9,0x96,0xb7,0xed,0xd6,0xd9,0xfa,0xec,0xf4,0xff,0xfe, +0xfb,0xfd,0xfe,0xff,0xfd,0xff,0xfd,0xfd,0xff,0xe4,0xea,0xef,0xe8,0xff,0xfe, +0xa9,0xe9,0xcc,0x6e,0xc6,0x9e,0x55,0xb8,0x8a,0x58,0xc4,0x90,0x54,0xc6,0x90, +0x50,0xc1,0x88,0x5b,0xc0,0x8d,0x6a,0xbf,0x93,0x8d,0xc8,0xa9,0xdf,0xff,0xef, +0xf4,0xff,0xf9,0xf8,0xf9,0xf5,0xff,0xfe,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff, +0xff,0xfd,0xff,0xf8,0xf8,0xf8,0xfa,0xff,0xfe,0xeb,0xfb,0xf4,0xe5,0xff,0xf8, +0x9b,0xcf,0xb8,0x6a,0xb4,0x92,0x5e,0xbd,0x90,0x55,0xc5,0x8f,0x48,0xc5,0x87, +0x52,0xcf,0x91,0x57,0xc8,0x8f,0x62,0xbd,0x90,0x8b,0xc9,0xab,0xe4,0xff,0xf8, +0xf0,0xfb,0xf9,0xfd,0xff,0xff,0xfa,0xff,0xff,0xf9,0xff,0xfe,0xfc,0xfe,0xff, +0xfe,0xfd,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xf4,0xff,0xf9,0xe9,0xff,0xf1, +0xd1,0xfd,0xde,0x8e,0xcd,0xa3,0x61,0xb3,0x7f,0x61,0xc0,0x87,0x61,0xc8,0x8e, +0x55,0xc6,0x8a,0x50,0xc5,0x88,0x4e,0xc3,0x8a,0x58,0xc6,0x96,0x57,0xb7,0x8e, +0x7d,0xc5,0xa1,0xad,0xe0,0xc4,0xd7,0xf9,0xe1,0xe6,0xff,0xed,0xe4,0xff,0xed, +0xe8,0xff,0xf5,0xde,0xff,0xef,0xda,0xff,0xeb,0xcb,0xf6,0xdb,0xa9,0xdb,0xbb, +0x7e,0xbf,0x98,0x64,0xb3,0x87,0x5c,0xbe,0x8a,0x64,0xcc,0x97,0x61,0xc4,0x94, +0x5a,0xbd,0x8f,0x53,0xbe,0x8d,0x57,0xc0,0x8f,0x5f,0xba,0x8d,0x7c,0xc1,0x9c, +0xc0,0xe6,0xca,0xf6,0xff,0xf4,0xff,0xff,0xf8,0xf9,0xfb,0xf5,0xf4,0xff,0xfe, +0xe6,0xfd,0xf8,0xd3,0xf5,0xeb,0xd9,0xfd,0xef,0xe3,0xff,0xf3,0xea,0xff,0xf6, +0xed,0xfc,0xf8,0xf1,0xfd,0xfd,0xf4,0xff,0xff,0xf3,0xff,0xfe,0xf4,0xff,0xfc, +0xf4,0xff,0xf9,0xf2,0xff,0xf5,0xf0,0xff,0xf2,0xe8,0xff,0xed,0xdd,0xff,0xe7, +0xdc,0xff,0xed,0xb6,0xf9,0xd2,0x6b,0xc3,0x95,0x51,0xb8,0x85,0x56,0xca,0x95, +0x4b,0xc6,0x8c,0x53,0xce,0x8e,0x4b,0xc3,0x82,0x5a,0xc6,0x8b,0x63,0xbf,0x8c, +0x70,0xb7,0x8f,0xae,0xe1,0xc5,0xe8,0xff,0xf7,0xed,0xfe,0xf5,0xf7,0xfc,0xfa, +0xff,0xff,0xff,0xff,0xff,0xfe,0xfb,0xff,0xfc,0xf2,0xff,0xf5,0xf0,0xff,0xf6, +0xe1,0xfc,0xe8,0x9c,0xca,0xa0,0x63,0xae,0x60,0x58,0xa9,0x52,0x3c,0x7a,0x38, +0xa3,0xd1,0xa2,0xe8,0xff,0xe7,0xf8,0xff,0xf7,0xfb,0xff,0xf9,0xff,0xff,0xfe, +0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff, +0xfd,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfb,0xf8,0xfa,0xf8,0xff,0xf9, +0xf1,0xff,0xf4,0xe3,0xff,0xe7,0xaa,0xd5,0xb0,0x68,0x95,0x6e,0x89,0xb6,0x8f, +0xdf,0xff,0xe4,0xe5,0xff,0xe9,0xf3,0xff,0xf6,0xf5,0xfb,0xf6,0xfc,0xfc,0xfc, +0xff,0xfd,0xff,0xff,0xf8,0xff,0xff,0xfb,0xff,0xf3,0xf0,0xf2,0xff,0xff,0xff, +0xff,0xff,0xff,0xa9,0xa9,0xa9,0x64,0x64,0x64,0x29,0x29,0x29,0x00,0x00,0x00, +0x12,0x12,0x12,0x49,0x49,0x49,0x60,0x60,0x60,0x69,0x69,0x69,0x78,0x78,0x78, +0x7f,0x7f,0x7f,0xef,0xef,0xef,0xfa,0xfa,0xfa,0xf6,0xff,0xfb,0xc1,0xe8,0xcf, +0x85,0xc3,0x9f,0x63,0xb8,0x8c,0x5c,0xc5,0x92,0x4d,0xc5,0x8e,0x48,0xc5,0x8d, +0x53,0xc6,0x94,0x5e,0xbc,0x93,0x95,0xd5,0xb8,0xd7,0xfb,0xeb,0xf6,0xff,0xfe, +0xfc,0xf9,0xfb,0xff,0xfc,0xff,0xfd,0xfb,0xff,0xf3,0xfa,0xfd,0xe2,0xff,0xf6, +0xa5,0xe5,0xc8,0x6e,0xc7,0x9c,0x53,0xba,0x87,0x53,0xc6,0x8d,0x4c,0xc9,0x8b, +0x49,0xc4,0x86,0x53,0xc2,0x8a,0x66,0xc0,0x92,0x91,0xce,0xac,0xe1,0xff,0xef, +0xf8,0xff,0xf9,0xfd,0xf9,0xf8,0xff,0xfe,0xff,0xff,0xfb,0xfe,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xfc,0xfb,0xfd,0xfb,0xff,0xff,0xf2,0xfd,0xfa,0xeb,0xff,0xf8, +0xac,0xda,0xc4,0x71,0xb6,0x95,0x60,0xbe,0x8f,0x56,0xc7,0x8d,0x47,0xc8,0x85, +0x49,0xcd,0x87,0x50,0xca,0x8a,0x5b,0xc0,0x8c,0x80,0xc5,0xa4,0xd8,0xff,0xee, +0xf1,0xfc,0xfa,0xfd,0xfe,0xff,0xfb,0xff,0xff,0xfa,0xff,0xfe,0xfc,0xfd,0xff, +0xfe,0xfd,0xff,0xff,0xfe,0xff,0xfb,0xff,0xfe,0xf2,0xff,0xf7,0xe6,0xff,0xee, +0xbc,0xf0,0xcb,0x84,0xca,0x9b,0x60,0xb9,0x81,0x5f,0xc4,0x86,0x5b,0xc8,0x8a, +0x54,0xc6,0x8a,0x50,0xc6,0x8b,0x4e,0xc2,0x8d,0x50,0xbc,0x91,0x6c,0xc6,0xa3, +0xa3,0xdd,0xc4,0xd5,0xf5,0xe2,0xf8,0xff,0xf7,0xff,0xff,0xf9,0xf4,0xf8,0xf3, +0xf7,0xfe,0xf9,0xf4,0xff,0xfc,0xf1,0xff,0xf7,0xeb,0xff,0xf1,0xda,0xfa,0xe2, +0xb4,0xe5,0xc5,0x88,0xcb,0xa4,0x66,0xc0,0x92,0x5d,0xc0,0x8e,0x64,0xc2,0x93, +0x5a,0xbe,0x8e,0x4d,0xc1,0x8c,0x4e,0xc5,0x8e,0x51,0xc0,0x8a,0x68,0xc1,0x90, +0xa3,0xd7,0xb2,0xda,0xf5,0xdb,0xfb,0xff,0xf7,0xf8,0xfc,0xf6,0xf4,0xff,0xff, +0xee,0xff,0xff,0xe7,0xfb,0xfc,0xed,0xff,0xfe,0xfa,0xff,0xff,0xfc,0xfe,0xfe, +0xf9,0xfa,0xfe,0xf9,0xfc,0xff,0xf8,0xff,0xff,0xf6,0xff,0xff,0xf5,0xff,0xfd, +0xf3,0xff,0xf8,0xf2,0xff,0xf4,0xee,0xff,0xf0,0xee,0xff,0xf1,0xde,0xff,0xe6, +0xd7,0xff,0xe8,0xb7,0xf8,0xd1,0x77,0xcc,0x9f,0x5e,0xc3,0x90,0x58,0xcc,0x97, +0x43,0xc1,0x86,0x47,0xc7,0x86,0x44,0xc0,0x7e,0x59,0xc7,0x8d,0x68,0xc4,0x93, +0x71,0xb7,0x92,0xa4,0xd7,0xbc,0xe2,0xff,0xf1,0xf3,0xff,0xfb,0xf7,0xfe,0xfb, +0xfd,0xff,0xfe,0xfc,0xff,0xfb,0xfb,0xff,0xfb,0xf4,0xff,0xf5,0xf2,0xff,0xf6, +0xe4,0xfc,0xea,0xa0,0xcc,0xa5,0x63,0xac,0x64,0x57,0xa7,0x54,0x3c,0x7c,0x3a, +0x9d,0xcc,0x9b,0xe9,0xff,0xe5,0xf8,0xff,0xf4,0xfb,0xff,0xfa,0xff,0xff,0xff, +0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf8,0xfd,0xf8,0xf8,0xf8,0xfa,0xff,0xfb, +0xf3,0xff,0xf5,0xe4,0xff,0xe8,0xd1,0xf9,0xd6,0x6f,0x9c,0x75,0x73,0x9e,0x79, +0xc7,0xec,0xcc,0xed,0xff,0xf1,0xf1,0xff,0xf4,0xf3,0xfb,0xf4,0xff,0xff,0xff, +0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfe,0xff,0xf1,0xf1,0xf1, +0xf1,0xf1,0xf1,0xff,0xff,0xff,0xa6,0xa6,0xa6,0x1f,0x1f,0x1f,0x09,0x09,0x09, +0xd1,0xd1,0xd1,0xfd,0xfd,0xfd,0xf2,0xf2,0xf2,0xf9,0xf9,0xf9,0xff,0xff,0xff, +0xff,0xff,0xff,0xfa,0xfa,0xfa,0xec,0xec,0xec,0xf1,0xfe,0xf6,0xd4,0xfa,0xe4, +0x93,0xd0,0xae,0x68,0xba,0x90,0x5c,0xc2,0x92,0x50,0xc7,0x90,0x4b,0xc6,0x8e, +0x52,0xc4,0x8f,0x60,0xbc,0x91,0x7f,0xbd,0x9f,0xd7,0xfc,0xe8,0xf4,0xff,0xf7, +0xff,0xfd,0xfc,0xff,0xfd,0xfe,0xff,0xfb,0xfd,0xfb,0xff,0xff,0xdc,0xf6,0xe9, +0xa0,0xdf,0xbf,0x6e,0xc6,0x98,0x57,0xbc,0x88,0x56,0xc6,0x8c,0x4f,0xc8,0x8b, +0x4d,0xc3,0x88,0x58,0xc2,0x8d,0x69,0xbe,0x92,0x9b,0xd5,0xb8,0xe2,0xff,0xf3, +0xf6,0xff,0xfc,0xfa,0xfa,0xfa,0xff,0xfe,0xff,0xff,0xfc,0xfe,0xfd,0xff,0xff, +0xfa,0xff,0xfe,0xfd,0xff,0xff,0xfb,0xff,0xff,0xf6,0xff,0xfe,0xeb,0xff,0xf8, +0xbf,0xed,0xd7,0x78,0xbb,0x9b,0x63,0xbf,0x90,0x57,0xc7,0x8d,0x4b,0xc9,0x87, +0x42,0xc5,0x82,0x4e,0xc8,0x88,0x5d,0xc2,0x8e,0x76,0xbe,0x9a,0xc7,0xf1,0xdf, +0xf1,0xff,0xfc,0xfb,0xfd,0xfe,0xfb,0xff,0xff,0xfc,0xfe,0xfe,0xfe,0xfd,0xff, +0xfe,0xfd,0xff,0xff,0xfe,0xff,0xfa,0xff,0xfe,0xef,0xff,0xf7,0xe2,0xff,0xee, +0xa0,0xd6,0xb1,0x7a,0xc4,0x94,0x63,0xbe,0x86,0x5e,0xc5,0x88,0x57,0xc6,0x88, +0x55,0xc7,0x8b,0x53,0xc9,0x8e,0x51,0xc3,0x8e,0x52,0xb8,0x8f,0x8a,0xdd,0xbd, +0xc7,0xfb,0xe4,0xec,0xff,0xf7,0xfb,0xff,0xfb,0xff,0xff,0xfb,0xf6,0xf9,0xf7, +0xf4,0xfb,0xf8,0xf6,0xff,0xfe,0xf2,0xff,0xf9,0xf2,0xff,0xf7,0xed,0xff,0xf5, +0xdd,0xff,0xea,0xad,0xe7,0xc4,0x79,0xc8,0x9d,0x5a,0xb6,0x87,0x61,0xc0,0x93, +0x54,0xbf,0x8e,0x49,0xc3,0x8d,0x4a,0xc9,0x91,0x4c,0xc3,0x8c,0x5a,0xbb,0x89, +0x84,0xc3,0x9c,0xaf,0xd2,0xb7,0xf6,0xff,0xf5,0xf8,0xff,0xf8,0xf4,0xff,0xfd, +0xf3,0xff,0xff,0xf3,0xff,0xff,0xf6,0xff,0xff,0xff,0xff,0xfe,0xff,0xfe,0xfd, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xfc,0xfc,0xfc,0xf6,0xfc,0xf7,0xf6,0xfe,0xf7, +0xf7,0xff,0xf8,0xf4,0xff,0xf7,0xf1,0xff,0xf4,0xed,0xff,0xf1,0xd9,0xff,0xe1, +0xbe,0xf1,0xcf,0x97,0xdb,0xb2,0x67,0xbc,0x8f,0x5a,0xbf,0x8c,0x58,0xca,0x95, +0x45,0xc0,0x86,0x43,0xc5,0x86,0x41,0xc0,0x82,0x59,0xc9,0x93,0x66,0xc5,0x98, +0x6e,0xb8,0x94,0x9d,0xd1,0xb9,0xdb,0xfc,0xed,0xf1,0xff,0xfb,0xf5,0xfe,0xfb, +0xfd,0xff,0xfe,0xfc,0xff,0xfb,0xfd,0xff,0xfb,0xf6,0xff,0xf5,0xf3,0xff,0xf6, +0xe8,0xfe,0xec,0xa7,0xd0,0xaa,0x64,0xad,0x65,0x57,0xa7,0x54,0x40,0x80,0x3e, +0x92,0xc1,0x90,0xeb,0xff,0xe7,0xf8,0xff,0xf4,0xfb,0xff,0xfa,0xff,0xff,0xff, +0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xfe,0xfe,0xfe,0xfa,0xff,0xfb, +0xef,0xff,0xf1,0xe9,0xff,0xed,0xe5,0xff,0xea,0x96,0xc1,0x9c,0x6f,0x9a,0x75, +0xa9,0xce,0xae,0xec,0xff,0xf0,0xf1,0xff,0xf3,0xf3,0xfe,0xf4,0xfd,0xff,0xfe, +0xfb,0xf8,0xfa,0xff,0xfd,0xff,0xff,0xfc,0xff,0xfc,0xf9,0xfb,0xf8,0xf8,0xf8, +0xff,0xff,0xff,0xfa,0xfa,0xfa,0x47,0x47,0x47,0x0c,0x0c,0x0c,0x59,0x59,0x59, +0xf9,0xf9,0xf9,0xf8,0xf8,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xf8,0xf8, +0xf0,0xf0,0xf0,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xf2,0xfe,0xf8,0xe3,0xff,0xf2, +0xa2,0xdd,0xbe,0x6e,0xbd,0x96,0x5b,0xbf,0x8f,0x53,0xc8,0x91,0x4d,0xc5,0x8e, +0x52,0xc1,0x8d,0x62,0xbf,0x92,0x73,0xb4,0x94,0xc6,0xed,0xd7,0xf2,0xff,0xf6, +0xff,0xff,0xfb,0xff,0xfc,0xf8,0xff,0xfc,0xf8,0xfd,0xff,0xfc,0xe1,0xfb,0xeb, +0x97,0xd8,0xb1,0x6b,0xc4,0x92,0x59,0xbe,0x86,0x58,0xc6,0x8b,0x52,0xc7,0x8a, +0x53,0xc3,0x89,0x5f,0xc2,0x90,0x6c,0xbb,0x92,0xaa,0xe1,0xc8,0xe2,0xff,0xf5, +0xf5,0xff,0xfd,0xfa,0xfc,0xfd,0xff,0xfe,0xff,0xfa,0xfc,0xfc,0xfa,0xff,0xfe, +0xf6,0xff,0xfc,0xfd,0xff,0xff,0xf6,0xfb,0xfa,0xf6,0xff,0xfe,0xea,0xff,0xf8, +0xd4,0xfd,0xe8,0x86,0xc5,0xa5,0x66,0xbd,0x91,0x5a,0xc5,0x8d,0x51,0xcc,0x8c, +0x41,0xc2,0x7f,0x4f,0xc9,0x89,0x5f,0xc4,0x90,0x6e,0xb8,0x94,0xb4,0xe2,0xcc, +0xed,0xff,0xfa,0xf8,0xfe,0xfd,0xfd,0xff,0xff,0xfe,0xfe,0xfe,0xff,0xfd,0xff, +0xff,0xfc,0xff,0xfd,0xff,0xff,0xf8,0xff,0xfe,0xed,0xff,0xf7,0xdf,0xff,0xf0, +0x86,0xc0,0x9d,0x6f,0xbd,0x8e,0x64,0xc2,0x8b,0x5d,0xc8,0x8a,0x53,0xc5,0x86, +0x53,0xc8,0x8b,0x55,0xcb,0x90,0x54,0xc1,0x90,0x5c,0xbb,0x96,0xa8,0xf2,0xd6, +0xd8,0xff,0xf2,0xef,0xff,0xf6,0xfe,0xff,0xfb,0xfd,0xf9,0xf8,0xfc,0xfc,0xfc, +0xf8,0xfd,0xfe,0xf6,0xff,0xff,0xf3,0xfe,0xfb,0xf1,0xfe,0xf6,0xf2,0xff,0xf6, +0xec,0xff,0xf4,0xd1,0xff,0xe2,0x9c,0xdc,0xb8,0x69,0xbb,0x91,0x60,0xbf,0x92, +0x50,0xbf,0x8d,0x45,0xc4,0x8d,0x48,0xcb,0x92,0x4a,0xc7,0x8f,0x52,0xbb,0x88, +0x6e,0xb7,0x8f,0x8e,0xbc,0x9f,0xe3,0xf8,0xe9,0xf7,0xff,0xfa,0xf3,0xfe,0xfc, +0xf6,0xff,0xff,0xf6,0xff,0xff,0xf6,0xfb,0xfa,0xff,0xfc,0xf9,0xff,0xfc,0xf9, +0xff,0xfc,0xf9,0xff,0xfe,0xfa,0xfd,0xff,0xfb,0xfa,0xff,0xf9,0xf4,0xff,0xf8, +0xf0,0xff,0xf6,0xe7,0xff,0xee,0xde,0xff,0xe7,0xd1,0xf9,0xdd,0xb2,0xe4,0xc2, +0x93,0xd1,0xa9,0x74,0xbf,0x93,0x57,0xb2,0x81,0x52,0xbc,0x87,0x53,0xc8,0x91, +0x45,0xc3,0x88,0x49,0xc9,0x8e,0x4c,0xc7,0x8f,0x58,0xc7,0x95,0x5f,0xbd,0x94, +0x71,0xba,0x9a,0xa5,0xdb,0xc4,0xdc,0xff,0xf1,0xef,0xff,0xfc,0xf6,0xfe,0xfd, +0xfd,0xff,0xff,0xfd,0xfe,0xfc,0xfd,0xff,0xfb,0xf6,0xff,0xf5,0xf5,0xff,0xf6, +0xec,0xff,0xee,0xb0,0xd7,0xb1,0x65,0xae,0x66,0x57,0xa7,0x54,0x45,0x85,0x43, +0x83,0xb2,0x81,0xeb,0xff,0xe7,0xf8,0xff,0xf4,0xfb,0xff,0xfa,0xff,0xff,0xff, +0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xff,0xff,0xff,0xf6,0xfe,0xf7, +0xeb,0xfc,0xee,0xef,0xff,0xf2,0xe3,0xff,0xe7,0xc3,0xeb,0xc8,0x72,0x9a,0x77, +0x8b,0xb0,0x90,0xde,0xfd,0xe2,0xee,0xff,0xf1,0xf2,0xff,0xf5,0xfb,0xff,0xfc, +0xf5,0xf5,0xf5,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xff,0xff, +0xf8,0xf8,0xf8,0xe6,0xe6,0xe6,0x9a,0x9a,0x9a,0x03,0x03,0x03,0x0b,0x0b,0x0b, +0xe7,0xe7,0xe7,0xfd,0xfd,0xfd,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xfb,0xfb,0xfb, +0xfb,0xfb,0xfb,0xf6,0xf6,0xf6,0xff,0xff,0xff,0xf5,0xff,0xf9,0xe8,0xff,0xf7, +0xb3,0xe8,0xcd,0x7a,0xc4,0xa0,0x5c,0xbb,0x8e,0x53,0xc5,0x8f,0x4f,0xc7,0x8d, +0x52,0xc2,0x8c,0x61,0xc1,0x92,0x6e,0xb4,0x8f,0xa2,0xcf,0xb4,0xeb,0xff,0xef, +0xfb,0xff,0xf8,0xf8,0xfc,0xf1,0xfc,0xff,0xf5,0xf2,0xfa,0xef,0xeb,0xff,0xf1, +0x8b,0xd0,0xa5,0x67,0xc4,0x8d,0x5b,0xc1,0x87,0x5a,0xc6,0x8b,0x54,0xc5,0x89, +0x59,0xc4,0x8c,0x64,0xc2,0x93,0x6e,0xb8,0x94,0xbb,0xec,0xd8,0xe5,0xff,0xf8, +0xf2,0xff,0xfd,0xfb,0xff,0xff,0xfb,0xff,0xff,0xf6,0xfd,0xfa,0xf6,0xff,0xfc, +0xf2,0xfe,0xf8,0xfb,0xff,0xfe,0xf6,0xf8,0xf8,0xf8,0xff,0xfe,0xea,0xff,0xf6, +0xe0,0xff,0xf4,0x99,0xd3,0xb6,0x6a,0xbc,0x92,0x5d,0xc2,0x8e,0x56,0xce,0x8e, +0x45,0xc3,0x81,0x52,0xca,0x8a,0x5e,0xc6,0x91,0x6b,0xb8,0x92,0x9f,0xd1,0xb9, +0xe6,0xff,0xf3,0xf7,0xff,0xfd,0xff,0xff,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff, +0xff,0xfd,0xff,0xfd,0xff,0xff,0xf6,0xff,0xfe,0xea,0xff,0xf7,0xdb,0xff,0xf0, +0x77,0xb7,0x94,0x69,0xba,0x8d,0x62,0xc5,0x8d,0x5c,0xc8,0x8d,0x50,0xc2,0x86, +0x50,0xc7,0x8a,0x55,0xcb,0x90,0x56,0xc1,0x90,0x68,0xbe,0x9c,0xbf,0xfd,0xe5, +0xe0,0xff,0xf4,0xed,0xfb,0xf0,0xff,0xfb,0xfa,0xff,0xf7,0xf8,0xff,0xfe,0xff, +0xfb,0xfe,0xff,0xf6,0xfd,0xff,0xf8,0xff,0xff,0xf9,0xfe,0xfc,0xf2,0xfb,0xf1, +0xf3,0xff,0xf7,0xea,0xff,0xf2,0xc2,0xf3,0xd7,0x85,0xcb,0xa7,0x61,0xc0,0x94, +0x4c,0xbf,0x8d,0x43,0xc3,0x8c,0x43,0xcb,0x91,0x47,0xcb,0x8f,0x4d,0xc2,0x8b, +0x65,0xba,0x8e,0x7d,0xb9,0x97,0xc3,0xe3,0xd0,0xf1,0xff,0xf7,0xf2,0xfd,0xfa, +0xf7,0xff,0xfe,0xfa,0xff,0xff,0xf6,0xf7,0xf5,0xff,0xff,0xfb,0xff,0xff,0xf9, +0xfb,0xfc,0xf2,0xf6,0xff,0xf3,0xf2,0xff,0xf5,0xed,0xff,0xf3,0xde,0xff,0xea, +0xc9,0xf1,0xd8,0xb0,0xe0,0xc4,0x9d,0xd4,0xb3,0x81,0xbe,0x9a,0x79,0xbc,0x95, +0x72,0xbf,0x93,0x67,0xc0,0x8f,0x5b,0xc0,0x8d,0x57,0xc7,0x91,0x4f,0xca,0x92, +0x43,0xc2,0x8a,0x4c,0xc8,0x94,0x53,0xc8,0x97,0x55,0xbe,0x93,0x59,0xb1,0x8d, +0x7c,0xc1,0xa6,0xbc,0xee,0xdc,0xe6,0xff,0xfb,0xec,0xfd,0xf9,0xf9,0xff,0xfe, +0xfd,0xff,0xff,0xfc,0xfd,0xfb,0xfd,0xff,0xfc,0xf7,0xff,0xf5,0xf7,0xff,0xf6, +0xf0,0xff,0xf1,0xb9,0xde,0xb8,0x6a,0xb0,0x69,0x57,0xa7,0x54,0x4a,0x8a,0x48, +0x71,0xa0,0x6f,0xeb,0xff,0xe7,0xf8,0xff,0xf4,0xfb,0xff,0xfa,0xff,0xfe,0xfe, +0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xf9,0xfb,0xfd,0xff,0xfe,0xf6,0xfc,0xf7, +0xf1,0xff,0xf3,0xf3,0xff,0xf5,0xe0,0xfd,0xe4,0xe0,0xff,0xe4,0x7e,0xa3,0x83, +0x77,0x9c,0x7c,0xc1,0xe3,0xc5,0xe8,0xff,0xec,0xf3,0xff,0xf5,0xf9,0xff,0xfa, +0xf6,0xf9,0xf7,0xff,0xfb,0xff,0xff,0xfd,0xff,0xfc,0xf9,0xfb,0xeb,0xeb,0xeb, +0xff,0xff,0xff,0xff,0xff,0xff,0xf2,0xf2,0xf2,0xce,0xce,0xce,0xdb,0xdb,0xdb, +0xe8,0xe8,0xe8,0xcb,0xcb,0xcb,0xa9,0xa9,0xa9,0xaa,0xaa,0xaa,0xc3,0xc3,0xc3, +0xdf,0xdf,0xdf,0xf0,0xf0,0xf0,0xfb,0xfb,0xfb,0xf8,0xff,0xfc,0xec,0xff,0xf9, +0xc8,0xf6,0xdf,0x8e,0xd1,0xb1,0x61,0xba,0x8f,0x56,0xc2,0x8e,0x52,0xc7,0x8e, +0x53,0xc4,0x8b,0x5f,0xc4,0x91,0x6d,0xbb,0x92,0x86,0xbf,0x9e,0xd5,0xf9,0xe1, +0xf1,0xff,0xf4,0xf3,0xff,0xf4,0xf6,0xff,0xf4,0xe7,0xfb,0xe8,0xe4,0xff,0xee, +0x7a,0xc9,0x98,0x5f,0xc3,0x87,0x5a,0xc5,0x87,0x5a,0xc7,0x89,0x55,0xc3,0x89, +0x5c,0xc4,0x8f,0x69,0xc2,0x97,0x6f,0xb5,0x96,0xc7,0xf7,0xe5,0xe5,0xff,0xfb, +0xf0,0xfc,0xfc,0xfa,0xff,0xff,0xfb,0xff,0xff,0xf6,0xfd,0xfa,0xf8,0xff,0xfb, +0xf3,0xfe,0xf6,0xfc,0xff,0xfd,0xf8,0xfa,0xfa,0xfa,0xff,0xfe,0xeb,0xfd,0xf6, +0xe6,0xff,0xf8,0xb1,0xe6,0xcb,0x6f,0xbc,0x96,0x60,0xc1,0x8f,0x59,0xcb,0x8f, +0x4d,0xc7,0x87,0x52,0xc9,0x8c,0x5c,0xc4,0x8d,0x6d,0xbc,0x93,0x89,0xc3,0xa6, +0xd5,0xf9,0xe9,0xf3,0xff,0xfb,0xff,0xff,0xfc,0xff,0xfe,0xfd,0xff,0xfd,0xfe, +0xff,0xfd,0xff,0xfd,0xff,0xff,0xf4,0xff,0xff,0xe8,0xff,0xf9,0xd8,0xff,0xf1, +0x78,0xb9,0x99,0x65,0xba,0x8e,0x5f,0xc4,0x8d,0x5a,0xc8,0x8d,0x4f,0xc4,0x87, +0x4e,0xc4,0x89,0x53,0xc8,0x8f,0x58,0xc1,0x90,0x6c,0xbb,0x9a,0xcd,0xff,0xee, +0xe6,0xff,0xf4,0xf3,0xfb,0xf4,0xff,0xff,0xfe,0xff,0xf9,0xfc,0xff,0xfd,0xff, +0xf8,0xfb,0xff,0xf2,0xf8,0xff,0xf8,0xfe,0xff,0xff,0xfe,0xff,0xf8,0xf9,0xf5, +0xfa,0xff,0xf8,0xf3,0xff,0xf5,0xd8,0xfc,0xe6,0xa0,0xdb,0xbc,0x66,0xbf,0x97, +0x4f,0xc0,0x8e,0x44,0xc3,0x8c,0x43,0xc9,0x8d,0x45,0xcb,0x8f,0x4b,0xc6,0x8e, +0x60,0xbf,0x92,0x76,0xbc,0x98,0x9f,0xcb,0xb4,0xe7,0xff,0xf4,0xef,0xfd,0xf7, +0xf5,0xfe,0xfb,0xfb,0xff,0xfe,0xf7,0xfb,0xf6,0xff,0xff,0xf9,0xfd,0xff,0xf5, +0xf3,0xff,0xf4,0xde,0xfe,0xe6,0xc4,0xeb,0xd2,0xab,0xdb,0xbf,0x94,0xcf,0xb0, +0x85,0xc7,0xa4,0x78,0xc1,0x9b,0x6f,0xbc,0x96,0x65,0xb4,0x8b,0x66,0xbb,0x8f, +0x63,0xbf,0x90,0x5c,0xc1,0x8e,0x56,0xc5,0x8f,0x52,0xc9,0x92,0x4a,0xca,0x8f, +0x49,0xc5,0x8f,0x4f,0xbf,0x90,0x5b,0xc1,0x98,0x5f,0xb9,0x96,0x6c,0xb7,0x9b, +0x9a,0xd5,0xc0,0xd4,0xff,0xf2,0xea,0xff,0xfe,0xed,0xfa,0xf8,0xfb,0xff,0xff, +0xfe,0xfe,0xfe,0xfc,0xfc,0xfc,0xfd,0xff,0xfc,0xf7,0xff,0xf5,0xf7,0xff,0xf6, +0xf3,0xff,0xf4,0xbf,0xe3,0xbf,0x6d,0xb3,0x6c,0x57,0xa7,0x54,0x4e,0x8e,0x4c, +0x60,0x8f,0x5e,0xea,0xff,0xe6,0xf8,0xff,0xf4,0xfc,0xff,0xfb,0xff,0xfe,0xfe, +0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xfb,0xfb,0xfa,0xfd,0xfb,0xf6,0xfc,0xf7, +0xfa,0xff,0xfb,0xf1,0xff,0xf3,0xef,0xff,0xf1,0xed,0xff,0xf1,0xa1,0xc3,0xa5, +0x6e,0x93,0x73,0xa1,0xc6,0xa6,0xdf,0xfe,0xe3,0xee,0xff,0xf1,0xf4,0xff,0xf6, +0xfb,0xff,0xfc,0xfe,0xfb,0xfd,0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xe8,0xe8,0xe8,0xef,0xef,0xef,0xff,0xff,0xff,0xd0,0xd0,0xd0, +0x4c,0x4c,0x4c,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00, +0x1f,0x1f,0x1f,0x9a,0x9a,0x9a,0xe0,0xe0,0xe0,0xfa,0xff,0xfe,0xef,0xff,0xf9, +0xdf,0xff,0xf2,0xa6,0xe0,0xc4,0x6d,0xbc,0x95,0x5a,0xbe,0x8e,0x57,0xc8,0x8f, +0x52,0xc5,0x8c,0x5a,0xc4,0x8f,0x67,0xc1,0x93,0x7a,0xc1,0x99,0xb2,0xe9,0xc8, +0xe0,0xff,0xef,0xe4,0xff,0xf1,0xe5,0xff,0xf0,0xd8,0xff,0xe4,0xbf,0xf8,0xd2, +0x6a,0xc5,0x8e,0x57,0xc5,0x85,0x57,0xc7,0x87,0x56,0xc8,0x89,0x54,0xc2,0x88, +0x5f,0xc4,0x91,0x6c,0xc2,0x9a,0x71,0xb4,0x99,0xd3,0xff,0xf0,0xe5,0xff,0xfc, +0xef,0xfb,0xfd,0xfb,0xfe,0xff,0xfc,0xfe,0xfe,0xf8,0xfc,0xf7,0xfb,0xff,0xf9, +0xf5,0xfd,0xf3,0xfa,0xfd,0xfb,0xfd,0xff,0xff,0xf8,0xff,0xfc,0xef,0xfd,0xf7, +0xea,0xff,0xf9,0xca,0xfa,0xe2,0x79,0xbf,0x9b,0x68,0xc2,0x94,0x58,0xc6,0x8c, +0x54,0xcb,0x8e,0x54,0xc9,0x8c,0x57,0xbf,0x88,0x6c,0xc1,0x95,0x77,0xb8,0x98, +0xc4,0xef,0xda,0xec,0xff,0xf8,0xfd,0xff,0xfb,0xff,0xfe,0xfb,0xff,0xfd,0xfe, +0xff,0xfd,0xff,0xfd,0xfe,0xff,0xf4,0xff,0xff,0xe6,0xff,0xfa,0xd6,0xff,0xf3, +0x80,0xc3,0xa3,0x64,0xbb,0x8f,0x5b,0xc0,0x8c,0x58,0xc8,0x8e,0x50,0xc4,0x89, +0x4c,0xc2,0x87,0x50,0xc5,0x8c,0x5a,0xc0,0x90,0x6f,0xb8,0x98,0xd7,0xff,0xf2, +0xeb,0xff,0xf5,0xf9,0xfd,0xf8,0xff,0xfe,0xff,0xff,0xf5,0xfb,0xff,0xfc,0xff, +0xf7,0xfa,0xff,0xf4,0xf9,0xff,0xfa,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfa,0xfb, +0xff,0xff,0xf9,0xfa,0xff,0xf7,0xe7,0xfc,0xed,0xc5,0xf4,0xda,0x6d,0xbe,0x97, +0x56,0xc1,0x90,0x4b,0xc3,0x8c,0x46,0xc7,0x8c,0x43,0xc9,0x8d,0x49,0xc7,0x8c, +0x57,0xc2,0x91,0x6a,0xbd,0x96,0x80,0xb7,0x9c,0xdd,0xff,0xf1,0xea,0xfd,0xf4, +0xef,0xfb,0xf5,0xf8,0xff,0xfc,0xf7,0xff,0xf8,0xfa,0xff,0xf8,0xdc,0xf2,0xe0, +0xc3,0xf1,0xd4,0xa4,0xe1,0xbf,0x83,0xc9,0xa5,0x69,0xb8,0x91,0x59,0xb2,0x8a, +0x56,0xb7,0x8b,0x58,0xbe,0x8f,0x5a,0xc2,0x93,0x5f,0xc7,0x98,0x62,0xcb,0x9a, +0x59,0xc5,0x91,0x4e,0xbc,0x88,0x4c,0xc1,0x8a,0x4c,0xc4,0x8d,0x45,0xc4,0x8c, +0x4e,0xc4,0x91,0x59,0xb9,0x91,0x6e,0xbc,0x9d,0x7f,0xc4,0xa9,0x9e,0xd7,0xc2, +0xc9,0xf4,0xe5,0xe6,0xff,0xfa,0xf0,0xff,0xfe,0xf8,0xfd,0xfe,0xfd,0xff,0xff, +0xfe,0xfe,0xfe,0xfb,0xfb,0xfb,0xfd,0xff,0xfc,0xf6,0xfe,0xf7,0xf5,0xff,0xf7, +0xf3,0xff,0xf7,0xc2,0xe8,0xc4,0x6e,0xb7,0x6f,0x58,0xa8,0x55,0x51,0x91,0x4f, +0x52,0x81,0x50,0xe9,0xff,0xe5,0xf8,0xff,0xf4,0xfd,0xff,0xfc,0xff,0xff,0xff, +0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xfe,0xf1,0xf7,0xf2,0xf8,0xfb,0xf9, +0xfb,0xff,0xfc,0xe4,0xec,0xe5,0xf6,0xff,0xf8,0xf1,0xff,0xf4,0xc7,0xe6,0xcb, +0x6d,0x92,0x72,0x8b,0xb3,0x90,0xd3,0xf8,0xd8,0xea,0xff,0xee,0xf1,0xff,0xf3, +0xfa,0xff,0xfb,0xfd,0xfa,0xfc,0xfe,0xf8,0xfd,0xfe,0xfb,0xfd,0xff,0xff,0xff, +0xfb,0xfb,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xf5,0xf5,0xf5,0x8a,0x8a,0x8a, +0x00,0x00,0x00,0x13,0x13,0x13,0x00,0x00,0x00,0x10,0x10,0x10,0x18,0x18,0x18, +0x00,0x00,0x00,0x09,0x09,0x09,0x55,0x55,0x55,0xe5,0xe8,0xe6,0xf5,0xfe,0xfb, +0xed,0xff,0xf9,0xbc,0xea,0xd3,0x77,0xbd,0x99,0x60,0xbc,0x8d,0x5a,0xc7,0x8f, +0x52,0xc6,0x8b,0x54,0xc5,0x8c,0x5a,0xbf,0x8b,0x6e,0xc6,0x98,0x8c,0xd5,0xad, +0xc5,0xff,0xe1,0xd2,0xff,0xec,0xc7,0xff,0xdf,0xc4,0xfe,0xdb,0x8c,0xd4,0xa9, +0x5d,0xc2,0x8a,0x51,0xc4,0x85,0x55,0xc8,0x89,0x55,0xc8,0x89,0x52,0xc2,0x88, +0x5f,0xc4,0x91,0x6d,0xc2,0x9c,0x70,0xb3,0x98,0xd6,0xff,0xf7,0xe5,0xff,0xfc, +0xee,0xfb,0xfd,0xfb,0xfe,0xff,0xfe,0xfe,0xfe,0xfc,0xfc,0xf6,0xff,0xff,0xf8, +0xfa,0xfb,0xf1,0xfa,0xfb,0xf7,0xfd,0xff,0xff,0xf9,0xfe,0xfc,0xf3,0xff,0xf9, +0xed,0xff,0xf9,0xdc,0xff,0xf0,0x81,0xbf,0xa1,0x6e,0xc3,0x97,0x59,0xc1,0x8c, +0x5b,0xcd,0x91,0x54,0xc6,0x8a,0x52,0xbd,0x85,0x6a,0xc4,0x96,0x6c,0xb2,0x8d, +0xb5,0xea,0xcf,0xe6,0xff,0xf5,0xfb,0xff,0xf9,0xff,0xfe,0xfb,0xff,0xfd,0xfe, +0xff,0xfd,0xff,0xfd,0xfe,0xff,0xf4,0xff,0xff,0xe6,0xff,0xfa,0xd8,0xff,0xf4, +0x89,0xcc,0xad,0x68,0xbc,0x92,0x59,0xbc,0x8a,0x58,0xc7,0x8f,0x51,0xc4,0x8b, +0x4b,0xc1,0x86,0x4f,0xc4,0x8b,0x5a,0xc0,0x90,0x70,0xb9,0x99,0xdb,0xff,0xf3, +0xe9,0xff,0xf3,0xf7,0xfb,0xf6,0xff,0xfe,0xff,0xf8,0xee,0xf4,0xfc,0xf9,0xff, +0xf9,0xfb,0xff,0xf8,0xfd,0xff,0xf9,0xfc,0xff,0xff,0xf9,0xff,0xff,0xfd,0xff, +0xff,0xfc,0xfc,0xf9,0xf9,0xf3,0xf4,0xff,0xf4,0xe4,0xff,0xf4,0x74,0xbd,0x97, +0x5e,0xc1,0x91,0x53,0xc3,0x8d,0x4b,0xc6,0x8c,0x46,0xc8,0x8b,0x45,0xc5,0x8a, +0x51,0xc0,0x8e,0x60,0xbc,0x93,0x6f,0xaf,0x92,0xd7,0xff,0xef,0xe4,0xfc,0xf0, +0xe8,0xf9,0xf0,0xf4,0xff,0xfb,0xed,0xff,0xf5,0xe4,0xfe,0xee,0xb5,0xdf,0xc6, +0x73,0xb8,0x93,0x62,0xb9,0x8d,0x5c,0xb9,0x8c,0x58,0xbe,0x8f,0x57,0xc6,0x94, +0x56,0xc9,0x97,0x51,0xc7,0x94,0x4d,0xc3,0x90,0x4c,0xbd,0x8b,0x57,0xc6,0x94, +0x57,0xc2,0x91,0x55,0xc1,0x8d,0x5e,0xca,0x96,0x5a,0xc9,0x95,0x4e,0xc0,0x8b, +0x55,0xbb,0x8c,0x6e,0xb7,0x97,0x84,0xbc,0xa5,0xa4,0xd2,0xbf,0xd0,0xf7,0xe8, +0xea,0xff,0xfc,0xf2,0xff,0xfd,0xf0,0xf5,0xf6,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xfe,0xfb,0xfb,0xfb,0xfd,0xff,0xfc,0xf7,0xff,0xf8,0xf3,0xff,0xf7, +0xf3,0xff,0xf7,0xc3,0xec,0xc7,0x70,0xb9,0x71,0x59,0xa9,0x56,0x53,0x93,0x51, +0x4b,0x7a,0x49,0xe8,0xff,0xe4,0xf8,0xff,0xf4,0xfd,0xff,0xfc,0xff,0xff,0xff, +0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfb,0xfa,0xff,0xfb,0xfc,0xff,0xfd, +0xfb,0xfe,0xfc,0xf9,0xff,0xfa,0xf7,0xff,0xf8,0xf1,0xff,0xf4,0xea,0xff,0xee, +0x85,0xaa,0x8a,0x74,0x9f,0x7a,0xbb,0xe3,0xc0,0xe8,0xff,0xec,0xe9,0xff,0xec, +0xf7,0xff,0xf8,0xfd,0xfd,0xfd,0xff,0xfd,0xff,0xff,0xfe,0xff,0xfd,0xfd,0xfd, +0xfb,0xfb,0xfb,0xf4,0xf4,0xf4,0xff,0xff,0xff,0xf6,0xf6,0xf6,0x4d,0x4d,0x4d, +0x0c,0x0c,0x0c,0x5a,0x5a,0x5a,0xbe,0xbe,0xbe,0x3a,0x3a,0x3a,0x3c,0x3c,0x3c, +0xc1,0xc1,0xc1,0x64,0x64,0x64,0x0e,0x0e,0x0e,0x66,0x66,0x66,0xfe,0xfe,0xfe, +0xf3,0xfd,0xf7,0xe6,0xff,0xf7,0x87,0xc2,0xa3,0x6a,0xbf,0x92,0x5e,0xc6,0x8f, +0x4b,0xc1,0x86,0x53,0xcb,0x90,0x54,0xc7,0x8e,0x59,0xc2,0x8f,0x69,0xc6,0x99, +0x7a,0xd0,0xa6,0x80,0xd1,0xaa,0x77,0xc6,0x9d,0x6c,0xbb,0x92,0x62,0xbc,0x8e, +0x55,0xc2,0x8a,0x47,0xbe,0x81,0x4b,0xc2,0x85,0x58,0xcd,0x90,0x58,0xc7,0x8f, +0x57,0xbb,0x8b,0x6a,0xc2,0x9a,0x8d,0xd3,0xb5,0xd1,0xff,0xf2,0xdd,0xfe,0xf7, +0xef,0xfd,0xfc,0xfb,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfa,0xff,0xff,0xf6, +0xff,0xff,0xf8,0xfe,0xfb,0xf7,0xfd,0xfd,0xfd,0xfd,0xff,0xff,0xf8,0xff,0xfe, +0xec,0xff,0xf6,0xd8,0xfc,0xeb,0xa9,0xe0,0xc5,0x6a,0xb8,0x8f,0x61,0xc2,0x90, +0x5a,0xc8,0x8e,0x57,0xc8,0x8c,0x57,0xc2,0x89,0x68,0xc7,0x95,0x6e,0xbd,0x92, +0x89,0xc5,0xa6,0xe1,0xff,0xf2,0xf8,0xff,0xf8,0xff,0xff,0xfb,0xff,0xff,0xfe, +0xff,0xfd,0xff,0xfb,0xfc,0xff,0xf2,0xfc,0xfc,0xe7,0xff,0xfb,0xdc,0xff,0xf7, +0x96,0xd6,0xb9,0x76,0xc7,0xa0,0x5d,0xbe,0x8c,0x53,0xc0,0x88,0x51,0xc4,0x8b, +0x53,0xc8,0x8f,0x51,0xc8,0x91,0x57,0xc0,0x8f,0x72,0xbe,0x9c,0xc7,0xf7,0xdf, +0xed,0xff,0xf8,0xf4,0xfb,0xf4,0xfd,0xf8,0xf7,0xff,0xfd,0xff,0xfa,0xf9,0xff, +0xf6,0xfb,0xff,0xf6,0xfc,0xff,0xfa,0xfc,0xff,0xff,0xf9,0xff,0xff,0xfc,0xff, +0xff,0xfd,0xff,0xff,0xff,0xfc,0xf9,0xff,0xf7,0xe7,0xff,0xf2,0x93,0xd3,0xaf, +0x67,0xc0,0x8f,0x55,0xba,0x86,0x53,0xc6,0x8d,0x4f,0xcb,0x8f,0x4e,0xc9,0x8f, +0x52,0xc6,0x91,0x5a,0xbb,0x8f,0x6f,0xb5,0x96,0xbe,0xed,0xd7,0xdc,0xf9,0xea, +0xef,0xff,0xf9,0xed,0xff,0xf9,0xe2,0xff,0xf4,0x9b,0xc9,0xb3,0x79,0xb9,0x9b, +0x67,0xc0,0x94,0x5d,0xc5,0x90,0x51,0xbf,0x8b,0x4c,0xc0,0x8b,0x50,0xca,0x94, +0x4c,0xc8,0x92,0x4b,0xc5,0x8f,0x55,0xcb,0x96,0x58,0xc5,0x94,0x5e,0xc2,0x92, +0x61,0xbd,0x8e,0x61,0xb9,0x8b,0x60,0xb8,0x8a,0x65,0xbd,0x8f,0x6c,0xc3,0x97, +0x7d,0xc6,0xa0,0xb9,0xe7,0xd0,0xd8,0xf5,0xe6,0xec,0xff,0xf8,0xf3,0xff,0xfb, +0xf5,0xfe,0xfb,0xfa,0xfc,0xfc,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xf9,0xfc, +0xff,0xfd,0xfe,0xff,0xff,0xff,0xfc,0xff,0xfb,0xf8,0xff,0xfb,0xf3,0xff,0xf8, +0xeb,0xff,0xf1,0xd9,0xff,0xde,0x77,0xc0,0x78,0x55,0xa5,0x52,0x59,0x99,0x57, +0x38,0x67,0x36,0xe0,0xfd,0xdc,0xf8,0xff,0xf4,0xfd,0xff,0xfc,0xff,0xfd,0xfd, +0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfa,0xfa,0xff,0xfb,0xfe,0xfe,0xfe, +0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfb,0xfe,0xfc,0xf3,0xff,0xf5,0xec,0xff,0xef, +0xae,0xd3,0xb3,0x6e,0x99,0x74,0x95,0xc2,0x9b,0xdc,0xff,0xe1,0xec,0xff,0xf0, +0xf6,0xff,0xf8,0xfd,0xff,0xfe,0xfd,0xfa,0xfc,0xf8,0xf8,0xf8,0xfe,0xfe,0xfe, +0xfd,0xfd,0xfd,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xf9,0xf9,0xf9,0x80,0x80,0x80, +0x00,0x00,0x00,0xb1,0xb1,0xb1,0xff,0xff,0xff,0x84,0x84,0x84,0x00,0x00,0x00, +0xe4,0xe4,0xe4,0xe6,0xe6,0xe6,0x55,0x55,0x55,0x0b,0x09,0x09,0xc4,0xbb,0xbe, +0xf1,0xf2,0xf0,0xe3,0xfa,0xec,0xab,0xdc,0xc0,0x74,0xc3,0x98,0x64,0xc9,0x92, +0x49,0xbd,0x82,0x50,0xcd,0x8f,0x45,0xc1,0x85,0x46,0xbd,0x86,0x50,0xbd,0x8c, +0x5b,0xc1,0x92,0x5e,0xbf,0x93,0x5e,0xba,0x8f,0x61,0xbc,0x8f,0x63,0xc3,0x94, +0x60,0xcc,0x98,0x56,0xc8,0x92,0x54,0xc7,0x8e,0x51,0xc2,0x89,0x4b,0xb7,0x82, +0x54,0xb9,0x86,0x7c,0xd4,0xac,0xac,0xf5,0xd5,0xd4,0xff,0xf7,0xe1,0xff,0xfb, +0xed,0xff,0xfe,0xf4,0xfd,0xfa,0xff,0xfd,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf7, +0xff,0xfc,0xf4,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfe, +0xf3,0xff,0xfb,0xe9,0xff,0xf8,0xb9,0xe9,0xd1,0x75,0xbb,0x97,0x64,0xc0,0x91, +0x5c,0xc4,0x8d,0x56,0xc6,0x8c,0x53,0xc1,0x87,0x62,0xc4,0x90,0x65,0xba,0x8d, +0x7e,0xc4,0x9f,0xd2,0xff,0xe7,0xf2,0xff,0xf6,0xfd,0xff,0xf9,0xff,0xfe,0xfd, +0xff,0xff,0xff,0xfc,0xfd,0xff,0xf6,0xfe,0xfe,0xeb,0xff,0xfa,0xdf,0xff,0xf5, +0xb0,0xe9,0xd0,0x71,0xbb,0x97,0x5d,0xb9,0x8a,0x64,0xcc,0x97,0x52,0xc2,0x8c, +0x4f,0xc4,0x8b,0x56,0xcd,0x96,0x53,0xbe,0x8d,0x6d,0xbd,0x98,0xad,0xe4,0xc9, +0xe0,0xfe,0xeb,0xf2,0xfe,0xf2,0xfe,0xfd,0xf9,0xff,0xff,0xff,0xfa,0xfd,0xff, +0xf3,0xfa,0xff,0xf3,0xfa,0xff,0xf5,0xf7,0xff,0xfe,0xf7,0xfe,0xff,0xf9,0xff, +0xff,0xfc,0xfe,0xff,0xfd,0xfa,0xf7,0xfe,0xf7,0xe7,0xff,0xf0,0x9b,0xd8,0xb4, +0x72,0xc3,0x94,0x5c,0xbb,0x88,0x59,0xc4,0x8c,0x51,0xc7,0x8c,0x4e,0xc7,0x8d, +0x52,0xc6,0x91,0x59,0xbe,0x91,0x6a,0xb5,0x95,0xb5,0xe9,0xd2,0xdc,0xfb,0xec, +0xeb,0xff,0xf6,0xe8,0xff,0xf8,0xc6,0xf0,0xde,0x83,0xc2,0xa8,0x69,0xbb,0x98, +0x5b,0xc0,0x8d,0x59,0xca,0x91,0x52,0xc5,0x8c,0x4a,0xc1,0x8a,0x50,0xc8,0x91, +0x4f,0xc7,0x90,0x4e,0xc0,0x8b,0x55,0xbe,0x8d,0x5f,0xbd,0x8e,0x6a,0xbc,0x91, +0x78,0xbf,0x97,0x88,0xc7,0xa0,0x99,0xd4,0xae,0xaf,0xe8,0xc2,0xc3,0xfb,0xd8, +0xd7,0xff,0xe8,0xe6,0xfe,0xec,0xf6,0xff,0xf6,0xfa,0xff,0xfb,0xfd,0xff,0xfc, +0xfd,0xfb,0xfa,0xfd,0xf7,0xf8,0xfe,0xf5,0xf8,0xff,0xf5,0xf8,0xff,0xf9,0xfc, +0xff,0xfe,0xff,0xff,0xff,0xfe,0xfa,0xff,0xfb,0xf6,0xff,0xfb,0xf3,0xff,0xf9, +0xea,0xff,0xf3,0xd7,0xff,0xde,0x7c,0xc5,0x7d,0x57,0xa7,0x54,0x59,0x99,0x57, +0x37,0x66,0x35,0xda,0xf7,0xd6,0xf8,0xff,0xf4,0xfd,0xff,0xfc,0xff,0xff,0xff, +0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xf8,0xfa,0xff,0xfb,0xfe,0xfe,0xfe, +0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfc,0xfe,0xf8,0xff,0xf9,0xee,0xff,0xf1, +0xd5,0xfa,0xda,0x74,0xa1,0x7a,0x71,0xa1,0x77,0xcb,0xf8,0xd1,0xec,0xff,0xf0, +0xef,0xff,0xf2,0xfd,0xff,0xfe,0xfc,0xf9,0xfb,0xf8,0xf8,0xf8,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xf9,0xf9,0xc3,0xc3,0xc3, +0x0f,0x0f,0x0f,0x71,0x71,0x71,0xff,0xff,0xff,0xf1,0xf1,0xf1,0x0b,0x0b,0x0b, +0x9a,0x9a,0x9a,0xff,0xff,0xff,0xa5,0xa5,0xa5,0x0d,0x08,0x0a,0x87,0x79,0x7f, +0xff,0xfd,0xff,0xf6,0xff,0xf9,0xda,0xff,0xe9,0x7b,0xc3,0x99,0x64,0xc3,0x90, +0x4d,0xbf,0x83,0x4d,0xca,0x8c,0x4c,0xcd,0x90,0x4e,0xcb,0x93,0x53,0xc9,0x96, +0x57,0xc5,0x95,0x55,0xbe,0x91,0x59,0xbb,0x8f,0x60,0xc2,0x94,0x68,0xca,0x9c, +0x56,0xb8,0x8c,0x58,0xbd,0x90,0x5c,0xc5,0x94,0x5d,0xc6,0x93,0x5f,0xc7,0x92, +0x6d,0xd0,0x9e,0x8f,0xea,0xbd,0xb3,0xff,0xdc,0xb7,0xf8,0xde,0xd3,0xff,0xf1, +0xe6,0xff,0xfb,0xf1,0xff,0xfa,0xf7,0xfb,0xf5,0xff,0xfe,0xf7,0xff,0xff,0xf6, +0xff,0xfb,0xf3,0xff,0xff,0xfc,0xff,0xff,0xff,0xfe,0xfd,0xff,0xf7,0xf9,0xf9, +0xf8,0xff,0xfe,0xef,0xff,0xfb,0xca,0xf3,0xde,0x82,0xc1,0xa1,0x68,0xbd,0x91, +0x5d,0xc2,0x8e,0x5a,0xc8,0x8e,0x54,0xc2,0x88,0x5c,0xc2,0x8b,0x5f,0xbb,0x8a, +0x75,0xc4,0x99,0xc0,0xf9,0xd8,0xe9,0xff,0xf0,0xf7,0xff,0xf6,0xfb,0xff,0xfa, +0xfe,0xfe,0xfe,0xff,0xfe,0xff,0xfb,0xfe,0xff,0xf1,0xfe,0xfc,0xe2,0xff,0xf5, +0xd2,0xff,0xeb,0x74,0xb7,0x97,0x60,0xb5,0x89,0x6f,0xd2,0xa0,0x54,0xc0,0x8b, +0x4d,0xbf,0x89,0x59,0xd0,0x99,0x50,0xbe,0x8a,0x64,0xbd,0x95,0x90,0xd3,0xb3, +0xce,0xf8,0xdf,0xf1,0xff,0xf5,0xfb,0xff,0xf9,0xfa,0xfd,0xfb,0xf8,0xff,0xff, +0xf4,0xff,0xff,0xf1,0xfb,0xff,0xf6,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfb,0xfe, +0xff,0xfd,0xfe,0xff,0xff,0xfb,0xf6,0xff,0xf9,0xe5,0xff,0xf2,0x9e,0xdb,0xb7, +0x77,0xc7,0x98,0x64,0xbd,0x8b,0x5d,0xc2,0x8b,0x51,0xc2,0x88,0x4d,0xc5,0x8a, +0x52,0xc7,0x90,0x5a,0xc0,0x91,0x68,0xb4,0x92,0xb1,0xe5,0xcd,0xe5,0xff,0xf2, +0xe9,0xff,0xf2,0xe1,0xff,0xf2,0xa6,0xda,0xc3,0x6e,0xba,0x9b,0x60,0xbd,0x96, +0x57,0xbf,0x8a,0x5d,0xcb,0x91,0x58,0xc8,0x8e,0x52,0xc1,0x89,0x56,0xc5,0x8f, +0x5a,0xc4,0x8f,0x5e,0xbf,0x8d,0x6d,0xc0,0x93,0x82,0xc6,0x9d,0x9d,0xd3,0xae, +0xbe,0xe9,0xc8,0xdd,0xfc,0xdf,0xec,0xff,0xed,0xf2,0xff,0xef,0xef,0xff,0xed, +0xef,0xff,0xeb,0xf9,0xff,0xf5,0xfa,0xfe,0xf3,0xfc,0xfc,0xf6,0xff,0xfe,0xfa, +0xff,0xff,0xfe,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfb,0xfc, +0xff,0xfe,0xff,0xff,0xff,0xfe,0xfa,0xff,0xfb,0xf5,0xff,0xfa,0xf3,0xff,0xf9, +0xea,0xff,0xf4,0xd8,0xff,0xe1,0x83,0xcc,0x84,0x5a,0xaa,0x57,0x58,0x98,0x56, +0x37,0x66,0x35,0xd2,0xef,0xce,0xf8,0xff,0xf4,0xfd,0xff,0xfc,0xff,0xff,0xff, +0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xf9,0xfa,0xff,0xfb,0xff,0xfd,0xff, +0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xfb,0xfe,0xfc,0xf1,0xff,0xf3, +0xdf,0xff,0xe4,0x8f,0xbf,0x95,0x62,0x98,0x69,0xae,0xde,0xb4,0xea,0xff,0xee, +0xe8,0xfb,0xea,0xfb,0xff,0xfc,0xff,0xfe,0xff,0xfd,0xfd,0xfd,0xff,0xff,0xff, +0xff,0xff,0xff,0xfd,0xfd,0xfd,0xff,0xff,0xff,0xfc,0xfc,0xfc,0xf9,0xf9,0xf9, +0x72,0x72,0x72,0x12,0x12,0x12,0x5a,0x5a,0x5a,0x96,0x96,0x96,0x21,0x21,0x21, +0x36,0x36,0x36,0xf6,0xf6,0xf6,0xe0,0xe0,0xe0,0x10,0x0b,0x0d,0x20,0x0d,0x16, +0xf9,0xeb,0xf1,0xf9,0xff,0xfa,0xe0,0xff,0xee,0x82,0xc3,0x9c,0x66,0xc2,0x8f, +0x5d,0xcd,0x93,0x52,0xcd,0x8f,0x47,0xc8,0x8b,0x48,0xc7,0x8f,0x4e,0xc5,0x92, +0x50,0xc0,0x91,0x54,0xbb,0x8e,0x58,0xb9,0x8d,0x5c,0xb8,0x8d,0x5e,0xb6,0x8e, +0x6a,0xbe,0x9c,0x68,0xbc,0x9a,0x63,0xbb,0x93,0x60,0xbb,0x8e,0x5e,0xbd,0x8b, +0x5f,0xbe,0x8b,0x5f,0xbb,0x8a,0x60,0xb7,0x8b,0x80,0xcc,0xaa,0xa2,0xe1,0xc7, +0xcc,0xfa,0xe7,0xe6,0xff,0xf7,0xf3,0xff,0xf6,0xfa,0xfb,0xf1,0xff,0xfc,0xf4, +0xff,0xff,0xf9,0xff,0xfe,0xfd,0xff,0xff,0xff,0xfe,0xfb,0xfd,0xf6,0xf5,0xf7, +0xf8,0xfd,0xfc,0xf3,0xff,0xfc,0xd6,0xfa,0xe9,0x94,0xce,0xb1,0x6c,0xbb,0x92, +0x5f,0xc1,0x8d,0x5d,0xcb,0x91,0x56,0xc7,0x8b,0x5b,0xc4,0x8b,0x5d,0xbf,0x89, +0x6a,0xc3,0x92,0xa6,0xe9,0xc4,0xe3,0xff,0xef,0xf3,0xff,0xf7,0xf9,0xff,0xfb, +0xfb,0xfd,0xfd,0xff,0xfc,0xff,0xff,0xfe,0xff,0xf8,0xfd,0xfe,0xe9,0xfe,0xf6, +0xe3,0xff,0xf7,0x92,0xcc,0xaf,0x6b,0xb9,0x90,0x69,0xc7,0x98,0x56,0xbf,0x8c, +0x4f,0xc1,0x8b,0x55,0xcc,0x95,0x50,0xc2,0x8d,0x57,0xba,0x8c,0x76,0xc5,0x9e, +0xbd,0xf1,0xd3,0xea,0xff,0xf2,0xf4,0xff,0xf7,0xee,0xf9,0xf1,0xf3,0xff,0xfe, +0xf3,0xff,0xff,0xf3,0xff,0xff,0xf6,0xff,0xff,0xff,0xfe,0xff,0xff,0xfb,0xfd, +0xff,0xfc,0xfb,0xfc,0xff,0xfb,0xf2,0xff,0xf8,0xdf,0xff,0xf1,0x92,0xd5,0xb0, +0x71,0xc5,0x95,0x63,0xbf,0x8c,0x5d,0xc2,0x8a,0x51,0xc1,0x87,0x4e,0xc4,0x89, +0x52,0xc7,0x90,0x59,0xbf,0x90,0x68,0xb4,0x92,0xb4,0xe4,0xcc,0xef,0xff,0xf7, +0xee,0xff,0xf2,0xe4,0xff,0xf1,0x97,0xce,0xb5,0x61,0xb7,0x95,0x58,0xc1,0x96, +0x59,0xc3,0x8e,0x5a,0xc8,0x8d,0x58,0xc6,0x8c,0x59,0xc4,0x8c,0x5c,0xc4,0x8f, +0x60,0xbf,0x8d,0x75,0xc8,0x9b,0x9c,0xe0,0xb7,0xd2,0xff,0xe1,0xe2,0xff,0xe8, +0xf2,0xff,0xef,0xfa,0xff,0xf1,0xff,0xff,0xf2,0xff,0xff,0xf4,0xff,0xff,0xf3, +0xff,0xff,0xf4,0xfd,0xff,0xf7,0xfd,0xff,0xf8,0xfc,0xff,0xf6,0xff,0xff,0xf9, +0xff,0xfe,0xfa,0xff,0xfb,0xfa,0xff,0xf9,0xf9,0xff,0xfb,0xfc,0xff,0xfb,0xfc, +0xff,0xff,0xff,0xff,0xff,0xfe,0xfa,0xff,0xfd,0xf7,0xff,0xfb,0xf4,0xff,0xfb, +0xed,0xff,0xf7,0xdc,0xff,0xe4,0x89,0xd1,0x8b,0x5d,0xad,0x5a,0x59,0x99,0x57, +0x3c,0x6b,0x3a,0xca,0xe7,0xc6,0xf8,0xff,0xf4,0xfd,0xff,0xfc,0xff,0xff,0xff, +0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0xff,0xf8,0xfa,0xff,0xfb,0xff,0xfe,0xff, +0xff,0xfa,0xff,0xff,0xf9,0xff,0xff,0xfa,0xff,0xfd,0xfd,0xfd,0xf2,0xff,0xf5, +0xdc,0xff,0xe1,0xb6,0xe6,0xbc,0x66,0x9c,0x6d,0x87,0xba,0x8e,0xe1,0xff,0xe6, +0xee,0xff,0xf1,0xf5,0xfb,0xf6,0xff,0xfe,0xff,0xfb,0xfb,0xfb,0xf5,0xf5,0xf5, +0xfc,0xfc,0xfc,0xf5,0xf5,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xe4,0xe4,0xe4,0x76,0x76,0x76,0x1a,0x1a,0x1a,0x08,0x08,0x08,0x04,0x04,0x04, +0x0c,0x0c,0x0c,0xd5,0xd5,0xd5,0xe0,0xe0,0xe0,0x04,0x00,0x01,0x33,0x1f,0x2b, +0xeb,0xdc,0xe4,0xf2,0xf8,0xf3,0xe8,0xff,0xf3,0xa8,0xe5,0xc1,0x6d,0xc4,0x92, +0x60,0xcb,0x92,0x4c,0xc3,0x86,0x47,0xc3,0x87,0x4b,0xc3,0x8c,0x4f,0xbf,0x8f, +0x57,0xbe,0x91,0x6a,0xc6,0x9d,0x7e,0xd1,0xaa,0x85,0xd2,0xac,0x86,0xcb,0xaa, +0x85,0xc3,0xad,0x81,0xbc,0xa7,0x76,0xb9,0x9a,0x6d,0xb8,0x92,0x6a,0xbd,0x90, +0x6b,0xc4,0x92,0x6b,0xc9,0x93,0x6b,0xc7,0x96,0x61,0xba,0x8f,0x71,0xbe,0x9c, +0x94,0xd3,0xb9,0xc5,0xf2,0xdf,0xe8,0xff,0xf4,0xf5,0xff,0xf5,0xff,0xff,0xf5, +0xff,0xff,0xf9,0xfe,0xfc,0xfb,0xff,0xfe,0xfe,0xff,0xfe,0xff,0xfb,0xf8,0xfa, +0xf7,0xf9,0xfa,0xf4,0xff,0xfe,0xe1,0xff,0xf1,0xae,0xe3,0xc8,0x6d,0xbb,0x92, +0x5e,0xbd,0x8a,0x5f,0xca,0x91,0x58,0xc9,0x8d,0x57,0xc5,0x8a,0x5c,0xc3,0x8a, +0x62,0xbf,0x8c,0x8b,0xd5,0xab,0xde,0xff,0xef,0xef,0xff,0xf8,0xf6,0xff,0xfc, +0xf8,0xfd,0xfc,0xff,0xf9,0xfe,0xff,0xfc,0xff,0xfe,0xfd,0xff,0xf2,0xfd,0xfa, +0xea,0xff,0xf8,0xbf,0xef,0xd5,0x82,0xc7,0xa2,0x5e,0xb6,0x88,0x5c,0xc1,0x8e, +0x56,0xc6,0x90,0x4c,0xc2,0x8d,0x50,0xc6,0x91,0x4e,0xbd,0x89,0x5a,0xb8,0x89, +0x96,0xd9,0xb2,0xd5,0xff,0xe4,0xeb,0xff,0xf0,0xef,0xff,0xf3,0xf1,0xff,0xfc, +0xed,0xfe,0xfb,0xef,0xff,0xfe,0xf3,0xff,0xff,0xf7,0xfb,0xfc,0xf8,0xf8,0xf8, +0xf8,0xfc,0xf7,0xf6,0xff,0xfb,0xea,0xff,0xf6,0xd3,0xff,0xeb,0x7b,0xc8,0xa2, +0x64,0xc0,0x8f,0x60,0xbf,0x8c,0x5e,0xc5,0x8c,0x52,0xc3,0x89,0x4f,0xc5,0x8a, +0x52,0xc7,0x90,0x57,0xbd,0x8e,0x6f,0xb7,0x93,0xbb,0xe5,0xcc,0xf6,0xff,0xf5, +0xf7,0xff,0xf2,0xec,0xff,0xf4,0x9b,0xd0,0xb5,0x5f,0xb9,0x95,0x54,0xc1,0x93, +0x5a,0xc9,0x91,0x56,0xc4,0x89,0x53,0xc1,0x87,0x5c,0xc7,0x8f,0x60,0xc4,0x90, +0x60,0xbb,0x8a,0x88,0xd4,0xaa,0xca,0xff,0xe1,0xdf,0xff,0xea,0xeb,0xff,0xed, +0xf3,0xff,0xed,0xf9,0xfe,0xef,0xfb,0xfb,0xef,0xfe,0xfc,0xf2,0xff,0xff,0xf5, +0xff,0xff,0xf8,0xf4,0xff,0xf6,0xf2,0xff,0xf7,0xf3,0xff,0xf7,0xf3,0xff,0xf6, +0xf6,0xfe,0xf7,0xf9,0xff,0xfa,0xfd,0xff,0xfc,0xff,0xff,0xfe,0xfd,0xfe,0xfc, +0xff,0xff,0xfe,0xfd,0xff,0xfe,0xf9,0xfe,0xfc,0xf9,0xff,0xfd,0xf8,0xff,0xfc, +0xf4,0xff,0xfa,0xe4,0xff,0xe8,0x8f,0xd5,0x8f,0x60,0xb0,0x5d,0x5a,0x9a,0x58, +0x42,0x71,0x40,0xc4,0xe1,0xc0,0xf8,0xff,0xf4,0xfd,0xff,0xfc,0xff,0xfd,0xfd, +0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0xff,0xf8,0xfa,0xff,0xfb,0xff,0xfe,0xff, +0xff,0xfb,0xff,0xff,0xf8,0xff,0xff,0xf9,0xff,0xff,0xfd,0xff,0xf5,0xff,0xf7, +0xe1,0xff,0xe6,0xce,0xff,0xd5,0x77,0xaf,0x7e,0x68,0x9e,0x6f,0xc8,0xf0,0xcd, +0xf1,0xff,0xf4,0xf3,0xf9,0xf4,0xfd,0xfa,0xfc,0xff,0xff,0xff,0xf5,0xf5,0xf5, +0xff,0xff,0xff,0xfa,0xfa,0xfa,0xff,0xff,0xff,0xfc,0xfc,0xfc,0xf3,0xf3,0xf3, +0xff,0xff,0xff,0xfe,0xfe,0xfe,0xc3,0xc3,0xc3,0x92,0x92,0x92,0x55,0x55,0x55, +0x20,0x20,0x20,0x81,0x81,0x81,0xff,0xff,0xff,0xeb,0xe6,0xe8,0xd5,0xc3,0xd0, +0xff,0xfb,0xff,0xfb,0xff,0xfe,0xea,0xff,0xf5,0xc8,0xff,0xdf,0x76,0xc7,0x98, +0x55,0xbc,0x83,0x50,0xc1,0x87,0x54,0xc9,0x90,0x55,0xca,0x93,0x58,0xc2,0x93, +0x64,0xc2,0x99,0x88,0xd8,0xb3,0xb3,0xf9,0xd5,0xcb,0xff,0xe6,0xd2,0xff,0xea, +0xdf,0xff,0xf9,0xdc,0xff,0xf7,0xcf,0xfe,0xe8,0xb4,0xef,0xd0,0x8e,0xd6,0xab, +0x6d,0xc0,0x8c,0x5d,0xba,0x83,0x5c,0xbe,0x88,0x64,0xc7,0x95,0x5a,0xb4,0x89, +0x65,0xb1,0x91,0x93,0xd0,0xb6,0xcd,0xf5,0xe3,0xef,0xff,0xf8,0xfa,0xff,0xf8, +0xfd,0xff,0xf9,0xff,0xff,0xfe,0xff,0xfe,0xfe,0xff,0xfd,0xff,0xff,0xfe,0xff, +0xfa,0xf9,0xfb,0xf8,0xff,0xfe,0xe9,0xff,0xf8,0xc7,0xf9,0xe1,0x76,0xbf,0x99, +0x5e,0xba,0x89,0x5c,0xc7,0x8e,0x54,0xc7,0x88,0x52,0xc3,0x87,0x59,0xc5,0x8a, +0x5b,0xbd,0x87,0x73,0xc4,0x97,0xd0,0xff,0xe5,0xe9,0xff,0xf6,0xf3,0xff,0xfb, +0xf9,0xfe,0xfd,0xfd,0xf7,0xfc,0xff,0xf9,0xff,0xff,0xfd,0xff,0xfc,0xff,0xfd, +0xed,0xff,0xf4,0xe2,0xff,0xf1,0xa1,0xdf,0xbb,0x64,0xb7,0x8a,0x5e,0xc1,0x8f, +0x58,0xc8,0x92,0x49,0xbf,0x8a,0x4e,0xc8,0x92,0x51,0xc9,0x92,0x4e,0xba,0x85, +0x73,0xc0,0x94,0xac,0xe2,0xbf,0xde,0xfe,0xe6,0xf1,0xff,0xf7,0xef,0xff,0xfb, +0xe8,0xfc,0xf7,0xed,0xff,0xfd,0xf2,0xff,0xfe,0xf8,0xfe,0xfd,0xf7,0xfc,0xfa, +0xfa,0xff,0xfb,0xf1,0xff,0xf9,0xe0,0xff,0xf1,0xbf,0xf9,0xdd,0x69,0xbf,0x95, +0x56,0xbd,0x8a,0x5a,0xc2,0x8d,0x5c,0xc7,0x8e,0x51,0xc6,0x89,0x4e,0xc6,0x8b, +0x52,0xc7,0x90,0x58,0xbc,0x8c,0x7c,0xc0,0x9d,0xc6,0xed,0xd4,0xfd,0xff,0xf4, +0xfe,0xff,0xf2,0xf2,0xff,0xf3,0xac,0xdf,0xc4,0x64,0xbe,0x9a,0x4d,0xbf,0x90, +0x57,0xcc,0x93,0x50,0xc5,0x88,0x4d,0xc1,0x86,0x59,0xc8,0x90,0x5e,0xc5,0x92, +0x5f,0xbb,0x8c,0x8a,0xd6,0xad,0xcd,0xff,0xe6,0xd9,0xff,0xe7,0xe9,0xff,0xee, +0xf6,0xff,0xf5,0xfb,0xff,0xf7,0xff,0xff,0xf9,0xff,0xff,0xfb,0xfd,0xff,0xfc, +0xf4,0xff,0xf9,0xe6,0xff,0xf2,0xe8,0xff,0xf7,0xe8,0xff,0xf5,0xe0,0xfa,0xec, +0xe3,0xf9,0xed,0xf3,0xff,0xfb,0xf6,0xff,0xfb,0xf8,0xff,0xfc,0xf9,0xfe,0xfc, +0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xf9,0xfe,0xfc,0xfa,0xff,0xfd,0xfb,0xff,0xfe, +0xf9,0xff,0xfb,0xe8,0xff,0xe9,0x97,0xda,0x95,0x63,0xb3,0x60,0x5b,0x9b,0x59, +0x46,0x75,0x44,0xbd,0xda,0xb9,0xf6,0xff,0xf2,0xfd,0xff,0xfc,0xfe,0xfc,0xfc, +0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf4,0xff,0xf7,0xfa,0xff,0xfb,0xff,0xfe,0xff, +0xff,0xfa,0xff,0xff,0xf8,0xff,0xff,0xf8,0xff,0xff,0xfc,0xff,0xf5,0xff,0xf7, +0xe7,0xff,0xec,0xd7,0xff,0xde,0x96,0xd1,0x9e,0x65,0x9d,0x6c,0x9f,0xca,0xa5, +0xea,0xff,0xed,0xf8,0xfe,0xf9,0xfb,0xf8,0xfa,0xff,0xff,0xff,0xfe,0xfe,0xfe, +0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xfa,0xfa,0xfd,0xfd,0xfd,0xef,0xef,0xef, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf4,0xf4,0xf4, +0xfa,0xfa,0xfa,0xf3,0xf3,0xf3,0xff,0xff,0xff,0xff,0xfc,0xfe,0xff,0xf9,0xff, +0xff,0xfb,0xff,0xf1,0xf8,0xf5,0xe1,0xff,0xec,0xc8,0xff,0xdd,0x8e,0xde,0xaf, +0x59,0xbc,0x84,0x60,0xce,0x94,0x52,0xc3,0x8a,0x57,0xc3,0x8f,0x59,0xba,0x8e, +0x63,0xb6,0x8f,0x89,0xcd,0xaa,0xbf,0xf5,0xd7,0xe1,0xff,0xf0,0xea,0xff,0xf4, +0xea,0xfb,0xf8,0xed,0xfd,0xfc,0xea,0xff,0xf9,0xdf,0xff,0xef,0xb3,0xf2,0xc8, +0x81,0xcf,0x9a,0x61,0xbf,0x86,0x5b,0xc1,0x87,0x61,0xcc,0x94,0x59,0xbf,0x8f, +0x58,0xb1,0x8a,0x6c,0xb6,0x98,0xa3,0xd8,0xc4,0xda,0xfe,0xee,0xf1,0xff,0xf9, +0xf4,0xfc,0xf5,0xfd,0xff,0xfe,0xfd,0xfb,0xfb,0xff,0xfb,0xfe,0xff,0xfd,0xff, +0xfe,0xfb,0xfd,0xf8,0xff,0xfc,0xec,0xff,0xf9,0xd6,0xff,0xee,0x85,0xcb,0xa6, +0x62,0xbe,0x8d,0x5a,0xc5,0x8c,0x50,0xc3,0x84,0x51,0xc3,0x84,0x5e,0xca,0x8f, +0x5b,0xc2,0x89,0x6a,0xbe,0x8e,0xba,0xf3,0xd4,0xdd,0xff,0xee,0xef,0xff,0xfb, +0xfa,0xff,0xfe,0xfe,0xf7,0xfc,0xff,0xf9,0xff,0xff,0xfc,0xff,0xff,0xff,0xfe, +0xf3,0xff,0xf5,0xe8,0xff,0xf2,0xbe,0xf7,0xd6,0x80,0xcf,0xa4,0x61,0xc1,0x92, +0x56,0xc4,0x90,0x4d,0xc5,0x8f,0x48,0xc7,0x8f,0x49,0xca,0x8f,0x53,0xc8,0x8f, +0x67,0xbd,0x8d,0x86,0xc4,0x9c,0xbb,0xe3,0xc7,0xe3,0xfe,0xea,0xec,0xff,0xf7, +0xed,0xff,0xfb,0xec,0xff,0xfd,0xf1,0xff,0xfe,0xf7,0xff,0xfd,0xf8,0xff,0xfa, +0xf4,0xff,0xf9,0xeb,0xff,0xf6,0xc8,0xf0,0xde,0x9b,0xdb,0xbe,0x5d,0xbe,0x92, +0x4e,0xc0,0x8b,0x56,0xc5,0x8d,0x58,0xc9,0x8f,0x4d,0xc6,0x89,0x4e,0xc8,0x8c, +0x54,0xc9,0x90,0x5a,0xbd,0x8d,0x94,0xd4,0xb1,0xdc,0xfc,0xe3,0xff,0xff,0xf0, +0xff,0xff,0xf3,0xf7,0xff,0xf3,0xc6,0xf3,0xd8,0x6f,0xc8,0xa1,0x4d,0xc0,0x8f, +0x4a,0xc8,0x8d,0x49,0xcb,0x8c,0x4a,0xc6,0x8a,0x4e,0xc6,0x8c,0x56,0xc5,0x91, +0x5a,0xbd,0x8f,0x74,0xc7,0xa0,0x9f,0xe3,0xc0,0xdb,0xff,0xf1,0xe2,0xff,0xf2, +0xe9,0xff,0xf3,0xe9,0xfd,0xf1,0xe8,0xfa,0xf3,0xe7,0xfb,0xf6,0xe9,0xfe,0xfb, +0xe6,0xff,0xfc,0xcd,0xfa,0xe7,0xce,0xff,0xe9,0xc2,0xf0,0xda,0xaf,0xd7,0xc5, +0xb7,0xdb,0xcb,0xda,0xf6,0xe9,0xea,0xff,0xf6,0xe4,0xf5,0xec,0xf4,0xff,0xfa, +0xf8,0xff,0xfc,0xfb,0xff,0xfe,0xf9,0xfe,0xfc,0xfc,0xff,0xfd,0xfd,0xff,0xfe, +0xfe,0xff,0xfd,0xed,0xff,0xeb,0x9e,0xe1,0x9c,0x66,0xb6,0x63,0x5a,0x9a,0x58, +0x47,0x76,0x45,0xb5,0xd2,0xb1,0xf4,0xff,0xf0,0xfd,0xff,0xfc,0xff,0xfe,0xfe, +0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, +0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xf8,0xfb,0xff,0xfb,0xff,0xfe,0xff, +0xff,0xfb,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xfc,0xff,0xf7,0xff,0xfa, +0xec,0xff,0xf1,0xda,0xff,0xe1,0xb9,0xee,0xc2,0x75,0xa8,0x7c,0x7c,0xa7,0x82, +0xd2,0xf1,0xd4,0xf4,0xff,0xf5,0xfa,0xff,0xf9,0xfd,0xff,0xfe,0xfa,0xfc,0xfc, +0xf5,0xf7,0xf7,0xff,0xff,0xff,0xef,0xef,0xef,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xf9,0xf8,0xfa,0xf5,0xf4,0xf6,0xff,0xff,0xff,0xf8,0xf8,0xf8,0xe2,0xe4,0xe4, +0xc6,0xc9,0xc7,0xab,0xae,0xac,0xa7,0xac,0xaa,0xd1,0xd1,0xd1,0xf9,0xee,0xf8, +0xf7,0xef,0xf6,0xfa,0xff,0xfe,0xed,0xff,0xf7,0xd4,0xff,0xe5,0xb8,0xfc,0xd3, +0x63,0xba,0x88,0x5b,0xc0,0x89,0x55,0xc2,0x8a,0x5c,0xc8,0x94,0x5e,0xc0,0x92, +0x60,0xb6,0x8c,0x80,0xc5,0xa0,0xb4,0xea,0xc7,0xdc,0xff,0xe3,0xea,0xff,0xed, +0xf8,0xff,0xfe,0xf1,0xfb,0xfb,0xec,0xff,0xf6,0xe4,0xff,0xf2,0xc6,0xff,0xd8, +0x90,0xdd,0xaa,0x67,0xc6,0x8d,0x59,0xc6,0x88,0x4c,0xbd,0x83,0x5c,0xcc,0x96, +0x60,0xc5,0x98,0x5d,0xb1,0x8e,0x82,0xc1,0xa7,0xc2,0xef,0xdc,0xe9,0xff,0xf8, +0xed,0xfc,0xf4,0xfd,0xff,0xfc,0xfa,0xf6,0xf5,0xfa,0xf5,0xf6,0xff,0xff,0xff, +0xfa,0xfd,0xfb,0xef,0xfe,0xf6,0xe6,0xff,0xf5,0xd8,0xff,0xf0,0x91,0xd8,0xb0, +0x6b,0xc4,0x92,0x61,0xc6,0x8e,0x55,0xc2,0x84,0x55,0xc2,0x84,0x65,0xd0,0x92, +0x62,0xc8,0x8e,0x6b,0xc0,0x8e,0xae,0xe6,0xc3,0xd4,0xfb,0xe2,0xea,0xff,0xf5, +0xef,0xff,0xf8,0xef,0xfd,0xf7,0xf5,0xff,0xf9,0xfa,0xff,0xfc,0xf8,0xff,0xf9, +0xf3,0xff,0xf7,0xe8,0xff,0xf2,0xd5,0xff,0xe8,0xa3,0xe6,0xc1,0x6d,0xbf,0x95, +0x5b,0xbc,0x90,0x5b,0xc7,0x99,0x4c,0xc2,0x8f,0x3f,0xbc,0x84,0x5c,0xd1,0x98, +0x67,0xc3,0x92,0x68,0xb0,0x86,0x89,0xc1,0x9e,0xaf,0xdf,0xc3,0xcb,0xf7,0xe0, +0xdf,0xff,0xf7,0xda,0xff,0xf3,0xe0,0xff,0xf5,0xe1,0xff,0xf3,0xe1,0xff,0xf0, +0xdd,0xff,0xee,0xcb,0xf9,0xe2,0x9f,0xd9,0xbd,0x6d,0xb9,0x97,0x5a,0xc2,0x93, +0x4e,0xc3,0x8c,0x58,0xc9,0x90,0x5a,0xc9,0x91,0x52,0xc3,0x8a,0x56,0xc5,0x8f, +0x5f,0xc5,0x95,0x67,0xba,0x93,0xaa,0xe2,0xc5,0xec,0xff,0xf4,0xfc,0xfe,0xf2, +0xff,0xff,0xf8,0xfa,0xff,0xf7,0xdd,0xff,0xec,0x87,0xca,0xaf,0x5f,0xbc,0x95, +0x4f,0xbd,0x89,0x54,0xcc,0x92,0x54,0xc9,0x92,0x4f,0xc1,0x8c,0x55,0xc2,0x91, +0x5b,0xc1,0x92,0x60,0xb9,0x91,0x6a,0xba,0x95,0x7a,0xbf,0x9e,0x8d,0xc8,0xac, +0xa2,0xd6,0xbe,0xaf,0xe0,0xca,0xb0,0xe1,0xcd,0xaa,0xda,0xc8,0x9c,0xd0,0xbf, +0x93,0xcb,0xb8,0x7a,0xbd,0xa0,0x80,0xc4,0xa5,0x75,0xb5,0x98,0x6d,0xa4,0x8b, +0x90,0xbe,0xa8,0xd0,0xf4,0xe4,0xed,0xff,0xf9,0xf3,0xff,0xfb,0xf6,0xff,0xfa, +0xfb,0xff,0xfe,0xfd,0xff,0xfe,0xfb,0xfe,0xfc,0xfe,0xfe,0xfe,0xfd,0xff,0xfe, +0xfd,0xff,0xff,0xec,0xff,0xec,0xa4,0xe6,0xa5,0x68,0xb7,0x66,0x59,0x99,0x57, +0x45,0x76,0x42,0xad,0xcd,0xaa,0xee,0xff,0xec,0xfb,0xff,0xf9,0xff,0xff,0xfe, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfd,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xfb,0xfe,0xff,0xfd,0xff,0xfe,0xfe, +0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xfc,0xfe,0xff,0xf7,0xff,0xfb, +0xf1,0xff,0xf8,0xeb,0xff,0xf1,0xd5,0xf9,0xdb,0x77,0x9f,0x7c,0x7b,0xa6,0x81, +0xb5,0xe1,0xba,0xdd,0xff,0xe0,0xeb,0xff,0xed,0xf5,0xff,0xf7,0xfa,0xff,0xfd, +0xfa,0xff,0xfe,0xfd,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff, +0xff,0xfd,0xff,0xf8,0xf7,0xfb,0xff,0xfe,0xff,0xa7,0xa9,0xa9,0x0c,0x11,0x0f, +0x10,0x17,0x12,0x00,0x04,0x00,0x00,0x09,0x01,0x01,0x0b,0x05,0x3e,0x3f,0x43, +0xb4,0xb3,0xb7,0xfb,0xff,0xff,0xf0,0xfe,0xf3,0xe6,0xff,0xee,0xd1,0xff,0xe0, +0x82,0xc8,0x9f,0x5d,0xb6,0x85,0x5c,0xc6,0x91,0x52,0xc4,0x8e,0x58,0xc8,0x92, +0x5e,0xc5,0x92,0x6c,0xc0,0x90,0x94,0xd6,0xac,0xd0,0xff,0xd8,0xed,0xff,0xee, +0xf0,0xff,0xf5,0xea,0xfb,0xf2,0xea,0xff,0xf5,0xdf,0xff,0xf1,0xc8,0xff,0xe0, +0x8e,0xdf,0xb0,0x61,0xc6,0x8e,0x52,0xc4,0x88,0x4e,0xc7,0x8a,0x49,0xc1,0x87, +0x5a,0xc9,0x95,0x62,0xc1,0x95,0x6a,0xb4,0x92,0xa4,0xdb,0xc2,0xe4,0xff,0xf7, +0xf1,0xff,0xf9,0xf8,0xfc,0xf7,0xfd,0xf9,0xf8,0xfc,0xfd,0xf9,0xf4,0xfd,0xf3, +0xea,0xfc,0xef,0xea,0xff,0xf4,0xdf,0xff,0xf1,0xc9,0xff,0xe2,0xa3,0xeb,0xc0, +0x80,0xd3,0x9f,0x63,0xbe,0x86,0x5f,0xbf,0x83,0x63,0xc6,0x88,0x62,0xc5,0x87, +0x62,0xc3,0x85,0x6e,0xc1,0x8a,0xa3,0xd8,0xad,0xce,0xf6,0xd3,0xde,0xff,0xea, +0xd2,0xff,0xe4,0xc7,0xfd,0xdf,0xcb,0xff,0xe6,0xce,0xff,0xe5,0xc9,0xf6,0xdc, +0xd1,0xf8,0xdf,0xe6,0xff,0xf2,0xe6,0xff,0xf2,0xd4,0xff,0xe6,0xa6,0xe0,0xc4, +0x75,0xbb,0x9d,0x5d,0xb0,0x90,0x63,0xc2,0x9d,0x57,0xbf,0x90,0x59,0xc2,0x8f, +0x5f,0xc2,0x92,0x64,0xc0,0x91,0x69,0xbe,0x92,0x6f,0xc1,0x97,0x78,0xc7,0xa0, +0x7e,0xcd,0xa6,0x9b,0xe9,0xc4,0xa5,0xf2,0xcd,0xaa,0xf4,0xd0,0x9e,0xe9,0xc3, +0x86,0xd3,0xad,0x74,0xc3,0x9c,0x6d,0xbf,0x95,0x69,0xc4,0x97,0x5b,0xca,0x94, +0x4d,0xc0,0x87,0x51,0xbd,0x88,0x62,0xc7,0x94,0x68,0xc5,0x98,0x68,0xbb,0x94, +0x76,0xbc,0x9d,0x90,0xc9,0xb0,0xd9,0xff,0xf0,0xec,0xff,0xfb,0xf6,0xff,0xfc, +0xf5,0xfc,0xf9,0xf7,0xff,0xfd,0xf3,0xff,0xfe,0xcf,0xe9,0xe3,0x9b,0xc8,0xb7, +0x76,0xbe,0x9a,0x66,0xbf,0x93,0x62,0xbd,0x90,0x62,0xbf,0x92,0x62,0xc3,0x97, +0x61,0xc3,0x97,0x5b,0xbd,0x91,0x56,0xb8,0x8c,0x5a,0xbc,0x90,0x5c,0xbd,0x91, +0x5e,0xbd,0x91,0x61,0xbd,0x92,0x61,0xbd,0x92,0x62,0xbc,0x91,0x62,0xbb,0x93, +0x5f,0xbb,0x90,0x56,0xb7,0x8b,0x65,0xc1,0x96,0x6e,0xc1,0x9b,0x70,0xb5,0x94, +0x8c,0xc1,0xa6,0xcd,0xf2,0xde,0xf1,0xff,0xf8,0xf2,0xfa,0xf3,0xff,0xfd,0xfc, +0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xff,0xff,0xff,0xfe,0xff,0xfa,0xff,0xfe, +0xf7,0xff,0xff,0xea,0xff,0xf2,0xb0,0xf0,0xb4,0x66,0xb3,0x69,0x58,0x9a,0x59, +0x4f,0x85,0x50,0x8e,0xb6,0x8d,0xf1,0xff,0xf0,0xf8,0xff,0xf7,0xff,0xff,0xfb, +0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfe, +0xff,0xfe,0xfe,0xfe,0xfd,0xff,0xfc,0xfe,0xff,0xfa,0xff,0xfe,0xf7,0xff,0xfd, +0xef,0xfe,0xf6,0xf1,0xff,0xf8,0xea,0xff,0xf1,0xa7,0xc9,0xab,0x6b,0x94,0x6f, +0x9d,0xcb,0xa0,0xd7,0xff,0xd9,0xe6,0xff,0xe9,0xf2,0xff,0xf4,0xf9,0xff,0xfb, +0xfb,0xff,0xfe,0xfd,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff, +0xff,0xfd,0xff,0xff,0xfd,0xff,0xf2,0xf1,0xf5,0x27,0x29,0x2a,0x00,0x01,0x00, +0x00,0x05,0x00,0x0b,0x18,0x10,0x00,0x05,0x00,0x00,0x06,0x00,0x04,0x07,0x0c, +0x01,0x00,0x09,0x94,0x92,0x98,0xf5,0xfa,0xf9,0xee,0xfe,0xf3,0xe8,0xff,0xf5, +0x9e,0xd4,0xb7,0x74,0xc3,0x9c,0x5a,0xc0,0x91,0x49,0xbc,0x8a,0x49,0xbf,0x8c, +0x4e,0xbd,0x8b,0x5e,0xb9,0x8c,0x87,0xd1,0xa7,0xc3,0xf7,0xd2,0xe4,0xff,0xee, +0xec,0xff,0xf7,0xe3,0xff,0xf2,0xd6,0xfb,0xe7,0xc6,0xf9,0xde,0xa6,0xe9,0xc4, +0x78,0xcd,0xa1,0x5a,0xbf,0x8b,0x51,0xc2,0x89,0x4d,0xc5,0x8a,0x49,0xc1,0x87, +0x5a,0xc8,0x94,0x61,0xc0,0x94,0x6b,0xb2,0x91,0xa0,0xd5,0xba,0xdc,0xfe,0xed, +0xe6,0xfc,0xf0,0xf5,0xff,0xfb,0xe3,0xee,0xeb,0xcb,0xde,0xd5,0xbd,0xda,0xcb, +0xb6,0xdf,0xca,0xaa,0xdf,0xc4,0x9c,0xdc,0xb9,0x8f,0xdb,0xb2,0x84,0xda,0xaa, +0x6c,0xc8,0x95,0x5b,0xbc,0x84,0x5b,0xc1,0x87,0x60,0xc7,0x8d,0x5f,0xc7,0x8a, +0x5d,0xc5,0x88,0x69,0xc4,0x8c,0x6e,0xaf,0x81,0x82,0xbc,0x93,0x7f,0xc3,0x9a, +0x6e,0xbd,0x92,0x64,0xba,0x90,0x6a,0xc3,0x98,0x73,0xc3,0x9e,0x77,0xba,0x9a, +0x9e,0xcf,0xb3,0xce,0xf2,0xda,0xeb,0xff,0xf3,0xe8,0xff,0xf3,0xd8,0xfe,0xec, +0xb5,0xe6,0xd2,0x87,0xc4,0xb0,0x67,0xb2,0x96,0x68,0xc2,0x97,0x61,0xc6,0x93, +0x62,0xc5,0x93,0x5f,0xc2,0x90,0x5a,0xbd,0x8b,0x57,0xba,0x88,0x55,0xb8,0x86, +0x54,0xb7,0x85,0x59,0xba,0x88,0x5f,0xc0,0x8e,0x64,0xc5,0x93,0x64,0xc5,0x93, +0x5e,0xbf,0x8d,0x5a,0xbb,0x89,0x59,0xba,0x88,0x58,0xbd,0x89,0x57,0xc5,0x8b, +0x5a,0xca,0x90,0x65,0xcd,0x98,0x65,0xc3,0x94,0x5e,0xaf,0x88,0x6a,0xaf,0x8e, +0x9b,0xd2,0xb9,0xcc,0xf9,0xe6,0xe2,0xff,0xf7,0xec,0xff,0xfc,0xf1,0xff,0xff, +0xed,0xfa,0xf8,0xf2,0xfc,0xfc,0xf6,0xff,0xff,0xf0,0xf8,0xf8,0xd2,0xea,0xe0, +0x93,0xc6,0xaa,0x7d,0xc2,0x9d,0x6f,0xb8,0x92,0x65,0xb4,0x8b,0x62,0xb8,0x8e, +0x64,0xc1,0x94,0x63,0xc6,0x98,0x5e,0xc9,0x98,0x55,0xc2,0x91,0x54,0xc3,0x8f, +0x54,0xc3,0x8f,0x55,0xc3,0x8f,0x57,0xc3,0x8e,0x57,0xc3,0x8e,0x59,0xc3,0x8e, +0x59,0xc3,0x8e,0x59,0xc5,0x91,0x61,0xc7,0x97,0x66,0xc1,0x94,0x64,0xaf,0x89, +0x7c,0xb5,0x96,0xb9,0xe1,0xc8,0xec,0xff,0xf2,0xf4,0xfd,0xf3,0xff,0xfe,0xfa, +0xff,0xfe,0xfd,0xff,0xfd,0xfe,0xff,0xff,0xff,0xfb,0xff,0xff,0xf7,0xff,0xfe, +0xf2,0xff,0xfe,0xe6,0xff,0xf2,0xb2,0xf2,0xb7,0x68,0xb4,0x6c,0x5f,0xa0,0x62, +0x4d,0x85,0x50,0x7d,0xa7,0x7e,0xef,0xff,0xee,0xf8,0xff,0xf5,0xfb,0xff,0xf7, +0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff, +0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfe, +0xff,0xfe,0xfe,0xfe,0xfd,0xff,0xfc,0xfe,0xff,0xfa,0xff,0xfe,0xf9,0xff,0xfd, +0xf2,0xfe,0xf8,0xf2,0xff,0xf7,0xef,0xff,0xf4,0xd5,0xf6,0xdb,0x69,0x91,0x6e, +0x83,0xb1,0x87,0xcd,0xfe,0xd0,0xe3,0xff,0xe6,0xf3,0xff,0xf5,0xfa,0xff,0xfc, +0xfb,0xff,0xfe,0xfd,0xff,0xff,0xff,0xfe,0xff,0xfe,0xfd,0xff,0xff,0xfc,0xff, +0xff,0xfc,0xff,0xff,0xfd,0xff,0xdc,0xd8,0xdd,0x07,0x06,0x08,0x05,0x07,0x07, +0x8c,0x91,0x8f,0xab,0xb3,0xac,0x00,0x04,0x00,0x90,0x96,0x95,0x9a,0x95,0xa4, +0x49,0x40,0x54,0x23,0x19,0x2a,0xbf,0xb9,0xc4,0xfa,0xff,0xff,0xe7,0xfd,0xf8, +0xb3,0xde,0xcf,0x73,0xb7,0x9e,0x69,0xc4,0xa3,0x56,0xc0,0x9b,0x53,0xc2,0x9c, +0x55,0xbf,0x9a,0x5d,0xb8,0x97,0x79,0xc5,0xa6,0xa0,0xda,0xc1,0xb4,0xe3,0xcd, +0xb0,0xd9,0xca,0xa9,0xd2,0xc3,0x9b,0xcc,0xb8,0x8c,0xc7,0xab,0x79,0xc0,0x9f, +0x68,0xbc,0x92,0x5e,0xbe,0x8f,0x5c,0xc5,0x92,0x5a,0xc8,0x94,0x56,0xc1,0x90, +0x61,0xc2,0x96,0x6a,0xba,0x95,0x76,0xb3,0x97,0xab,0xd5,0xc3,0xe3,0xfb,0xef, +0xe7,0xfc,0xf4,0xdf,0xfd,0xf8,0xb9,0xe2,0xdb,0x8b,0xb9,0xad,0x79,0xb0,0x9f, +0x80,0xc1,0xab,0x71,0xbe,0xa2,0x5e,0xb5,0x93,0x61,0xc2,0x9a,0x5d,0xc9,0x9b, +0x4f,0xc0,0x8e,0x47,0xbd,0x88,0x4d,0xc5,0x8e,0x50,0xcb,0x93,0x4d,0xc8,0x8e, +0x4a,0xc5,0x8b,0x53,0xc5,0x8f,0x66,0xc6,0x97,0x69,0xc4,0x97,0x5d,0xbf,0x93, +0x50,0xbb,0x90,0x4f,0xbd,0x93,0x58,0xc2,0x99,0x62,0xc0,0x9d,0x6e,0xba,0x9b, +0x89,0xc0,0xa7,0xc9,0xee,0xda,0xed,0xff,0xf7,0xef,0xff,0xf5,0xed,0xff,0xf8, +0xe2,0xff,0xf4,0xbc,0xe5,0xd6,0x8f,0xcc,0xb2,0x65,0xba,0x8d,0x59,0xbe,0x86, +0x5c,0xbf,0x87,0x5d,0xc2,0x8a,0x62,0xc7,0x8f,0x67,0xcc,0x94,0x6a,0xcf,0x97, +0x6b,0xd0,0x98,0x5e,0xc3,0x8b,0x5d,0xc2,0x8a,0x5d,0xc2,0x8a,0x60,0xc5,0x8d, +0x63,0xc8,0x90,0x65,0xca,0x92,0x63,0xc8,0x90,0x60,0xc7,0x8e,0x57,0xc1,0x86, +0x59,0xc2,0x89,0x5d,0xbf,0x89,0x61,0xbc,0x8b,0x70,0xbe,0x95,0x91,0xd3,0xb0, +0xba,0xf1,0xd6,0xdd,0xff,0xf3,0xe2,0xff,0xf6,0xea,0xff,0xf9,0xef,0xff,0xfc, +0xef,0xff,0xfa,0xf1,0xff,0xfa,0xf3,0xff,0xfc,0xf3,0xff,0xfc,0xec,0xff,0xf8, +0xc3,0xf3,0xd6,0xaa,0xe9,0xc2,0x90,0xd3,0xac,0x7b,0xc3,0x99,0x6c,0xbb,0x90, +0x63,0xb8,0x8c,0x5d,0xb8,0x8b,0x59,0xb9,0x8a,0x5e,0xc1,0x91,0x5c,0xc1,0x8e, +0x5b,0xc0,0x8d,0x5a,0xbf,0x8b,0x5b,0xbf,0x8b,0x5c,0xc0,0x8c,0x5f,0xc1,0x8b, +0x60,0xc2,0x8c,0x5c,0xc1,0x8d,0x5f,0xc0,0x8e,0x67,0xbf,0x91,0x6d,0xb6,0x8e, +0x7f,0xbb,0x99,0xb4,0xdf,0xc4,0xe6,0xff,0xee,0xf4,0xff,0xf7,0xf8,0xff,0xf6, +0xfc,0xff,0xf8,0xfc,0xff,0xfa,0xfb,0xff,0xfb,0xf6,0xff,0xfb,0xf2,0xff,0xfa, +0xf0,0xff,0xfa,0xe6,0xff,0xef,0xb9,0xf8,0xc0,0x6e,0xb5,0x72,0x68,0xa8,0x6c, +0x50,0x85,0x53,0x6e,0x96,0x6d,0xef,0xff,0xee,0xf6,0xff,0xf3,0xfb,0xff,0xf7, +0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff, +0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfe, +0xff,0xfe,0xfe,0xfe,0xfd,0xff,0xfc,0xfe,0xff,0xfc,0xfe,0xfe,0xf9,0xff,0xfd, +0xf6,0xff,0xfc,0xef,0xff,0xf5,0xe9,0xff,0xef,0xe9,0xff,0xee,0x8c,0xb1,0x8f, +0x72,0x9e,0x77,0xb7,0xe5,0xba,0xe0,0xff,0xe2,0xf4,0xff,0xf7,0xfb,0xff,0xfc, +0xfd,0xff,0xfe,0xfc,0xff,0xfd,0xfe,0xfe,0xfe,0xff,0xfd,0xff,0xff,0xfc,0xff, +0xff,0xfb,0xff,0xea,0xe4,0xe9,0xfc,0xf6,0xfb,0x27,0x24,0x26,0x03,0x03,0x03, +0xfc,0xff,0xfd,0xfa,0xff,0xfb,0x31,0x38,0x33,0x4a,0x4e,0x4f,0xfd,0xfa,0xff, +0xbf,0xb9,0xcc,0x02,0x00,0x0a,0x3e,0x3a,0x45,0xf6,0xfb,0xfe,0xe7,0xfb,0xf6, +0xd3,0xfc,0xed,0x82,0xc2,0xac,0x5f,0xb7,0x99,0x4e,0xb6,0x93,0x4d,0xbb,0x97, +0x51,0xbd,0x99,0x52,0xb3,0x91,0x5c,0xb2,0x94,0x6c,0xb3,0x98,0x6d,0xae,0x95, +0x72,0xb0,0x9a,0x76,0xb4,0x9c,0x73,0xb5,0x98,0x6b,0xb5,0x93,0x66,0xb7,0x90, +0x65,0xbe,0x92,0x65,0xc6,0x94,0x61,0xc8,0x95,0x5d,0xc6,0x93,0x59,0xbd,0x8d, +0x60,0xb9,0x8e,0x6d,0xb7,0x93,0x88,0xbf,0xa4,0xbe,0xe3,0xcf,0xee,0xff,0xf6, +0xec,0xff,0xfa,0xdd,0xff,0xfc,0xbf,0xf5,0xe8,0x83,0xc1,0xaf,0x64,0xa9,0x94, +0x71,0xc0,0xa5,0x69,0xc2,0xa1,0x58,0xbb,0x95,0x61,0xcc,0xa1,0x50,0xc2,0x93, +0x47,0xc0,0x8d,0x45,0xc1,0x8d,0x48,0xc7,0x90,0x49,0xc8,0x91,0x44,0xc3,0x8b, +0x42,0xc1,0x8a,0x48,0xc2,0x8c,0x5a,0xc7,0x96,0x55,0xc2,0x92,0x4d,0xc0,0x8f, +0x4e,0xc4,0x94,0x4f,0xc6,0x99,0x53,0xc3,0x99,0x5d,0xbd,0x98,0x6a,0xb9,0x98, +0x81,0xb8,0x9d,0xc9,0xed,0xd7,0xf1,0xff,0xf5,0xf3,0xff,0xf2,0xf0,0xff,0xf1, +0xf0,0xff,0xf4,0xe2,0xfc,0xee,0xcd,0xf9,0xe2,0x95,0xdf,0xb5,0x7f,0xd9,0xa4, +0x6f,0xc9,0x94,0x64,0xbe,0x89,0x5f,0xb9,0x84,0x5d,0xb9,0x84,0x5d,0xb9,0x84, +0x5c,0xb8,0x83,0x6c,0xc8,0x93,0x67,0xc3,0x8e,0x63,0xbf,0x8a,0x62,0xbe,0x89, +0x64,0xc0,0x8b,0x63,0xc1,0x8b,0x61,0xbf,0x89,0x5e,0xbc,0x86,0x60,0xbd,0x8a, +0x63,0xbe,0x8d,0x6e,0xc1,0x94,0x84,0xd0,0xa7,0xaa,0xec,0xc9,0xcd,0xff,0xe8, +0xd9,0xff,0xf0,0xd6,0xfa,0xe9,0xe7,0xff,0xf6,0xea,0xff,0xf8,0xf1,0xff,0xfc, +0xf3,0xff,0xfc,0xf3,0xff,0xfc,0xf2,0xff,0xfb,0xf2,0xff,0xfa,0xef,0xff,0xf9, +0xe4,0xff,0xf2,0xdc,0xff,0xeb,0xc8,0xfa,0xda,0xb2,0xea,0xc7,0x9d,0xda,0xb8, +0x89,0xce,0xa9,0x7a,0xc3,0x9d,0x6f,0xbd,0x94,0x6e,0xc0,0x96,0x6c,0xbe,0x93, +0x6a,0xbc,0x91,0x69,0xbb,0x90,0x6b,0xbb,0x90,0x6c,0xbd,0x90,0x6f,0xbe,0x92, +0x71,0xc0,0x94,0x6b,0xbe,0x91,0x6a,0xbc,0x91,0x7a,0xc3,0x9b,0x8a,0xca,0xa6, +0x9b,0xcf,0xb1,0xbb,0xe3,0xca,0xdd,0xf9,0xe6,0xeb,0xfe,0xef,0xf6,0xff,0xf7, +0xf9,0xff,0xf8,0xf9,0xff,0xfa,0xfa,0xff,0xfb,0xf6,0xff,0xfb,0xf3,0xff,0xfa, +0xf2,0xff,0xf8,0xe8,0xff,0xef,0xc4,0xfe,0xc8,0x74,0xb8,0x77,0x71,0xac,0x72, +0x53,0x85,0x55,0x68,0x8f,0x69,0xf1,0xff,0xf0,0xf7,0xff,0xf4,0xfd,0xff,0xfb, +0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfe, +0xff,0xfe,0xfe,0xfe,0xfd,0xff,0xfc,0xfe,0xff,0xfc,0xfe,0xfe,0xf9,0xff,0xfd, +0xf8,0xff,0xfc,0xf0,0xff,0xf5,0xe8,0xfe,0xec,0xe9,0xff,0xed,0xbc,0xde,0xc0, +0x6a,0x90,0x6c,0x96,0xc2,0x9b,0xe1,0xff,0xe4,0xf3,0xff,0xf6,0xfa,0xff,0xfa, +0xfc,0xff,0xfb,0xfc,0xff,0xfd,0xfe,0xfe,0xfe,0xff,0xfd,0xff,0xff,0xfc,0xff, +0xff,0xfc,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xa1,0x9c,0x9e,0x09,0x06,0x08, +0x9d,0x9b,0x9b,0xff,0xff,0xfe,0xb4,0xb7,0xb5,0x00,0x05,0x04,0xd7,0xde,0xe1, +0xec,0xf3,0xf6,0x4d,0x52,0x53,0x04,0x0b,0x08,0xb8,0xc8,0xbd,0xec,0xff,0xf5, +0xdd,0xff,0xf2,0x91,0xd6,0xb5,0x64,0xbd,0x95,0x51,0xbd,0x8f,0x52,0xc6,0x97, +0x57,0xcd,0x9d,0x57,0xc7,0x98,0x5e,0xc4,0x9a,0x67,0xc3,0x9a,0x60,0xb7,0x91, +0x65,0xbe,0x97,0x6b,0xc4,0x9d,0x6b,0xc5,0x9a,0x65,0xc0,0x93,0x61,0xc0,0x8e, +0x5f,0xc4,0x8d,0x5e,0xc5,0x8c,0x59,0xc2,0x89,0x56,0xbf,0x86,0x55,0xba,0x83, +0x61,0xba,0x89,0x79,0xc2,0x9a,0xa0,0xd9,0xb8,0xd1,0xfa,0xdf,0xef,0xff,0xf5, +0xe8,0xff,0xf1,0xdc,0xff,0xf7,0xcf,0xff,0xf1,0x96,0xd5,0xbb,0x64,0xaa,0x8b, +0x67,0xb4,0x92,0x64,0xbc,0x94,0x55,0xb4,0x88,0x58,0xbe,0x8e,0x56,0xc4,0x90, +0x54,0xc4,0x8e,0x53,0xc5,0x8f,0x52,0xc7,0x90,0x51,0xc6,0x8f,0x4e,0xc3,0x8a, +0x4e,0xc3,0x8c,0x54,0xc5,0x8c,0x52,0xbe,0x89,0x4f,0xbb,0x86,0x4d,0xbf,0x89, +0x52,0xc6,0x91,0x54,0xc8,0x93,0x56,0xc1,0x90,0x63,0xbe,0x91,0x75,0xbe,0x96, +0x7e,0xb1,0x8f,0xbe,0xdd,0xc0,0xf0,0xff,0xe8,0xfd,0xff,0xf0,0xfd,0xff,0xf1, +0xf7,0xff,0xee,0xf1,0xff,0xed,0xec,0xff,0xf1,0xda,0xff,0xed,0xc1,0xff,0xdd, +0xac,0xef,0xc8,0x98,0xdb,0xb4,0x8a,0xcd,0xa6,0x7e,0xc4,0x9c,0x77,0xbd,0x95, +0x73,0xb9,0x91,0x74,0xbb,0x93,0x74,0xbb,0x93,0x71,0xba,0x92,0x71,0xba,0x92, +0x73,0xbc,0x94,0x73,0xbf,0x96,0x77,0xc3,0x9a,0x7b,0xc4,0x9c,0x87,0xcc,0xa7, +0x9f,0xde,0xbe,0xb6,0xf0,0xd3,0xc6,0xfb,0xe0,0xd8,0xff,0xee,0xe4,0xff,0xf8, +0xea,0xff,0xf9,0xea,0xff,0xf7,0xf3,0xff,0xfe,0xf2,0xfd,0xfb,0xf5,0xfd,0xfc, +0xfa,0xff,0xff,0xfa,0xff,0xff,0xf6,0xfe,0xfd,0xf4,0xfa,0xf9,0xf0,0xfc,0xf6, +0xf3,0xff,0xf8,0xee,0xff,0xf4,0xeb,0xff,0xf3,0xe6,0xff,0xf0,0xdc,0xff,0xed, +0xd2,0xfc,0xe5,0xc6,0xf4,0xdd,0xbd,0xf0,0xd5,0xb2,0xe7,0xcc,0xae,0xe5,0xca, +0xac,0xe3,0xc8,0xab,0xe3,0xc6,0xad,0xe3,0xc6,0xb0,0xe3,0xc7,0xb2,0xe5,0xc9, +0xb4,0xe8,0xca,0xc6,0xff,0xe0,0xbf,0xf7,0xda,0xca,0xfd,0xe2,0xdb,0xff,0xf0, +0xe2,0xff,0xf3,0xea,0xff,0xf8,0xf1,0xff,0xf9,0xf4,0xff,0xfb,0xf6,0xff,0xfa, +0xf9,0xff,0xfd,0xfa,0xff,0xfd,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xf9,0xff,0xfd, +0xf7,0xff,0xfb,0xed,0xff,0xf2,0xcd,0xff,0xcf,0x79,0xb7,0x7b,0x6e,0xa6,0x71, +0x56,0x85,0x57,0x78,0x9c,0x78,0xf1,0xff,0xf1,0xf6,0xff,0xf5,0xfd,0xff,0xfb, +0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfe, +0xff,0xfe,0xfe,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfc,0xfe,0xfe,0xfa,0xff,0xfd, +0xf2,0xfc,0xf6,0xf6,0xff,0xf9,0xf1,0xff,0xf5,0xe9,0xff,0xec,0xdc,0xfb,0xe0, +0x75,0x97,0x78,0x7b,0xa3,0x80,0xd5,0xf4,0xd7,0xf3,0xff,0xf4,0xf8,0xff,0xf8, +0xfb,0xff,0xfa,0xfb,0xff,0xfa,0xfe,0xff,0xfd,0xff,0xfe,0xfe,0xff,0xfd,0xff, +0xff,0xfe,0xff,0xff,0xfd,0xff,0xe4,0xdd,0xe0,0xfb,0xf6,0xf8,0x60,0x5b,0x5d, +0x15,0x13,0x13,0x4f,0x4d,0x4d,0x5e,0x5c,0x5c,0x00,0x02,0x02,0x7a,0x83,0x80, +0xf6,0xff,0xfc,0x88,0x93,0x8b,0x05,0x0f,0x03,0xa4,0xb4,0xa2,0xe9,0xff,0xeb, +0xe3,0xff,0xee,0xb2,0xef,0xc9,0x6d,0xbe,0x91,0x5b,0xba,0x88,0x56,0xbf,0x8c, +0x55,0xc3,0x8f,0x54,0xbf,0x8e,0x5b,0xc1,0x91,0x67,0xc5,0x96,0x63,0xbe,0x91, +0x5d,0xbb,0x92,0x5e,0xbe,0x95,0x61,0xbe,0x91,0x60,0xbc,0x8d,0x60,0xbb,0x8a, +0x63,0xbf,0x8c,0x66,0xc2,0x8d,0x67,0xc3,0x8e,0x6d,0xc6,0x94,0x77,0xcb,0x9b, +0x87,0xd1,0xa7,0xa4,0xe2,0xbe,0xca,0xfa,0xdd,0xe8,0xff,0xf2,0xf1,0xff,0xf5, +0xe9,0xfe,0xef,0xdd,0xff,0xec,0xdc,0xff,0xf1,0xb5,0xe5,0xcb,0x86,0xbc,0x9f, +0x7e,0xb9,0x9a,0x80,0xc2,0x9f,0x77,0xc0,0x98,0x71,0xc0,0x95,0x6b,0xbe,0x91, +0x68,0xc0,0x92,0x68,0xc0,0x92,0x69,0xc1,0x93,0x66,0xc0,0x92,0x67,0xc1,0x93, +0x6b,0xc3,0x95,0x6f,0xc4,0x97,0x77,0xcb,0x9b,0x77,0xcb,0x9b,0x73,0xce,0x9d, +0x74,0xd0,0xa1,0x74,0xd0,0xa1,0x79,0xce,0xa2,0x88,0xd1,0xa9,0x9b,0xd5,0xb2, +0xb2,0xd8,0xba,0xd2,0xe9,0xcd,0xed,0xf7,0xe0,0xff,0xff,0xef,0xff,0xff,0xf2, +0xfd,0xff,0xf0,0xf4,0xff,0xeb,0xf3,0xff,0xf2,0xe8,0xff,0xf4,0xe3,0xff,0xf4, +0xde,0xff,0xf1,0xda,0xff,0xed,0xd6,0xff,0xe9,0xd0,0xfc,0xe5,0xcc,0xf8,0xe1, +0xc7,0xf5,0xde,0xae,0xdc,0xc5,0xb0,0xe0,0xc8,0xb3,0xe3,0xcb,0xb2,0xe4,0xcc, +0xb2,0xe6,0xce,0xb6,0xea,0xd2,0xbb,0xf2,0xd9,0xc5,0xf6,0xe0,0xca,0xf4,0xe2, +0xdd,0xff,0xf2,0xe6,0xff,0xf9,0xea,0xff,0xfb,0xea,0xff,0xf9,0xf2,0xff,0xfd, +0xf6,0xff,0xff,0xfa,0xff,0xff,0xfd,0xfe,0xff,0xfd,0xfb,0xff,0xfa,0xf6,0xfc, +0xfd,0xf9,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xfe,0xfc,0xff,0xfd,0xfc,0xfe, +0xfb,0xf9,0xf8,0xfa,0xfb,0xf7,0xfb,0xff,0xfa,0xfa,0xff,0xfc,0xf4,0xff,0xfc, +0xf1,0xff,0xfc,0xed,0xff,0xfb,0xec,0xff,0xfb,0xea,0xff,0xfb,0xea,0xff,0xfb, +0xe9,0xff,0xf8,0xe8,0xff,0xf7,0xe8,0xff,0xf7,0xeb,0xff,0xf8,0xec,0xff,0xf8, +0xec,0xff,0xf8,0xea,0xff,0xf8,0xe1,0xfe,0xef,0xe5,0xff,0xf2,0xec,0xff,0xfa, +0xec,0xff,0xf9,0xf1,0xff,0xfc,0xf5,0xff,0xfe,0xef,0xf7,0xf6,0xf8,0xfd,0xfe, +0xfc,0xfe,0xff,0xfe,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff, +0xff,0xfd,0xff,0xf4,0xff,0xf6,0xd2,0xfe,0xd5,0x7f,0xb7,0x82,0x6b,0x9d,0x6d, +0x62,0x8c,0x63,0xa0,0xbf,0xa0,0xef,0xff,0xee,0xf7,0xff,0xf4,0xfd,0xff,0xfb, +0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xfe,0xfe, +0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfc,0xfe,0xfe,0xfa,0xff,0xfd, +0xf5,0xfc,0xf7,0xf8,0xff,0xf9,0xf4,0xff,0xf7,0xee,0xff,0xf1,0xe7,0xff,0xeb, +0x9f,0xbe,0xa3,0x75,0x97,0x79,0xb0,0xcd,0xb3,0xf1,0xff,0xf3,0xf7,0xfe,0xf7, +0xf9,0xfd,0xf8,0xfb,0xff,0xfa,0xfe,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xfb,0xf6,0xf8,0xff,0xfe,0xff,0xff,0xfe,0xff,0xf8,0xf3,0xf5, +0x7d,0x78,0x7a,0x04,0x00,0x01,0x17,0x12,0x14,0x08,0x08,0x08,0x33,0x3b,0x34, +0xe8,0xf1,0xe7,0x88,0x8e,0x83,0x51,0x56,0x47,0xbf,0xc5,0xb2,0xeb,0xf9,0xe1, +0xf1,0xff,0xed,0xe6,0xff,0xea,0x89,0xc1,0x98,0x77,0xbc,0x8f,0x6f,0xbf,0x90, +0x6d,0xc2,0x90,0x67,0xbb,0x8b,0x6c,0xbd,0x8e,0x75,0xc3,0x94,0x71,0xbd,0x93, +0x78,0xcb,0xa5,0x78,0xca,0xa7,0x7e,0xcb,0xa9,0x88,0xd0,0xac,0x8e,0xd3,0xae, +0x92,0xd5,0xb0,0x9b,0xdc,0xb5,0xa1,0xe2,0xbb,0xa9,0xe7,0xc3,0xb7,0xf0,0xcf, +0xc2,0xf5,0xd9,0xd2,0xfc,0xe5,0xea,0xff,0xf7,0xf3,0xff,0xf9,0xf8,0xff,0xf9, +0xf8,0xfc,0xf7,0xf9,0xff,0xf9,0xfa,0xff,0xf9,0xef,0xfd,0xf1,0xda,0xeb,0xdd, +0xd0,0xe6,0xd4,0xd3,0xee,0xda,0xd0,0xf2,0xda,0xca,0xef,0xd5,0xd5,0xfe,0xe3, +0xd4,0xff,0xe3,0xd5,0xff,0xe5,0xd5,0xff,0xe5,0xd6,0xff,0xe7,0xd8,0xff,0xe9, +0xdb,0xff,0xea,0xdc,0xff,0xe9,0xdd,0xff,0xe7,0xdf,0xff,0xe7,0xda,0xff,0xe7, +0xd3,0xff,0xe6,0xd2,0xff,0xe6,0xd7,0xff,0xeb,0xe1,0xff,0xef,0xe9,0xff,0xf1, +0xf0,0xff,0xf0,0xf9,0xff,0xf3,0xfc,0xfc,0xf0,0xfd,0xfb,0xf0,0xff,0xff,0xf8, +0xfb,0xff,0xf6,0xf4,0xfe,0xf2,0xf8,0xff,0xf9,0xf2,0xfb,0xf8,0xf5,0xfd,0xfc, +0xf6,0xff,0xff,0xf6,0xff,0xff,0xf4,0xff,0xff,0xf3,0xff,0xfe,0xf0,0xfe,0xfc, +0xed,0xfe,0xfb,0xeb,0xfe,0xfb,0xe9,0xfe,0xfb,0xe9,0xfe,0xfb,0xe8,0xff,0xfb, +0xe5,0xfe,0xfa,0xe7,0xff,0xfc,0xea,0xff,0xff,0xec,0xff,0xff,0xf3,0xff,0xff, +0xf6,0xff,0xff,0xf6,0xfd,0xff,0xf8,0xfb,0xff,0xfe,0xfc,0xff,0xff,0xfc,0xff, +0xff,0xf9,0xff,0xff,0xf5,0xff,0xff,0xf9,0xff,0xff,0xf8,0xff,0xff,0xf5,0xff, +0xff,0xf3,0xff,0xff,0xf7,0xff,0xff,0xf9,0xff,0xff,0xfa,0xff,0xff,0xf9,0xff, +0xff,0xfa,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf7,0xff,0xfe,0xf6,0xfd, +0xfc,0xf8,0xfe,0xf9,0xf9,0xff,0xf9,0xfc,0xff,0xf6,0xf9,0xfd,0xf5,0xfa,0xfd, +0xf5,0xfa,0xfd,0xf5,0xfa,0xfd,0xf5,0xfa,0xfd,0xf6,0xf9,0xfd,0xf6,0xf9,0xfd, +0xf8,0xf9,0xfd,0xfd,0xff,0xff,0xf8,0xfa,0xfb,0xfb,0xfc,0xff,0xfb,0xfe,0xff, +0xf6,0xf9,0xfe,0xfb,0xfd,0xff,0xfb,0xfd,0xff,0xfb,0xfa,0xff,0xfd,0xfa,0xff, +0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xf9,0xff, +0xff,0xf9,0xff,0xfd,0xfe,0xfa,0xde,0xff,0xdf,0x8d,0xbc,0x8e,0x6f,0x99,0x70, +0x78,0x9c,0x78,0xd4,0xef,0xd5,0xf0,0xff,0xf0,0xf7,0xff,0xf5,0xff,0xff,0xfc, +0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xfe,0xfe, +0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfc,0xfe,0xfe,0xfc,0xff,0xfd, +0xfb,0xff,0xfc,0xfa,0xff,0xfb,0xef,0xfd,0xf1,0xf3,0xff,0xf6,0xec,0xff,0xef, +0xcb,0xe8,0xcf,0x79,0x97,0x7e,0x8a,0xa4,0x8d,0xf2,0xfe,0xf2,0xf6,0xfd,0xf6, +0xf9,0xfd,0xf8,0xfa,0xfe,0xf9,0xfc,0xff,0xfb,0xfd,0xff,0xfe,0xff,0xff,0xfe, +0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xf3,0xf1,0xf1,0xf8,0xf6,0xf6, +0xff,0xff,0xff,0xea,0xe8,0xe8,0xb8,0xb5,0xb7,0x93,0x91,0x91,0x8d,0x8e,0x8c, +0xd9,0xda,0xd6,0xff,0xff,0xfb,0xff,0xff,0xf9,0xf3,0xed,0xe2,0xff,0xff,0xf5, +0xf2,0xf6,0xe3,0xf4,0xff,0xec,0xe4,0xff,0xe5,0xd8,0xfe,0xe0,0xd8,0xff,0xe6, +0xd9,0xff,0xea,0xd4,0xff,0xe6,0xd6,0xff,0xe8,0xdc,0xff,0xed,0xd6,0xff,0xeb, +0xcb,0xff,0xec,0xc8,0xff,0xec,0xd0,0xff,0xef,0xdb,0xff,0xf3,0xe0,0xff,0xf2, +0xdc,0xff,0xeb,0xde,0xfe,0xeb,0xe4,0xff,0xf3,0xe2,0xff,0xf1,0xea,0xff,0xf8, +0xec,0xff,0xfb,0xec,0xfd,0xf9,0xf4,0xfc,0xfc,0xf6,0xf7,0xfb,0xfa,0xf3,0xfa, +0xff,0xfa,0xff,0xff,0xf8,0xfe,0xff,0xf6,0xf9,0xff,0xfe,0xff,0xff,0xff,0xfe, +0xfe,0xfc,0xfb,0xfd,0xfe,0xfa,0xfb,0xff,0xfb,0xfa,0xff,0xf9,0xf5,0xff,0xf6, +0xf7,0xff,0xf8,0xf7,0xff,0xfa,0xf7,0xff,0xfa,0xf8,0xff,0xfc,0xf8,0xff,0xfc, +0xfa,0xff,0xfe,0xf8,0xfe,0xf9,0xf8,0xfe,0xf3,0xfd,0xff,0xf7,0xfa,0xff,0xf8, +0xf2,0xff,0xf6,0xf1,0xff,0xf9,0xf1,0xff,0xf9,0xf3,0xff,0xfb,0xee,0xfb,0xf3, +0xf4,0xfa,0xf5,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xfd,0xfd,0xff,0xff, +0xf9,0xff,0xfe,0xef,0xfb,0xfb,0xf6,0xff,0xff,0xfd,0xfc,0xff,0xff,0xfc,0xff, +0xff,0xfc,0xff,0xff,0xfd,0xff,0xfe,0xfa,0xff,0xfb,0xf9,0xff,0xfc,0xfc,0xff, +0xfb,0xfe,0xff,0xfa,0xfe,0xff,0xf8,0xfe,0xff,0xf7,0xfd,0xff,0xf4,0xfd,0xff, +0xf2,0xfd,0xff,0xf2,0xfe,0xff,0xf1,0xfd,0xff,0xf3,0xfc,0xff,0xf4,0xf7,0xfc, +0xf9,0xf7,0xfd,0xfe,0xf9,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff, +0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xf3,0xff,0xff,0xf9,0xff,0xff,0xfa,0xff, +0xff,0xf8,0xff,0xff,0xf8,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xfe,0xf3,0xfd, +0xff,0xf7,0xff,0xff,0xf8,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf8,0xff, +0xff,0xf8,0xff,0xff,0xf9,0xff,0xff,0xfb,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff, +0xfd,0xfd,0xff,0xfd,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff, +0xff,0xfc,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff, +0xf9,0xf7,0xfd,0xfb,0xfb,0xff,0xfb,0xfe,0xff,0xf9,0xfc,0xff,0xf9,0xfc,0xff, +0xfc,0xfc,0xff,0xfe,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfa,0xff, +0xff,0xf9,0xff,0xff,0xfe,0xfa,0xe7,0xff,0xe8,0x9a,0xc4,0x9b,0x77,0x9b,0x77, +0x8b,0xa9,0x8c,0xf3,0xff,0xf1,0xf5,0xff,0xf4,0xfb,0xff,0xf9,0xff,0xff,0xfc, +0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xff,0xff,0xff,0xfd,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfe,0xfc,0xfe,0xfe,0xfe,0xfe,0xfe, +0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff,0xfd,0xfc,0xff,0xfd, +0xfb,0xff,0xfc,0xf4,0xfc,0xf5,0xf1,0xfc,0xf2,0xf6,0xff,0xf8,0xf3,0xff,0xf7, +0xd8,0xee,0xdb,0x9c,0xb5,0xa1,0x70,0x84,0x71,0xdc,0xe7,0xdd,0xf1,0xf8,0xf1, +0xf2,0xf9,0xf2,0xf3,0xfa,0xf3,0xfb,0xff,0xfb,0xf7,0xfd,0xf8,0xef,0xf5,0xf0, +0xfb,0xff,0xfc,0xfc,0xff,0xfb,0xfc,0xff,0xfb,0xfc,0xff,0xfd,0xfc,0xff,0xfd, +0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xfe,0xfe,0xff,0xfd,0xff,0xff,0xf6,0xff, +0xff,0xf6,0xff,0xff,0xf6,0xff,0xff,0xf6,0xff,0xff,0xf6,0xff,0xff,0xf7,0xff, +0xff,0xf9,0xfe,0xff,0xfb,0xfc,0xff,0xfc,0xfc,0xff,0xfe,0xfa,0xfb,0xff,0xfa, +0xf8,0xff,0xfa,0xf8,0xff,0xfa,0xf8,0xff,0xfa,0xf8,0xff,0xfa,0xf3,0xfe,0xfb, +0xeb,0xfe,0xfb,0xec,0xfe,0xfd,0xf1,0xfd,0xfd,0xf8,0xfd,0xfe,0xfe,0xfd,0xff, +0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xfb,0xf9,0xff,0xfc,0xf9,0xff, +0xfc,0xf8,0xff,0xff,0xf8,0xff,0xff,0xf7,0xff,0xff,0xf7,0xff,0xff,0xf6,0xff, +0xff,0xf5,0xff,0xff,0xf4,0xff,0xff,0xf5,0xff,0xff,0xf7,0xff,0xff,0xf8,0xff, +0xff,0xf8,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xfa,0xff, +0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff, +0xff,0xf8,0xff,0xff,0xf9,0xff,0xff,0xf8,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff, +0xff,0xfb,0xff,0xfc,0xfc,0xff,0xfa,0xfd,0xff,0xf9,0xfc,0xff,0xfb,0xfc,0xff, +0xfc,0xfb,0xff,0xfc,0xfa,0xff,0xfc,0xfa,0xff,0xfa,0xfa,0xff,0xf5,0xfb,0xff, +0xf2,0xfb,0xff,0xee,0xfb,0xff,0xf2,0xfc,0xff,0xfe,0xfc,0xff,0xff,0xfc,0xff, +0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xfd,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xf8,0xff,0xff,0xf6,0xff,0xff, +0xf6,0xff,0xff,0xf4,0xff,0xff,0xf4,0xff,0xff,0xf6,0xff,0xff,0xf8,0xfe,0xfd, +0xf9,0xfe,0xfd,0xfc,0xff,0xfd,0xfc,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xfd, +0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfa,0xfd,0xfe,0xfa,0xfb,0xff,0xfa, +0xfa,0xff,0xfb,0xfa,0xff,0xfd,0xf9,0xff,0xfd,0xf9,0xff,0xfd,0xfa,0xff,0xfd, +0xfc,0xfa,0xf9,0xff,0xfc,0xf8,0xfd,0xfb,0xfa,0xfc,0xfd,0xf9,0xfb,0xfe,0xfc, +0xfa,0xff,0xfd,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfe, +0xf8,0xff,0xfe,0xf8,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfe, +0xfb,0xff,0xfe,0xfe,0xfc,0xfb,0xff,0xfd,0xfc,0xfe,0xff,0xfb,0xfa,0xff,0xfb, +0xf8,0xff,0xfc,0xf4,0xff,0xfc,0xf3,0xff,0xfc,0xf1,0xff,0xfc,0xf1,0xff,0xfc, +0xf2,0xff,0xfb,0xf1,0xff,0xf9,0xf5,0xff,0xf9,0xfa,0xff,0xfb,0xfd,0xff,0xfc, +0xff,0xff,0xfe,0xfb,0xff,0xf8,0xed,0xff,0xee,0x8a,0xab,0x89,0x90,0xae,0x91, +0xe1,0xf9,0xe1,0xf3,0xff,0xf3,0xf1,0xfd,0xf1,0xfd,0xff,0xfb,0xff,0xff,0xfe, +0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xff,0xff,0xff,0xfd,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfe,0xfc,0xfe,0xfe,0xfe,0xfe,0xfe, +0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff,0xfd,0xfe,0xff,0xfd, +0xfa,0xfe,0xf9,0xfa,0xff,0xfb,0xf7,0xff,0xf8,0xf5,0xff,0xf6,0xf4,0xff,0xf8, +0xe8,0xfb,0xec,0xbc,0xcf,0xbe,0x8f,0xa0,0x92,0xb3,0xbc,0xb2,0xf3,0xfa,0xf3, +0xfb,0xff,0xfb,0xf8,0xff,0xf9,0xf5,0xfd,0xf6,0xf8,0xff,0xf9,0xf8,0xff,0xf9, +0xf5,0xff,0xf6,0xf8,0xff,0xf9,0xf8,0xff,0xf9,0xfa,0xff,0xfb,0xfa,0xff,0xfb, +0xfa,0xff,0xfc,0xfb,0xff,0xfc,0xfa,0xff,0xfb,0xfc,0xfe,0xfe,0xff,0xfb,0xff, +0xff,0xfa,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf8,0xff,0xff,0xf9,0xff, +0xff,0xf8,0xff,0xff,0xf8,0xff,0xff,0xf6,0xfd,0xff,0xf7,0xfd,0xff,0xf8,0xfe, +0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, +0xfa,0xff,0xfe,0xf8,0xff,0xfe,0xfd,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff, +0xff,0xfb,0xff,0xff,0xfa,0xfe,0xff,0xfa,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff, +0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xf7,0xff, +0xff,0xf8,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xfe,0xfc,0xff, +0xfe,0xfc,0xff,0xfd,0xfc,0xff,0xfb,0xfc,0xff,0xfb,0xfc,0xff,0xfb,0xfc,0xff, +0xf9,0xfc,0xff,0xfb,0xfb,0xff,0xfc,0xfb,0xff,0xfc,0xfb,0xff,0xff,0xfb,0xff, +0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xfb,0xfe,0xff,0xfa,0xff,0xff,0xf8,0xfe,0xff,0xf8,0xfe,0xff, +0xf5,0xfb,0xff,0xf3,0xfb,0xff,0xf3,0xfa,0xff,0xf2,0xfb,0xff,0xef,0xfc,0xff, +0xeb,0xfc,0xff,0xeb,0xfe,0xff,0xee,0xff,0xff,0xf6,0xff,0xfa,0xfb,0xff,0xf7, +0xfb,0xff,0xf7,0xfc,0xff,0xf8,0xfa,0xff,0xf8,0xf9,0xff,0xf8,0xfa,0xff,0xf9, +0xf8,0xff,0xf9,0xf0,0xfe,0xf3,0xee,0xfe,0xf3,0xed,0xfe,0xf3,0xec,0xff,0xf4, +0xec,0xff,0xf4,0xec,0xff,0xf4,0xeb,0xff,0xf5,0xeb,0xff,0xf4,0xf0,0xff,0xf6, +0xf2,0xff,0xf4,0xf1,0xff,0xf3,0xf1,0xff,0xf2,0xf1,0xff,0xf1,0xf0,0xff,0xee, +0xf0,0xff,0xee,0xf0,0xff,0xee,0xf0,0xff,0xee,0xf0,0xff,0xee,0xed,0xff,0xed, +0xeb,0xff,0xed,0xea,0xff,0xed,0xe7,0xff,0xec,0xe7,0xff,0xec,0xe7,0xff,0xec, +0xf3,0xff,0xf2,0xf3,0xff,0xf2,0xf2,0xff,0xf1,0xef,0xff,0xf0,0xee,0xff,0xf1, +0xea,0xff,0xef,0xe9,0xff,0xee,0xe7,0xff,0xee,0xe9,0xff,0xf1,0xe8,0xff,0xf1, +0xe9,0xff,0xf1,0xe9,0xff,0xf1,0xe9,0xff,0xf1,0xe9,0xff,0xf1,0xeb,0xff,0xf1, +0xed,0xff,0xf1,0xf4,0xff,0xf3,0xf6,0xff,0xf2,0xf0,0xff,0xf0,0xec,0xff,0xef, +0xe6,0xff,0xed,0xe1,0xff,0xe9,0xde,0xff,0xe8,0xdb,0xff,0xe6,0xd5,0xfc,0xe3, +0xdc,0xff,0xe8,0xe4,0xff,0xee,0xec,0xff,0xf2,0xee,0xff,0xf3,0xe9,0xff,0xec, +0xe5,0xf8,0xe5,0xde,0xf3,0xdd,0xc7,0xe2,0xc8,0xb0,0xcb,0xb1,0xcb,0xe3,0xcb, +0xf0,0xff,0xf0,0xef,0xfc,0xee,0xf8,0xff,0xf7,0xfd,0xff,0xfc,0xfb,0xfb,0xfb, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xff,0xff, +0xfd,0xff,0xff,0xfd,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfc,0xfe,0xfe, +0xfc,0xfe,0xfe,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xfe,0xfd,0xfe,0xff,0xfd, +0xf9,0xfa,0xf6,0xfd,0xff,0xfc,0xfb,0xff,0xfc,0xf2,0xfa,0xf3,0xf6,0xff,0xf9, +0xf6,0xff,0xf9,0xe0,0xee,0xe2,0xbc,0xca,0xbf,0x9e,0xa6,0x9f,0xe3,0xea,0xe5, +0xfa,0xff,0xfb,0xea,0xf5,0xed,0xe2,0xf0,0xe5,0xf2,0xff,0xf6,0xf4,0xff,0xf7, +0xf2,0xff,0xf6,0xed,0xff,0xf1,0xee,0xff,0xf2,0xf0,0xff,0xf3,0xf1,0xff,0xf4, +0xf2,0xff,0xf6,0xf5,0xff,0xf7,0xf6,0xff,0xf9,0xf3,0xff,0xfc,0xec,0xfe,0xfd, +0xea,0xfd,0xff,0xed,0xfe,0xff,0xf1,0xfe,0xff,0xf3,0xff,0xff,0xf7,0xff,0xff, +0xfa,0xff,0xff,0xfb,0xff,0xff,0xf9,0xfe,0xfd,0xfb,0xfe,0xfc,0xfc,0xff,0xfd, +0xfa,0xff,0xfd,0xfb,0xff,0xfe,0xfb,0xff,0xfc,0xfb,0xff,0xfe,0xf8,0xff,0xf9, +0xf1,0xff,0xf0,0xef,0xff,0xec,0xf5,0xff,0xef,0xf9,0xff,0xef,0xfd,0xff,0xf1, +0xff,0xff,0xf2,0xfd,0xff,0xf4,0xfa,0xff,0xf5,0xf2,0xff,0xf1,0xee,0xff,0xf4, +0xec,0xff,0xf4,0xea,0xff,0xf4,0xec,0xff,0xf5,0xee,0xff,0xf5,0xf1,0xff,0xf5, +0xef,0xff,0xf5,0xec,0xff,0xf7,0xea,0xff,0xf7,0xea,0xff,0xf7,0xe8,0xff,0xf5, +0xe8,0xff,0xf4,0xe7,0xff,0xf1,0xe7,0xff,0xf1,0xe7,0xff,0xf1,0xe8,0xff,0xf2, +0xe8,0xff,0xf4,0xea,0xff,0xf5,0xea,0xff,0xf7,0xea,0xff,0xf8,0xec,0xff,0xf8, +0xec,0xff,0xf9,0xeb,0xff,0xf7,0xe7,0xff,0xee,0xe7,0xff,0xec,0xe7,0xff,0xee, +0xe6,0xff,0xee,0xe5,0xff,0xed,0xe5,0xff,0xed,0xe5,0xff,0xee,0xe5,0xff,0xee, +0xea,0xff,0xf3,0xe9,0xff,0xf2,0xe9,0xff,0xf4,0xe8,0xff,0xf3,0xe7,0xff,0xf2, +0xe7,0xff,0xf3,0xe6,0xff,0xf2,0xe6,0xff,0xef,0xe7,0xff,0xeb,0xe9,0xff,0xe8, +0xe8,0xff,0xe7,0xe8,0xff,0xe7,0xe5,0xff,0xe6,0xe4,0xff,0xe6,0xe3,0xff,0xe5, +0xe1,0xff,0xe5,0xe6,0xff,0xea,0xe4,0xff,0xea,0xe4,0xff,0xea,0xe1,0xff,0xe9, +0xe0,0xff,0xe8,0xde,0xff,0xe8,0xdd,0xff,0xe7,0xdd,0xff,0xe6,0xd8,0xff,0xdf, +0xd8,0xff,0xde,0xd7,0xff,0xdd,0xd6,0xff,0xda,0xd6,0xff,0xd9,0xd4,0xff,0xd7, +0xd3,0xff,0xd4,0xd2,0xff,0xd3,0xce,0xff,0xd1,0xcd,0xfe,0xd0,0xca,0xfe,0xcf, +0xc7,0xfd,0xce,0xc6,0xfb,0xcf,0xc5,0xfa,0xce,0xc4,0xf9,0xcd,0xc4,0xf9,0xcd, +0xbd,0xf0,0xc4,0xbc,0xef,0xc3,0xbb,0xee,0xc2,0xb9,0xec,0xc0,0xb7,0xe9,0xbf, +0xb3,0xe8,0xbd,0xb2,0xe7,0xbc,0xb1,0xe6,0xbb,0xab,0xdf,0xb7,0xa9,0xde,0xb6, +0xa8,0xdc,0xb4,0xa5,0xd9,0xb1,0xa2,0xd6,0xae,0xa0,0xd4,0xac,0xa0,0xd2,0xaa, +0xa0,0xcf,0xa8,0xa1,0xca,0xa4,0xa2,0xc9,0xa3,0x9c,0xc8,0xa1,0x99,0xc7,0x9d, +0x92,0xc4,0x9a,0x8d,0xc4,0x97,0x89,0xc2,0x95,0x86,0xc2,0x92,0x82,0xbd,0x90, +0x81,0xbc,0x8f,0x80,0xb9,0x8c,0x7d,0xb2,0x87,0x7b,0xad,0x85,0x80,0xad,0x86, +0x86,0xb1,0x8c,0x90,0xb5,0x93,0xbe,0xd8,0xc0,0xdb,0xef,0xdc,0xf4,0xff,0xf5, +0xf8,0xff,0xf7,0xf1,0xfb,0xef,0xfb,0xff,0xfb,0xfd,0xff,0xfe,0xf9,0xf9,0xf9, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xff,0xff, +0xfd,0xff,0xff,0xfd,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfc,0xfe,0xfe, +0xfc,0xfe,0xfe,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd, +0xfb,0xfc,0xf8,0xff,0xff,0xfc,0xfc,0xff,0xfb,0xf5,0xfb,0xf6,0xf9,0xff,0xfb, +0xf8,0xff,0xfb,0xf4,0xff,0xf7,0xe1,0xec,0xe4,0xaa,0xb4,0xae,0xcc,0xd6,0xd0, +0xed,0xf8,0xf0,0xf6,0xff,0xf9,0xf4,0xff,0xf8,0xf1,0xff,0xf7,0xed,0xff,0xf3, +0xea,0xff,0xef,0xea,0xff,0xf1,0xea,0xff,0xf1,0xea,0xff,0xf1,0xea,0xff,0xf1, +0xec,0xff,0xf2,0xed,0xff,0xf3,0xed,0xff,0xf3,0xea,0xff,0xf5,0xe0,0xff,0xf5, +0xdc,0xff,0xf6,0xde,0xff,0xf5,0xde,0xff,0xf5,0xe0,0xff,0xf5,0xe1,0xff,0xf5, +0xe3,0xff,0xf5,0xe7,0xff,0xf5,0xe8,0xff,0xf3,0xeb,0xff,0xf3,0xea,0xff,0xf2, +0xeb,0xff,0xf1,0xe9,0xff,0xed,0xe8,0xfe,0xec,0xe7,0xfd,0xeb,0xe2,0xff,0xe6, +0xe3,0xff,0xe2,0xe3,0xff,0xde,0xe7,0xff,0xdf,0xea,0xff,0xdf,0xec,0xff,0xe2, +0xec,0xff,0xe2,0xea,0xff,0xe5,0xe7,0xff,0xe5,0xe0,0xff,0xe5,0xdc,0xff,0xe4, +0xd8,0xff,0xe4,0xd5,0xff,0xe2,0xd7,0xff,0xe2,0xd8,0xff,0xe0,0xd9,0xff,0xdf, +0xd7,0xff,0xdf,0xd4,0xff,0xe1,0xd0,0xff,0xe0,0xd0,0xff,0xe0,0xcf,0xff,0xde, +0xce,0xff,0xdb,0xcd,0xff,0xd9,0xce,0xff,0xd8,0xce,0xff,0xd8,0xc8,0xff,0xd2, +0xc8,0xfe,0xd3,0xc7,0xfb,0xd3,0xc5,0xf9,0xd1,0xc3,0xf6,0xd0,0xc2,0xf5,0xd0, +0xc0,0xf2,0xd0,0xbf,0xf2,0xcd,0xbf,0xf3,0xcb,0xbf,0xf4,0xc9,0xc0,0xf2,0xca, +0xc0,0xef,0xc8,0xc1,0xee,0xc7,0xbf,0xec,0xc5,0xbf,0xeb,0xc4,0xbf,0xea,0xc5, +0xb6,0xe1,0xbc,0xb5,0xe0,0xbb,0xb6,0xdf,0xba,0xb6,0xdc,0xb8,0xb6,0xd9,0xb7, +0xb4,0xd7,0xb5,0xb5,0xd6,0xb4,0xb4,0xd5,0xb3,0xa8,0xcf,0xa9,0xa5,0xce,0xa8, +0xa4,0xcd,0xa7,0xa2,0xcb,0xa5,0xa0,0xc9,0xa3,0x9c,0xc8,0xa1,0x9b,0xc7,0xa0, +0x9a,0xc6,0x9f,0x8d,0xba,0x93,0x8c,0xb9,0x92,0x89,0xb8,0x91,0x87,0xb6,0x8f, +0x85,0xb4,0x8d,0x81,0xb3,0x8b,0x82,0xb1,0x8a,0x7f,0xb1,0x87,0x76,0xab,0x7f, +0x75,0xac,0x7d,0x76,0xad,0x7c,0x74,0xac,0x7b,0x73,0xac,0x79,0x73,0xad,0x77, +0x72,0xac,0x75,0x70,0xad,0x75,0x6c,0xa9,0x71,0x6a,0xa9,0x71,0x69,0xa8,0x70, +0x69,0xa7,0x71,0x66,0xa7,0x70,0x66,0xa6,0x72,0x65,0xa5,0x71,0x65,0xa5,0x71, +0x65,0xa3,0x6d,0x65,0xa3,0x6d,0x66,0xa4,0x70,0x66,0xa4,0x70,0x66,0xa4,0x70, +0x66,0xa4,0x70,0x66,0xa3,0x71,0x66,0xa3,0x71,0x69,0xa6,0x74,0x69,0xa6,0x74, +0x68,0xa4,0x74,0x67,0xa3,0x73,0x66,0xa2,0x72,0x64,0xa0,0x70,0x66,0xa0,0x70, +0x67,0x9e,0x6f,0x6c,0xa0,0x71,0x6c,0xa0,0x71,0x6b,0xa1,0x72,0x6a,0xa2,0x71, +0x68,0xa3,0x71,0x67,0xa5,0x71,0x65,0xa5,0x71,0x63,0xa6,0x6f,0x65,0xa8,0x71, +0x66,0xa6,0x72,0x66,0xa4,0x70,0x68,0xa3,0x71,0x71,0xa8,0x79,0x87,0xbc,0x90, +0xa3,0xd5,0xab,0xbc,0xe6,0xc3,0xe3,0xfa,0xe4,0xf3,0xff,0xf4,0xf8,0xff,0xf8, +0xfa,0xff,0xf9,0xfb,0xff,0xfb,0xfb,0xff,0xfa,0xfb,0xfb,0xfb,0xfe,0xfe,0xfe, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff, +0xfb,0xff,0xff,0xfb,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfc,0xfe,0xfe, +0xfc,0xfe,0xfe,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd, +0xff,0xff,0xfe,0xfb,0xfc,0xfa,0xfa,0xfb,0xf9,0xfc,0xff,0xfd,0xfb,0xff,0xfe, +0xf9,0xff,0xfd,0xf6,0xfd,0xfa,0xf4,0xfd,0xfa,0xec,0xf5,0xf2,0xe2,0xec,0xe6, +0xe2,0xef,0xe7,0xe9,0xf9,0xee,0xe2,0xf6,0xe9,0xd3,0xed,0xdb,0xd4,0xf0,0xdc, +0xda,0xfa,0xe1,0xde,0xff,0xe7,0xdd,0xff,0xe5,0xdb,0xfe,0xe3,0xd7,0xfa,0xdf, +0xd4,0xf7,0xdd,0xd1,0xf4,0xda,0xd1,0xf1,0xd8,0xc9,0xf1,0xd5,0xc0,0xf3,0xd1, +0xbb,0xf4,0xce,0xb7,0xf2,0xcc,0xb2,0xef,0xc9,0xaf,0xee,0xc7,0xac,0xeb,0xc4, +0xab,0xe8,0xc2,0xae,0xe7,0xc1,0xae,0xe2,0xbd,0xaf,0xe2,0xbd,0xb2,0xe1,0xbb, +0xb1,0xe0,0xba,0xaf,0xde,0xb8,0xae,0xdd,0xb7,0xad,0xdc,0xb6,0xa8,0xdd,0xb1, +0x97,0xd2,0x98,0x96,0xd2,0x95,0x97,0xcf,0x94,0x97,0xcd,0x92,0x96,0xc8,0x92, +0x93,0xc5,0x8f,0x8d,0xc2,0x90,0x89,0xc2,0x8f,0x85,0xc5,0x91,0x80,0xc4,0x8f, +0x7a,0xc2,0x8d,0x77,0xc0,0x88,0x77,0xbc,0x83,0x75,0xb9,0x7e,0x77,0xb7,0x7c, +0x76,0xb6,0x7b,0x6e,0xb2,0x79,0x6d,0xb2,0x79,0x6d,0xb1,0x78,0x6c,0xb0,0x75, +0x6b,0xaf,0x74,0x6a,0xaf,0x72,0x6b,0xae,0x71,0x6b,0xae,0x71,0x6b,0xae,0x71, +0x6b,0xae,0x71,0x6d,0xad,0x72,0x6c,0xac,0x71,0x6b,0xaa,0x72,0x6a,0xa8,0x72, +0x6a,0xa8,0x74,0x69,0xa7,0x71,0x62,0xa3,0x6c,0x64,0xa3,0x6b,0x66,0xa3,0x6b, +0x68,0xa2,0x6b,0x6a,0xa1,0x6a,0x6c,0xa0,0x6a,0x6e,0xa0,0x6a,0x6d,0x9e,0x6a, +0x70,0xa1,0x6d,0x6f,0xa0,0x6c,0x70,0xa0,0x6c,0x71,0x9f,0x6b,0x72,0x9c,0x6c, +0x76,0x9c,0x6c,0x76,0x9a,0x6b,0x76,0x9a,0x6c,0x72,0x9d,0x72,0x6f,0x9b,0x72, +0x6f,0x9b,0x72,0x6e,0x9a,0x71,0x6d,0x99,0x70,0x6b,0x99,0x6f,0x6b,0x99,0x6f, +0x6b,0x99,0x6f,0x74,0xa2,0x78,0x74,0xa2,0x78,0x73,0xa1,0x77,0x72,0xa0,0x76, +0x72,0xa0,0x76,0x6f,0x9f,0x75,0x70,0x9e,0x74,0x6e,0x9e,0x74,0x6f,0xa1,0x77, +0x6d,0xa2,0x77,0x6f,0xa2,0x76,0x6e,0xa3,0x77,0x6e,0xa4,0x75,0x6f,0xa6,0x75, +0x6f,0xa7,0x74,0x6f,0xa9,0x73,0x6f,0xa9,0x73,0x6f,0xa8,0x75,0x6f,0xa8,0x75, +0x70,0xa8,0x77,0x70,0xa7,0x78,0x71,0xa8,0x7b,0x71,0xa8,0x7b,0x72,0xa9,0x7c, +0x7c,0xb6,0x86,0x7d,0xb8,0x86,0x7f,0xb7,0x86,0x81,0xb9,0x88,0x82,0xb9,0x8a, +0x83,0xba,0x8b,0x84,0xbb,0x8c,0x86,0xbc,0x8d,0x8b,0xc0,0x94,0x8d,0xc2,0x96, +0x8f,0xc4,0x99,0x93,0xc8,0x9d,0x97,0xcb,0xa3,0x9b,0xcf,0xa7,0x9f,0xd1,0xa9, +0xa1,0xd3,0xab,0xa2,0xd4,0xac,0xa3,0xd5,0xad,0xa5,0xd7,0xad,0xa5,0xda,0xae, +0xa7,0xdc,0xb0,0xaa,0xe0,0xb1,0xab,0xe1,0xb2,0xac,0xe2,0xb3,0xaf,0xe5,0xb6, +0xb4,0xe9,0xbd,0xbd,0xef,0xc5,0xc2,0xf4,0xcc,0xc9,0xf8,0xd2,0xd5,0xff,0xdd, +0xe2,0xff,0xec,0xea,0xff,0xf1,0xf4,0xff,0xf7,0xfa,0xff,0xf9,0xf3,0xfa,0xf3, +0xf6,0xfa,0xf4,0xfd,0xff,0xfc,0xfc,0xfd,0xfb,0xf7,0xf7,0xf7,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff, +0xfb,0xff,0xff,0xfb,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfc,0xfe,0xfe, +0xfc,0xfe,0xfe,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd, +0xff,0xff,0xfe,0xfa,0xf8,0xf7,0xfa,0xf8,0xf7,0xff,0xff,0xfe,0xfd,0xff,0xfe, +0xf4,0xf9,0xf8,0xf3,0xf8,0xf7,0xf9,0xff,0xfe,0xf4,0xfc,0xfb,0xe2,0xed,0xea, +0xd0,0xde,0xd8,0xb4,0xc5,0xba,0x90,0xa7,0x99,0x82,0x9e,0x8b,0x84,0xa6,0x8e, +0x81,0xa7,0x8b,0x74,0x9d,0x7e,0x74,0x9f,0x7e,0x74,0x9f,0x7e,0x74,0x9f,0x7e, +0x74,0x9e,0x7f,0x74,0x9e,0x7f,0x75,0x9e,0x7f,0x74,0x9f,0x7e,0x6f,0x9c,0x75, +0x6b,0x9e,0x72,0x68,0x9f,0x72,0x65,0xa0,0x74,0x61,0xa0,0x74,0x61,0xa1,0x77, +0x62,0xa1,0x77,0x64,0xa0,0x77,0x67,0x9f,0x76,0x6a,0x9e,0x76,0x6c,0x9e,0x74, +0x6f,0x9f,0x75,0x6f,0x9f,0x75,0x70,0xa0,0x76,0x6e,0xa0,0x76,0x6c,0xa2,0x73, +0x6f,0xa9,0x73,0x6f,0xa9,0x72,0x72,0xa8,0x73,0x74,0xa7,0x75,0x76,0xa6,0x76, +0x74,0xa5,0x77,0x72,0xa5,0x79,0x6f,0xa6,0x79,0x63,0xa1,0x73,0x60,0xa1,0x73, +0x5e,0xa3,0x71,0x61,0xa4,0x71,0x64,0xa5,0x6e,0x68,0xa5,0x6d,0x6d,0xa4,0x6d, +0x6b,0xa4,0x6d,0x6b,0xa6,0x73,0x69,0xa6,0x74,0x69,0xa7,0x73,0x6a,0xa5,0x72, +0x69,0xa5,0x6f,0x6b,0xa5,0x6e,0x6a,0xa4,0x6d,0x6a,0xa5,0x6b,0x73,0xad,0x76, +0x73,0xad,0x76,0x75,0xae,0x77,0x76,0xb0,0x7a,0x79,0xb1,0x7c,0x79,0xb2,0x7f, +0x7b,0xb3,0x82,0x7b,0xb3,0x82,0x89,0xc1,0x90,0x89,0xc1,0x90,0x8e,0xc2,0x92, +0x94,0xc4,0x94,0x97,0xc5,0x96,0x9b,0xc7,0x98,0x9c,0xc8,0x99,0x9d,0xc9,0x9a, +0xa8,0xd6,0xa8,0xa8,0xd6,0xa8,0xaa,0xd8,0xaa,0xad,0xd8,0xab,0xb3,0xda,0xad, +0xb6,0xda,0xae,0xbb,0xdc,0xb0,0xbb,0xdb,0xb2,0xbf,0xe3,0xbf,0xbe,0xe3,0xc1, +0xbf,0xe4,0xc4,0xc1,0xe6,0xc4,0xc2,0xe7,0xc7,0xc4,0xe9,0xc7,0xc5,0xea,0xca, +0xc6,0xeb,0xc9,0xc6,0xeb,0xcb,0xc7,0xec,0xca,0xca,0xec,0xcd,0xcc,0xef,0xcd, +0xcd,0xef,0xd0,0xcf,0xf2,0xd0,0xd0,0xf2,0xd3,0xcf,0xf4,0xd4,0xd0,0xf4,0xd6, +0xcf,0xf5,0xd9,0xd0,0xf6,0xd8,0xd1,0xf8,0xd8,0xd0,0xfa,0xd7,0xd1,0xfc,0xd7, +0xd2,0xfe,0xd7,0xd2,0xfe,0xd7,0xd2,0xfe,0xd7,0xd2,0xfe,0xd7,0xd5,0xfd,0xda, +0xd6,0xfe,0xdb,0xd8,0xfe,0xe0,0xd9,0xff,0xe1,0xda,0xff,0xe4,0xda,0xff,0xe2, +0xda,0xff,0xdf,0xd8,0xff,0xdf,0xda,0xff,0xdf,0xdb,0xff,0xe0,0xdb,0xff,0xe0, +0xdd,0xff,0xe2,0xde,0xff,0xe3,0xe0,0xff,0xe3,0xdf,0xff,0xe3,0xe0,0xff,0xe4, +0xe3,0xff,0xe7,0xe3,0xff,0xe9,0xe7,0xff,0xec,0xe7,0xff,0xee,0xea,0xff,0xef, +0xe9,0xff,0xf0,0xe1,0xff,0xeb,0xdf,0xff,0xea,0xe0,0xff,0xeb,0xe2,0xff,0xec, +0xe5,0xff,0xeb,0xe7,0xff,0xed,0xea,0xff,0xed,0xec,0xff,0xed,0xe8,0xff,0xea, +0xec,0xff,0xf0,0xed,0xff,0xf1,0xed,0xff,0xf2,0xe9,0xff,0xf1,0xe7,0xfe,0xef, +0xe5,0xfc,0xee,0xea,0xfb,0xf0,0xf2,0xfa,0xf3,0xfd,0xff,0xfc,0xfb,0xff,0xfa, +0xf7,0xf8,0xf6,0xfc,0xfd,0xfb,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff, +0xfb,0xff,0xff,0xfa,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfe,0xf9,0xff,0xfe,0xfa,0xff,0xfe, +0xfc,0xfe,0xfe,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd, +0xff,0xfe,0xfd,0xfd,0xfb,0xfa,0xfc,0xfa,0xfa,0xfd,0xfd,0xfd,0xfa,0xfc,0xfc, +0xf5,0xf9,0xfa,0xf6,0xfa,0xfb,0xf7,0xfd,0xfc,0xf8,0xff,0xff,0xf6,0xff,0xfe, +0xf4,0xff,0xfc,0xf1,0xff,0xf9,0xcf,0xe9,0xd9,0xb7,0xd6,0xc1,0xa0,0xc5,0xab, +0x81,0xab,0x8c,0x7a,0xa7,0x86,0x79,0xa9,0x85,0x7a,0xad,0x88,0x7e,0xb1,0x8c, +0x83,0xb6,0x91,0x86,0xb9,0x94,0x8b,0xba,0x99,0x94,0xbc,0x99,0xa8,0xc0,0x9e, +0xad,0xc0,0x9f,0xaa,0xc3,0xa1,0xa7,0xc6,0xa5,0xa5,0xca,0xa8,0xa4,0xcd,0xad, +0xa7,0xd0,0xb0,0xaa,0xd1,0xb1,0xb3,0xd5,0xb6,0xb5,0xd5,0xb6,0xb7,0xd6,0xb7, +0xba,0xd6,0xb8,0xbb,0xd8,0xb7,0xbc,0xd9,0xb8,0xba,0xd9,0xb8,0xba,0xda,0xbb, +0xbf,0xde,0xc1,0xc0,0xdf,0xc4,0xc5,0xdf,0xc7,0xc9,0xe0,0xca,0xce,0xe1,0xd0, +0xcf,0xe4,0xd5,0xce,0xe5,0xd6,0xcd,0xe7,0xd9,0xc7,0xe8,0xd9,0xc7,0xeb,0xda, +0xc9,0xee,0xda,0xce,0xf2,0xda,0xd8,0xf7,0xdc,0xe0,0xf9,0xdd,0xe8,0xfc,0xdf, +0xe7,0xfd,0xe1,0xe6,0xff,0xec,0xe2,0xff,0xee,0xe1,0xff,0xeb,0xe1,0xff,0xeb, +0xe3,0xff,0xea,0xe5,0xff,0xe9,0xe5,0xff,0xe7,0xe5,0xff,0xe6,0xe2,0xff,0xe4, +0xe3,0xff,0xe5,0xe5,0xff,0xe6,0xe6,0xff,0xea,0xe8,0xff,0xeb,0xe9,0xff,0xee, +0xea,0xff,0xef,0xeb,0xff,0xf1,0xe2,0xfe,0xea,0xe4,0xff,0xeb,0xe9,0xff,0xec, +0xed,0xff,0xee,0xf0,0xff,0xf0,0xf2,0xff,0xf2,0xf3,0xff,0xf4,0xf1,0xff,0xf4, +0xe1,0xfc,0xe8,0xde,0xfd,0xe8,0xdf,0xfd,0xea,0xe1,0xff,0xec,0xe5,0xff,0xee, +0xe7,0xff,0xef,0xec,0xff,0xf0,0xef,0xff,0xf1,0xe9,0xfc,0xeb,0xea,0xfd,0xec, +0xeb,0xfe,0xef,0xed,0xff,0xef,0xef,0xff,0xf2,0xf1,0xff,0xf2,0xf2,0xff,0xf5, +0xf3,0xff,0xf4,0xed,0xfe,0xf0,0xed,0xff,0xee,0xf1,0xff,0xf2,0xf2,0xff,0xf1, +0xf4,0xff,0xf5,0xf5,0xff,0xf4,0xf6,0xff,0xf7,0xf6,0xff,0xf8,0xf3,0xff,0xf9, +0xf3,0xfe,0xfb,0xf2,0xff,0xfa,0xf3,0xff,0xfa,0xf3,0xff,0xf8,0xf4,0xff,0xf8, +0xf4,0xff,0xf7,0xf4,0xff,0xf5,0xf2,0xff,0xf5,0xf2,0xff,0xf5,0xf5,0xff,0xf8, +0xf6,0xff,0xf9,0xf8,0xff,0xfc,0xf8,0xff,0xfc,0xfa,0xff,0xfe,0xf8,0xff,0xfc, +0xf6,0xff,0xf7,0xf6,0xff,0xf6,0xf8,0xff,0xf6,0xf8,0xff,0xf6,0xf7,0xff,0xf5, +0xf8,0xff,0xf6,0xf8,0xff,0xf6,0xfa,0xff,0xf6,0xfd,0xff,0xfb,0xfd,0xff,0xfb, +0xff,0xff,0xfc,0xfc,0xff,0xfb,0xfc,0xfd,0xfb,0xf8,0xfb,0xf9,0xf9,0xf9,0xf9, +0xf4,0xf9,0xf8,0xf4,0xfe,0xfe,0xf2,0xff,0xfd,0xf4,0xff,0xfd,0xf4,0xff,0xfc, +0xf6,0xff,0xfa,0xf8,0xfe,0xf9,0xfa,0xfe,0xf9,0xfc,0xfd,0xf9,0xfd,0xfb,0xfa, +0xfc,0xfa,0xf9,0xfb,0xf8,0xfa,0xfb,0xf7,0xfc,0xfd,0xf8,0xff,0xff,0xfb,0xff, +0xff,0xfa,0xff,0xff,0xfc,0xff,0xf8,0xf7,0xf9,0xfc,0xfd,0xfb,0xff,0xff,0xfe, +0xfe,0xfc,0xfc,0xfd,0xfb,0xfb,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff, +0xfb,0xff,0xff,0xfa,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfe,0xf9,0xff,0xfe,0xfa,0xff,0xfe, +0xfa,0xff,0xfe,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd, +0xfd,0xf9,0xf8,0xff,0xff,0xfe,0xff,0xfe,0xfe,0xf7,0xf7,0xf7,0xf7,0xf6,0xf8, +0xfd,0xff,0xff,0xfb,0xff,0xff,0xf6,0xfb,0xfc,0xf7,0xff,0xfe,0xe2,0xf0,0xec, +0xeb,0xf9,0xf3,0xf1,0xff,0xf9,0xea,0xff,0xf5,0xe5,0xff,0xf1,0xe0,0xff,0xec, +0xce,0xfb,0xda,0xce,0xfd,0xdc,0xcc,0xff,0xda,0xcd,0xff,0xdb,0xce,0xff,0xdc, +0xd0,0xff,0xde,0xd2,0xff,0xe0,0xd4,0xff,0xe2,0xe0,0xff,0xe3,0xf7,0xff,0xe5, +0xfe,0xff,0xe5,0xf8,0xff,0xe6,0xf1,0xff,0xe6,0xeb,0xff,0xe6,0xe5,0xff,0xe6, +0xe4,0xff,0xe7,0xe4,0xff,0xe7,0xee,0xff,0xed,0xf0,0xff,0xed,0xf3,0xff,0xed, +0xf2,0xff,0xec,0xf2,0xff,0xea,0xf0,0xff,0xea,0xf0,0xff,0xea,0xef,0xff,0xed, +0xf3,0xff,0xf5,0xf4,0xff,0xf8,0xf6,0xff,0xfb,0xf7,0xff,0xfb,0xf8,0xff,0xfc, +0xf5,0xfd,0xfc,0xf2,0xfc,0xfc,0xef,0xfd,0xfc,0xec,0xfe,0xfd,0xea,0xff,0xfc, +0xea,0xff,0xfb,0xed,0xff,0xf9,0xf4,0xff,0xf6,0xf9,0xff,0xf3,0xff,0xff,0xf3, +0xfd,0xff,0xf3,0xf2,0xff,0xf9,0xed,0xff,0xfa,0xed,0xff,0xf9,0xed,0xff,0xf7, +0xf1,0xff,0xf7,0xf2,0xff,0xf6,0xf3,0xff,0xf6,0xf3,0xff,0xf4,0xf4,0xff,0xf5, +0xf4,0xff,0xf5,0xf4,0xff,0xf7,0xf4,0xff,0xf7,0xf4,0xff,0xf8,0xf4,0xff,0xf8, +0xf3,0xff,0xf9,0xf2,0xff,0xf8,0xf4,0xff,0xfc,0xf6,0xff,0xfc,0xf8,0xff,0xfc, +0xfa,0xff,0xfc,0xfd,0xff,0xfc,0xfb,0xff,0xfc,0xfa,0xff,0xfc,0xf6,0xff,0xfc, +0xf1,0xff,0xfc,0xed,0xff,0xfc,0xec,0xff,0xfe,0xea,0xff,0xfe,0xec,0xff,0xfd, +0xee,0xff,0xfd,0xf0,0xff,0xfd,0xf3,0xff,0xfb,0xf6,0xff,0xfc,0xf8,0xff,0xfb, +0xf8,0xff,0xfb,0xf8,0xff,0xfb,0xfa,0xff,0xfb,0xfa,0xff,0xfb,0xfa,0xff,0xfb, +0xfa,0xff,0xfb,0xfb,0xff,0xfb,0xfb,0xff,0xfb,0xfa,0xff,0xfa,0xfa,0xff,0xfa, +0xfc,0xff,0xfa,0xfc,0xff,0xfa,0xfb,0xff,0xf9,0xfb,0xfe,0xfc,0xfc,0xfd,0xff, +0xfc,0xfc,0xff,0xfa,0xfd,0xff,0xfa,0xfe,0xff,0xf9,0xfd,0xfe,0xf9,0xfe,0xfc, +0xf9,0xfe,0xfc,0xf9,0xff,0xfa,0xfc,0xff,0xfd,0xfc,0xff,0xfd,0xfe,0xfd,0xff, +0xfe,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xf9,0xff,0xff,0xfa,0xff, +0xfe,0xfb,0xfd,0xfe,0xfc,0xfb,0xff,0xfc,0xfd,0xff,0xfc,0xfd,0xff,0xfd,0xfe, +0xff,0xfd,0xfe,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff, +0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff, +0xff,0xfa,0xff,0xff,0xfb,0xff,0xfb,0xfc,0xff,0xfd,0xfc,0xff,0xff,0xfc,0xff, +0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xf9,0xff,0xff,0xfa,0xff, +0xff,0xf9,0xff,0xff,0xf7,0xff,0xff,0xf7,0xff,0xff,0xf6,0xff,0xff,0xf4,0xff, +0xff,0xf0,0xff,0xff,0xf1,0xff,0xff,0xfd,0xff,0xf6,0xf7,0xf5,0xf6,0xf4,0xf4, +0xff,0xff,0xff,0xff,0xfe,0xff,0xfd,0xfa,0xfc,0xfe,0xfb,0xfd,0xff,0xfd,0xff, +0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff, +0xfb,0xff,0xff,0xfa,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xfc,0xf2,0xe4,0xf4,0xea,0xd4,0xf4,0xe6,0xc4,0xf4,0xe2,0xc4, +0xf4,0xe2,0xcc,0xf4,0xea,0xdc,0xf4,0xf2,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe2,0xcc, +0xec,0xd2,0xa4,0xec,0xd2,0xac,0xec,0xd2,0xac,0xec,0xd2,0xac,0xec,0xd2,0xac, +0xec,0xd2,0xac,0xec,0xd2,0xac,0xec,0xd2,0xa4,0xf4,0xee,0xdc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xec,0xde,0xbc,0xec,0xd2,0xac,0xec,0xd2,0xac,0xec,0xd2,0xac, +0xec,0xd2,0xac,0xec,0xd2,0xa4,0xec,0xd6,0xa4,0xf4,0xf2,0xe4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf2,0xe4,0xf4,0xde,0xbc, +0xec,0xce,0xa4,0xe4,0xc6,0x94,0xe4,0xc6,0x94,0xe4,0xc6,0x94,0xe4,0xc6,0x94, +0xf4,0xe2,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xf4,0xde,0xc4,0xec,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c, +0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xf4,0xe2,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xea,0xd4,0xe4,0xce,0x9c,0xe4,0xca,0x9c, +0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xce,0x9c,0xe4,0xca,0x9c,0xf4,0xda,0xbc, +0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec, +0xec,0xce,0xa4,0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c, +0xe4,0xca,0x9c,0xec,0xce,0xa4,0xfc,0xf6,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xee,0xe4,0xec,0xce,0xa4,0xdc,0xae,0x64, +0xcc,0x96,0x3c,0xcc,0x8a,0x24,0xc4,0x86,0x1c,0xc4,0x82,0x14,0xc4,0x7e,0x0c, +0xc4,0x82,0x0c,0xc4,0x86,0x14,0xc4,0x8e,0x24,0xcc,0x96,0x3c,0xdc,0xae,0x64, +0xec,0xce,0x9c,0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xf2,0xe4,0xec,0xde,0xbc,0xec,0xd2,0xa4, +0xe4,0xca,0x94,0xe4,0xc6,0x94,0xe4,0xc6,0x94,0xe4,0xc2,0x8c,0xec,0xda,0xbc, +0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xe6,0xcc, +0xcc,0x92,0x2c,0xcc,0x7a,0x04,0xcc,0x82,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7e,0x04,0xc4,0x82,0x04,0xc4,0x76,0x04,0xd4,0x92,0x34,0xf4,0xe2,0xcc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xfc,0xcc,0x96,0x3c,0xcc,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7e,0x04,0xcc,0x82,0x04,0xc4,0x7a,0x04,0xec,0xce,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xf2,0xe4,0xe4,0xc6,0x94,0xd4,0x9e,0x4c,0xcc,0x86,0x14,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x86,0x0c, +0xdc,0xba,0x7c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xd4,0xaa,0x5c,0xd4,0x82,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, +0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xbe,0x84,0xc4,0x7e,0x04,0xcc,0x82,0x04, +0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x82,0x04,0xc4,0x76,0x04,0xcc,0x96,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, +0xcc,0x82,0x04,0xc4,0x7e,0x0c,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xec,0xde,0xbc,0xd4,0xaa,0x54,0xc4,0x82,0x14,0xcc,0x7a,0x04,0xcc,0x7e,0x04, +0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, +0xcc,0x7a,0x04,0xc4,0x7e,0x0c,0xdc,0xa6,0x54,0xec,0xd6,0xb4,0xfc,0xfa,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xf6,0xe4, +0xec,0xce,0xa4,0xdc,0xa2,0x4c,0xc4,0x86,0x14,0xc4,0x7a,0x04,0xcc,0x7e,0x04, +0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x82,0x0c,0xcc,0x76,0x04,0xdc,0xaa,0x5c, +0xfc,0xf2,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xec,0xd6,0xac,0xcc,0x96,0x3c,0xcc,0x82,0x0c,0xcc,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x76,0x04,0xd4,0x9e,0x4c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xe4,0xc6,0x94, +0xcc,0x8e,0x2c,0xc4,0x7a,0x04,0xcc,0x82,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c, +0xdc,0xba,0x7c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xbe,0x8c,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe6,0xd4,0xd4,0xa6,0x5c, +0xc4,0x82,0x0c,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x0c,0xd4,0xa2,0x54, +0xf4,0xe6,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xec,0xca,0x9c,0xcc,0x92,0x2c, +0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x72,0x04,0xdc,0xa6,0x5c, +0xfc,0xf2,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x7a,0x04,0xc4,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xbc,0x7a,0x04, +0xd4,0xaa,0x5c,0xfc,0xfa,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xea,0xd4,0xd4,0x9e,0x4c,0xc4,0x7a,0x04, +0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c, +0xdc,0xba,0x7c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd6,0xac,0xcc,0x8a,0x24,0xcc,0x7a,0x04, +0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04, +0xc4,0x86,0x1c,0xe4,0xc6,0x94,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xea,0xdc,0xd4,0xa2,0x54,0xc4,0x7e,0x04,0xcc,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x72,0x04,0xdc,0xaa,0x5c, +0xfc,0xf6,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xea,0xdc,0xd4,0x9a,0x3c,0xc4,0x76,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04, +0xcc,0x7e,0x04,0xdc,0xb2,0x6c,0xfc,0xfe,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xec,0xda,0xbc,0xcc,0x8e,0x2c,0xcc,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c, +0xdc,0xba,0x7c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xe4,0xca,0x94,0xcc,0x86,0x14,0xc4,0x7a,0x04,0xc4,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04, +0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xc4,0x82,0x0c,0xe4,0xba,0x7c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xf4,0xe2,0xc4,0xc4,0x8e,0x2c,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x72,0x04,0xdc,0xaa,0x5c, +0xfc,0xf6,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe2,0xc4,0xcc,0x92,0x2c, +0xc4,0x76,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xcc,0x7a,0x04,0xcc,0x82,0x0c,0xdc,0xbe,0x7c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xec,0xda,0xbc,0xcc,0x8e,0x24,0xcc,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c, +0xdc,0xba,0x7c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xe4,0xce,0xa4,0xcc,0x8a,0x1c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04, +0xcc,0x7e,0x04,0xcc,0x7a,0x04,0xc4,0x7e,0x0c,0xcc,0x8e,0x24,0xcc,0x92,0x34, +0xcc,0x92,0x34,0xcc,0x8a,0x24,0xc4,0x7e,0x0c,0xc4,0x7e,0x04,0xcc,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x82,0x0c,0xe4,0xbe,0x84,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xe2,0xcc, +0xc4,0x8a,0x24,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x72,0x04,0xdc,0xaa,0x5c, +0xfc,0xf6,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xf4,0xfc,0xfe,0xfc,0xec,0xd2,0xb4, +0xcc,0x8a,0x1c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x86,0x14,0xe4,0xca,0x9c,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe6,0xd4, +0xcc,0x9a,0x3c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04, +0xcc,0x82,0x04,0xcc,0x82,0x04,0xd4,0x82,0x04,0xd4,0x82,0x04,0xd4,0x86,0x04, +0xdc,0xb6,0x74,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe2,0xcc, +0xcc,0x8a,0x24,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x82,0x0c, +0xd4,0xa2,0x4c,0xe4,0xca,0x94,0xf4,0xe6,0xcc,0xfc,0xf2,0xe4,0xfc,0xf6,0xf4, +0xfc,0xf6,0xf4,0xfc,0xf2,0xdc,0xec,0xde,0xbc,0xdc,0xba,0x7c,0xcc,0x92,0x34, +0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xc4,0x82,0x14,0xf4,0xd6,0xac, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf2,0xe4,0xcc,0x96,0x3c, +0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x82,0x04, +0xcc,0x82,0x04,0xd4,0x82,0x04,0xd4,0x86,0x0c,0xcc,0x7a,0x04,0xd4,0xaa,0x54, +0xf4,0xf2,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xe4,0xca,0x94,0xcc,0x86,0x14,0xcc,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x8a,0x24,0xec,0xd6,0xb4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xdc,0xb2,0x6c, +0xc4,0x72,0x04,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x8a,0x1c, +0xd4,0xa6,0x54,0xdc,0xb2,0x6c,0xdc,0xb6,0x74,0xdc,0xb6,0x74,0xdc,0xb6,0x74, +0xec,0xda,0xb4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xd4,0xa2,0x4c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xcc,0x9a,0x44,0xf4,0xda,0xbc, +0xfc,0xfa,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec, +0xe4,0xbe,0x84,0xcc,0x86,0x14,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xd4,0x96,0x34, +0xfc,0xf2,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xd4,0xb2,0x6c,0xcc,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xcc,0x86,0x1c,0xdc,0xa2,0x4c, +0xdc,0xb6,0x74,0xdc,0xb6,0x74,0xdc,0xb6,0x74,0xdc,0xb2,0x6c,0xec,0xd2,0xa4, +0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xe4,0xbe,0x84,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x8e,0x2c, +0xec,0xde,0xc4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd6,0xac,0xc4,0x86,0x14, +0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x8e,0x24,0xec,0xca,0x9c,0xf4,0xf2,0xe4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xca,0x9c,0xc4,0x86,0x14, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xdc,0xb6,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xec,0xda,0xc4,0xcc,0x8e,0x24,0xcc,0x7e,0x04,0xcc,0x7e,0x04, +0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xd4,0x86,0x0c, +0xdc,0xbe,0x84,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xde,0xc4,0xc4,0x7e,0x0c,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xcc,0x8e,0x24,0xe4,0xc6,0x94,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xdc,0xb2,0x6c,0xbc,0x7a,0x04,0xc4,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04, +0xcc,0x96,0x3c,0xf4,0xea,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xdc,0xaa,0x5c,0xc4,0x72,0x04, +0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xd4,0xa2,0x4c,0xfc,0xf2,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xf4,0xcc,0x9a,0x44,0xc4,0x76,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c, +0xc4,0x76,0x04,0xdc,0xb6,0x6c,0xfc,0xfa,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe2,0xc4,0xdc,0xae,0x64,0xdc,0xae,0x64, +0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xae,0x64, +0xe4,0xc6,0x94,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xd4,0xaa,0x5c,0xc4,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xd4,0xa2,0x4c,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf2,0xe4,0xd4,0xa6,0x5c,0xc4,0x76,0x04, +0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04, +0xc4,0x7a,0x04,0xd4,0xa2,0x4c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xde,0xbc,0xcc,0x8e,0x24,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04, +0xcc,0x9a,0x3c,0xfc,0xf2,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xda,0xb4,0xcc,0x86,0x1c,0xc4,0x76,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x76,0x04, +0xd4,0x9a,0x44,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xdc,0xc4,0x8a,0x1c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x96,0x34, +0xf4,0xea,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xea,0xd4,0xd4,0x9a,0x44, +0xc4,0x72,0x04,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xdc,0xaa,0x5c,0xfc,0xfa,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xc6,0x94,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x8a,0x1c, +0xec,0xd6,0xb4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xb2,0x74,0xc4,0x82,0x0c,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xec,0xce,0x9c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xe4,0xce,0xa4,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x0c,0xec,0xda,0xbc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe6,0xc4, +0xcc,0x96,0x2c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x82,0x0c,0xdc,0xba,0x74,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xdc,0xb6,0x6c,0xbc,0x76,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0xa6,0x54, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xcc,0x9a,0x3c,0xc4,0x76,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xd4,0x96,0x34, +0xf4,0xe6,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xdc,0xb6,0x74,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xd4,0xa6,0x54,0xfc,0xf6,0xec, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xec,0xda,0xb4,0xcc,0x8a,0x1c,0xcc,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x86,0x14,0xe4,0xc6,0x8c, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xf2,0xec,0xdc,0xa6,0x5c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c,0xe4,0xbe,0x84, +0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xea,0xd4,0xcc,0x8a,0x24,0xc4,0x76,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x72,0x04,0xd4,0xaa,0x5c, +0xf4,0xf2,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xd4,0xa6,0x54,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x76,0x04,0xe4,0xc2,0x84,0xfc,0xfa,0xf4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xec,0xce,0xa4,0xc4,0x82,0x0c,0xcc,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c, +0xec,0xce,0xa4,0xf4,0xf2,0xe4,0xf4,0xee,0xdc,0xf4,0xee,0xdc,0xf4,0xee,0xdc, +0xf4,0xee,0xdc,0xf4,0xee,0xdc,0xf4,0xee,0xdc,0xf4,0xee,0xdc,0xf4,0xee,0xdc, +0xf4,0xee,0xdc,0xf4,0xee,0xdc,0xf4,0xee,0xdc,0xf4,0xee,0xdc,0xfc,0xf2,0xe4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x14,0xe4,0xce,0x9c, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xec,0xd6,0xb4,0xcc,0x86,0x1c,0xc4,0x76,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x72,0x04,0xd4,0xaa,0x5c, +0xf4,0xea,0xdc,0xfc,0xf6,0xec,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4, +0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4, +0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4, +0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4, +0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4, +0xf4,0xf2,0xe4,0xfc,0xf2,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xcc,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x76,0x04,0xec,0xd2,0xa4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x94,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xc4,0x82,0x14,0xc4,0x82,0x14,0xc4,0x82,0x14, +0xc4,0x82,0x14,0xc4,0x82,0x14,0xc4,0x82,0x14,0xc4,0x82,0x14,0xc4,0x82,0x14, +0xc4,0x82,0x14,0xc4,0x82,0x14,0xc4,0x82,0x14,0xcc,0x82,0x14,0xd4,0xa6,0x54, +0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xe4,0xca,0x94,0xcc,0x86,0x14,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c, +0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c, +0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c, +0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c, +0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c, +0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c, +0xcc,0x86,0x1c,0xd4,0xa2,0x4c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xdc,0xba,0x74,0xc4,0x7a,0x04, +0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xcc,0x82,0x04,0xd4,0x9a,0x3c, +0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xe4,0xbe,0x84,0xcc,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xcc,0x7e,0x04,0xcc,0x92,0x34,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xf2,0xe4,0xd4,0xaa,0x5c, +0xc4,0x72,0x04,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xd4,0x9e,0x44, +0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xdc,0xba,0x7c,0xcc,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xcc,0x96,0x34,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xee,0xdc, +0xd4,0x9e,0x4c,0xc4,0x76,0x04,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xd4,0x9e,0x44, +0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xe4,0xba,0x7c,0xcc,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xcc,0x96,0x34,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xf4,0xe6,0xcc,0xd4,0x96,0x34,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xd4,0x9e,0x44, +0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb6,0x6c,0xfc,0xfa,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xcc,0x86,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xcc,0x9a,0x3c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xec,0xde,0xbc,0xc4,0x8a,0x1c,0xcc,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04, +0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04,0xd4,0x86,0x04,0xcc,0x96,0x34, +0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, +0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xec,0xce,0xa4,0xcc,0x86,0x14,0xc4,0x76,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, +0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, +0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, +0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xd4,0xa6,0x54,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd2,0xac,0xc4,0x82,0x0c,0xc4,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xcc,0x92,0x2c,0xdc,0xb2,0x6c,0xdc,0xb2,0x6c,0xdc,0xb2,0x6c, +0xdc,0xb2,0x6c,0xdc,0xb2,0x6c,0xdc,0xb2,0x6c,0xdc,0xb2,0x6c,0xe4,0xc6,0x8c, +0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xae,0x6c,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xd4,0xa6,0x54,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xba,0x7c,0xbc,0x76,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x72,0x04,0xd4,0x92,0x34, +0xf4,0xe6,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd2,0xac, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xcc,0x86,0x1c,0xfc,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xe2,0xc4,0xcc,0x8a,0x1c,0xc4,0x76,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x92,0x34, +0xe4,0xc2,0x94,0xec,0xd2,0xac,0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xce,0xa4, +0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xce,0xa4, +0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xce,0xa4, +0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xd2,0xac,0xdc,0xbe,0x7c,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x82,0x0c,0xdc,0xb6,0x74,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xc6,0x94,0xbc,0x7e,0x04, +0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xcc,0x8e,0x24,0xec,0xe2,0xc4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xdc,0xbe,0x84,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x8a,0x24,0xf4,0xea,0xe4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xd4,0xa6,0x54,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x8a,0x1c, +0xec,0xd2,0xac,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xba,0x7c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xcc,0x92,0x24,0xfc,0xee,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xf2,0xec,0xcc,0x96,0x34,0xc4,0x76,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xd4,0x92,0x34, +0xf4,0xe2,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xda,0xb4,0xc4,0x76,0x04, +0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x82,0x0c,0xe4,0xce,0x9c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xe4,0xba,0x7c, +0xc4,0x76,0x04,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x8a,0x24,0xf4,0xe6,0xd4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xe4,0xd2,0xa4,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x76,0x04,0xe4,0xce,0x9c,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xec,0xda,0xb4,0xcc,0x8e,0x24,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04, +0xdc,0xae,0x6c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf2,0xe4,0xcc,0x92,0x2c, +0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xd4,0xa2,0x4c,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xd4,0xaa,0x64,0xc4,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xbc,0x76,0x04, +0xe4,0xc2,0x8c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xdc,0xaa,0x5c,0xc4,0x76,0x04, +0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x86,0x0c,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec, +0xdc,0xae,0x64,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x96,0x3c,0xf4,0xf2,0xe4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xf4,0xea,0xd4,0xc4,0x82,0x14,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x96,0x34,0xf4,0xee,0xdc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xf6,0xf4,0xdc,0xa6,0x5c,0xbc,0x72,0x04,0xc4,0x7e,0x0c,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04, +0xcc,0x8a,0x1c,0xec,0xd6,0xac,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xbe,0x84,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xe4,0xbe,0x7c,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd2,0xa4,0xcc,0x8a,0x14,0xc4,0x76,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xcc,0x92,0x2c,0xf4,0xe2,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc,0xc4,0x82,0x0c,0xc4,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04, +0xcc,0x9e,0x44,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xf4,0xf2,0xe4,0xd4,0x9e,0x44,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xd4,0xa2,0x4c, +0xfc,0xf6,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0xa2,0x4c,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0xa2,0x54, +0xf4,0xf2,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4, +0xdc,0xb6,0x74,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x76,0x04,0xcc,0x92,0x2c,0xf4,0xe6,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xca,0x9c,0xc4,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x0c,0xf4,0xde,0xbc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xcc,0x9a,0x3c,0xc4,0x76,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c, +0xc4,0x72,0x04,0xdc,0xaa,0x5c,0xfc,0xf2,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xdc,0xd4,0x9e,0x3c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c, +0xe4,0xca,0x9c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xea,0xdc,0xd4,0x96,0x34,0xcc,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04, +0xd4,0xae,0x64,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xf2,0xe4,0xdc,0xa2,0x54,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd6,0xac, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xe4,0xce,0xa4,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04, +0xd4,0x9a,0x3c,0xec,0xde,0xc4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xea,0xd4,0xdc,0xaa,0x54, +0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xcc,0x8a,0x24,0xe4,0xce,0xa4,0xfc,0xfa,0xf4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xf2,0xe4,0xe4,0xba,0x7c,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04, +0xd4,0xa2,0x4c,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc6,0x94,0xc4,0x86,0x14, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x76,0x04,0xdc,0xae,0x5c,0xfc,0xf2,0xe4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xf2,0xe4,0xdc,0xa6,0x5c,0xc4,0x76,0x04,0xc4,0x7e,0x0c,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x92,0x2c, +0xf4,0xf6,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xe2,0xc4,0xcc,0x8a,0x24,0xcc,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xe4,0xbe,0x84,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe6,0xcc,0xe4,0xca,0x94, +0xec,0xce,0xa4,0xe4,0xc2,0x8c,0xcc,0x92,0x2c,0xc4,0x76,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x14,0xdc,0xae,0x64, +0xe4,0xce,0xa4,0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c, +0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xce,0x9c, +0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xcc,0x9a,0x3c,0xc4,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xcc,0x7e,0x04,0xcc,0x86,0x14,0xd4,0xa2,0x4c,0xec,0xc6,0x94,0xec,0xda,0xb4, +0xec,0xda,0xb4,0xec,0xca,0x9c,0xdc,0xae,0x64,0xcc,0x86,0x14,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c,0xcc,0x9a,0x3c, +0xe4,0xc2,0x8c,0xec,0xd6,0xb4,0xec,0xda,0xb4,0xec,0xce,0xa4,0xdc,0xb6,0x74, +0xcc,0x8e,0x2c,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xec,0xda,0xb4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xd4,0xa2,0x4c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xcc,0x96,0x3c,0xec,0xda,0xb4, +0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xda,0xb4, +0xd4,0x96,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c,0xec,0xc6,0x94, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd6,0xb4,0xcc,0x7e,0x0c, +0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xce,0x9c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xb2,0x6c,0xc4,0x76,0x04, +0xcc,0x82,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, +0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x82,0x0c, +0xe4,0xce,0x9c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd6,0xb4,0xc4,0x82,0x0c,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04, +0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04, +0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xdc,0xae,0x64, +0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe2,0xcc, +0xcc,0x8e,0x24,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x0c, +0xcc,0x96,0x3c,0xdc,0xbe,0x7c,0xec,0xd2,0xac,0xf4,0xe2,0xc4,0xf4,0xe6,0xcc, +0xf4,0xe6,0xcc,0xec,0xda,0xb4,0xe4,0xbe,0x84,0xcc,0x9a,0x44,0xc4,0x82,0x0c, +0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xd4,0xa2,0x54,0xfc,0xfe,0xf4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xca,0x9c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x82,0x14,0xec,0xd6,0xb4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xb6,0x74,0xbc,0x76,0x04, +0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c, +0xe4,0xd2,0x9c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xbe,0x84,0xcc,0x82,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x96,0x2c,0xfc,0xf2,0xe4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xe4,0xce,0xa4,0xcc,0x86,0x1c,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04, +0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04,0xc4,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x92,0x2c,0xfc,0xea,0xdc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4, +0xe4,0xbe,0x84,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x86,0x1c,0xf4,0xe2,0xcc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xb6,0x74,0xbc,0x76,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c, +0xe4,0xd2,0xa4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xae,0x64, +0xcc,0x82,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04, +0xd4,0xa6,0x5c,0xdc,0xbe,0x7c,0xcc,0x86,0x14,0xcc,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x92,0x2c,0xf4,0xe6,0xd4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xe4,0xca,0x9c,0xcc,0x86,0x1c,0xc4,0x7a,0x04,0xc4,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xcc,0x7a,0x04,0xcc,0x8e,0x1c,0xf4,0xe2,0xc4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xdc,0xae,0x64,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x92,0x2c, +0xfc,0xee,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xb6,0x74,0xbc,0x76,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c, +0xe4,0xd2,0xa4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4, +0xdc,0xb6,0x74,0xc4,0x82,0x0c,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xdc,0xae,0x64, +0xf4,0xf2,0xec,0xfc,0xfe,0xfc,0xe4,0xca,0x9c,0xcc,0x86,0x14,0xcc,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xcc,0x7e,0x04,0xcc,0x96,0x34,0xf4,0xe6,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd2,0xac,0xcc,0x8e,0x1c,0xcc,0x7a,0x04, +0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04, +0xd4,0x96,0x34,0xf4,0xe2,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xd4,0xa2,0x4c,0xcc,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04, +0xd4,0x9e,0x44,0xfc,0xf6,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xb6,0x74,0xbc,0x76,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c, +0xe4,0xd2,0xa4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xec,0xce,0xa4,0xc4,0x8e,0x24,0xcc,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xcc,0x7e,0x04,0xcc,0x7a,0x04,0xcc,0x86,0x14,0xe4,0xc2,0x8c,0xfc,0xfa,0xf4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xc4,0xcc,0x96,0x3c, +0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04, +0xdc,0xae,0x6c,0xfc,0xf2,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe6,0xd4,0xd4,0xa6,0x5c, +0xc4,0x82,0x0c,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x0c,0xdc,0xb2,0x6c, +0xfc,0xee,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf2,0xe4,0xcc,0x92,0x34,0xcc,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xdc,0xaa,0x5c,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xd4,0xb2,0x6c,0xcc,0x76,0x04, +0xd4,0x86,0x0c,0xcc,0x82,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x04, +0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04, +0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x86,0x0c, +0xe4,0xce,0x9c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xea,0xdc,0xe4,0xb6,0x7c,0xc4,0x86,0x1c, +0xcc,0x7e,0x04,0xcc,0x82,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x82,0x04,0xc4,0x7e,0x04, +0xc4,0x82,0x14,0xd4,0xaa,0x5c,0xf4,0xe6,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec, +0xe4,0xc2,0x94,0xcc,0x8e,0x2c,0xc4,0x7e,0x04,0xcc,0x82,0x04,0xcc,0x7e,0x04, +0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xcc,0x7e,0x04,0xcc,0x82,0x04,0xc4,0x7e,0x04,0xd4,0xa2,0x4c,0xec,0xda,0xb4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4, +0xec,0xd6,0xb4,0xd4,0xa2,0x4c,0xc4,0x7e,0x0c,0xcc,0x7e,0x04,0xcc,0x82,0x04, +0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x82,0x04, +0xcc,0x7e,0x04,0xc4,0x7e,0x0c,0xd4,0xa2,0x54,0xf4,0xda,0xb4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe2,0xcc,0xcc,0x8a,0x24, +0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x76,0x04,0xdc,0xb6,0x7c,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd2,0xac,0xdc,0xaa,0x5c, +0xdc,0xae,0x6c,0xdc,0xaa,0x5c,0xcc,0x8a,0x1c,0xc4,0x76,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xd4,0x9a,0x44, +0xdc,0xb2,0x6c,0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xae,0x64, +0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xb2,0x6c, +0xf4,0xe2,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xee,0xe4, +0xec,0xca,0x94,0xd4,0xaa,0x54,0xcc,0x92,0x2c,0xc4,0x86,0x14,0xc4,0x7e,0x0c, +0xc4,0x7e,0x0c,0xc4,0x82,0x0c,0xcc,0x8e,0x24,0xd4,0xa2,0x4c,0xe4,0xc2,0x8c, +0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xe4,0xd2,0xa4,0xdc,0xae,0x64,0xd4,0x96,0x3c, +0xc4,0x82,0x14,0xc4,0x7e,0x0c,0xc4,0x7e,0x0c,0xc4,0x7e,0x0c,0xc4,0x8a,0x1c, +0xd4,0x9e,0x44,0xdc,0xba,0x7c,0xec,0xe2,0xc4,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfa,0xfc,0xf4,0xe2,0xcc,0xe4,0xbe,0x84,0xd4,0x9e,0x4c, +0xc4,0x86,0x1c,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, +0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x86,0x1c,0xd4,0x9e,0x44, +0xe4,0xbe,0x7c,0xf4,0xe6,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd6,0xb4, +0xc4,0x82,0x14,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xe4,0xc6,0x94,0xfc,0xfa,0xf4, +0xfc,0xfe,0xfc,0xcc,0x9a,0x3c,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xf2,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xfc,0xf2,0xe4,0xf4,0xea,0xdc, +0xf4,0xee,0xdc,0xfc,0xf2,0xdc,0xfc,0xf6,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xf6,0xec,0xf4,0xee,0xdc,0xf4,0xea,0xd4,0xf4,0xee,0xdc,0xfc,0xf6,0xec, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xf6,0xec,0xf4,0xe6,0xd4,0xf4,0xd6,0xbc,0xec,0xce,0xa4,0xec,0xce,0xa4, +0xec,0xce,0xa4,0xec,0xd6,0xb4,0xf4,0xe6,0xcc,0xf4,0xf2,0xec,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xec,0xce,0x9c,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xec,0xd2,0xa4, +0xfc,0xfe,0xfc,0xd4,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xdc,0xba,0x7c,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x8a,0x1c, +0xec,0xd6,0xb4,0xd4,0x9e,0x44,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xae,0x6c,0xc4,0x7e,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04, +0xcc,0x8e,0x2c,0xc4,0x86,0x14,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xd4,0xa2,0x4c,0xcc,0x7e,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xf2,0xe4,0xcc,0x92,0x34, +0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xfc,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe6,0xcc, +0xc4,0x86,0x1c,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xde,0xb4, +0xdc,0xb2,0x6c,0xdc,0xa6,0x5c,0xdc,0xb6,0x7c,0xf4,0xea,0xd4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xec,0xda,0xbc,0xc4,0x8a,0x14,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd2,0xac,0xdc,0xa6,0x5c, +0xec,0xd2,0xa4,0xfc,0xfa,0xec,0xdc,0xc2,0x8c,0xdc,0xaa,0x5c,0xf4,0xea,0xcc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xec,0xca,0x9c,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xb6,0x6c,0xec,0xd2,0xa4, +0xec,0xd6,0xac,0xe4,0xbe,0x7c,0xec,0xda,0xbc,0xe4,0xbe,0x84,0xec,0xce,0x9c, +0xfc,0xfe,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xbe,0x84,0xcc,0x82,0x0c,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf2,0xec,0xdc,0xba,0x7c,0xec,0xde,0xc4, +0xe4,0xc2,0x8c,0xcc,0x9e,0x44,0xec,0xd6,0xac,0xec,0xca,0x9c,0xec,0xc6,0x9c, +0xfc,0xf6,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xae,0x64,0xcc,0x82,0x04, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, +0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x8a,0x1c,0xe4,0xce,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xcc,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, +0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xba,0x7c,0xe4,0xc2,0x8c, +0xec,0xca,0x9c,0xe4,0xc2,0x8c,0xec,0xd6,0xb4,0xdc,0xb6,0x74,0xec,0xd2,0xa4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xd4,0xa6,0x4c, +0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7e,0x04,0xcc,0x82,0x0c,0xc4,0x7a,0x04,0xec,0xce,0xa4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xf4,0xee,0xdc,0xd4,0xa2,0x4c,0xcc,0x76,0x04,0xcc,0x82,0x0c, +0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xcc,0x86,0x14,0xe4,0xce,0x9c, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfa,0xf4,0xcc,0x9a,0x44,0xcc,0x82,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, +0xc4,0x7e,0x04,0xcc,0x82,0x0c,0xc4,0x76,0x04,0xec,0xd2,0xa4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xea,0xd4,0xdc,0xae,0x64, +0xdc,0xb6,0x74,0xec,0xce,0xa4,0xd4,0xb2,0x6c,0xe4,0xba,0x7c,0xfc,0xf2,0xe4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xf2,0xdc, +0xe4,0xc6,0x94,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c, +0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xf4,0xea,0xd4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xf6,0xf4,0xec,0xd2,0xb4,0xe4,0xbe,0x84,0xe4,0xc2,0x8c, +0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xec,0xca,0x94,0xfc,0xea,0xd4, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xec,0xd2,0xac,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c, +0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xfc,0xea,0xd4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf2,0xe4, +0xec,0xd2,0xac,0xe4,0xc2,0x8c,0xec,0xda,0xb4,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, +0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc +}; +#endif /* __ATMEL_LOGO_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/main.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/main.c new file mode 100644 index 000000000..919077191 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/main.c @@ -0,0 +1,296 @@ +/* + FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. + All rights reserved + + VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. + + This file is part of the FreeRTOS distribution. + + FreeRTOS is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License (version 2) as published by the + Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. + + >>! NOTE: The modification to the GPL is included to allow you to !<< + >>! distribute a combined work that includes FreeRTOS without being !<< + >>! obliged to provide the source code for proprietary components !<< + >>! outside of the FreeRTOS kernel. !<< + + FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. Full license text is available on the following + link: http://www.freertos.org/a00114.html + + 1 tab == 4 spaces! + + *************************************************************************** + * * + * Having a problem? Start by reading the FAQ "My application does * + * not run, what could be wrong?". Have you defined configASSERT()? * + * * + * http://www.FreeRTOS.org/FAQHelp.html * + * * + *************************************************************************** + + *************************************************************************** + * * + * FreeRTOS provides completely free yet professionally developed, * + * robust, strictly quality controlled, supported, and cross * + * platform software that is more than just the market leader, it * + * is the industry's de facto standard. * + * * + * Help yourself get started quickly while simultaneously helping * + * to support the FreeRTOS project by purchasing a FreeRTOS * + * tutorial book, reference manual, or both: * + * http://www.FreeRTOS.org/Documentation * + * * + *************************************************************************** + + *************************************************************************** + * * + * Investing in training allows your team to be as productive as * + * possible as early as possible, lowering your overall development * + * cost, and enabling you to bring a more robust product to market * + * earlier than would otherwise be possible. Richard Barry is both * + * the architect and key author of FreeRTOS, and so also the world's * + * leading authority on what is the world's most popular real time * + * kernel for deeply embedded MCU designs. Obtaining your training * + * from Richard ensures your team will gain directly from his in-depth * + * product knowledge and years of usage experience. Contact Real Time * + * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * + * by Richard Barry: http://www.FreeRTOS.org/contact + * * + *************************************************************************** + + *************************************************************************** + * * + * You are receiving this top quality software for free. Please play * + * fair and reciprocate by reporting any suspected issues and * + * participating in the community forum: * + * http://www.FreeRTOS.org/support * + * * + * Thank you! * + * * + *************************************************************************** + + http://www.FreeRTOS.org - Documentation, books, training, latest versions, + license and Real Time Engineers Ltd. contact details. + + http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, + including FreeRTOS+Trace - an indispensable productivity tool, a DOS + compatible FAT file system, and our tiny thread aware UDP/IP stack. + + http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. + Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. + + http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High + Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS + licenses offer ticketed support, indemnification and commercial middleware. + + http://www.SafeRTOS.com - High Integrity Systems also provide a safety + engineered and independently SIL3 certified version for use in safety and + mission critical applications that require provable dependability. + + 1 tab == 4 spaces! +*/ + +/****************************************************************************** + * This project provides two demo applications. A simple blinky style project, + * and a more comprehensive application that includes FreeRTOS+CLI, FreeRTOS+UDP + * and FreeRTOS+FAT SL. The mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting (defined + * in this file) is used to select between the two. The simply blinky demo is + * implemented and described in main_blinky.c. The more comprehensive demo + * application is implemented and described in main_full.c and full user + * instructions are provided on the following URL: + * http://www.FreeRTOS.org/Atmel_SAM4E_RTOS_Demo.html + * + * This file implements the code that is not demo specific, including the + * hardware setup and FreeRTOS hook functions. + * + */ + +/* Kernel includes. */ +#include "FreeRTOS.h" +#include "task.h" + +/* Demo application includes. */ +#include "partest.h" + +/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to one to run the simple blinky demo, +or 0 to run the more comprehensive demo application that includes add-on +components. */ +#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 1 + +/*-----------------------------------------------------------*/ + +/* + * Set up the hardware ready to run this demo. + */ +static void prvSetupHardware( void ); + +/* + * main_blinky() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1. + * main_full() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0. + */ +extern void main_blinky( void ); +extern void main_full( void ); + +/*-----------------------------------------------------------*/ + +int main( void ) +{ + /* Prepare the hardware to run this demo. */ + prvSetupHardware(); + + /* The mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting is described at the top + of this file. */ + #if ( mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 1 ) + { + main_blinky(); + } + #else + { + /* Full user instructions are provided on the following URL: + http://www.FreeRTOS.org/Atmel_SAM4E_RTOS_Demo.html */ + main_full(); + } + #endif /* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY */ + + return 0; +} +/*-----------------------------------------------------------*/ + +static void prvSetupHardware( void ) +{ + /* Call the ASF initialisation functions. */ + board_init(); + sysclk_init(); + pmc_enable_periph_clk( ID_GMAC ); + pmc_enable_periph_clk( ID_SMC ); +} +/*-----------------------------------------------------------*/ + +void vApplicationMallocFailedHook( void ) +{ +static volatile uint32_t ulCount = 0; + + /* vApplicationMallocFailedHook() will only be called if + configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook + function that will get called if a call to pvPortMalloc() fails. + pvPortMalloc() is called internally by the kernel whenever a task, queue, + timer or semaphore is created. It is also called by various parts of the + demo application. If heap_1.c or heap_2.c are used, then the size of the + heap available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in + FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used + to query the size of free heap space that remains (although it does not + provide information on how the remaining heap might be fragmented). + + Just count the number of malloc fails as some failures may occur simply + because the network load is very high, resulting in the consumption of a + lot of network buffers. */ + ulCount++; +} +/*-----------------------------------------------------------*/ + +void vApplicationIdleHook( void ) +{ + /* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set + to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle + task. It is essential that code added to this hook function never attempts + to block in any way (for example, call xQueueReceive() with a block time + specified, or call vTaskDelay()). If the application makes use of the + vTaskDelete() API function (as this demo application does) then it is also + important that vApplicationIdleHook() is permitted to return to its calling + function, because it is the responsibility of the idle task to clean up + memory allocated by the kernel to any task that has since been deleted. */ + + /* The simple blinky demo does not use the idle hook - the full demo does. */ + #if( mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0 ) + { + extern void vFullDemoIdleHook( void ); + + /* Implemented in main_full.c. */ + vFullDemoIdleHook(); + } + #endif +} +/*-----------------------------------------------------------*/ + +void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) +{ + ( void ) pcTaskName; + ( void ) pxTask; + + /* Run time stack overflow checking is performed if + configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook function is + called if a stack overflow is detected. */ + vAssertCalled( __LINE__, __FILE__ ); +} +/*-----------------------------------------------------------*/ + +void vApplicationTickHook( void ) +{ + /* This function will be called by each tick interrupt if + configUSE_TICK_HOOK is set to 1 in FreeRTOSConfig.h. User code can be + added here, but the tick hook is called from an interrupt context, so + code must not attempt to block, and only the interrupt safe FreeRTOS API + functions can be used (those that end in FromISR()). */ + + /* The simple blinky demo does not use the tick hook - the full demo does. */ + #if( mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0 ) + { + extern void vFullDemoTickHook( void ); + + /* Implemented in main_full.c. */ + vFullDemoTickHook(); + } + #endif +} +/*-----------------------------------------------------------*/ + +void vAssertCalled( uint32_t ulLine, const char *pcFile ) +{ +/* The following two variables are just to ensure the parameters are not +optimised away and therefore unavailable when viewed in the debugger. */ +volatile uint32_t ulLineNumber = ulLine, ulSetNonZeroInDebuggerToReturn = 0; +volatile const char * const pcFileName = pcFile; + + taskENTER_CRITICAL(); + while( ulSetNonZeroInDebuggerToReturn == 0 ) + { + /* If you want to set out of this function in the debugger to see the + assert() location then set ulSetNonZeroInDebuggerToReturn to a non-zero + value. */ + } + taskEXIT_CRITICAL(); + + ( void ) pcFileName; + ( void ) ulLineNumber; +} +/*-----------------------------------------------------------*/ + +/* Provided to keep the linker happy. */ +void _exit_( int status ) +{ + ( void ) status; + vAssertCalled( __LINE__, __FILE__ ); + for( ;; ); +} +/*-----------------------------------------------------------*/ + +/* Provided to keep the linker happy. */ +int _read( void ) +{ + return 0; +} +/*-----------------------------------------------------------*/ + +/* Provided to keep the linker happy. */ +int _write( int x ) +{ + ( void ) x; + return 0; +} +/*-----------------------------------------------------------*/ + + + diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/main_blinky.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/main_blinky.c new file mode 100644 index 000000000..0e7399037 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/main_blinky.c @@ -0,0 +1,297 @@ +/* + FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. + All rights reserved + + VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. + + This file is part of the FreeRTOS distribution. + + FreeRTOS is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License (version 2) as published by the + Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. + + >>! NOTE: The modification to the GPL is included to allow you to !<< + >>! distribute a combined work that includes FreeRTOS without being !<< + >>! obliged to provide the source code for proprietary components !<< + >>! outside of the FreeRTOS kernel. !<< + + FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. Full license text is available on the following + link: http://www.freertos.org/a00114.html + + 1 tab == 4 spaces! + + *************************************************************************** + * * + * Having a problem? Start by reading the FAQ "My application does * + * not run, what could be wrong?". Have you defined configASSERT()? * + * * + * http://www.FreeRTOS.org/FAQHelp.html * + * * + *************************************************************************** + + *************************************************************************** + * * + * FreeRTOS provides completely free yet professionally developed, * + * robust, strictly quality controlled, supported, and cross * + * platform software that is more than just the market leader, it * + * is the industry's de facto standard. * + * * + * Help yourself get started quickly while simultaneously helping * + * to support the FreeRTOS project by purchasing a FreeRTOS * + * tutorial book, reference manual, or both: * + * http://www.FreeRTOS.org/Documentation * + * * + *************************************************************************** + + *************************************************************************** + * * + * Investing in training allows your team to be as productive as * + * possible as early as possible, lowering your overall development * + * cost, and enabling you to bring a more robust product to market * + * earlier than would otherwise be possible. Richard Barry is both * + * the architect and key author of FreeRTOS, and so also the world's * + * leading authority on what is the world's most popular real time * + * kernel for deeply embedded MCU designs. Obtaining your training * + * from Richard ensures your team will gain directly from his in-depth * + * product knowledge and years of usage experience. Contact Real Time * + * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * + * by Richard Barry: http://www.FreeRTOS.org/contact + * * + *************************************************************************** + + *************************************************************************** + * * + * You are receiving this top quality software for free. Please play * + * fair and reciprocate by reporting any suspected issues and * + * participating in the community forum: * + * http://www.FreeRTOS.org/support * + * * + * Thank you! * + * * + *************************************************************************** + + http://www.FreeRTOS.org - Documentation, books, training, latest versions, + license and Real Time Engineers Ltd. contact details. + + http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, + including FreeRTOS+Trace - an indispensable productivity tool, a DOS + compatible FAT file system, and our tiny thread aware UDP/IP stack. + + http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. + Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. + + http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High + Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS + licenses offer ticketed support, indemnification and commercial middleware. + + http://www.SafeRTOS.com - High Integrity Systems also provide a safety + engineered and independently SIL3 certified version for use in safety and + mission critical applications that require provable dependability. + + 1 tab == 4 spaces! +*/ + +/****************************************************************************** + * NOTE 1: This project provides two demo applications. A simple blinky style + * project, and a more comprehensive demo application that makes use of + * FreeRTOS_CLI, FreeRTOS+UDP and FreeRTOS+FAT SL. The + * mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting in main.c is used to select + * between the two. See the notes on using mainCREATE_SIMPLE_BLINKY_DEMO_ONLY + * in main.c. This file implements the simply blinky style version. + * + * NOTE 2: This file only contains the source code that is specific to the + * basic demo. Generic functions, such FreeRTOS hook functions, and functions + * required to configure the hardware, are defined in main.c. + ****************************************************************************** + * + * main_blinky() creates one queue, two tasks and one software timer. It then + * starts the scheduler. + * + * The Queue Send Task: + * The queue send task is implemented by the prvQueueSendTask() function in + * this file. The task sits in a loop that sends a value to the queue every + * 200 milliseconds. + * + * The Queue Receive Task: + * The queue receive task is implemented by the prvQueueReceiveTask() function + * in this file. The task sits in a loop that blocks on the queue to wait for + * data to arrive (it does not use any CPU time while it is in the Blocked + * state), toggling an LED each time it receives the value sent by the queue + * send task. As the queue send task writes to the queue every 200 milliseconds + * the LED will toggle every 200 milliseconds. + */ + + +/* Kernel includes. */ +#include "FreeRTOS.h" +#include "task.h" +#include "queue.h" +#include "timers.h" + +/* Demo application includes. */ +#include "partest.h" + +/* Priorities at which the tasks are created. */ +#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) +#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) + +/* The rate at which data is sent to the queue. The 200ms value is converted +to ticks using the portTICK_PERIOD_MS constant. */ +#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS ) + +/* The number of items the queue can hold. This is 1 as the receive task +will remove items as they are added, meaning the send task should always find +the queue empty. */ +#define mainQUEUE_LENGTH ( 1 ) + +/* The period of the blinky software timer. The period is specified in ms and +converted to ticks using the portTICK_PERIOD_MS constant. */ +#define mainBLINKY_TIMER_PERIOD ( 50 / portTICK_PERIOD_MS ) + +/* A block time of zero simply means "don't block". */ +#define mainDONT_BLOCK ( 0 ) + +/* The LEDs toggled by the timer callback and queue receive task respectively. */ +#define mainTIMER_LED 0 +#define mainTASK_LED 1 + +/*-----------------------------------------------------------*/ + +/* + * The tasks as described in the comments at the top of this file. + */ +static void prvQueueReceiveTask( void *pvParameters ); +static void prvQueueSendTask( void *pvParameters ); + +/* + * The callback function for the blinky software timer, as described at the top + * of this file. + */ +static void prvBlinkyTimerCallback( TimerHandle_t xTimer ); + +/* + * Called by main() to create the simply blinky style application if + * mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1. + */ +void main_blinky( void ); + +/*-----------------------------------------------------------*/ + +void main_blinky( void ) +{ +TimerHandle_t xTimer; +QueueHandle_t xQueue; + + /* Create the queue. */ + xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); + + if( xQueue != NULL ) + { + /* Start the two tasks as described in the comments at the top of this + file. */ + xTaskCreate( prvQueueReceiveTask, /* The function that implements the task. */ + "Rx", /* The text name assigned to the task - for debug only as it is not used by the kernel. */ + configMINIMAL_STACK_SIZE, /* The size of the stack to allocate to the task. */ + ( void * ) xQueue, /* Pass the queue into the task using the task parameter. */ + mainQUEUE_RECEIVE_TASK_PRIORITY, /* The priority assigned to the task. */ + NULL ); /* The task handle is not required, so NULL is passed. */ + + xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, ( void * ) xQueue, mainQUEUE_SEND_TASK_PRIORITY, NULL ); + + /* Create the blinky software timer as described at the top of this + file. */ + xTimer = xTimerCreate( "Blinky", /* A text name, purely to help debugging. */ + ( mainBLINKY_TIMER_PERIOD ),/* The timer period. */ + pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ + ( void * ) 0, /* The ID is not used, so can be set to anything. */ + prvBlinkyTimerCallback ); /* The callback function that inspects the status of all the other tasks. */ + + configASSERT( xTimer ); + + if( xTimer != NULL ) + { + xTimerStart( xTimer, mainDONT_BLOCK ); + } + + /* Start the tasks and timer running. */ + vTaskStartScheduler(); + } + + /* If all is well, the scheduler will now be running, and the following + line will never be reached. If the following line does execute, then + there was insufficient FreeRTOS heap memory available for the idle and/or + timer tasks to be created. See the memory management section on the + FreeRTOS web site for more details. */ + for( ;; ); +} +/*-----------------------------------------------------------*/ + +static void prvQueueSendTask( void *pvParameters ) +{ +TickType_t xNextWakeTime; +const unsigned long ulValueToSend = 100UL; +QueueHandle_t xQueue; + + /* The handle of the queue is passed in using the task's parameter. */ + xQueue = ( QueueHandle_t ) pvParameters; + + /* Initialise xNextWakeTime - this only needs to be done once. */ + xNextWakeTime = xTaskGetTickCount(); + + for( ;; ) + { + /* Place this task in the blocked state until it is time to run again. + The block time is specified in ticks, the constant used converts ticks + to ms. While in the Blocked state this task will not consume any CPU + time. */ + vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); + + /* Send to the queue - causing the queue receive task to unblock and + toggle the LED. 0 is used as the block time so the sending operation + will not block - it shouldn't need to block as the queue should always + be empty at this point in the code. */ + xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK ); + } +} +/*-----------------------------------------------------------*/ + +static void prvQueueReceiveTask( void *pvParameters ) +{ +unsigned long ulReceivedValue; +QueueHandle_t xQueue; + + /* The queue is passed in as the task's parameter. */ + xQueue = ( QueueHandle_t ) pvParameters; + + for( ;; ) + { + /* Wait until something arrives in the queue - this task will block + indefinitely provided INCLUDE_vTaskSuspend is set to 1 in + FreeRTOSConfig.h. */ + xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); + + /* To get here something must have been received from the queue, but + is it the expected value? If it is, toggle the LED. */ + if( ulReceivedValue == 100UL ) + { + vParTestToggleLED( mainTASK_LED ); + ulReceivedValue = 0U; + } + } +} +/*-----------------------------------------------------------*/ + +static void prvBlinkyTimerCallback( TimerHandle_t xTimer ) +{ + /* Avoid compiler warnings. */ + ( void ) xTimer; + + /* This function is called when the blinky software time expires. All the + function does is toggle the LED. LED mainTIMER_LED should therefore toggle + with the period set by mainBLINKY_TIMER_PERIOD. */ + vParTestToggleLED( mainTIMER_LED ); +} +/*-----------------------------------------------------------*/ + diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/main_full.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/main_full.c new file mode 100644 index 000000000..ab56c9918 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/main_full.c @@ -0,0 +1,1002 @@ +/* + FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. + All rights reserved + + VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. + + This file is part of the FreeRTOS distribution. + + FreeRTOS is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License (version 2) as published by the + Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. + + >>! NOTE: The modification to the GPL is included to allow you to !<< + >>! distribute a combined work that includes FreeRTOS without being !<< + >>! obliged to provide the source code for proprietary components !<< + >>! outside of the FreeRTOS kernel. !<< + + FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. Full license text is available on the following + link: http://www.freertos.org/a00114.html + + 1 tab == 4 spaces! + + *************************************************************************** + * * + * Having a problem? Start by reading the FAQ "My application does * + * not run, what could be wrong?". Have you defined configASSERT()? * + * * + * http://www.FreeRTOS.org/FAQHelp.html * + * * + *************************************************************************** + + *************************************************************************** + * * + * FreeRTOS provides completely free yet professionally developed, * + * robust, strictly quality controlled, supported, and cross * + * platform software that is more than just the market leader, it * + * is the industry's de facto standard. * + * * + * Help yourself get started quickly while simultaneously helping * + * to support the FreeRTOS project by purchasing a FreeRTOS * + * tutorial book, reference manual, or both: * + * http://www.FreeRTOS.org/Documentation * + * * + *************************************************************************** + + *************************************************************************** + * * + * Investing in training allows your team to be as productive as * + * possible as early as possible, lowering your overall development * + * cost, and enabling you to bring a more robust product to market * + * earlier than would otherwise be possible. Richard Barry is both * + * the architect and key author of FreeRTOS, and so also the world's * + * leading authority on what is the world's most popular real time * + * kernel for deeply embedded MCU designs. Obtaining your training * + * from Richard ensures your team will gain directly from his in-depth * + * product knowledge and years of usage experience. Contact Real Time * + * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * + * by Richard Barry: http://www.FreeRTOS.org/contact + * * + *************************************************************************** + + *************************************************************************** + * * + * You are receiving this top quality software for free. Please play * + * fair and reciprocate by reporting any suspected issues and * + * participating in the community forum: * + * http://www.FreeRTOS.org/support * + * * + * Thank you! * + * * + *************************************************************************** + + http://www.FreeRTOS.org - Documentation, books, training, latest versions, + license and Real Time Engineers Ltd. contact details. + + http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, + including FreeRTOS+Trace - an indispensable productivity tool, a DOS + compatible FAT file system, and our tiny thread aware UDP/IP stack. + + http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. + Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. + + http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High + Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS + licenses offer ticketed support, indemnification and commercial middleware. + + http://www.SafeRTOS.com - High Integrity Systems also provide a safety + engineered and independently SIL3 certified version for use in safety and + mission critical applications that require provable dependability. + + 1 tab == 4 spaces! +*/ + +/****************************************************************************** + * NOTE 1: This project provides two demo applications. A simple blinky style + * project, and a more comprehensive test and demo application that makes use of + * the FreeRTOS+CLI, FreeRTOS+UDP and FreeRTOS+FAT SL components. The + * mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting in main.c is used to select + * between the two. See the notes on using mainCREATE_SIMPLE_BLINKY_DEMO_ONLY + * in main.c. This file implements the comprehensive test and demo version, + * which is fully documented on the following URL: + * http://www.FreeRTOS.org/Atmel_SAM4E_RTOS_Demo.html + * + * NOTE 2: This file only contains the source code that is specific to the + * full demo. Generic functions, such FreeRTOS hook functions, and functions + * required to configure the hardware, are defined in main.c. + ****************************************************************************** + * + * Full user instructions are provided on the following URL: + * http://www.FreeRTOS.org/Atmel_SAM4E_RTOS_Demo.html + * + * main_full(): + * + Uses FreeRTOS+FAT SL to create a set of example files on a RAM disk. + * + Displays some bitmaps on the LCD. + * + Registers sample generic, file system related and UDP related commands + * with FreeRTOS+CLI. + * + Creates all the standard demo application tasks and software timers. + * + Starts the scheduler. + * + * A UDP command server and optionally two UDP echo client tasks are created + * from the network event hook after an IP address has been obtained. The IP + * address is displayed on the LCD. + * + * A "check software timer" is created to provide visual feedback of the system + * status. The timer's period is initially set to three seconds. The callback + * function associated with the timer checks all the standard demo tasks are not + * only still executed, but are executing without reporting any errors. If the + * timer discovers a task has either stalled, or reported an error, then it + * changes its own period from the initial three seconds, to just 200ms. The + * check software timer also toggles the LED marked D4 - so if the LED toggles + * every three seconds then no potential errors have been found, and if the LED + * toggles every 200ms then a potential error has been found in at least one + * task. + * + * Information on accessing the CLI and file system, and using the UDP echo + * tasks is provided on http://www.FreeRTOS.org/Atmel_SAM4E_RTOS_Demo.html + * + */ + +/* FreeRTOS includes. */ +#include "FreeRTOS.h" +#include "task.h" +#include "timers.h" + +/* FreeRTOS+UDP includes. */ +#include "FreeRTOS_UDP_IP.h" +#include "FreeRTOS_Sockets.h" + +/* UDP demo includes. */ +#include "UDPCommandInterpreter.h" +#include "TwoEchoClients.h" + +/* Standard demo includes. */ +#include "partest.h" +#include "blocktim.h" +#include "flash_timer.h" +#include "semtest.h" +#include "GenQTest.h" +#include "QPeek.h" +#include "IntQueue.h" +#include "countsem.h" +#include "dynamic.h" +#include "QueueOverwrite.h" +#include "QueueSet.h" +#include "recmutex.h" +#include "EventGroupsDemo.h" +#include "TaskNotify.h" +#include "IntSemTest.h" +#include "TimerDemo.h" +#include "IntQueue.h" + +/* The period after which the check timer will expire, in ms, provided no errors +have been reported by any of the standard demo tasks. ms are converted to the +equivalent in ticks using the portTICK_PERIOD_MS constant. */ +#define mainCHECK_TIMER_PERIOD_MS ( 3000UL / portTICK_PERIOD_MS ) + +/* The period at which the check timer will expire, in ms, if an error has been +reported in one of the standard demo tasks. ms are converted to the equivalent +in ticks using the portTICK_PERIOD_MS constant. */ +#define mainERROR_CHECK_TIMER_PERIOD_MS ( 200UL / portTICK_PERIOD_MS ) + +/* The priorities of the various demo application tasks. */ +#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) +#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) +#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 ) +#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) +#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) +#define mainQUEUE_OVERWRITE_TASK_PRIORITY ( tskIDLE_PRIORITY ) + +/* The LED controlled by the 'check' software timer. */ +#define mainCHECK_LED ( 2 ) + +/* The number of LEDs that should be controlled by the flash software timer +standard demo. In this case it is only 1 as the starter kit has three LEDs, one +of which is controlled by the check timer and one of which is controlled by the +ISR triggered task. */ +#define mainNUM_FLASH_TIMER_LEDS ( 1 ) + +/* Misc. */ +#define mainDONT_BLOCK ( 0 ) + +/* Note: If the application is started without the network cable plugged in +then ipconfigUDP_TASK_PRIORITY should be set to 0 in FreeRTOSIPConfig.h to +ensure the IP task is created at the idle priority. This is because the Atmel +ASF GMAC driver polls the GMAC looking for a connection, and doing so will +prevent any lower priority tasks from executing. In this demo the IP task is +started at the idle priority, then set to configMAX_PRIORITIES - 2 in the +network event hook only after a connection has been established (when the event +passed into the network event hook is eNetworkUp). +http://www.FreeRTOS.org/udp */ +#define mainCONNECTED_IP_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) +#define mainDISCONNECTED_IP_TASK_PRIORITY ( tskIDLE_PRIORITY ) + +/* UDP command server and echo task parameters. */ +#define mainUDP_CLI_TASK_PRIORITY ( tskIDLE_PRIORITY ) +#define mainUDP_CLI_PORT_NUMBER ( 5001UL ) +#define mainUDP_CLI_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE + 90 ) +#define mainECHO_CLIENT_STACK_SIZE ( configMINIMAL_STACK_SIZE + 30 ) + +/* Set to 1 to include the UDP echo client tasks in the build. The echo clients +require the IP address of the echo server to be defined using the +configECHO_SERVER_ADDR0 to configECHO_SERVER_ADDR3 constants in +FreeRTOSConfig.h. */ +#define mainINCLUDE_ECHO_CLIENT_TASKS 1 + +/* Used by the standard demo timer tasks. */ +#define mainTIMER_TEST_PERIOD ( 50 ) + +/*-----------------------------------------------------------*/ + +/* + * The check timer callback function, as described at the top of this file. + */ +static void prvCheckTimerCallback( TimerHandle_t xTimer ); + +/* + * Creates a set of sample files on a RAM disk. http://www.FreeRTOS.org/fat_sl + */ +extern void vCreateAndVerifySampleFiles( void ); + +/* + * Register sample generic commands that can be used with FreeRTOS+CLI. Type + * 'help' in the command line to see a list of registered commands. + * http://www.FreeRTOS.org/cli + */ +extern void vRegisterSampleCLICommands( void ); + +/* + * Register sample file system commands that can be used with FreeRTOS+CLI. + */ +extern void vRegisterFileSystemCLICommands( void ); + +/* + * Register sample UDP related commands that can be used with FreeRTOS+CLI. + */ +extern void vRegisterUDPCLICommands( void ); + +/* + * Initialise the LCD and output a bitmap. + */ +extern void vInitialiseLCD( void ); + +/* + * Register check tasks, and the tasks used to write over and check the contents + * of the FPU registers, as described at the top of this file. The nature of + * these files necessitates that they are written in an assembly file. + */ +static void prvRegTest1Task( void *pvParameters ) __attribute__((naked)); +static void prvRegTest2Task( void *pvParameters ) __attribute__((naked)); + +/*-----------------------------------------------------------*/ + +/* The default IP and MAC address used by the demo. The address configuration +defined here will be used if ipconfigUSE_DHCP is 0, or if ipconfigUSE_DHCP is +1 but a DHCP server could not be contacted. See the online documentation for +more information. */ +static const uint8_t ucIPAddress[ 4 ] = { configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 }; +static const uint8_t ucNetMask[ 4 ] = { configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 }; +static const uint8_t ucGatewayAddress[ 4 ] = { configGATEWAY_ADDR0, configGATEWAY_ADDR1, configGATEWAY_ADDR2, configGATEWAY_ADDR3 }; +static const uint8_t ucDNSServerAddress[ 4 ] = { configDNS_SERVER_ADDR0, configDNS_SERVER_ADDR1, configDNS_SERVER_ADDR2, configDNS_SERVER_ADDR3 }; + +/* The MAC address used by the demo. In production units the MAC address would +probably be read from flash memory or an EEPROM. Here it is just hard coded. +Note each node on a network must have a unique MAC address. */ +const uint8_t ucMACAddress[ 6 ] = { configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 }; + +/* The following two variables are used to communicate the status of the +register check tasks to the check software timer. If the variables keep +incrementing, then the register check tasks has not discovered any errors. If +a variable stops incrementing, then an error has been found. */ +volatile unsigned long ulRegTest1LoopCounter = 0UL, ulRegTest2LoopCounter = 0UL; + +/*-----------------------------------------------------------*/ + +int main_full( void ) +{ + /* Usage instructions on http://www.FreeRTOS.org/Atmel_SAM4E_RTOS_Demo.html */ + + /* Initialise the LCD and output a bitmap. The IP address will also be + displayed on the LCD when it has been obtained. */ + vInitialiseLCD(); + + /* If the file system is only going to be accessed from one task then + F_FS_THREAD_AWARE can be set to 0 and the set of example files are created + before the RTOS scheduler is started. If the file system is going to be + access from more than one task then F_FS_THREAD_AWARE must be set to 1 and + the set of sample files are created from the idle task hook function + vApplicationIdleHook(). */ + #if( F_FS_THREAD_AWARE == 0 ) + { + /* Initialise the drive and file system, then create a few example + files. The files can be viewed and accessed via the CLI. View the + documentation page for this demo (link at the top of this file) for more + information. */ + vCreateAndVerifySampleFiles(); + } + #endif + + /* Register example generic, file system related and UDP related CLI + commands respectively. Type 'help' into the command console to view a list + of registered commands. */ + vRegisterSampleCLICommands(); + vRegisterFileSystemCLICommands(); + vRegisterUDPCLICommands(); + + /* Initialise the network interface. Tasks that use the network are + created in the network event hook when the network is connected and ready + for use. The address values passed in here are used if ipconfigUSE_DHCP is + set to 0, or if ipconfigUSE_DHCP is set to 1 but a DHCP server cannot be + contacted. The IP address actually used is displayed on the LCD (after DHCP + has completed if DHCP is used). */ + FreeRTOS_IPInit( ucIPAddress, ucNetMask, ucGatewayAddress, ucDNSServerAddress, ucMACAddress ); + + /* Create all the other standard demo tasks. */ + vCreateBlockTimeTasks(); + vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); + vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); + vStartQueuePeekTasks(); + vStartCountingSemaphoreTasks(); + vStartDynamicPriorityTasks(); + vStartQueueOverwriteTask( mainQUEUE_OVERWRITE_TASK_PRIORITY ); + vStartQueueSetTasks(); + vStartRecursiveMutexTasks(); + vStartEventGroupTasks(); + vStartTaskNotifyTask(); + vStartInterruptSemaphoreTasks(); + vStartTimerDemoTask( mainTIMER_TEST_PERIOD ); + vStartInterruptQueueTasks(); + + /* Create the register check tasks, as described at the top of this + file */ + xTaskCreate( prvRegTest1Task, "Reg1", configMINIMAL_STACK_SIZE, ( void * ) NULL, tskIDLE_PRIORITY, NULL ); + xTaskCreate( prvRegTest2Task, "Reg2", configMINIMAL_STACK_SIZE, ( void * ) NULL, tskIDLE_PRIORITY, NULL ); + + /* Start the scheduler itself. */ + vTaskStartScheduler(); + + /* If all is well, the scheduler will now be running, and the following line + will never be reached. If the following line does execute, then there was + insufficient FreeRTOS heap memory available for the idle and/or timer tasks + to be created. See the memory management section on the FreeRTOS web site + for more details. */ + for( ;; ); +} +/*-----------------------------------------------------------*/ + +static void prvCheckTimerCallback( TimerHandle_t xTimer ) +{ +static long lChangedTimerPeriodAlready = pdFALSE; +static unsigned long ulLastRegTest1Value = 0, ulLastRegTest2Value = 0; +unsigned long ulErrorOccurred = pdFALSE; + + /* Avoid compiler warnings. */ + ( void ) xTimer; + + /* Have any of the standard demo tasks detected an error in their + operation? */ + if( xAreGenericQueueTasksStillRunning() != pdTRUE ) + { + ulErrorOccurred |= ( 0x01UL << 3UL ); + } + else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) + { + ulErrorOccurred |= ( 0x01UL << 4UL ); + } + else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) + { + ulErrorOccurred |= ( 0x01UL << 5UL ); + } + else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) + { + ulErrorOccurred |= ( 0x01UL << 6UL ); + } + else if( xAreCountingSemaphoreTasksStillRunning() != pdTRUE ) + { + ulErrorOccurred |= ( 0x01UL << 8UL ); + } + else if( xAreDynamicPriorityTasksStillRunning() != pdTRUE ) + { + ulErrorOccurred |= ( 0x01UL << 9UL ); + } + else if( xIsQueueOverwriteTaskStillRunning() != pdTRUE ) + { + ulErrorOccurred |= ( 0x01UL << 10UL ); + } + else if( xAreQueueSetTasksStillRunning() != pdTRUE ) + { + ulErrorOccurred |= ( 0x01UL << 11UL ); + } + else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) + { + ulErrorOccurred |= ( 0x01UL << 12UL ); + } + else if( xAreEventGroupTasksStillRunning() != pdTRUE ) + { + ulErrorOccurred |= ( 0x01UL << 13UL ); + } + else if( xAreTaskNotificationTasksStillRunning() != pdTRUE ) + { + ulErrorOccurred |= ( 0x01UL << 14UL ); + } + else if( xAreInterruptSemaphoreTasksStillRunning() != pdTRUE ) + { + ulErrorOccurred |= ( 0x01UL << 15UL ); + } + else if( xAreTimerDemoTasksStillRunning( mainCHECK_TIMER_PERIOD_MS ) != pdTRUE ) + { + ulErrorOccurred |= 1UL << 16UL; + } + else if( xAreIntQueueTasksStillRunning() != pdTRUE ) + { + ulErrorOccurred |= 1UL << 17UL; + } + + + /* Check that the register test 1 task is still running. */ + if( ulLastRegTest1Value == ulRegTest1LoopCounter ) + { + ulErrorOccurred |= 1UL << 18UL; + } + ulLastRegTest1Value = ulRegTest1LoopCounter; + + /* Check that the register test 2 task is still running. */ + if( ulLastRegTest2Value == ulRegTest2LoopCounter ) + { + ulErrorOccurred |= 1UL << 19UL; + } + ulLastRegTest2Value = ulRegTest2LoopCounter; + + if( ulErrorOccurred != pdFALSE ) + { + /* An error occurred. Increase the frequency at which the check timer + toggles its LED to give visual feedback of the potential error + condition. */ + if( lChangedTimerPeriodAlready == pdFALSE ) + { + lChangedTimerPeriodAlready = pdTRUE; + + /* This call to xTimerChangePeriod() uses a zero block time. + Functions called from inside of a timer callback function must + *never* attempt to block as to do so could impact other software + timers. */ + xTimerChangePeriod( xTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK ); + } + } + + /* Toggle the LED to give visual feedback of the system status. The rate at + which the LED toggles will increase to mainERROR_CHECK_TIMER_PERIOD_MS if a + suspected error has been found in any of the standard demo tasks. */ + vParTestToggleLED( mainCHECK_LED ); +} +/*-----------------------------------------------------------*/ + +/* Called by FreeRTOS+UDP when the network connects. */ +void vApplicationIPNetworkEventHook( eIPCallbackEvent_t eNetworkEvent ) +{ +static long lTasksAlreadyCreated = pdFALSE; +const unsigned long ulXCoord = 3, ulYCoord = 3, ulIPAddressOffset = 45; +unsigned long ulIPAddress; +char cIPAddress[ 20 ]; + + /* Note: If the application is started without the network cable plugged in + then ipconfigUDP_TASK_PRIORITY should be set to 0 in FreeRTOSIPConfig.h to + ensure the IP task is created at the idle priority. This is because the Atmel + ASF GMAC driver polls the GMAC looking for a connection, and doing so will + prevent any lower priority tasks from executing. In this demo the IP task is + started at the idle priority, then set to configMAX_PRIORITIES - 2 in the + network event hook only after a connection has been established (when the event + passed into the network event hook is eNetworkUp). */ + if( eNetworkEvent == eNetworkUp ) + { + /* Ensure tasks are only created once. */ + if( lTasksAlreadyCreated == pdFALSE ) + { + /* Create the task that handles the CLI on a UDP port. The port + number is set using the configUDP_CLI_PORT_NUMBER setting in + FreeRTOSConfig.h. */ + vStartUDPCommandInterpreterTask( mainUDP_CLI_TASK_STACK_SIZE, mainUDP_CLI_PORT_NUMBER, mainUDP_CLI_TASK_PRIORITY ); + + #if( mainINCLUDE_ECHO_CLIENT_TASKS == 1 ) + { + /* Create the UDP echo tasks. The UDP echo tasks require the IP + address of the echo server to be defined using the + configECHO_SERVER_ADDR0 to configECHO_SERVER_ADDR3 constants in + FreeRTOSConfig.h. */ + vStartEchoClientTasks( mainECHO_CLIENT_STACK_SIZE, tskIDLE_PRIORITY ); + } + #endif + } + + /* Obtain the IP address, convert it to a string, then display it on the + LCD. */ + FreeRTOS_GetAddressConfiguration( &ulIPAddress, NULL, NULL, NULL ); + FreeRTOS_inet_ntoa( ulIPAddress, cIPAddress ); + ili93xx_draw_string( ulXCoord, ulYCoord, ( uint8_t * ) "IP: " ); + ili93xx_draw_string( ulXCoord + ulIPAddressOffset, ulYCoord, ( uint8_t * ) cIPAddress ); + + /* Set the priority of the IP task up to the desired priority now it has + connected. */ + vTaskPrioritySet( NULL, mainCONNECTED_IP_TASK_PRIORITY ); + } + + /* NOTE: At the time of writing the Ethernet driver does not report the + cable being unplugged - so the following if() condition will never be met. + It is included for possible future updates to the driver. */ + if( eNetworkEvent == eNetworkDown ) + { + /* Ensure the Atmel GMAC drivers don't hog all the CPU time as they look + for a new connection by lowering the priority of the IP task to that of + the Idle task. */ + vTaskPrioritySet( NULL, tskIDLE_PRIORITY ); + + /* Disconnected - so no IP address. */ + ili93xx_draw_string( ulXCoord, ulYCoord, ( uint8_t * ) "IP: " ); + } +} +/*-----------------------------------------------------------*/ + +void vFullDemoIdleHook( void ) +{ +static TimerHandle_t xCheckTimer = NULL; + + if( xCheckTimer == NULL ) + { + /* Create the software timer that performs the 'check' + functionality, in the full demo. This is not done before the + scheduler is started as to do so would prevent the standard demo + timer tasks from passing their tests (they expect the timer + command queue to be empty. */ + xCheckTimer = xTimerCreate( "CheckTimer", /* A text name, purely to help debugging. */ + ( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */ + pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ + ( void * ) 0, /* The ID is not used, so can be set to anything. */ + prvCheckTimerCallback ); /* The callback function that inspects the status of all the other tasks. */ + + if( xCheckTimer != NULL ) + { + xTimerStart( xCheckTimer, mainDONT_BLOCK ); + } + + /* Also start some timers that just flash LEDs. */ + vStartLEDFlashTimers( mainNUM_FLASH_TIMER_LEDS ); + } + + /* If the file system is only going to be accessed from one task then + F_FS_THREAD_AWARE can be set to 0 and the set of example files is created + before the RTOS scheduler is started. If the file system is going to be + access from more than one task then F_FS_THREAD_AWARE must be set to 1 and + the set of sample files are created from the idle task hook function. */ + #if( F_FS_THREAD_AWARE == 1 ) + { + static portBASE_TYPE xCreatedSampleFiles = pdFALSE; + + /* Initialise the drive and file system, then create a few example + files. The output from this function just goes to the stdout window, + allowing the output to be viewed when the UDP command console is not + connected. */ + if( xCreatedSampleFiles == pdFALSE ) + { + vCreateAndVerifySampleFiles(); + xCreatedSampleFiles = pdTRUE; + } + } + #endif +} +/*-----------------------------------------------------------*/ + +void vFullDemoTickHook( void ) +{ + /* Call the periodic queue overwrite from ISR test function. */ + vQueueOverwritePeriodicISRDemo(); + + /* Call the periodic queue set ISR test function. */ + vQueueSetAccessQueueSetFromISR(); + + /* Call the event group ISR tests. */ + vPeriodicEventGroupsProcessing(); + + /* Exercise task notifications from interrupts. */ + xNotifyTaskFromISR(); + + /* Use mutexes from interrupts. */ + vInterruptSemaphorePeriodicTest(); + + /* Use timers from an interrupt. */ + vTimerPeriodicISRTests(); +} +/*-----------------------------------------------------------*/ + +/* Called automatically when a reply to an outgoing ping is received. */ +void vApplicationPingReplyHook( ePingReplyStatus_t eStatus, uint16_t usIdentifier ) +{ + /* This demo has nowhere to output any information so does nothing, but the + IP address resolved for the pined URL is displayed in the CLI. */ + ( void ) usIdentifier; + ( void ) eStatus; +} +/*-----------------------------------------------------------*/ + +/* This is a naked function. */ +static void prvRegTest1Task( void *pvParameters ) +{ + __asm volatile + ( + " /* Fill the core registers with known values. */ \n" + " mov r0, #100 \n" + " mov r1, #101 \n" + " mov r2, #102 \n" + " mov r3, #103 \n" + " mov r4, #104 \n" + " mov r5, #105 \n" + " mov r6, #106 \n" + " mov r7, #107 \n" + " mov r8, #108 \n" + " mov r9, #109 \n" + " mov r10, #110 \n" + " mov r11, #111 \n" + " mov r12, #112 \n" + " \n" + " /* Fill the VFP registers with known values. */ \n" + " vmov d0, r0, r1 \n" + " vmov d1, r2, r3 \n" + " vmov d2, r4, r5 \n" + " vmov d3, r6, r7 \n" + " vmov d4, r8, r9 \n" + " vmov d5, r10, r11 \n" + " vmov d6, r0, r1 \n" + " vmov d7, r2, r3 \n" + " vmov d8, r4, r5 \n" + " vmov d9, r6, r7 \n" + " vmov d10, r8, r9 \n" + " vmov d11, r10, r11 \n" + " vmov d12, r0, r1 \n" + " vmov d13, r2, r3 \n" + " vmov d14, r4, r5 \n" + " vmov d15, r6, r7 \n" + " \n" + "reg1_loop: \n" + " /* Check all the VFP registers still contain the values set above.\n" + " First save registers that are clobbered by the test. */ \n" + " push { r0-r1 } \n" + " \n" + " vmov r0, r1, d0 \n" + " cmp r0, #100 \n" + " bne reg1_error_loopf \n" + " cmp r1, #101 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d1 \n" + " cmp r0, #102 \n" + " bne reg1_error_loopf \n" + " cmp r1, #103 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d2 \n" + " cmp r0, #104 \n" + " bne reg1_error_loopf \n" + " cmp r1, #105 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d3 \n" + " cmp r0, #106 \n" + " bne reg1_error_loopf \n" + " cmp r1, #107 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d4 \n" + " cmp r0, #108 \n" + " bne reg1_error_loopf \n" + " cmp r1, #109 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d5 \n" + " cmp r0, #110 \n" + " bne reg1_error_loopf \n" + " cmp r1, #111 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d6 \n" + " cmp r0, #100 \n" + " bne reg1_error_loopf \n" + " cmp r1, #101 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d7 \n" + " cmp r0, #102 \n" + " bne reg1_error_loopf \n" + " cmp r1, #103 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d8 \n" + " cmp r0, #104 \n" + " bne reg1_error_loopf \n" + " cmp r1, #105 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d9 \n" + " cmp r0, #106 \n" + " bne reg1_error_loopf \n" + " cmp r1, #107 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d10 \n" + " cmp r0, #108 \n" + " bne reg1_error_loopf \n" + " cmp r1, #109 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d11 \n" + " cmp r0, #110 \n" + " bne reg1_error_loopf \n" + " cmp r1, #111 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d12 \n" + " cmp r0, #100 \n" + " bne reg1_error_loopf \n" + " cmp r1, #101 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d13 \n" + " cmp r0, #102 \n" + " bne reg1_error_loopf \n" + " cmp r1, #103 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d14 \n" + " cmp r0, #104 \n" + " bne reg1_error_loopf \n" + " cmp r1, #105 \n" + " bne reg1_error_loopf \n" + " vmov r0, r1, d15 \n" + " cmp r0, #106 \n" + " bne reg1_error_loopf \n" + " cmp r1, #107 \n" + " bne reg1_error_loopf \n" + " \n" + " /* Restore the registers that were clobbered by the test. */\n" + " pop {r0-r1} \n" + " \n" + " /* VFP register test passed. Jump to the core register test. */\n" + " b reg1_loopf_pass \n" + " \n" + "reg1_error_loopf: \n" + " /* If this line is hit then a VFP register value was found to be\n" + " incorrect. */ \n" + " b reg1_error_loopf \n" + " \n" + "reg1_loopf_pass: \n" + " \n" + " cmp r0, #100 \n" + " bne reg1_error_loop \n" + " cmp r1, #101 \n" + " bne reg1_error_loop \n" + " cmp r2, #102 \n" + " bne reg1_error_loop \n" + " cmp r3, #103 \n" + " bne reg1_error_loop \n" + " cmp r4, #104 \n" + " bne reg1_error_loop \n" + " cmp r5, #105 \n" + " bne reg1_error_loop \n" + " cmp r6, #106 \n" + " bne reg1_error_loop \n" + " cmp r7, #107 \n" + " bne reg1_error_loop \n" + " cmp r8, #108 \n" + " bne reg1_error_loop \n" + " cmp r9, #109 \n" + " bne reg1_error_loop \n" + " cmp r10, #110 \n" + " bne reg1_error_loop \n" + " cmp r11, #111 \n" + " bne reg1_error_loop \n" + " cmp r12, #112 \n" + " bne reg1_error_loop \n" + " \n" + " /* Everything passed, increment the loop counter. */ \n" + " push { r0-r1 } \n" + " ldr r0, =ulRegTest1LoopCounter \n" + " ldr r1, [r0] \n" + " adds r1, r1, #1 \n" + " str r1, [r0] \n" + " pop { r0-r1 } \n" + " \n" + " /* Start again. */ \n" + " b reg1_loop \n" + " \n" + "reg1_error_loop: \n" + " /* If this line is hit then there was an error in a core register value.\n" + " The loop ensures the loop counter stops incrementing. */\n" + " b reg1_error_loop \n" + " nop " + ); + + /* Remove compiler warnings about unused parameters. */ + ( void ) pvParameters; +} +/*-----------------------------------------------------------*/ + +/* This is a naked function. */ +static void prvRegTest2Task( void *pvParameters ) +{ + __asm volatile + ( + " /* Set all the core registers to known values. */ \n" + " mov r0, #-1 \n" + " mov r1, #1 \n" + " mov r2, #2 \n" + " mov r3, #3 \n" + " mov r4, #4 \n" + " mov r5, #5 \n" + " mov r6, #6 \n" + " mov r7, #7 \n" + " mov r8, #8 \n" + " mov r9, #9 \n" + " mov r10, #10 \n" + " mov r11, #11 \n" + " mov r12, #12 \n" + " \n" + " /* Set all the VFP to known values. */ \n" + " vmov d0, r0, r1 \n" + " vmov d1, r2, r3 \n" + " vmov d2, r4, r5 \n" + " vmov d3, r6, r7 \n" + " vmov d4, r8, r9 \n" + " vmov d5, r10, r11 \n" + " vmov d6, r0, r1 \n" + " vmov d7, r2, r3 \n" + " vmov d8, r4, r5 \n" + " vmov d9, r6, r7 \n" + " vmov d10, r8, r9 \n" + " vmov d11, r10, r11 \n" + " vmov d12, r0, r1 \n" + " vmov d13, r2, r3 \n" + " vmov d14, r4, r5 \n" + " vmov d15, r6, r7 \n" + " \n" + "reg2_loop: \n" + " \n" + " /* Check all the VFP registers still contain the values set above.\n" + " First save registers that are clobbered by the test. */ \n" + " push { r0-r1 } \n" + " \n" + " vmov r0, r1, d0 \n" + " cmp r0, #-1 \n" + " bne reg2_error_loopf \n" + " cmp r1, #1 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d1 \n" + " cmp r0, #2 \n" + " bne reg2_error_loopf \n" + " cmp r1, #3 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d2 \n" + " cmp r0, #4 \n" + " bne reg2_error_loopf \n" + " cmp r1, #5 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d3 \n" + " cmp r0, #6 \n" + " bne reg2_error_loopf \n" + " cmp r1, #7 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d4 \n" + " cmp r0, #8 \n" + " bne reg2_error_loopf \n" + " cmp r1, #9 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d5 \n" + " cmp r0, #10 \n" + " bne reg2_error_loopf \n" + " cmp r1, #11 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d6 \n" + " cmp r0, #-1 \n" + " bne reg2_error_loopf \n" + " cmp r1, #1 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d7 \n" + " cmp r0, #2 \n" + " bne reg2_error_loopf \n" + " cmp r1, #3 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d8 \n" + " cmp r0, #4 \n" + " bne reg2_error_loopf \n" + " cmp r1, #5 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d9 \n" + " cmp r0, #6 \n" + " bne reg2_error_loopf \n" + " cmp r1, #7 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d10 \n" + " cmp r0, #8 \n" + " bne reg2_error_loopf \n" + " cmp r1, #9 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d11 \n" + " cmp r0, #10 \n" + " bne reg2_error_loopf \n" + " cmp r1, #11 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d12 \n" + " cmp r0, #-1 \n" + " bne reg2_error_loopf \n" + " cmp r1, #1 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d13 \n" + " cmp r0, #2 \n" + " bne reg2_error_loopf \n" + " cmp r1, #3 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d14 \n" + " cmp r0, #4 \n" + " bne reg2_error_loopf \n" + " cmp r1, #5 \n" + " bne reg2_error_loopf \n" + " vmov r0, r1, d15 \n" + " cmp r0, #6 \n" + " bne reg2_error_loopf \n" + " cmp r1, #7 \n" + " bne reg2_error_loopf \n" + " \n" + " /* Restore the registers that were clobbered by the test. */\n" + " pop {r0-r1} \n" + " \n" + " /* VFP register test passed. Jump to the core register test. */\n" + " b reg2_loopf_pass \n" + " \n" + "reg2_error_loopf: \n" + " /* If this line is hit then a VFP register value was found to be\n" + " incorrect. */ \n" + " b reg2_error_loopf \n" + " \n" + "reg2_loopf_pass: \n" + " \n" + " cmp r0, #-1 \n" + " bne reg2_error_loop \n" + " cmp r1, #1 \n" + " bne reg2_error_loop \n" + " cmp r2, #2 \n" + " bne reg2_error_loop \n" + " cmp r3, #3 \n" + " bne reg2_error_loop \n" + " cmp r4, #4 \n" + " bne reg2_error_loop \n" + " cmp r5, #5 \n" + " bne reg2_error_loop \n" + " cmp r6, #6 \n" + " bne reg2_error_loop \n" + " cmp r7, #7 \n" + " bne reg2_error_loop \n" + " cmp r8, #8 \n" + " bne reg2_error_loop \n" + " cmp r9, #9 \n" + " bne reg2_error_loop \n" + " cmp r10, #10 \n" + " bne reg2_error_loop \n" + " cmp r11, #11 \n" + " bne reg2_error_loop \n" + " cmp r12, #12 \n" + " bne reg2_error_loop \n" + " \n" + " /* Increment the loop counter to indicate this test is still functioning\n" + " correctly. */ \n" + " push { r0-r1 } \n" + " ldr r0, =ulRegTest2LoopCounter \n" + " ldr r1, [r0] \n" + " adds r1, r1, #1 \n" + " str r1, [r0] \n" + " \n" + " /* Yield to increase test coverage. */ \n" + " movs r0, #0x01 \n" + " ldr r1, =0xe000ed04 \n" /* NVIC_INT_CTRL */ + " lsl r0, #28 \n" /* Shift to PendSV bit */ + " str r0, [r1] \n" + " dsb \n" + " pop { r0-r1 } \n" + " \n" + " /* Start again. */ \n" + " b reg2_loop \n" + " \n" + "reg2_error_loop: \n" + " /* If this line is hit then there was an error in a core register value.\n" + " This loop ensures the loop counter variable stops incrementing. */\n" + " b reg2_error_loop \n" + " nop \n" + ); + + /* Remove compiler warnings about unused parameters. */ + ( void ) pvParameters; +} diff --git a/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/printf-stdarg.c b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/printf-stdarg.c new file mode 100644 index 000000000..7062a04e4 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_M4F_ATSAM4E_Atmel_Studio/src/printf-stdarg.c @@ -0,0 +1,280 @@ +/* + Copyright 2001, 2002 Georges Menie (www.menie.org) + stdarg version contributed by Christian Ettinger + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +/* + putchar is the only external dependency for this file, + if you have a working putchar, leave it commented out. + If not, uncomment the define below and + replace outbyte(c) by your own function call. + +#define putchar(c) outbyte(c) +*/ + +#include + +static void printchar(char **str, int c) +{ + extern int putchar(int c); + + if (str) { + **str = c; + ++(*str); + } + else (void)putchar(c); +} + +#define PAD_RIGHT 1 +#define PAD_ZERO 2 + +static int prints(char **out, const char *string, int width, int pad) +{ + register int pc = 0, padchar = ' '; + + if (width > 0) { + register int len = 0; + register const char *ptr; + for (ptr = string; *ptr; ++ptr) ++len; + if (len >= width) width = 0; + else width -= len; + if (pad & PAD_ZERO) padchar = '0'; + } + if (!(pad & PAD_RIGHT)) { + for ( ; width > 0; --width) { + printchar (out, padchar); + ++pc; + } + } + for ( ; *string ; ++string) { + printchar (out, *string); + ++pc; + } + for ( ; width > 0; --width) { + printchar (out, padchar); + ++pc; + } + + return pc; +} + +/* the following should be enough for 32 bit int */ +#define PRINT_BUF_LEN 12 + +static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) +{ + char print_buf[PRINT_BUF_LEN]; + register char *s; + register int t, neg = 0, pc = 0; + register unsigned int u = i; + + if (i == 0) { + print_buf[0] = '0'; + print_buf[1] = '\0'; + return prints (out, print_buf, width, pad); + } + + if (sg && b == 10 && i < 0) { + neg = 1; + u = -i; + } + + s = print_buf + PRINT_BUF_LEN-1; + *s = '\0'; + + while (u) { + t = u % b; + if( t >= 10 ) + t += letbase - '0' - 10; + *--s = t + '0'; + u /= b; + } + + if (neg) { + if( width && (pad & PAD_ZERO) ) { + printchar (out, '-'); + ++pc; + --width; + } + else { + *--s = '-'; + } + } + + return pc + prints (out, s, width, pad); +} + +static int print( char **out, const char *format, va_list args ) +{ + register int width, pad; + register int pc = 0; + char scr[2]; + + for (; *format != 0; ++format) { + if (*format == '%') { + ++format; + width = pad = 0; + if (*format == '\0') break; + if (*format == '%') goto out; + if (*format == '-') { + ++format; + pad = PAD_RIGHT; + } + while (*format == '0') { + ++format; + pad |= PAD_ZERO; + } + for ( ; *format >= '0' && *format <= '9'; ++format) { + width *= 10; + width += *format - '0'; + } + if( *format == 's' ) { + register char *s = (char *)va_arg( args, int ); + pc += prints (out, s?s:"(null)", width, pad); + continue; + } + if( *format == 'd' ) { + pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); + continue; + } + if( *format == 'x' ) { + pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); + continue; + } + if( *format == 'X' ) { + pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); + continue; + } + if( *format == 'u' ) { + pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); + continue; + } + if( *format == 'c' ) { + /* char are converted to int then pushed on the stack */ + scr[0] = (char)va_arg( args, int ); + scr[1] = '\0'; + pc += prints (out, scr, width, pad); + continue; + } + } + else { + out: + printchar (out, *format); + ++pc; + } + } + if (out) **out = '\0'; + va_end( args ); + return pc; +} + +int printf(const char *format, ...) +{ + va_list args; + + va_start( args, format ); + return print( 0, format, args ); +} + +int sprintf(char *out, const char *format, ...) +{ + va_list args; + + va_start( args, format ); + return print( &out, format, args ); +} + + +int snprintf( char *buf, unsigned int count, const char *format, ... ) +{ + va_list args; + + ( void ) count; + + va_start( args, format ); + return print( &buf, format, args ); +} + + +#ifdef TEST_PRINTF +int main(void) +{ + char *ptr = "Hello world!"; + char *np = 0; + int i = 5; + unsigned int bs = sizeof(int)*8; + int mi; + char buf[80]; + + mi = (1 << (bs-1)) + 1; + printf("%s\n", ptr); + printf("printf test\n"); + printf("%s is null pointer\n", np); + printf("%d = 5\n", i); + printf("%d = - max int\n", mi); + printf("char %c = 'a'\n", 'a'); + printf("hex %x = ff\n", 0xff); + printf("hex %02x = 00\n", 0); + printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); + printf("%d %s(s)%", 0, "message"); + printf("\n"); + printf("%d %s(s) with %%\n", 0, "message"); + sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); + sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); + sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); + sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); + sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); + sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); + sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); + sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); + + return 0; +} + +/* + * if you compile this file with + * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c + * you will get a normal warning: + * printf.c:214: warning: spurious trailing `%' in format + * this line is testing an invalid % at the end of the format string. + * + * this should display (on 32bit int machine) : + * + * Hello world! + * printf test + * (null) is null pointer + * 5 = 5 + * -2147483647 = - max int + * char a = 'a' + * hex ff = ff + * hex 00 = 00 + * signed -3 = unsigned 4294967293 = hex fffffffd + * 0 message(s) + * 0 message(s) with % + * justif: "left " + * justif: " right" + * 3: 0003 zero padded + * 3: 3 left justif. + * 3: 3 right justif. + * -3: -003 zero padded + * -3: -3 left justif. + * -3: -3 right justif. + */ + +#endif + + diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/RTOSDemo.atsln b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/RTOSDemo.atsln deleted file mode 100644 index 8de4446cc..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/RTOSDemo.atsln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Atmel Studio Solution File, Format Version 11.00 -Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "RTOSDemo", "RTOSDemo.cproj", "{257FE152-8D54-41CA-AFE7-777DE72FE329}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|ARM = Debug|ARM - Release|ARM = Release|ARM - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {257FE152-8D54-41CA-AFE7-777DE72FE329}.Debug|ARM.ActiveCfg = Debug|ARM - {257FE152-8D54-41CA-AFE7-777DE72FE329}.Debug|ARM.Build.0 = Debug|ARM - {257FE152-8D54-41CA-AFE7-777DE72FE329}.Release|ARM.ActiveCfg = Release|ARM - {257FE152-8D54-41CA-AFE7-777DE72FE329}.Release|ARM.Build.0 = Release|ARM - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/RTOSDemo.atsuo b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/RTOSDemo.atsuo deleted file mode 100644 index 08cf7bfc1..000000000 Binary files a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/RTOSDemo.atsuo and /dev/null differ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/RTOSDemo.cproj b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/RTOSDemo.cproj deleted file mode 100644 index e3941f3a6..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/RTOSDemo.cproj +++ /dev/null @@ -1,1182 +0,0 @@ - - - - 2.0 - 6.2 - {257fe152-8d54-41ca-afe7-777de72fe329} - $(MSBuildProjectName) - $(MSBuildProjectName) - $(MSBuildProjectName) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ATSAM4E16E - sam4e - C - com.Atmel.ARMGCC.C - - $(MSBuildProjectDirectory)\$(Configuration) - $(MSBuildProjectName) - .elf - Executable - Native - true - false - true - true - 0x20000000 - - exception_table - 2 - 1 - com.atmel.avrdbg.tool.samice - - - - false - 7020000 - - SWD - - com.atmel.avrdbg.tool.samice - 158000789 - J-Link - - SWD - - - - - True - True - True - True - True - - - ARM_MATH_CM4=true - BOARD=SAM4E_EK - __SAM4E16E__ - printf=iprintf - - - - - ../src - ../src/ASF/common/boards - ../src/ASF/common/services/clock - ../src/ASF/common/services/ioport - ../src/ASF/common/utils - ../src/ASF/sam/boards - ../src/ASF/sam/boards/sam4e_ek - ../src/ASF/sam/drivers/pmc - ../src/ASF/sam/utils - ../src/ASF/sam/utils/cmsis/sam4e/include - ../src/ASF/sam/utils/cmsis/sam4e/source/templates - ../src/ASF/sam/utils/fpu - ../src/ASF/sam/utils/header_files - ../src/ASF/sam/utils/preprocessor - ../src/ASF/thirdparty/CMSIS/Include - ../src/ASF/thirdparty/CMSIS/Lib/GCC - ../src/config - %24(ToolchainDir)\..\..\CMSIS_Atmel - %24(ToolchainDir)\..\..\CMSIS_Atmel\CMSIS\Include - %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL - %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL\sam4e\include - ../src/ASF/sam/components/ethernet_phy/ksz8051mnl - ../src/ASF/sam/drivers/gmac - ../src/ASF/sam/components/display/aat31xx - ../src/ASF/sam/components/display/ili93xx - ../src/ASF/sam/drivers/ebi/smc - ../src/ASF/sam/drivers/tc - - - Optimize for size (-Os) - -fdata-sections - True - True - -pipe -fno-strict-aliasing -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -std=gnu99 -ffunction-sections -fdata-sections -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int -Wmain -Wparentheses -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef -Wshadow -Wbad-function-cast -Wwrite-strings -Wsign-compare -Waggregate-return -Wmissing-declarations -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations -Wpacked -Wredundant-decls -Wnested-externs -Wlong-long -Wunreachable-code -Wcast-align --param max-inline-insns-single=500 -mfloat-abi=softfp -mfpu=vfpv4 - - - arm_cortexM4lf_math - m - - - - - ../src/ASF/thirdparty/CMSIS/Lib/GCC - - - True - -Wl,--entry=Reset_Handler -Wl,--cref -mthumb -T../src/ASF/sam/utils/linker_scripts/sam4e/sam4e16e/gcc/flash.ld - -DARM_MATH_CM4=true -DBOARD=SAM4E_EK -D__SAM4E16E__ -Dprintf=iprintf - - - ../src - ../src/ASF/common/boards - ../src/ASF/common/services/clock - ../src/ASF/common/services/ioport - ../src/ASF/common/utils - ../src/ASF/sam/boards - ../src/ASF/sam/boards/sam4e_ek - ../src/ASF/sam/drivers/pmc - ../src/ASF/sam/utils - ../src/ASF/sam/utils/cmsis/sam4e/include - ../src/ASF/sam/utils/cmsis/sam4e/source/templates - ../src/ASF/sam/utils/fpu - ../src/ASF/sam/utils/header_files - ../src/ASF/sam/utils/preprocessor - ../src/ASF/thirdparty/CMSIS/Include - ../src/ASF/thirdparty/CMSIS/Lib/GCC - ../src/config - %24(ToolchainDir)\..\..\CMSIS_Atmel - %24(ToolchainDir)\..\..\CMSIS_Atmel\CMSIS\Include - %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL - %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL\sam4e\include - ../src/ASF/sam/components/ethernet_phy/ksz8051mnl - ../src/ASF/sam/drivers/gmac - ../src/ASF/sam/components/display/aat31xx - ../src/ASF/sam/components/display/ili93xx - ../src/ASF/sam/drivers/ebi/smc - ../src/ASF/sam/drivers/tc - - - - - True - True - True - True - - - - - True - True - True - True - True - - - ARM_MATH_CM4=true - BOARD=SAM4E_EK - __SAM4E16E__ - - - - - ../src - ../src/ASF/common/boards - ../src/ASF/common/services/clock - ../src/ASF/common/services/ioport - ../src/ASF/common/utils - ../src/ASF/sam/boards - ../src/ASF/sam/boards/sam4e_ek - ../src/ASF/sam/drivers/pmc - ../src/ASF/sam/utils - ../src/ASF/sam/utils/cmsis/sam4e/include - ../src/ASF/sam/utils/cmsis/sam4e/source/templates - ../src/ASF/sam/utils/fpu - ../src/ASF/sam/utils/header_files - ../src/ASF/sam/utils/preprocessor - ../src/ASF/thirdparty/CMSIS/Include - ../src/ASF/thirdparty/CMSIS/Lib/GCC - ../src/config - %24(ToolchainDir)\..\..\CMSIS_Atmel - %24(ToolchainDir)\..\..\CMSIS_Atmel\CMSIS\Include - %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL - %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL\sam4e\include - ../../../../FreeRTOS/Source/portable/GCC/ARM_CM4F - ../../../../FreeRTOS/Source/include - ../../../../FreeRTOS-Plus/Source/FreeRTOS-Plus-UDP/include - ../../../../FreeRTOS-Plus/Source/FreeRTOS-Plus-UDP/portable/Compiler/GCC - ../../../../FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_UDP_Demos/TraceMacros/Example1 - ../src/ASF/sam/components/ethernet_phy/ksz8051mnl - ../src/ASF/sam/drivers/gmac - ../../../../FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI - ../../../../FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/api - ../../../../FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_UDP_Demos/CLICommands - ../../Common/include - ../src/ASF/sam/components/display/aat31xx - ../src/ASF/sam/components/display/ili93xx - ../src/ASF/sam/drivers/ebi/smc - ../../../../FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_UDP_Demos/EchoClients - ../src/ASF/sam/drivers/tc - - - -fdata-sections - True - Maximum (-g3) - True - True - -pipe -fno-strict-aliasing -Wall -Wextra -ffunction-sections -fdata-sections --param max-inline-insns-single=500 -mfloat-abi=softfp -mfpu=vfpv4 - - - m - - - - - ../src/ASF/thirdparty/CMSIS/Lib/GCC - - - True - - -Wl,--entry=Reset_Handler -Wl,--cref -mthumb -T../src/ASF/sam/utils/linker_scripts/sam4e/sam4e16e/gcc/flash.ld - Default (-g) - -DARM_MATH_CM4=true -DBOARD=SAM4E_EK -D__SAM4E16E__ -Dprintf=iprintf - - - ../src - ../src/ASF/common/boards - ../src/ASF/common/services/clock - ../src/ASF/common/services/ioport - ../src/ASF/common/utils - ../src/ASF/sam/boards - ../src/ASF/sam/boards/sam4e_ek - ../src/ASF/sam/drivers/pmc - ../src/ASF/sam/utils - ../src/ASF/sam/utils/cmsis/sam4e/include - ../src/ASF/sam/utils/cmsis/sam4e/source/templates - ../src/ASF/sam/utils/fpu - ../src/ASF/sam/utils/header_files - ../src/ASF/sam/utils/preprocessor - ../src/ASF/thirdparty/CMSIS/Include - ../src/ASF/thirdparty/CMSIS/Lib/GCC - ../src/config - %24(ToolchainDir)\..\..\CMSIS_Atmel - %24(ToolchainDir)\..\..\CMSIS_Atmel\CMSIS\Include - %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL - %24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL\sam4e\include - ../src/ASF/sam/components/ethernet_phy/ksz8051mnl - ../src/ASF/sam/drivers/gmac - ../src/ASF/sam/components/display/aat31xx - ../src/ASF/sam/components/display/ili93xx - ../src/ASF/sam/drivers/ebi/smc - ../src/ASF/sam/drivers/tc - - - Default (-Wa,-g) - - - True - True - True - True - - - - compile - src\File-Related-CLI-commands.c - - - compile - src\Sample-CLI-commands.c - - - compile - src\UDP-Related-CLI-commands.c - - - compile - src\File-system-demo.c - - - compile - src\UDPCommandServer.c - - - compile - src\TwoEchoClients.c - - - compile - src\FreeRTOS+\FreeRTOS+FAT SL\dir.c - - - compile - src\FreeRTOS+\FreeRTOS+FAT SL\drv.c - - - compile - src\FreeRTOS+\FreeRTOS+FAT SL\fat.c - - - compile - src\FreeRTOS+\FreeRTOS+FAT SL\file.c - - - compile - src\FreeRTOS+\FreeRTOS+FAT SL\f_lock.c - - - compile - src\FreeRTOS+\FreeRTOS+FAT SL\util.c - - - compile - src\FreeRTOS+\FreeRTOS+FAT SL\util_sfn.c - - - compile - src\FreeRTOS+\FreeRTOS+FAT SL\volume.c - - - compile - src\FreeRTOS+\FreeRTOS+FAT SL\Media Driver\ramdrv_f.c - - - compile - src\FreeRTOS+\FreeRTOS+FAT SL\PSP\Target\RTC\psp_rtc.c - - - compile - src\FreeRTOS\event_groups.c - - - compile - src\Common Demo Tasks\blocktim.c - - - compile - src\Common Demo Tasks\countsem.c - - - compile - src\Common Demo Tasks\dynamic.c - - - compile - src\Common Demo Tasks\EventGroupsDemo.c - - - compile - src\Common Demo Tasks\flash_timer.c - - - compile - src\Common Demo Tasks\GenQTest.c - - - compile - src\Common Demo Tasks\IntQueue.c - - - compile - src\Common Demo Tasks\IntSemTest.c - - - compile - src\Common Demo Tasks\QPeek.c - - - compile - src\Common Demo Tasks\QueueOverwrite.c - - - compile - src\Common Demo Tasks\QueueSet.c - - - compile - src\Common Demo Tasks\recmutex.c - - - compile - src\Common Demo Tasks\semtest.c - - - compile - src\Common Demo Tasks\TaskNotify.c - - - compile - src\Common Demo Tasks\TimerDemo.c - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - src\DemoIPTrace.c - - - compile - src\FreeRTOS+\FreeRTOS+CLI\FreeRTOS_CLI.c - - - compile - src\FreeRTOS+\FreeRTOS+UDP\FreeRTOS_DHCP.c - - - compile - src\FreeRTOS+\FreeRTOS+UDP\FreeRTOS_DNS.c - - - compile - src\FreeRTOS+\FreeRTOS+UDP\FreeRTOS_Sockets.c - - - compile - src\FreeRTOS+\FreeRTOS+UDP\FreeRTOS_UDP_IP.c - - - compile - src\FreeRTOS+\FreeRTOS+UDP\portable\NetworkBuffers\BufferAllocation_2.c - - - compile - src\FreeRTOS+\FreeRTOS+UDP\portable\NetWorkInterface\NetworkInterface.c - - - compile - src\FreeRTOS\list.c - - - compile - src\FreeRTOS\portable\port.c - - - compile - src\FreeRTOS\portable\heap_4.c - - - compile - src\FreeRTOS\queue.c - - - compile - src\FreeRTOS\tasks.c - - - compile - src\FreeRTOS\timers.c - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/Read_Me_Instructions.url b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/Read_Me_Instructions.url deleted file mode 100644 index 86d28f180..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/Read_Me_Instructions.url +++ /dev/null @@ -1,5 +0,0 @@ -[InternetShortcut] -URL=http://www.freertos.org/Atmel_SAM4E_RTOS_Demo.html -IDList= -[{000214A0-0000-0000-C000-000000000046}] -Prop3=19,2 diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/jlink.config b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/jlink.config deleted file mode 100644 index de1b137f3..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/jlink.config +++ /dev/null @@ -1,34 +0,0 @@ -[BREAKPOINTS] -ShowInfoWin = 1 -EnableFlashBP = 2 -BPDuringExecution = 0 -[CFI] -CFISize = 0x00 -CFIAddr = 0x00 -[CPU] -OverrideMemMap = 0 -AllowSimulation = 1 -ScriptFile="" -[FLASH] -CacheExcludeSize = 0x00 -CacheExcludeAddr = 0x00 -MinNumBytesFlashDL = 0 -SkipProgOnCRCMatch = 1 -VerifyDownload = 1 -AllowCaching = 1 -EnableFlashDL = 2 -Override = 0 -Device="UNSPECIFIED" -[GENERAL] -WorkRAMSize = 0x00 -WorkRAMAddr = 0x00 -RAMUsageLimit = 0x00 -[SWO] -SWOLogFile="" -[MEM] -RdOverrideOrMask = 0x00 -RdOverrideAndMask = 0xFFFFFFFF -RdOverrideAddr = 0xFFFFFFFF -WrOverrideOrMask = 0x00 -WrOverrideAndMask = 0xFFFFFFFF -WrOverrideAddr = 0xFFFFFFFF diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/boards/board.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/boards/board.h deleted file mode 100644 index c355c03eb..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/boards/board.h +++ /dev/null @@ -1,347 +0,0 @@ -/** - * \file - * - * \brief Standard board header file. - * - * This file includes the appropriate board header file according to the - * defined board (parameter BOARD). - * - * Copyright (c) 2009-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _BOARD_H_ -#define _BOARD_H_ - -/** - * \defgroup group_common_boards Generic board support - * - * The generic board support module includes board-specific definitions - * and function prototypes, such as the board initialization function. - * - * \{ - */ - -#include "compiler.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -/*! \name Base Boards - */ -//! @{ -#define EVK1100 1 //!< AT32UC3A EVK1100 board. -#define EVK1101 2 //!< AT32UC3B EVK1101 board. -#define UC3C_EK 3 //!< AT32UC3C UC3C_EK board. -#define EVK1104 4 //!< AT32UC3A3 EVK1104 board. -#define EVK1105 5 //!< AT32UC3A EVK1105 board. -#define STK600_RCUC3L0 6 //!< STK600 RCUC3L0 board. -#define UC3L_EK 7 //!< AT32UC3L-EK board. -#define XPLAIN 8 //!< ATxmega128A1 Xplain board. -#define STK600_RC064X 10 //!< ATxmega256A3 STK600 board. -#define STK600_RC100X 11 //!< ATxmega128A1 STK600 board. -#define UC3_A3_XPLAINED 13 //!< ATUC3A3 UC3-A3 Xplained board. -#define UC3_L0_XPLAINED 15 //!< ATUC3L0 UC3-L0 Xplained board. -#define STK600_RCUC3D 16 //!< STK600 RCUC3D board. -#define STK600_RCUC3C0 17 //!< STK600 RCUC3C board. -#define XMEGA_B1_XPLAINED 18 //!< ATxmega128B1 Xplained board. -#define XMEGA_A1_XPLAINED 19 //!< ATxmega128A1 Xplain-A1 board. -#define STK600_RCUC3L4 21 //!< ATUCL4 STK600 board -#define UC3_L0_XPLAINED_BC 22 //!< ATUC3L0 UC3-L0 Xplained board controller board -#define MEGA1284P_XPLAINED_BC 23 //!< ATmega1284P-Xplained board controller board -#define STK600_RC044X 24 //!< STK600 with RC044X routing card board. -#define STK600_RCUC3B0 25 //!< STK600 RCUC3B0 board. -#define UC3_L0_QT600 26 //!< QT600 UC3L0 MCU board. -#define XMEGA_A3BU_XPLAINED 27 //!< ATxmega256A3BU Xplained board. -#define STK600_RC064X_LCDX 28 //!< XMEGAB3 STK600 RC064X LCDX board. -#define STK600_RC100X_LCDX 29 //!< XMEGAB1 STK600 RC100X LCDX board. -#define UC3B_BOARD_CONTROLLER 30 //!< AT32UC3B1 board controller for Atmel boards -#define RZ600 31 //!< AT32UC3A RZ600 MCU board -#define SAM3S_EK 32 //!< SAM3S-EK board. -#define SAM3U_EK 33 //!< SAM3U-EK board. -#define SAM3X_EK 34 //!< SAM3X-EK board. -#define SAM3N_EK 35 //!< SAM3N-EK board. -#define SAM3S_EK2 36 //!< SAM3S-EK2 board. -#define SAM4S_EK 37 //!< SAM4S-EK board. -#define STK600_RCUC3A0 38 //!< STK600 RCUC3A0 board. -#define STK600_MEGA 39 //!< STK600 MEGA board. -#define MEGA_1284P_XPLAINED 40 //!< ATmega1284P Xplained board. -#define SAM4S_XPLAINED 41 //!< SAM4S Xplained board. -#define ATXMEGA128A1_QT600 42 //!< QT600 ATXMEGA128A1 MCU board. -#define ARDUINO_DUE_X 43 //!< Arduino Due/X board. -#define STK600_RCUC3L3 44 //!< ATUCL3 STK600 board -#define SAM4L_EK 45 //!< SAM4L-EK board. -#define STK600_MEGA_RF 46 //!< STK600 MEGA RF EVK board. -#define XMEGA_C3_XPLAINED 47 //!< ATxmega384C3 Xplained board. -#define STK600_RC032X 48 //!< STK600 with RC032X routing card board. -#define SAM4S_EK2 49 //!< SAM4S-EK2 board. -#define XMEGA_E5_XPLAINED 50 //!< ATxmega32E5 Xplained board. -#define SAM4E_EK 51 //!< SAM4E-EK board. -#define ATMEGA256RFR2_XPLAINED_PRO 52 //!< ATmega256RFR2 Xplained Pro board. -#define SAM4S_XPLAINED_PRO 53 //!< SAM4S Xplained Pro board. -#define SAM4L_XPLAINED_PRO 54 //!< SAM4L Xplained Pro board. -#define ATMEGA256RFR2_ZIGBIT 55 //!< ATmega256RFR2 zigbit -#define XMEGA_RF233_ZIGBIT 56 //!< ATxmega256A3U with AT86RF233 zigbit -#define XMEGA_RF212B_ZIGBIT 57 //!< ATxmega256A3U with AT86RF212B zigbit -#define SAM4S_WPIR_RD 58 //!< SAM4S-WPIR-RD board. -#define SAMD20_XPLAINED_PRO 59 //!< SAMD20 Xplained PRO board -#define SAM4L8_XPLAINED_PRO 60 //!< SAM4L8 Xplained Pro board. -#define SAM4N_XPLAINED_PRO 61 //!< SAM4N-XPLAINED-PRO board. -#define XMEGA_A3_REB_CBB 62 //!< SAM4L8 Xplained Pro board. -#define ATMEGARFX_RCB 63 //!< RFR2 & RFA1 RCB -#define SIMULATOR_XMEGA_A1 97 //!< Simulator for XMEGA A1 devices -#define AVR_SIMULATOR_UC3 98 //!< AVR SIMULATOR for AVR UC3 device family. -#define USER_BOARD 99 //!< User-reserved board (if any). -#define DUMMY_BOARD 100 //!< Dummy board to support board-independent applications (e.g. bootloader) -//! @} - -/*! \name Extension Boards - */ -//! @{ -#define EXT1102 1 //!< AT32UC3B EXT1102 board -#define MC300 2 //!< AT32UC3 MC300 board -#define SENSORS_XPLAINED_INERTIAL_1 3 //!< Xplained inertial sensor board 1 -#define SENSORS_XPLAINED_INERTIAL_2 4 //!< Xplained inertial sensor board 2 -#define SENSORS_XPLAINED_PRESSURE_1 5 //!< Xplained pressure sensor board -#define SENSORS_XPLAINED_LIGHTPROX_1 6 //!< Xplained light & proximity sensor board -#define SENSORS_XPLAINED_INERTIAL_A1 7 //!< Xplained inertial sensor board "A" -#define RZ600_AT86RF231 8 //!< AT86RF231 RF board in RZ600 -#define RZ600_AT86RF230B 9 //!< AT86RF230B RF board in RZ600 -#define RZ600_AT86RF212 10 //!< AT86RF212 RF board in RZ600 -#define SENSORS_XPLAINED_BREADBOARD 11 //!< Xplained sensor development breadboard -#define SECURITY_XPLAINED 12 //!< Xplained ATSHA204 board -#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any). -//! @} - -#if BOARD == EVK1100 -# include "evk1100/evk1100.h" -#elif BOARD == EVK1101 -# include "evk1101/evk1101.h" -#elif BOARD == UC3C_EK -# include "uc3c_ek/uc3c_ek.h" -#elif BOARD == EVK1104 -# include "evk1104/evk1104.h" -#elif BOARD == EVK1105 -# include "evk1105/evk1105.h" -#elif BOARD == STK600_RCUC3L0 -# include "stk600/rcuc3l0/stk600_rcuc3l0.h" -#elif BOARD == UC3L_EK -# include "uc3l_ek/uc3l_ek.h" -#elif BOARD == STK600_RCUC3L4 -# include "stk600/rcuc3l4/stk600_rcuc3l4.h" -#elif BOARD == XPLAIN -# include "xplain/xplain.h" -#elif BOARD == STK600_MEGA - /*No header-file to include*/ -#elif BOARD == STK600_MEGA_RF -# include "stk600.h" -#elif BOARD == ATMEGA256RFR2_XPLAINED_PRO -# include "atmega256rfr2_xplained_pro/atmega256rfr2_xplained_pro.h" -#elif BOARD == ATMEGA256RFR2_ZIGBIT -# include "atmega256rfr2_zigbit/atmega256rfr2_zigbit.h" -#elif BOARD == STK600_RC032X -# include "stk600/rc032x/stk600_rc032x.h" -#elif BOARD == STK600_RC044X -# include "stk600/rc044x/stk600_rc044x.h" -#elif BOARD == STK600_RC064X -# include "stk600/rc064x/stk600_rc064x.h" -#elif BOARD == STK600_RC100X -# include "stk600/rc100x/stk600_rc100x.h" -#elif BOARD == UC3_A3_XPLAINED -# include "uc3_a3_xplained/uc3_a3_xplained.h" -#elif BOARD == UC3_L0_XPLAINED -# include "uc3_l0_xplained/uc3_l0_xplained.h" -#elif BOARD == STK600_RCUC3B0 -# include "stk600/rcuc3b0/stk600_rcuc3b0.h" -#elif BOARD == STK600_RCUC3D -# include "stk600/rcuc3d/stk600_rcuc3d.h" -#elif BOARD == STK600_RCUC3C0 -# include "stk600/rcuc3c0/stk600_rcuc3c0.h" -#elif BOARD == XMEGA_B1_XPLAINED -# include "xmega_b1_xplained/xmega_b1_xplained.h" -#elif BOARD == STK600_RC064X_LCDX -# include "stk600/rc064x_lcdx/stk600_rc064x_lcdx.h" -#elif BOARD == STK600_RC100X_LCDX -# include "stk600/rc100x_lcdx/stk600_rc100x_lcdx.h" -#elif BOARD == XMEGA_A1_XPLAINED -# include "xmega_a1_xplained/xmega_a1_xplained.h" -#elif BOARD == UC3_L0_XPLAINED_BC -# include "uc3_l0_xplained_bc/uc3_l0_xplained_bc.h" -#elif BOARD == SAM3S_EK -# include "sam3s_ek/sam3s_ek.h" -# include "system_sam3s.h" -#elif BOARD == SAM3S_EK2 -# include "sam3s_ek2/sam3s_ek2.h" -# include "system_sam3sd8.h" -#elif BOARD == SAM3U_EK -# include "sam3u_ek/sam3u_ek.h" -# include "system_sam3u.h" -#elif BOARD == SAM3X_EK -# include "sam3x_ek/sam3x_ek.h" -# include "system_sam3x.h" -#elif BOARD == SAM3N_EK -# include "sam3n_ek/sam3n_ek.h" -# include "system_sam3n.h" -#elif BOARD == SAM4S_EK -# include "sam4s_ek/sam4s_ek.h" -# include "system_sam4s.h" -#elif BOARD == SAM4S_WPIR_RD -# include "sam4s_wpir_rd/sam4s_wpir_rd.h" -# include "system_sam4s.h" -#elif BOARD == SAM4S_XPLAINED -# include "sam4s_xplained/sam4s_xplained.h" -# include "system_sam4s.h" -#elif BOARD == SAM4S_EK2 -# include "sam4s_ek2/sam4s_ek2.h" -# include "system_sam4s.h" -#elif BOARD == MEGA_1284P_XPLAINED - /*No header-file to include*/ -#elif BOARD == ARDUINO_DUE_X -# include "arduino_due_x/arduino_due_x.h" -# include "system_sam3x.h" -#elif BOARD == SAM4L_EK -# include "sam4l_ek/sam4l_ek.h" -#elif BOARD == SAM4E_EK -# include "sam4e_ek/sam4e_ek.h" -#elif BOARD == SAMD20_XPLAINED_PRO -# include "samd20_xplained_pro/samd20_xplained_pro.h" -#elif BOARD == SAM4N_XPLAINED_PRO -# include "sam4n_xplained_pro/sam4n_xplained_pro.h" -#elif BOARD == MEGA1284P_XPLAINED_BC -# include "mega1284p_xplained_bc/mega1284p_xplained_bc.h" -#elif BOARD == UC3_L0_QT600 -# include "uc3_l0_qt600/uc3_l0_qt600.h" -#elif BOARD == XMEGA_A3BU_XPLAINED -# include "xmega_a3bu_xplained/xmega_a3bu_xplained.h" -#elif BOARD == XMEGA_E5_XPLAINED -# include "xmega_e5_xplained/xmega_e5_xplained.h" -#elif BOARD == UC3B_BOARD_CONTROLLER -# include "uc3b_board_controller/uc3b_board_controller.h" -#elif BOARD == RZ600 -# include "rz600/rz600.h" -#elif BOARD == STK600_RCUC3A0 -# include "stk600/rcuc3a0/stk600_rcuc3a0.h" -#elif BOARD == ATXMEGA128A1_QT600 -# include "atxmega128a1_qt600/atxmega128a1_qt600.h" -#elif BOARD == STK600_RCUC3L3 -# include "stk600/rcuc3l3/stk600_rcuc3l3.h" -#elif BOARD == SAM4S_XPLAINED_PRO -# include "sam4s_xplained_pro/sam4s_xplained_pro.h" -#elif BOARD == SAM4L_XPLAINED_PRO -# include "sam4l_xplained_pro/sam4l_xplained_pro.h" -#elif BOARD == SAM4L8_XPLAINED_PRO -# include "sam4l8_xplained_pro/sam4l8_xplained_pro.h" -#elif BOARD == SIMULATOR_XMEGA_A1 -# include "simulator/xmega_a1/simulator_xmega_a1.h" -#elif BOARD == XMEGA_C3_XPLAINED -# include "xmega_c3_xplained/xmega_c3_xplained.h" -#elif BOARD == XMEGA_RF233_ZIGBIT -# include "xmega_rf233_zigbit/xmega_rf233_zigbit.h" -#elif BOARD == XMEGA_A3_REB_CBB -# include "xmega_a3_reb_cbb/xmega_a3_reb_cbb.h" -#elif BOARD == ATMEGARFX_RCB -# include "atmegarfx_rcb/atmegarfx_rcb.h" -#elif BOARD == XMEGA_RF212B_ZIGBIT -# include "xmega_rf212b_zigbit/xmega_rf212b_zigbit.h" -#elif BOARD == AVR_SIMULATOR_UC3 -# include "avr_simulator_uc3/avr_simulator_uc3.h" -#elif BOARD == USER_BOARD - // User-reserved area: #include the header file of your board here (if any). -# include "user_board.h" -#elif BOARD == DUMMY_BOARD -# include "dummy/dummy_board.h" -#else -# error No known Atmel board defined -#endif - -#if (defined EXT_BOARD) -# if EXT_BOARD == MC300 -# include "mc300/mc300.h" -# elif (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_1) || \ - (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_2) || \ - (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_A1) || \ - (EXT_BOARD == SENSORS_XPLAINED_PRESSURE_1) || \ - (EXT_BOARD == SENSORS_XPLAINED_LIGHTPROX_1) || \ - (EXT_BOARD == SENSORS_XPLAINED_BREADBOARD) -# include "sensors_xplained/sensors_xplained.h" -# elif EXT_BOARD == RZ600_AT86RF231 -# include "at86rf231/at86rf231.h" -# elif EXT_BOARD == RZ600_AT86RF230B -# include "at86rf230b/at86rf230b.h" -# elif EXT_BOARD == RZ600_AT86RF212 -# include "at86rf212/at86rf212.h" -# elif EXT_BOARD == SECURITY_XPLAINED -# include "security_xplained.h" -# elif EXT_BOARD == USER_EXT_BOARD - // User-reserved area: #include the header file of your extension board here - // (if any). -# endif -#endif - - -#if (defined(__GNUC__) && defined(__AVR32__)) || (defined(__ICCAVR32__) || defined(__AAVR32__)) -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -/*! \brief This function initializes the board target resources - * - * This function should be called to ensure proper initialization of the target - * board hardware connected to the part. - */ -extern void board_init(void); - -#endif // #ifdef __AVR32_ABI_COMPILER__ -#else -/*! \brief This function initializes the board target resources - * - * This function should be called to ensure proper initialization of the target - * board hardware connected to the part. - */ -extern void board_init(void); -#endif - - -#ifdef __cplusplus -} -#endif - -/** - * \} - */ - -#endif // _BOARD_H_ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/genclk.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/genclk.h deleted file mode 100644 index 4de140d9e..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/genclk.h +++ /dev/null @@ -1,180 +0,0 @@ -/** - * \file - * - * \brief Generic clock management - * - * Copyright (c) 2010-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ -#ifndef CLK_GENCLK_H_INCLUDED -#define CLK_GENCLK_H_INCLUDED - -#include "parts.h" - -#if SAM3S -# include "sam3s/genclk.h" -#elif SAM3U -# include "sam3u/genclk.h" -#elif SAM3N -# include "sam3n/genclk.h" -#elif SAM3XA -# include "sam3x/genclk.h" -#elif SAM4S -# include "sam4s/genclk.h" -#elif SAM4L -# include "sam4l/genclk.h" -#elif SAM4E -# include "sam4e/genclk.h" -#elif SAM4N -# include "sam4n/genclk.h" -#elif (UC3A0 || UC3A1) -# include "uc3a0_a1/genclk.h" -#elif UC3A3 -# include "uc3a3_a4/genclk.h" -#elif UC3B -# include "uc3b0_b1/genclk.h" -#elif UC3C -# include "uc3c/genclk.h" -#elif UC3D -# include "uc3d/genclk.h" -#elif UC3L -# include "uc3l/genclk.h" -#else -# error Unsupported chip type -#endif - -/** - * \ingroup clk_group - * \defgroup genclk_group Generic Clock Management - * - * Generic clocks are configurable clocks which run outside the system - * clock domain. They are often connected to peripherals which have an - * asynchronous component running independently of the bus clock, e.g. - * USB controllers, low-power timers and RTCs, etc. - * - * Note that not all platforms have support for generic clocks; on such - * platforms, this API will not be available. - * - * @{ - */ - -/** - * \def GENCLK_DIV_MAX - * \brief Maximum divider supported by the generic clock implementation - */ -/** - * \enum genclk_source - * \brief Generic clock source ID - * - * Each generic clock may be generated from a different clock source. - * These are the available alternatives provided by the chip. - */ - -//! \name Generic clock configuration -//@{ -/** - * \struct genclk_config - * \brief Hardware representation of a set of generic clock parameters - */ -/** - * \fn void genclk_config_defaults(struct genclk_config *cfg, - * unsigned int id) - * \brief Initialize \a cfg to the default configuration for the clock - * identified by \a id. - */ -/** - * \fn void genclk_config_read(struct genclk_config *cfg, unsigned int id) - * \brief Read the currently active configuration of the clock - * identified by \a id into \a cfg. - */ -/** - * \fn void genclk_config_write(const struct genclk_config *cfg, - * unsigned int id) - * \brief Activate the configuration \a cfg on the clock identified by - * \a id. - */ -/** - * \fn void genclk_config_set_source(struct genclk_config *cfg, - * enum genclk_source src) - * \brief Select a new source clock \a src in configuration \a cfg. - */ -/** - * \fn void genclk_config_set_divider(struct genclk_config *cfg, - * unsigned int divider) - * \brief Set a new \a divider in configuration \a cfg. - */ -/** - * \fn void genclk_enable_source(enum genclk_source src) - * \brief Enable the source clock \a src used by a generic clock. - */ - //@} - -//! \name Enabling and disabling Generic Clocks -//@{ -/** - * \fn void genclk_enable(const struct genclk_config *cfg, unsigned int id) - * \brief Activate the configuration \a cfg on the clock identified by - * \a id and enable it. - */ -/** - * \fn void genclk_disable(unsigned int id) - * \brief Disable the generic clock identified by \a id. - */ -//@} - -/** - * \brief Enable the configuration defined by \a src and \a divider - * for the generic clock identified by \a id. - * - * \param id The ID of the generic clock. - * \param src The source clock of the generic clock. - * \param divider The divider used to generate the generic clock. - */ -static inline void genclk_enable_config(unsigned int id, enum genclk_source src, unsigned int divider) -{ - struct genclk_config gcfg; - - genclk_config_defaults(&gcfg, id); - genclk_enable_source(src); - genclk_config_set_source(&gcfg, src); - genclk_config_set_divider(&gcfg, divider); - genclk_enable(&gcfg, id); -} - -//! @} - -#endif /* CLK_GENCLK_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/osc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/osc.h deleted file mode 100644 index a21c7eb6e..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/osc.h +++ /dev/null @@ -1,166 +0,0 @@ -/** - * \file - * - * \brief Oscillator management - * - * Copyright (c) 2010-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ -#ifndef OSC_H_INCLUDED -#define OSC_H_INCLUDED - -#include "parts.h" -#include "conf_clock.h" - -#if SAM3S -# include "sam3s/osc.h" -#elif SAM3XA -# include "sam3x/osc.h" -#elif SAM3U -# include "sam3u/osc.h" -#elif SAM3N -# include "sam3n/osc.h" -#elif SAM4S -# include "sam4s/osc.h" -#elif SAM4E -# include "sam4e/osc.h" -#elif SAM4L -# include "sam4l/osc.h" -#elif SAM4N -# include "sam4n/osc.h" -#elif (UC3A0 || UC3A1) -# include "uc3a0_a1/osc.h" -#elif UC3A3 -# include "uc3a3_a4/osc.h" -#elif UC3B -# include "uc3b0_b1/osc.h" -#elif UC3C -# include "uc3c/osc.h" -#elif UC3D -# include "uc3d/osc.h" -#elif UC3L -# include "uc3l/osc.h" -#elif XMEGA -# include "xmega/osc.h" -#else -# error Unsupported chip type -#endif - -/** - * \ingroup clk_group - * \defgroup osc_group Oscillator Management - * - * This group contains functions and definitions related to configuring - * and enabling/disabling on-chip oscillators. Internal RC-oscillators, - * external crystal oscillators and external clock generators are - * supported by this module. What all of these have in common is that - * they swing at a fixed, nominal frequency which is normally not - * adjustable. - * - * \par Example: Enabling an oscillator - * - * The following example demonstrates how to enable the external - * oscillator on XMEGA A and wait for it to be ready to use. The - * oscillator identifiers are platform-specific, so while the same - * procedure is used on all platforms, the parameter to osc_enable() - * will be different from device to device. - * \code - osc_enable(OSC_ID_XOSC); - osc_wait_ready(OSC_ID_XOSC); \endcode - * - * \section osc_group_board Board-specific Definitions - * If external oscillators are used, the board code must provide the - * following definitions for each of those: - * - \b BOARD__HZ: The nominal frequency of the oscillator. - * - \b BOARD__STARTUP_US: The startup time of the - * oscillator in microseconds. - * - \b BOARD__TYPE: The type of oscillator connected, i.e. - * whether it's a crystal or external clock, and sometimes what kind - * of crystal it is. The meaning of this value is platform-specific. - * - * @{ - */ - -//! \name Oscillator Management -//@{ -/** - * \fn void osc_enable(uint8_t id) - * \brief Enable oscillator \a id - * - * The startup time and mode value is automatically determined based on - * definitions in the board code. - */ -/** - * \fn void osc_disable(uint8_t id) - * \brief Disable oscillator \a id - */ -/** - * \fn osc_is_ready(uint8_t id) - * \brief Determine whether oscillator \a id is ready. - * \retval true Oscillator \a id is running and ready to use as a clock - * source. - * \retval false Oscillator \a id is not running. - */ -/** - * \fn uint32_t osc_get_rate(uint8_t id) - * \brief Return the frequency of oscillator \a id in Hz - */ - -#ifndef __ASSEMBLY__ - -/** - * \brief Wait until the oscillator identified by \a id is ready - * - * This function will busy-wait for the oscillator identified by \a id - * to become stable and ready to use as a clock source. - * - * \param id A number identifying the oscillator to wait for. - */ -static inline void osc_wait_ready(uint8_t id) -{ - while (!osc_is_ready(id)) { - /* Do nothing */ - } -} - -#endif /* __ASSEMBLY__ */ - -//@} - -//! @} - -#endif /* OSC_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/pll.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/pll.h deleted file mode 100644 index 82bcd2468..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/pll.h +++ /dev/null @@ -1,322 +0,0 @@ -/** - * \file - * - * \brief PLL management - * - * Copyright (c) 2010-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ -#ifndef CLK_PLL_H_INCLUDED -#define CLK_PLL_H_INCLUDED - -#include "parts.h" -#include "conf_clock.h" - -#if SAM3S -# include "sam3s/pll.h" -#elif SAM3XA -# include "sam3x/pll.h" -#elif SAM3U -# include "sam3u/pll.h" -#elif SAM3N -# include "sam3n/pll.h" -#elif SAM4S -# include "sam4s/pll.h" -#elif SAM4E -# include "sam4e/pll.h" -#elif SAM4L -# include "sam4l/pll.h" -#elif SAM4N -# include "sam4n/pll.h" -#elif (UC3A0 || UC3A1) -# include "uc3a0_a1/pll.h" -#elif UC3A3 -# include "uc3a3_a4/pll.h" -#elif UC3B -# include "uc3b0_b1/pll.h" -#elif UC3C -# include "uc3c/pll.h" -#elif UC3D -# include "uc3d/pll.h" -#elif (UC3L0128 || UC3L0256 || UC3L3_L4) -# include "uc3l/pll.h" -#elif XMEGA -# include "xmega/pll.h" -#else -# error Unsupported chip type -#endif - -/** - * \ingroup clk_group - * \defgroup pll_group PLL Management - * - * This group contains functions and definitions related to configuring - * and enabling/disabling on-chip PLLs. A PLL will take an input signal - * (the \em source), optionally divide the frequency by a configurable - * \em divider, and then multiply the frequency by a configurable \em - * multiplier. - * - * Some devices don't support input dividers; specifying any other - * divisor than 1 on these devices will result in an assertion failure. - * Other devices may have various restrictions to the frequency range of - * the input and output signals. - * - * \par Example: Setting up PLL0 with default parameters - * - * The following example shows how to configure and enable PLL0 using - * the default parameters specified using the configuration symbols - * listed above. - * \code - pll_enable_config_defaults(0); \endcode - * - * To configure, enable PLL0 using the default parameters and to disable - * a specific feature like Wide Bandwidth Mode (a UC3A3-specific - * PLL option.), you can use this initialization process. - * \code - struct pll_config pllcfg; - if (pll_is_locked(pll_id)) { - return; // Pll already running - } - pll_enable_source(CONFIG_PLL0_SOURCE); - pll_config_defaults(&pllcfg, 0); - pll_config_set_option(&pllcfg, PLL_OPT_WBM_DISABLE); - pll_enable(&pllcfg, 0); - pll_wait_for_lock(0); \endcode - * - * When the last function call returns, PLL0 is ready to be used as the - * main system clock source. - * - * \section pll_group_config Configuration Symbols - * - * Each PLL has a set of default parameters determined by the following - * configuration symbols in the application's configuration file: - * - \b CONFIG_PLLn_SOURCE: The default clock source connected to the - * input of PLL \a n. Must be one of the values defined by the - * #pll_source enum. - * - \b CONFIG_PLLn_MUL: The default multiplier (loop divider) of PLL - * \a n. - * - \b CONFIG_PLLn_DIV: The default input divider of PLL \a n. - * - * These configuration symbols determine the result of calling - * pll_config_defaults() and pll_get_default_rate(). - * - * @{ - */ - -//! \name Chip-specific PLL characteristics -//@{ -/** - * \def PLL_MAX_STARTUP_CYCLES - * \brief Maximum PLL startup time in number of slow clock cycles - */ -/** - * \def NR_PLLS - * \brief Number of on-chip PLLs - */ - -/** - * \def PLL_MIN_HZ - * \brief Minimum frequency that the PLL can generate - */ -/** - * \def PLL_MAX_HZ - * \brief Maximum frequency that the PLL can generate - */ -/** - * \def PLL_NR_OPTIONS - * \brief Number of PLL option bits - */ -//@} - -/** - * \enum pll_source - * \brief PLL clock source - */ - -//! \name PLL configuration -//@{ - -/** - * \struct pll_config - * \brief Hardware-specific representation of PLL configuration. - * - * This structure contains one or more device-specific values - * representing the current PLL configuration. The contents of this - * structure is typically different from platform to platform, and the - * user should not access any fields except through the PLL - * configuration API. - */ - -/** - * \fn void pll_config_init(struct pll_config *cfg, - * enum pll_source src, unsigned int div, unsigned int mul) - * \brief Initialize PLL configuration from standard parameters. - * - * \note This function may be defined inline because it is assumed to be - * called very few times, and usually with constant parameters. Inlining - * it will in such cases reduce the code size significantly. - * - * \param cfg The PLL configuration to be initialized. - * \param src The oscillator to be used as input to the PLL. - * \param div PLL input divider. - * \param mul PLL loop divider (i.e. multiplier). - * - * \return A configuration which will make the PLL run at - * (\a mul / \a div) times the frequency of \a src - */ -/** - * \def pll_config_defaults(cfg, pll_id) - * \brief Initialize PLL configuration using default parameters. - * - * After this function returns, \a cfg will contain a configuration - * which will make the PLL run at (CONFIG_PLLx_MUL / CONFIG_PLLx_DIV) - * times the frequency of CONFIG_PLLx_SOURCE. - * - * \param cfg The PLL configuration to be initialized. - * \param pll_id Use defaults for this PLL. - */ -/** - * \def pll_get_default_rate(pll_id) - * \brief Get the default rate in Hz of \a pll_id - */ -/** - * \fn void pll_config_set_option(struct pll_config *cfg, - * unsigned int option) - * \brief Set the PLL option bit \a option in the configuration \a cfg. - * - * \param cfg The PLL configuration to be changed. - * \param option The PLL option bit to be set. - */ -/** - * \fn void pll_config_clear_option(struct pll_config *cfg, - * unsigned int option) - * \brief Clear the PLL option bit \a option in the configuration \a cfg. - * - * \param cfg The PLL configuration to be changed. - * \param option The PLL option bit to be cleared. - */ -/** - * \fn void pll_config_read(struct pll_config *cfg, unsigned int pll_id) - * \brief Read the currently active configuration of \a pll_id. - * - * \param cfg The configuration object into which to store the currently - * active configuration. - * \param pll_id The ID of the PLL to be accessed. - */ -/** - * \fn void pll_config_write(const struct pll_config *cfg, - * unsigned int pll_id) - * \brief Activate the configuration \a cfg on \a pll_id - * - * \param cfg The configuration object representing the PLL - * configuration to be activated. - * \param pll_id The ID of the PLL to be updated. - */ - -//@} - -//! \name Interaction with the PLL hardware -//@{ -/** - * \fn void pll_enable(const struct pll_config *cfg, - * unsigned int pll_id) - * \brief Activate the configuration \a cfg and enable PLL \a pll_id. - * - * \param cfg The PLL configuration to be activated. - * \param pll_id The ID of the PLL to be enabled. - */ -/** - * \fn void pll_disable(unsigned int pll_id) - * \brief Disable the PLL identified by \a pll_id. - * - * After this function is called, the PLL identified by \a pll_id will - * be disabled. The PLL configuration stored in hardware may be affected - * by this, so if the caller needs to restore the same configuration - * later, it should either do a pll_config_read() before disabling the - * PLL, or remember the last configuration written to the PLL. - * - * \param pll_id The ID of the PLL to be disabled. - */ -/** - * \fn bool pll_is_locked(unsigned int pll_id) - * \brief Determine whether the PLL is locked or not. - * - * \param pll_id The ID of the PLL to check. - * - * \retval true The PLL is locked and ready to use as a clock source - * \retval false The PLL is not yet locked, or has not been enabled. - */ -/** - * \fn void pll_enable_source(enum pll_source src) - * \brief Enable the source of the pll. - * The source is enabled, if the source is not already running. - * - * \param src The ID of the PLL source to enable. - */ -/** - * \fn void pll_enable_config_defaults(unsigned int pll_id) - * \brief Enable the pll with the default configuration. - * PLL is enabled, if the PLL is not already locked. - * - * \param pll_id The ID of the PLL to enable. - */ - -/** - * \brief Wait for PLL \a pll_id to become locked - * - * \todo Use a timeout to avoid waiting forever and hanging the system - * - * \param pll_id The ID of the PLL to wait for. - * - * \retval STATUS_OK The PLL is now locked. - * \retval ERR_TIMEOUT Timed out waiting for PLL to become locked. - */ -static inline int pll_wait_for_lock(unsigned int pll_id) -{ - Assert(pll_id < NR_PLLS); - - while (!pll_is_locked(pll_id)) { - /* Do nothing */ - } - - return 0; -} - -//@} -//! @} - -#endif /* CLK_PLL_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/genclk.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/genclk.h deleted file mode 100644 index f9dc6d061..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/genclk.h +++ /dev/null @@ -1,266 +0,0 @@ -/** - * \file - * - * \brief Chip-specific generic clock management. - * - * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef CHIP_GENCLK_H_INCLUDED -#define CHIP_GENCLK_H_INCLUDED - -#include -#include - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -/** - * \weakgroup genclk_group - * @{ - */ - -//! \name Programmable Clock Identifiers (PCK) -//@{ -#define GENCLK_PCK_0 0 //!< PCK0 ID -#define GENCLK_PCK_1 1 //!< PCK1 ID -#define GENCLK_PCK_2 2 //!< PCK2 ID -//@} - -//! \name Programmable Clock Sources (PCK) -//@{ - -enum genclk_source { - GENCLK_PCK_SRC_SLCK_RC = 0,//!< Internal 32kHz RC oscillator as PCK source clock - GENCLK_PCK_SRC_SLCK_XTAL = 1,//!< External 32kHz crystal oscillator as PCK source clock - GENCLK_PCK_SRC_SLCK_BYPASS = 2,//!< External 32kHz bypass oscillator as PCK source clock - GENCLK_PCK_SRC_MAINCK_4M_RC = 3,//!< Internal 4MHz RC oscillator as PCK source clock - GENCLK_PCK_SRC_MAINCK_8M_RC = 4,//!< Internal 8MHz RC oscillator as PCK source clock - GENCLK_PCK_SRC_MAINCK_12M_RC = 5,//!< Internal 12MHz RC oscillator as PCK source clock - GENCLK_PCK_SRC_MAINCK_XTAL = 6,//!< External crystal oscillator as PCK source clock - GENCLK_PCK_SRC_MAINCK_BYPASS = 7,//!< External bypass oscillator as PCK source clock - GENCLK_PCK_SRC_PLLACK = 8,//!< Use PLLACK as PCK source clock - GENCLK_PCK_SRC_MCK = 9,//!< Use Master Clk as PCK source clock -}; - -//@} - -//! \name Programmable Clock Prescalers (PCK) -//@{ - -enum genclk_divider { - GENCLK_PCK_PRES_1 = PMC_PCK_PRES_CLK_1, //!< Set PCK clock prescaler to 1 - GENCLK_PCK_PRES_2 = PMC_PCK_PRES_CLK_2, //!< Set PCK clock prescaler to 2 - GENCLK_PCK_PRES_4 = PMC_PCK_PRES_CLK_4, //!< Set PCK clock prescaler to 4 - GENCLK_PCK_PRES_8 = PMC_PCK_PRES_CLK_8, //!< Set PCK clock prescaler to 8 - GENCLK_PCK_PRES_16 = PMC_PCK_PRES_CLK_16, //!< Set PCK clock prescaler to 16 - GENCLK_PCK_PRES_32 = PMC_PCK_PRES_CLK_32, //!< Set PCK clock prescaler to 32 - GENCLK_PCK_PRES_64 = PMC_PCK_PRES_CLK_64, //!< Set PCK clock prescaler to 64 -}; - -//@} - -struct genclk_config { - uint32_t ctrl; -}; - -static inline void genclk_config_defaults(struct genclk_config *p_cfg, - uint32_t ul_id) -{ - ul_id = ul_id; - p_cfg->ctrl = 0; -} - -static inline void genclk_config_read(struct genclk_config *p_cfg, - uint32_t ul_id) -{ - p_cfg->ctrl = PMC->PMC_PCK[ul_id]; -} - -static inline void genclk_config_write(const struct genclk_config *p_cfg, - uint32_t ul_id) -{ - PMC->PMC_PCK[ul_id] = p_cfg->ctrl; -} - -//! \name Programmable Clock Source and Prescaler configuration -//@{ - -static inline void genclk_config_set_source(struct genclk_config *p_cfg, - enum genclk_source e_src) -{ - p_cfg->ctrl &= (~PMC_PCK_CSS_Msk); - - switch (e_src) { - case GENCLK_PCK_SRC_SLCK_RC: - case GENCLK_PCK_SRC_SLCK_XTAL: - case GENCLK_PCK_SRC_SLCK_BYPASS: - p_cfg->ctrl |= (PMC_PCK_CSS_SLOW_CLK); - break; - - case GENCLK_PCK_SRC_MAINCK_4M_RC: - case GENCLK_PCK_SRC_MAINCK_8M_RC: - case GENCLK_PCK_SRC_MAINCK_12M_RC: - case GENCLK_PCK_SRC_MAINCK_XTAL: - case GENCLK_PCK_SRC_MAINCK_BYPASS: - p_cfg->ctrl |= (PMC_PCK_CSS_MAIN_CLK); - break; - - case GENCLK_PCK_SRC_PLLACK: - p_cfg->ctrl |= (PMC_PCK_CSS_PLLA_CLK); - break; - - case GENCLK_PCK_SRC_MCK: - p_cfg->ctrl |= (PMC_PCK_CSS_MCK); - break; - - default: - break; - } -} - -static inline void genclk_config_set_divider(struct genclk_config *p_cfg, - uint32_t e_divider) -{ - p_cfg->ctrl &= ~PMC_PCK_PRES_Msk; - p_cfg->ctrl |= e_divider; -} - -//@} - -static inline void genclk_enable(const struct genclk_config *p_cfg, uint32_t ul_id) -{ - PMC->PMC_PCK[ul_id] = p_cfg->ctrl; - pmc_enable_pck(ul_id); -} - -static inline void genclk_disable(uint32_t ul_id) -{ - pmc_disable_pck(ul_id); -} - -static inline void genclk_enable_source(enum genclk_source e_src) -{ - switch (e_src) { - case GENCLK_PCK_SRC_SLCK_RC: - if (!osc_is_ready(OSC_SLCK_32K_RC)) { - osc_enable(OSC_SLCK_32K_RC); - osc_wait_ready(OSC_SLCK_32K_RC); - } - break; - - case GENCLK_PCK_SRC_SLCK_XTAL: - if (!osc_is_ready(OSC_SLCK_32K_XTAL)) { - osc_enable(OSC_SLCK_32K_XTAL); - osc_wait_ready(OSC_SLCK_32K_XTAL); - } - break; - - case GENCLK_PCK_SRC_SLCK_BYPASS: - if (!osc_is_ready(OSC_SLCK_32K_BYPASS)) { - osc_enable(OSC_SLCK_32K_BYPASS); - osc_wait_ready(OSC_SLCK_32K_BYPASS); - } - break; - - case GENCLK_PCK_SRC_MAINCK_4M_RC: - if (!osc_is_ready(OSC_MAINCK_4M_RC)) { - osc_enable(OSC_MAINCK_4M_RC); - osc_wait_ready(OSC_MAINCK_4M_RC); - } - break; - - case GENCLK_PCK_SRC_MAINCK_8M_RC: - if (!osc_is_ready(OSC_MAINCK_8M_RC)) { - osc_enable(OSC_MAINCK_8M_RC); - osc_wait_ready(OSC_MAINCK_8M_RC); - } - break; - - case GENCLK_PCK_SRC_MAINCK_12M_RC: - if (!osc_is_ready(OSC_MAINCK_12M_RC)) { - osc_enable(OSC_MAINCK_12M_RC); - osc_wait_ready(OSC_MAINCK_12M_RC); - } - break; - - case GENCLK_PCK_SRC_MAINCK_XTAL: - if (!osc_is_ready(OSC_MAINCK_XTAL)) { - osc_enable(OSC_MAINCK_XTAL); - osc_wait_ready(OSC_MAINCK_XTAL); - } - break; - - case GENCLK_PCK_SRC_MAINCK_BYPASS: - if (!osc_is_ready(OSC_MAINCK_BYPASS)) { - osc_enable(OSC_MAINCK_BYPASS); - osc_wait_ready(OSC_MAINCK_BYPASS); - } - break; - -#ifdef CONFIG_PLL0_SOURCE - case GENCLK_PCK_SRC_PLLACK: - pll_enable_config_defaults(0); - break; -#endif - - case GENCLK_PCK_SRC_MCK: - break; - - default: - Assert(false); - break; - } -} - -//! @} - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond - -#endif /* CHIP_GENCLK_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/osc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/osc.h deleted file mode 100644 index 69f1de181..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/osc.h +++ /dev/null @@ -1,223 +0,0 @@ -/** - * \file - * - * \brief Chip-specific oscillator management functions. - * - * Copyright (c) 2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef CHIP_OSC_H_INCLUDED -#define CHIP_OSC_H_INCLUDED - -#include "board.h" -#include "pmc.h" - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -/** - * \weakgroup osc_group - * @{ - */ - -//! \name Oscillator identifiers -//@{ -#define OSC_SLCK_32K_RC 0 //!< Internal 32kHz RC oscillator. -#define OSC_SLCK_32K_XTAL 1 //!< External 32kHz crystal oscillator. -#define OSC_SLCK_32K_BYPASS 2 //!< External 32kHz bypass oscillator. -#define OSC_MAINCK_4M_RC 3 //!< Internal 4MHz RC oscillator. -#define OSC_MAINCK_8M_RC 4 //!< Internal 8MHz RC oscillator. -#define OSC_MAINCK_12M_RC 5 //!< Internal 12MHz RC oscillator. -#define OSC_MAINCK_XTAL 6 //!< External crystal oscillator. -#define OSC_MAINCK_BYPASS 7 //!< External bypass oscillator. -//@} - -//! \name Oscillator clock speed in hertz -//@{ -#define OSC_SLCK_32K_RC_HZ CHIP_FREQ_SLCK_RC //!< Internal 32kHz RC oscillator. -#define OSC_SLCK_32K_XTAL_HZ BOARD_FREQ_SLCK_XTAL //!< External 32kHz crystal oscillator. -#define OSC_SLCK_32K_BYPASS_HZ BOARD_FREQ_SLCK_BYPASS //!< External 32kHz bypass oscillator. -#define OSC_MAINCK_4M_RC_HZ CHIP_FREQ_MAINCK_RC_4MHZ //!< Internal 4MHz RC oscillator. -#define OSC_MAINCK_8M_RC_HZ CHIP_FREQ_MAINCK_RC_8MHZ //!< Internal 8MHz RC oscillator. -#define OSC_MAINCK_12M_RC_HZ CHIP_FREQ_MAINCK_RC_12MHZ //!< Internal 12MHz RC oscillator. -#define OSC_MAINCK_XTAL_HZ BOARD_FREQ_MAINCK_XTAL //!< External crystal oscillator. -#define OSC_MAINCK_BYPASS_HZ BOARD_FREQ_MAINCK_BYPASS //!< External bypass oscillator. -//@} - -static inline void osc_enable(uint32_t ul_id) -{ - switch (ul_id) { - case OSC_SLCK_32K_RC: - break; - - case OSC_SLCK_32K_XTAL: - pmc_switch_sclk_to_32kxtal(PMC_OSC_XTAL); - break; - - case OSC_SLCK_32K_BYPASS: - pmc_switch_sclk_to_32kxtal(PMC_OSC_BYPASS); - break; - - - case OSC_MAINCK_4M_RC: - pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_4_MHz); - break; - - case OSC_MAINCK_8M_RC: - pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_8_MHz); - break; - - case OSC_MAINCK_12M_RC: - pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_12_MHz); - break; - - - case OSC_MAINCK_XTAL: - pmc_switch_mainck_to_xtal(PMC_OSC_XTAL, - pmc_us_to_moscxtst(BOARD_OSC_STARTUP_US, - OSC_SLCK_32K_RC_HZ)); - break; - - case OSC_MAINCK_BYPASS: - pmc_switch_mainck_to_xtal(PMC_OSC_BYPASS, - pmc_us_to_moscxtst(BOARD_OSC_STARTUP_US, - OSC_SLCK_32K_RC_HZ)); - break; - } -} - -static inline void osc_disable(uint32_t ul_id) -{ - switch (ul_id) { - case OSC_SLCK_32K_RC: - case OSC_SLCK_32K_XTAL: - case OSC_SLCK_32K_BYPASS: - break; - - case OSC_MAINCK_4M_RC: - case OSC_MAINCK_8M_RC: - case OSC_MAINCK_12M_RC: - pmc_osc_disable_fastrc(); - break; - - case OSC_MAINCK_XTAL: - pmc_osc_disable_xtal(PMC_OSC_XTAL); - break; - - case OSC_MAINCK_BYPASS: - pmc_osc_disable_xtal(PMC_OSC_BYPASS); - break; - } -} - -static inline bool osc_is_ready(uint32_t ul_id) -{ - switch (ul_id) { - case OSC_SLCK_32K_RC: - return 1; - - case OSC_SLCK_32K_XTAL: - case OSC_SLCK_32K_BYPASS: - return pmc_osc_is_ready_32kxtal(); - - case OSC_MAINCK_4M_RC: - case OSC_MAINCK_8M_RC: - case OSC_MAINCK_12M_RC: - case OSC_MAINCK_XTAL: - case OSC_MAINCK_BYPASS: - return pmc_osc_is_ready_mainck(); - } - - return 0; -} - -static inline uint32_t osc_get_rate(uint32_t ul_id) -{ - switch (ul_id) { - case OSC_SLCK_32K_RC: - return OSC_SLCK_32K_RC_HZ; - -#ifdef BOARD_FREQ_SLCK_XTAL - case OSC_SLCK_32K_XTAL: - return BOARD_FREQ_SLCK_XTAL; -#endif - -#ifdef BOARD_FREQ_SLCK_BYPASS - case OSC_SLCK_32K_BYPASS: - return BOARD_FREQ_SLCK_BYPASS; -#endif - - case OSC_MAINCK_4M_RC: - return OSC_MAINCK_4M_RC_HZ; - - case OSC_MAINCK_8M_RC: - return OSC_MAINCK_8M_RC_HZ; - - case OSC_MAINCK_12M_RC: - return OSC_MAINCK_12M_RC_HZ; - -#ifdef BOARD_FREQ_MAINCK_XTAL - case OSC_MAINCK_XTAL: - return BOARD_FREQ_MAINCK_XTAL; -#endif - -#ifdef BOARD_FREQ_MAINCK_BYPASS - case OSC_MAINCK_BYPASS: - return BOARD_FREQ_MAINCK_BYPASS; -#endif - } - - return 0; -} - -//! @} - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond - -#endif /* CHIP_OSC_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/pll.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/pll.h deleted file mode 100644 index 5570e9dc3..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/pll.h +++ /dev/null @@ -1,225 +0,0 @@ -/** - * \file - * - * \brief Chip-specific PLL definitions. - * - * Copyright (c) 2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef CHIP_PLL_H_INCLUDED -#define CHIP_PLL_H_INCLUDED - -#include - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -/** - * \weakgroup pll_group - * @{ - */ - -#define PLL_OUTPUT_MIN_HZ 80000000 -#define PLL_OUTPUT_MAX_HZ 240000000 - -#define PLL_INPUT_MIN_HZ 3000000 -#define PLL_INPUT_MAX_HZ 32000000 - -#define NR_PLLS 1 -#define PLLA_ID 0 - -#define PLL_COUNT 0x3fU - -enum pll_source { - PLL_SRC_MAINCK_4M_RC = OSC_MAINCK_4M_RC, //!< Internal 4MHz RC oscillator. - PLL_SRC_MAINCK_8M_RC = OSC_MAINCK_8M_RC, //!< Internal 8MHz RC oscillator. - PLL_SRC_MAINCK_12M_RC = OSC_MAINCK_12M_RC, //!< Internal 12MHz RC oscillator. - PLL_SRC_MAINCK_XTAL = OSC_MAINCK_XTAL, //!< External crystal oscillator. - PLL_SRC_MAINCK_BYPASS = OSC_MAINCK_BYPASS, //!< External bypass oscillator. - PLL_NR_SOURCES, //!< Number of PLL sources. -}; - -struct pll_config { - uint32_t ctrl; -}; - -#define pll_get_default_rate(pll_id) \ - ((osc_get_rate(CONFIG_PLL##pll_id##_SOURCE) \ - * CONFIG_PLL##pll_id##_MUL) \ - / CONFIG_PLL##pll_id##_DIV) - -/** - * \note The SAM4E PLL hardware interprets mul as mul+1. For readability the - * hardware mul+1 is hidden in this implementation. Use mul as mul effective - * value. - */ -static inline void pll_config_init(struct pll_config *p_cfg, - enum pll_source e_src, uint32_t ul_div, uint32_t ul_mul) -{ - uint32_t vco_hz; - - Assert(e_src < PLL_NR_SOURCES); - - /* Calculate internal VCO frequency */ - vco_hz = osc_get_rate(e_src) / ul_div; - Assert(vco_hz >= PLL_INPUT_MIN_HZ); - Assert(vco_hz <= PLL_INPUT_MAX_HZ); - - vco_hz *= ul_mul; - Assert(vco_hz >= PLL_OUTPUT_MIN_HZ); - Assert(vco_hz <= PLL_OUTPUT_MAX_HZ); - - /* PMC hardware will automatically make it mul+1 */ - p_cfg->ctrl = CKGR_PLLAR_MULA(ul_mul - 1) | CKGR_PLLAR_DIVA(ul_div) | \ - CKGR_PLLAR_PLLACOUNT(PLL_COUNT); -} - -#define pll_config_defaults(cfg, pll_id) \ - pll_config_init(cfg, \ - CONFIG_PLL##pll_id##_SOURCE, \ - CONFIG_PLL##pll_id##_DIV, \ - CONFIG_PLL##pll_id##_MUL) - -static inline void pll_config_read(struct pll_config *p_cfg, uint32_t ul_pll_id) -{ - Assert(ul_pll_id < NR_PLLS); - - if (ul_pll_id == PLLA_ID) { - p_cfg->ctrl = PMC->CKGR_PLLAR; - } -} - -static inline void pll_config_write(const struct pll_config *p_cfg, uint32_t ul_pll_id) -{ - Assert(ul_pll_id < NR_PLLS); - - if (ul_pll_id == PLLA_ID) { - pmc_disable_pllack(); // Always stop PLL first! - PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | p_cfg->ctrl; - } -} - -static inline void pll_enable(const struct pll_config *p_cfg, uint32_t ul_pll_id) -{ - Assert(ul_pll_id < NR_PLLS); - - if (ul_pll_id == PLLA_ID) { - pmc_disable_pllack(); // Always stop PLL first! - PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | p_cfg->ctrl; - } -} - -/** - * \note This will only disable the selected PLL, not the underlying oscillator (mainck). - */ -static inline void pll_disable(uint32_t ul_pll_id) -{ - Assert(ul_pll_id < NR_PLLS); - - if (ul_pll_id == PLLA_ID) { - pmc_disable_pllack(); - } -} - -static inline uint32_t pll_is_locked(uint32_t ul_pll_id) -{ - Assert(ul_pll_id < NR_PLLS); - - UNUSED(ul_pll_id); - return pmc_is_locked_pllack(); -} - -static inline void pll_enable_source(enum pll_source e_src) -{ - switch (e_src) { - case PLL_SRC_MAINCK_4M_RC: - case PLL_SRC_MAINCK_8M_RC: - case PLL_SRC_MAINCK_12M_RC: - case PLL_SRC_MAINCK_XTAL: - case PLL_SRC_MAINCK_BYPASS: - osc_enable(e_src); - osc_wait_ready(e_src); - break; - - default: - Assert(false); - break; - } -} - -static inline void pll_enable_config_defaults(unsigned int ul_pll_id) -{ - struct pll_config pllcfg; - - if (pll_is_locked(ul_pll_id)) { - return; // Pll already running - } - switch (ul_pll_id) { -#ifdef CONFIG_PLL0_SOURCE - case 0: - pll_enable_source(CONFIG_PLL0_SOURCE); - pll_config_init(&pllcfg, - CONFIG_PLL0_SOURCE, - CONFIG_PLL0_DIV, - CONFIG_PLL0_MUL); - break; -#endif - default: - Assert(false); - break; - } - pll_enable(&pllcfg, ul_pll_id); - while (!pll_is_locked(ul_pll_id)); -} - -//! @} - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond - -#endif /* CHIP_PLL_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/sysclk.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/sysclk.c deleted file mode 100644 index 66288d833..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/sysclk.c +++ /dev/null @@ -1,234 +0,0 @@ -/** - * \file - * - * \brief Chip-specific system clock management functions. - * - * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#include - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -/** - * \weakgroup sysclk_group - * @{ - */ - -#if defined(CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC) -/** - * \brief boolean signalling that the sysclk_init is done. - */ -uint32_t sysclk_initialized = 0; -#endif - -/** - * \brief Set system clock prescaler configuration - * - * This function will change the system clock prescaler configuration to - * match the parameters. - * - * \note The parameters to this function are device-specific. - * - * \param ul_pres The CPU clock will be divided by \f$2^{mck\_pres}\f$ - */ -void sysclk_set_prescalers(uint32_t ul_pres) -{ - pmc_mck_set_prescaler(ul_pres); - SystemCoreClockUpdate(); -} - -/** - * \brief Change the source of the main system clock. - * - * \param ul_src The new system clock source. Must be one of the constants - * from the System Clock Sources section. - */ -void sysclk_set_source(uint32_t ul_src) -{ - switch (ul_src) { - case SYSCLK_SRC_SLCK_RC: - case SYSCLK_SRC_SLCK_XTAL: - case SYSCLK_SRC_SLCK_BYPASS: - pmc_mck_set_source(PMC_MCKR_CSS_SLOW_CLK); - break; - - case SYSCLK_SRC_MAINCK_4M_RC: - case SYSCLK_SRC_MAINCK_8M_RC: - case SYSCLK_SRC_MAINCK_12M_RC: - case SYSCLK_SRC_MAINCK_XTAL: - case SYSCLK_SRC_MAINCK_BYPASS: - pmc_mck_set_source(PMC_MCKR_CSS_MAIN_CLK); - break; - - case SYSCLK_SRC_PLLACK: - pmc_mck_set_source(PMC_MCKR_CSS_PLLA_CLK); - break; - } - - SystemCoreClockUpdate(); -} - -#if defined(CONFIG_USBCLK_SOURCE) || defined(__DOXYGEN__) -/** - * \brief Enable USB clock. - * - * \note The SAM3S UDP hardware interprets div as div+1. For readability the hardware div+1 - * is hidden in this implementation. Use div as div effective value. - * - * \param pll_id Source of the USB clock. - * \param div Actual clock divisor. Must be superior to 0. - */ -void sysclk_enable_usb(void) -{ - Assert(CONFIG_USBCLK_DIV > 0); - -#ifdef CONFIG_PLL0_SOURCE - if (CONFIG_USBCLK_SOURCE == USBCLK_SRC_PLL0) { - struct pll_config pllcfg; - - pll_enable_source(CONFIG_PLL0_SOURCE); - pll_config_defaults(&pllcfg, 0); - pll_enable(&pllcfg, 0); - pll_wait_for_lock(0); - pmc_switch_udpck_to_pllack(CONFIG_USBCLK_DIV - 1); - pmc_enable_udpck(); - return; - } -#endif -} - -/** - * \brief Disable the USB clock. - * - * \note This implementation does not switch off the PLL, it just turns off the USB clock. - */ -void sysclk_disable_usb(void) -{ - pmc_disable_udpck(); -} -#endif // CONFIG_USBCLK_SOURCE - -void sysclk_init(void) -{ - /* Set a flash wait state depending on the new cpu frequency */ - system_init_flash(sysclk_get_cpu_hz()); - - /* Config system clock setting */ - if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_RC) { - osc_enable(OSC_SLCK_32K_RC); - osc_wait_ready(OSC_SLCK_32K_RC); - pmc_switch_mck_to_sclk(CONFIG_SYSCLK_PRES); - } - - else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_XTAL) { - osc_enable(OSC_SLCK_32K_XTAL); - osc_wait_ready(OSC_SLCK_32K_XTAL); - pmc_switch_mck_to_sclk(CONFIG_SYSCLK_PRES); - } - - else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_BYPASS) { - osc_enable(OSC_SLCK_32K_BYPASS); - osc_wait_ready(OSC_SLCK_32K_BYPASS); - pmc_switch_mck_to_sclk(CONFIG_SYSCLK_PRES); - } - - else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_4M_RC) { - /* Already running from SYSCLK_SRC_MAINCK_4M_RC */ - } - - else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_8M_RC) { - osc_enable(OSC_MAINCK_8M_RC); - osc_wait_ready(OSC_MAINCK_8M_RC); - pmc_switch_mck_to_mainck(CONFIG_SYSCLK_PRES); - } - - else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_12M_RC) { - osc_enable(OSC_MAINCK_12M_RC); - osc_wait_ready(OSC_MAINCK_12M_RC); - pmc_switch_mck_to_mainck(CONFIG_SYSCLK_PRES); - } - - else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_XTAL) { - osc_enable(OSC_MAINCK_XTAL); - osc_wait_ready(OSC_MAINCK_XTAL); - pmc_switch_mck_to_mainck(CONFIG_SYSCLK_PRES); - } - - else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_BYPASS) { - osc_enable(OSC_MAINCK_BYPASS); - osc_wait_ready(OSC_MAINCK_BYPASS); - pmc_switch_mck_to_mainck(CONFIG_SYSCLK_PRES); - } - -#ifdef CONFIG_PLL0_SOURCE - else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_PLLACK) { - struct pll_config pllcfg; - - pll_enable_source(CONFIG_PLL0_SOURCE); - pll_config_defaults(&pllcfg, 0); - pll_enable(&pllcfg, 0); - pll_wait_for_lock(0); - pmc_switch_mck_to_pllack(CONFIG_SYSCLK_PRES); - } -#endif - - /* Update the SystemFrequency variable */ - SystemCoreClockUpdate(); - -#if (defined CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC) - /* Signal that the internal frequencies are setup */ - sysclk_initialized = 1; -#endif -} - -//! @} - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/sysclk.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/sysclk.h deleted file mode 100644 index 4460fd561..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sam4e/sysclk.h +++ /dev/null @@ -1,456 +0,0 @@ -/** - * \file - * - * \brief Chip-specific system clock management functions. - * - * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef CHIP_SYSCLK_H_INCLUDED -#define CHIP_SYSCLK_H_INCLUDED - -#include -#include - -/** - * \page sysclk_quickstart Quick Start Guide for the System Clock Management - * service (SAM4E) - * - * This is the quick start guide for the \ref sysclk_group "System Clock - * Management" service, with step-by-step instructions on how to configure and - * use the service for specific use cases. - * - * \section sysclk_quickstart_usecases System Clock Management use cases - * - \ref sysclk_quickstart_basic - * - \ref sysclk_quickstart_use_case_2 - * - * \section sysclk_quickstart_basic Basic usage of the System Clock Management - * service - * This section will present a basic use case for the System Clock Management - * service. This use case will configure the main system clock to 120MHz, - * using an internal PLL module to multiply the frequency of a crystal attached - * to the microcontroller. - * - * \subsection sysclk_quickstart_use_case_1_prereq Prerequisites - * - None - * - * \subsection sysclk_quickstart_use_case_1_setup_steps Initialization code - * Add to the application initialization code: - * \code - * sysclk_init(); - * \endcode - * - * \subsection sysclk_quickstart_use_case_1_setup_steps_workflow Workflow - * -# Configure the system clocks according to the settings in conf_clock.h: - * \code sysclk_init(); \endcode - * - * \subsection sysclk_quickstart_use_case_1_example_code Example code - * Add or uncomment the following in your conf_clock.h header file, - * commenting out all other definitions of the same symbol(s): - * \code - * #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK - * - * // Fpll0 = (Fclk * PLL_mul) / PLL_div - * #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL - * #define CONFIG_PLL0_MUL (120000000UL / BOARD_FREQ_MAINCK_XTAL) - * #define CONFIG_PLL0_DIV 1 - * - * // Fbus = Fsys / BUS_div - * #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 - * \endcode - * - * \subsection sysclk_quickstart_use_case_1_example_workflow Workflow - * -# Configure the main system clock to use the output of the PLL module as - * its source: - * \code #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK \endcode - * -# Configure the PLL module to use the fast external fast crystal - * oscillator as its source: - * \code #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL \endcode - * -# Configure the PLL module to multiply the external fast crystal - * oscillator frequency up to 120MHz: - * \code - * #define CONFIG_PLL0_MUL (120000000UL / BOARD_FREQ_MAINCK_XTAL) - * #define CONFIG_PLL0_DIV 1 - * \endcode - * \note For user boards, \c BOARD_FREQ_MAINCK_XTAL should be defined in the - * board \c conf_board.h configuration - * file as the frequency of the fast crystal attached to the microcontroller. - * -# Configure the main clock to run at the full 120MHz, disable scaling of - * the main system clock speed: - * \code - * #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 - * \endcode - * \note Some dividers are powers of two, while others are integer division - * factors. Refer to the formulas in the conf_clock.h template commented - * above each division define. - */ - -/** - * \page sysclk_quickstart_use_case_2 Advanced use case - Peripheral Bus Clock - * Management (SAM4E) - * - * \section sysclk_quickstart_use_case_2 Advanced use case - Peripheral Bus - * Clock Management - * This section will present a more advanced use case for the System Clock - * Management service. This use case will configure the main system clock to - * 96MHz, using an internal PLL module to multiply the frequency of a crystal - * attached to the microcontroller. The USB clock will be configured via the - * same PLL module. - * - * \subsection sysclk_quickstart_use_case_2_prereq Prerequisites - * - None - * - * \subsection sysclk_quickstart_use_case_2_setup_steps Initialization code - * Add to the application initialization code: - * \code - * sysclk_init(); - * \endcode - * - * \subsection sysclk_quickstart_use_case_2_setup_steps_workflow Workflow - * -# Configure the system clocks according to the settings in conf_clock.h: - * \code sysclk_init(); \endcode - * - * \subsection sysclk_quickstart_use_case_2_example_code Example code - * Add or uncomment the following in your conf_clock.h header file, - * commenting out all other definitions of the same symbol(s): - * \code - * #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK - * - * // Fpll0 = (Fclk * PLL_mul) / PLL_div - * #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL - * #define CONFIG_PLL0_MUL (96000000UL / BOARD_FREQ_MAINCK_XTAL) - * #define CONFIG_PLL0_DIV 1 - * - * // Fbus = Fsys / BUS_div - * #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 - * - * // Fusb = Fsys / USB_div - * #define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL0 - * #define CONFIG_USBCLK_DIV 2 - * \endcode - * - * \subsection sysclk_quickstart_use_case_2_example_workflow Workflow - * -# Configure the main system clock to use the output of the PLL0 module as - * its source: - * \code #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK \endcode - * -# Configure the PLL0 module to use the fast external fast crystal - * oscillator as its source: - * \code #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL \endcode - * -# Configure the PLL0 module to multiply the external fast crystal - * oscillator frequency up to 96MHz: - * \code - * #define CONFIG_PLL0_MUL (96000000UL / BOARD_FREQ_MAINCK_XTAL) - * #define CONFIG_PLL0_DIV 1 - * \endcode - * \note For user boards, \c BOARD_FREQ_MAINCK_XTAL should be defined in the - * board \c conf_board.h configuration file as the frequency of the fast - * crystal attached to the microcontroller. - * -# Configure the main clock to run at the full 96MHz, disable scaling of - * the main system clock speed: - * \code - * #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 - * \endcode - * \note Some dividers are powers of two, while others are integer division - * factors. Refer to the formulas in the conf_clock.h template commented - * above each division define. - * -# Configure the USB module clock to use the output of the PLL0 module as - * its source with division 2: - * \code - * #define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL0 - * #define CONFIG_USBCLK_DIV 2 - * \endcode - */ - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -/** - * \weakgroup sysclk_group - * @{ - */ - -//! \name Configuration Symbols -//@{ -/** - * \def CONFIG_SYSCLK_SOURCE - * \brief Initial/static main system clock source - * - * The main system clock will be configured to use this clock during - * initialization. - */ -#ifndef CONFIG_SYSCLK_SOURCE -# define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_4M_RC -#endif -/** - * \def CONFIG_SYSCLK_PRES - * \brief Initial CPU clock divider (mck) - * - * The MCK will run at - * \f[ - * f_{MCK} = \frac{f_{sys}}{\mathrm{CONFIG\_SYSCLK\_PRES}}\,\mbox{Hz} - * \f] - * after initialization. - */ -#ifndef CONFIG_SYSCLK_PRES -# define CONFIG_SYSCLK_PRES 0 -#endif - -//@} - -//! \name Master Clock Sources (MCK) -//@{ -#define SYSCLK_SRC_SLCK_RC 0 //!< Internal 32kHz RC oscillator as master source clock -#define SYSCLK_SRC_SLCK_XTAL 1 //!< External 32kHz crystal oscillator as master source clock -#define SYSCLK_SRC_SLCK_BYPASS 2 //!< External 32kHz bypass oscillator as master source clock -#define SYSCLK_SRC_MAINCK_4M_RC 3 //!< Internal 4MHz RC oscillator as master source clock -#define SYSCLK_SRC_MAINCK_8M_RC 4 //!< Internal 8MHz RC oscillator as master source clock -#define SYSCLK_SRC_MAINCK_12M_RC 5 //!< Internal 12MHz RC oscillator as master source clock -#define SYSCLK_SRC_MAINCK_XTAL 6 //!< External crystal oscillator as master source clock -#define SYSCLK_SRC_MAINCK_BYPASS 7 //!< External bypass oscillator as master source clock -#define SYSCLK_SRC_PLLACK 8 //!< Use PLLACK as master source clock -//@} - -//! \name Master Clock Prescalers (MCK) -//@{ -#define SYSCLK_PRES_1 PMC_MCKR_PRES_CLK_1 //!< Set master clock prescaler to 1 -#define SYSCLK_PRES_2 PMC_MCKR_PRES_CLK_2 //!< Set master clock prescaler to 2 -#define SYSCLK_PRES_4 PMC_MCKR_PRES_CLK_4 //!< Set master clock prescaler to 4 -#define SYSCLK_PRES_8 PMC_MCKR_PRES_CLK_8 //!< Set master clock prescaler to 8 -#define SYSCLK_PRES_16 PMC_MCKR_PRES_CLK_16 //!< Set master clock prescaler to 16 -#define SYSCLK_PRES_32 PMC_MCKR_PRES_CLK_32 //!< Set master clock prescaler to 32 -#define SYSCLK_PRES_64 PMC_MCKR_PRES_CLK_64 //!< Set master clock prescaler to 64 -#define SYSCLK_PRES_3 PMC_MCKR_PRES_CLK_3 //!< Set master clock prescaler to 3 -//@} - -//! \name USB Clock Sources -//@{ -#define USBCLK_SRC_PLL0 0 //!< Use PLLA -//@} - -/** - * \def CONFIG_USBCLK_SOURCE - * \brief Configuration symbol for the USB generic clock source - * - * Sets the clock source to use for the USB. The source must also be properly - * configured. - * - * Define this to one of the \c USBCLK_SRC_xxx settings. Leave it undefined if - * USB is not required. - */ -#ifdef __DOXYGEN__ -# define CONFIG_USBCLK_SOURCE -#endif - -/** - * \def CONFIG_USBCLK_DIV - * \brief Configuration symbol for the USB generic clock divider setting - * - * Sets the clock division for the USB generic clock. If a USB clock source is - * selected with CONFIG_USBCLK_SOURCE, this configuration symbol must also be - * defined. - */ -#ifdef __DOXYGEN__ -# define CONFIG_USBCLK_DIV -#endif - -/** - * \name Querying the system clock - * - * The following functions may be used to query the current frequency of - * the system clock and the CPU and bus clocks derived from it. - * sysclk_get_main_hz() and sysclk_get_cpu_hz() can be assumed to be - * available on all platforms, although some platforms may define - * additional accessors for various chip-internal bus clocks. These are - * usually not intended to be queried directly by generic code. - */ -//@{ - -/** - * \brief Return the current rate in Hz of the main system clock - * - * \todo This function assumes that the main clock source never changes - * once it's been set up, and that PLL0 always runs at the compile-time - * configured default rate. While this is probably the most common - * configuration, which we want to support as a special case for - * performance reasons, we will at some point need to support more - * dynamic setups as well. - */ -#if (defined CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC) -extern uint32_t sysclk_initialized; -#endif -static inline uint32_t sysclk_get_main_hz(void) -{ -#if (defined CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC) - if (!sysclk_initialized ) { - return OSC_MAINCK_4M_RC_HZ; - } -#endif - - /* Config system clock setting */ - if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_RC) { - return OSC_SLCK_32K_RC_HZ; - } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_XTAL) { - return OSC_SLCK_32K_XTAL_HZ; - } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_BYPASS) { - return OSC_SLCK_32K_BYPASS_HZ; - } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_4M_RC) { - return OSC_MAINCK_4M_RC_HZ; - } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_8M_RC) { - return OSC_MAINCK_8M_RC_HZ; - } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_12M_RC) { - return OSC_MAINCK_12M_RC_HZ; - } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_XTAL) { - return OSC_MAINCK_XTAL_HZ; - } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_BYPASS) { - return OSC_MAINCK_BYPASS_HZ; - } -#ifdef CONFIG_PLL0_SOURCE - else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_PLLACK) { - return pll_get_default_rate(0); - } -#endif - - else { - /* unhandled_case(CONFIG_SYSCLK_SOURCE); */ - return 0; - } -} - -/** - * \brief Return the current rate in Hz of the CPU clock - * - * \todo This function assumes that the CPU always runs at the system - * clock frequency. We want to support at least two more scenarios: - * Fixed CPU/bus clock dividers (config symbols) and dynamic CPU/bus - * clock dividers (which may change at run time). Ditto for all the bus - * clocks. - * - * \return Frequency of the CPU clock, in Hz. - */ -static inline uint32_t sysclk_get_cpu_hz(void) -{ - /* CONFIG_SYSCLK_PRES is the register value for setting the expected */ - /* prescaler, not an immediate value. */ - return sysclk_get_main_hz() / - ((CONFIG_SYSCLK_PRES == SYSCLK_PRES_3) ? 3 : - (1 << (CONFIG_SYSCLK_PRES >> PMC_MCKR_PRES_Pos))); -} - -/** - * \brief Retrieves the current rate in Hz of the peripheral clocks. - * - * \return Frequency of the peripheral clocks, in Hz. - */ -static inline uint32_t sysclk_get_peripheral_hz(void) -{ - /* CONFIG_SYSCLK_PRES is the register value for setting the expected */ - /* prescaler, not an immediate value. */ - return sysclk_get_main_hz() / - ((CONFIG_SYSCLK_PRES == SYSCLK_PRES_3) ? 3 : - (1 << (CONFIG_SYSCLK_PRES >> PMC_MCKR_PRES_Pos))); -} - -/** - * \brief Retrieves the current rate in Hz of the Peripheral Bus clock attached - * to the specified peripheral. - * - * \param module Pointer to the module's base address. - * - * \return Frequency of the bus attached to the specified peripheral, in Hz. - */ -static inline uint32_t sysclk_get_peripheral_bus_hz(const volatile void *module) -{ - UNUSED(module); - return sysclk_get_peripheral_hz(); -} -//@} - -//! \name Enabling and disabling synchronous clocks -//@{ - -/** - * \brief Enable a peripheral's clock. - * - * \param ul_id Id (number) of the peripheral clock. - */ -static inline void sysclk_enable_peripheral_clock(uint32_t ul_id) -{ - pmc_enable_periph_clk(ul_id); -} - -/** - * \brief Disable a peripheral's clock. - * - * \param ul_id Id (number) of the peripheral clock. - */ -static inline void sysclk_disable_peripheral_clock(uint32_t ul_id) -{ - pmc_disable_periph_clk(ul_id); -} - -//@} - -//! \name System Clock Source and Prescaler configuration -//@{ - -extern void sysclk_set_prescalers(uint32_t ul_pres); -extern void sysclk_set_source(uint32_t ul_src); - -//@} - -extern void sysclk_enable_usb(void); -extern void sysclk_disable_usb(void); - -extern void sysclk_init(void); - -//! @} - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond - -#endif /* CHIP_SYSCLK_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sysclk.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sysclk.h deleted file mode 100644 index 5221b8a36..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/clock/sysclk.h +++ /dev/null @@ -1,175 +0,0 @@ -/** - * \file - * - * \brief System clock management - * - * Copyright (c) 2010-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ -#ifndef SYSCLK_H_INCLUDED -#define SYSCLK_H_INCLUDED - -#include "parts.h" -#include "conf_clock.h" - -#if SAM3S -# include "sam3s/sysclk.h" -#elif SAM3U -# include "sam3u/sysclk.h" -#elif SAM3N -# include "sam3n/sysclk.h" -#elif SAM3XA -# include "sam3x/sysclk.h" -#elif SAM4S -# include "sam4s/sysclk.h" -#elif SAM4E -# include "sam4e/sysclk.h" -#elif SAM4L -# include "sam4l/sysclk.h" -#elif SAM4N -# include "sam4n/sysclk.h" -#elif (UC3A0 || UC3A1) -# include "uc3a0_a1/sysclk.h" -#elif UC3A3 -# include "uc3a3_a4/sysclk.h" -#elif UC3B -# include "uc3b0_b1/sysclk.h" -#elif UC3C -# include "uc3c/sysclk.h" -#elif UC3D -# include "uc3d/sysclk.h" -#elif UC3L -# include "uc3l/sysclk.h" -#elif XMEGA -# include "xmega/sysclk.h" -#elif MEGA -# include "mega/sysclk.h" -#else -# error Unsupported chip type -#endif - -/** - * \defgroup clk_group Clock Management - */ - -/** - * \ingroup clk_group - * \defgroup sysclk_group System Clock Management - * - * See \ref sysclk_quickstart. - * - * The sysclk API covers the system clock and all - * clocks derived from it. The system clock is a chip-internal clock on - * which all synchronous clocks, i.e. CPU and bus/peripheral - * clocks, are based. The system clock is typically generated from one - * of a variety of sources, which may include crystal and RC oscillators - * as well as PLLs. The clocks derived from the system clock are - * sometimes also known as synchronous clocks, since they - * always run synchronously with respect to each other, as opposed to - * generic clocks which may run from different oscillators or - * PLLs. - * - * Most applications should simply call sysclk_init() to initialize - * everything related to the system clock and its source (oscillator, - * PLL or DFLL), and leave it at that. More advanced applications, and - * platform-specific drivers, may require additional services from the - * clock system, some of which may be platform-specific. - * - * \section sysclk_group_platform Platform Dependencies - * - * The sysclk API is partially chip- or platform-specific. While all - * platforms provide mostly the same functionality, there are some - * variations around how different bus types and clock tree structures - * are handled. - * - * The following functions are available on all platforms with the same - * parameters and functionality. These functions may be called freely by - * portable applications, drivers and services: - * - sysclk_init() - * - sysclk_set_source() - * - sysclk_get_main_hz() - * - sysclk_get_cpu_hz() - * - sysclk_get_peripheral_bus_hz() - * - * The following functions are available on all platforms, but there may - * be variations in the function signature (i.e. parameters) and - * behavior. These functions are typically called by platform-specific - * parts of drivers, and applications that aren't intended to be - * portable: - * - sysclk_enable_peripheral_clock() - * - sysclk_disable_peripheral_clock() - * - sysclk_enable_module() - * - sysclk_disable_module() - * - sysclk_module_is_enabled() - * - sysclk_set_prescalers() - * - * All other functions should be considered platform-specific. - * Enabling/disabling clocks to specific peripherals as well as - * determining the speed of these clocks should be done by calling - * functions provided by the driver for that peripheral. - * - * @{ - */ - -//! \name System Clock Initialization -//@{ -/** - * \fn void sysclk_init(void) - * \brief Initialize the synchronous clock system. - * - * This function will initialize the system clock and its source. This - * includes: - * - Mask all synchronous clocks except for any clocks which are - * essential for normal operation (for example internal memory - * clocks). - * - Set up the system clock prescalers as specified by the - * application's configuration file. - * - Enable the clock source specified by the application's - * configuration file (oscillator or PLL) and wait for it to become - * stable. - * - Set the main system clock source to the clock specified by the - * application's configuration file. - * - * Since all non-essential peripheral clocks are initially disabled, it - * is the responsibility of the peripheral driver to re-enable any - * clocks that are needed for normal operation. - */ -//@} - -//! @} - -#endif /* SYSCLK_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/ioport/ioport.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/ioport/ioport.h deleted file mode 100644 index 7cf38f77c..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/ioport/ioport.h +++ /dev/null @@ -1,538 +0,0 @@ -/** - * \file - * - * \brief Common IOPORT service main header file for AVR, UC3 and ARM - * architectures. - * - * Copyright (c) 2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ -#ifndef IOPORT_H -#define IOPORT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -/** - * \defgroup ioport_group Common IOPORT API - * - * See \ref ioport_quickstart. - * - * This is common IOPORT service for GPIO pin configuration and control in a - * standardized manner across the MEGA, MEGA_RF, XMEGA, UC3 and ARM devices. - * - * Port pin control code is optimized for each platform, and should produce - * both compact and fast execution times when used with constant values. - * - * \section dependencies Dependencies - * This driver depends on the following modules: - * - \ref sysclk_group for clock speed and functions. - * @{ - */ - -/** - * \def IOPORT_CREATE_PIN(port, pin) - * \brief Create IOPORT pin number - * - * Create a IOPORT pin number for use with the IOPORT functions. - * - * \param port IOPORT port (e.g. PORTA, PA or PIOA depending on chosen - * architecture) - * \param pin IOPORT zero-based index of the I/O pin - */ - -/** \brief IOPORT pin directions */ -enum ioport_direction { - IOPORT_DIR_INPUT, /*!< IOPORT input direction */ - IOPORT_DIR_OUTPUT, /*!< IOPORT output direction */ -}; - -/** \brief IOPORT levels */ -enum ioport_value { - IOPORT_PIN_LEVEL_LOW, /*!< IOPORT pin value low */ - IOPORT_PIN_LEVEL_HIGH, /*!< IOPORT pin value high */ -}; - -#if MEGA_RF -/** \brief IOPORT edge sense modes */ -enum ioport_sense { - IOPORT_SENSE_LEVEL, /*!< IOPORT sense low level */ - IOPORT_SENSE_BOTHEDGES, /*!< IOPORT sense both rising and falling edges */ - IOPORT_SENSE_FALLING, /*!< IOPORT sense falling edges */ - IOPORT_SENSE_RISING, /*!< IOPORT sense rising edges */ -}; -#elif SAM && !SAM4L -/** \brief IOPORT edge sense modes */ -enum ioport_sense { - IOPORT_SENSE_BOTHEDGES, /*!< IOPORT sense both rising and falling edges */ - IOPORT_SENSE_FALLING, /*!< IOPORT sense falling edges */ - IOPORT_SENSE_RISING, /*!< IOPORT sense rising edges */ - IOPORT_SENSE_LEVEL_LOW, /*!< IOPORT sense low level */ - IOPORT_SENSE_LEVEL_HIGH,/*!< IOPORT sense High level */ -}; -#else -enum ioport_sense { - IOPORT_SENSE_BOTHEDGES, /*!< IOPORT sense both rising and falling edges */ - IOPORT_SENSE_RISING, /*!< IOPORT sense rising edges */ - IOPORT_SENSE_FALLING, /*!< IOPORT sense falling edges */ -}; -#endif - - -#if XMEGA -# include "xmega/ioport.h" -# if defined(IOPORT_XMEGA_COMPAT) -# include "xmega/ioport_compat.h" -# endif -#elif MEGA -# include "mega/ioport.h" -#elif UC3 -# include "uc3/ioport.h" -#elif SAM -# if SAM4L -# include "sam/ioport_gpio.h" -# elif SAMD20 -# include "sam0/ioport.h" -# else -# include "sam/ioport_pio.h" -# endif -#endif - -/** - * \brief Initializes the IOPORT service, ready for use. - * - * This function must be called before using any other functions in the IOPORT - * service. - */ -static inline void ioport_init(void) -{ - arch_ioport_init(); -} - -/** - * \brief Enable an IOPORT pin, based on a pin created with \ref - * IOPORT_CREATE_PIN(). - * - * \param pin IOPORT pin to enable - */ -static inline void ioport_enable_pin(ioport_pin_t pin) -{ - arch_ioport_enable_pin(pin); -} - -/** - * \brief Enable multiple pins in a single IOPORT port. - * - * \param port IOPORT port to enable - * \param mask Mask of pins within the port to enable - */ -static inline void ioport_enable_port(ioport_port_t port, - ioport_port_mask_t mask) -{ - arch_ioport_enable_port(port, mask); -} - -/** - * \brief Disable IOPORT pin, based on a pin created with \ref - * IOPORT_CREATE_PIN(). - * - * \param pin IOPORT pin to disable - */ -static inline void ioport_disable_pin(ioport_pin_t pin) -{ - arch_ioport_disable_pin(pin); -} - -/** - * \brief Disable multiple pins in a single IOPORT port. - * - * \param port IOPORT port to disable - * \param mask Pin mask of pins to disable - */ -static inline void ioport_disable_port(ioport_port_t port, - ioport_port_mask_t mask) -{ - arch_ioport_disable_port(port, mask); -} - -/** - * \brief Set multiple pin modes in a single IOPORT port, such as pull-up, - * pull-down, etc. configuration. - * - * \param port IOPORT port to configure - * \param mask Pin mask of pins to configure - * \param mode Mode masks to configure for the specified pins (\ref - * ioport_modes) - */ -static inline void ioport_set_port_mode(ioport_port_t port, - ioport_port_mask_t mask, ioport_mode_t mode) -{ - arch_ioport_set_port_mode(port, mask, mode); -} - -/** - * \brief Set pin mode for one single IOPORT pin. - * - * \param pin IOPORT pin to configure - * \param mode Mode masks to configure for the specified pin (\ref ioport_modes) - */ -static inline void ioport_set_pin_mode(ioport_pin_t pin, ioport_mode_t mode) -{ - arch_ioport_set_pin_mode(pin, mode); -} - -/** - * \brief Reset multiple pin modes in a specified IOPORT port to defaults. - * - * \param port IOPORT port to configure - * \param mask Mask of pins whose mode configuration is to be reset - */ -static inline void ioport_reset_port_mode(ioport_port_t port, - ioport_port_mask_t mask) -{ - arch_ioport_set_port_mode(port, mask, 0); -} - -/** - * \brief Reset pin mode configuration for a single IOPORT pin - * - * \param pin IOPORT pin to configure - */ -static inline void ioport_reset_pin_mode(ioport_pin_t pin) -{ - arch_ioport_set_pin_mode(pin, 0); -} - -/** - * \brief Set I/O direction for a group of pins in a single IOPORT. - * - * \param port IOPORT port to configure - * \param mask Pin mask of pins to configure - * \param dir Direction to set for the specified pins (\ref ioport_direction) - */ -static inline void ioport_set_port_dir(ioport_port_t port, - ioport_port_mask_t mask, enum ioport_direction dir) -{ - arch_ioport_set_port_dir(port, mask, dir); -} - -/** - * \brief Set direction for a single IOPORT pin. - * - * \param pin IOPORT pin to configure - * \param dir Direction to set for the specified pin (\ref ioport_direction) - */ -static inline void ioport_set_pin_dir(ioport_pin_t pin, - enum ioport_direction dir) -{ - arch_ioport_set_pin_dir(pin, dir); -} - -/** - * \brief Set an IOPORT pin to a specified logical value. - * - * \param pin IOPORT pin to configure - * \param level Logical value of the pin - */ -static inline void ioport_set_pin_level(ioport_pin_t pin, bool level) -{ - arch_ioport_set_pin_level(pin, level); -} - -/** - * \brief Set a group of IOPORT pins in a single port to a specified logical - * value. - * - * \param port IOPORT port to write to - * \param mask Pin mask of pins to modify - * \param level Level of the pins to be modified - */ -static inline void ioport_set_port_level(ioport_port_t port, - ioport_port_mask_t mask, ioport_port_mask_t level) -{ - arch_ioport_set_port_level(port, mask, level); -} - -/** - * \brief Get current value of an IOPORT pin, which has been configured as an - * input. - * - * \param pin IOPORT pin to read - * \return Current logical value of the specified pin - */ -static inline bool ioport_get_pin_level(ioport_pin_t pin) -{ - return arch_ioport_get_pin_level(pin); -} - -/** - * \brief Get current value of several IOPORT pins in a single port, which have - * been configured as an inputs. - * - * \param port IOPORT port to read - * \param mask Pin mask of pins to read - * \return Logical levels of the specified pins from the read port, returned as - * a mask. - */ -static inline ioport_port_mask_t ioport_get_port_level(ioport_pin_t port, - ioport_port_mask_t mask) -{ - return arch_ioport_get_port_level(port, mask); -} - -/** - * \brief Toggle the value of an IOPORT pin, which has previously configured as - * an output. - * - * \param pin IOPORT pin to toggle - */ -static inline void ioport_toggle_pin_level(ioport_pin_t pin) -{ - arch_ioport_toggle_pin_level(pin); -} - -/** - * \brief Toggle the values of several IOPORT pins located in a single port. - * - * \param port IOPORT port to modify - * \param mask Pin mask of pins to toggle - */ -static inline void ioport_toggle_port_level(ioport_port_t port, - ioport_port_mask_t mask) -{ - arch_ioport_toggle_port_level(port, mask); -} - -/** - * \brief Set the pin sense mode of a single IOPORT pin. - * - * \param pin IOPORT pin to configure - * \param pin_sense Edge to sense for the pin (\ref ioport_sense) - */ -static inline void ioport_set_pin_sense_mode(ioport_pin_t pin, - enum ioport_sense pin_sense) -{ - arch_ioport_set_pin_sense_mode(pin, pin_sense); -} - -/** - * \brief Set the pin sense mode of a multiple IOPORT pins on a single port. - * - * \param port IOPORT port to configure - * \param mask Bitmask if pins whose edge sense is to be configured - * \param pin_sense Edge to sense for the pins (\ref ioport_sense) - */ -static inline void ioport_set_port_sense_mode(ioport_port_t port, - ioport_port_mask_t mask, - enum ioport_sense pin_sense) -{ - arch_ioport_set_port_sense_mode(port, mask, pin_sense); -} - -/** - * \brief Convert a pin ID into a its port ID. - * - * \param pin IOPORT pin ID to convert - * \retval Port ID for the given pin ID - */ -static inline ioport_port_t ioport_pin_to_port_id(ioport_pin_t pin) -{ - return arch_ioport_pin_to_port_id(pin); -} - -/** - * \brief Convert a pin ID into a bitmask mask for the given pin on its port. - * - * \param pin IOPORT pin ID to convert - * \retval Bitmask with a bit set that corresponds to the given pin ID in its port - */ -static inline ioport_port_mask_t ioport_pin_to_mask(ioport_pin_t pin) -{ - return arch_ioport_pin_to_mask(pin); -} - -/** @} */ - -/** - * \page ioport_quickstart Quick start guide for the common IOPORT service - * - * This is the quick start guide for the \ref ioport_group, with - * step-by-step instructions on how to configure and use the service in a - * selection of use cases. - * - * The use cases contain several code fragments. The code fragments in the - * steps for setup can be copied into a custom initialization function, while - * the steps for usage can be copied into, e.g., the main application function. - * - * \section ioport_quickstart_basic Basic use case - * In this use case we will configure one IO pin for button input and one for - * LED control. Then it will read the button state and output it on the LED. - * - * \section ioport_quickstart_basic_setup Setup steps - * - * \subsection ioport_quickstart_basic_setup_code Example code - * \code - * #define MY_LED IOPORT_CREATE_PIN(PORTA, 5) - * #define MY_BUTTON IOPORT_CREATE_PIN(PORTA, 6) - * - * ioport_init(); - * - * ioport_set_pin_dir(MY_LED, IOPORT_DIR_OUTPUT); - * ioport_set_pin_dir(MY_BUTTON, IOPORT_DIR_INPUT); - * ioport_set_pin_mode(MY_BUTTON, IOPORT_MODE_PULLUP); - * \endcode - * - * \subsection ioport_quickstart_basic_setup_flow Workflow - * -# It's useful to give the GPIOs symbolic names and this can be done with - * the \ref IOPORT_CREATE_PIN macro. We define one for a LED and one for a - * button. - * - \code - * #define MY_LED IOPORT_CREATE_PIN(PORTA, 5) - * #define MY_BUTTON IOPORT_CREATE_PIN(PORTA, 6) - * \endcode - * - \note The usefulness of the \ref IOPORT_CREATE_PIN macro and port names - * differ between architectures: - * - MEGA, MEGA_RF and XMEGA: Use \ref IOPORT_CREATE_PIN macro with port definitions - * PORTA, PORTB ... - * - UC3: Most convenient to pick up the device header file pin definition - * and us it directly. E.g.: AVR32_PIN_PB06 - * - SAM: Most convenient to pick up the device header file pin definition - * and us it directly. E.g.: PIO_PA5_IDX
- * \ref IOPORT_CREATE_PIN can also be used with port definitions - * PIOA, PIOB ... - * -# Initialize the ioport service. This typically enables the IO module if - * needed. - * - \code ioport_init(); \endcode - * -# Set the LED GPIO as output: - * - \code ioport_set_pin_dir(MY_LED, IOPORT_DIR_OUTPUT); \endcode - * -# Set the button GPIO as input: - * - \code ioport_set_pin_dir(MY_BUTTON, IOPORT_DIR_INPUT); \endcode - * -# Enable pull-up for the button GPIO: - * - \code ioport_set_pin_mode(MY_BUTTON, IOPORT_MODE_PULLUP); \endcode - * - * \section ioport_quickstart_basic_usage Usage steps - * - * \subsection ioport_quickstart_basic_usage_code Example code - * \code - * bool value; - * - * value = ioport_get_pin_level(MY_BUTTON); - * ioport_set_pin_level(MY_LED, value); - * \endcode - * - * \subsection ioport_quickstart_basic_usage_flow Workflow - * -# Define a boolean variable for state storage: - * - \code bool value; \endcode - * -# Read out the button level into variable value: - * - \code value = ioport_get_pin_level(MY_BUTTON); \endcode - * -# Set the LED to read out value from the button: - * - \code ioport_set_pin_level(MY_LED, value); \endcode - * - * \section ioport_quickstart_advanced Advanced use cases - * - \subpage ioport_quickstart_use_case_1 : Port access - */ - -/** - * \page ioport_quickstart_use_case_1 Advanced use case doing port access - * - * In this case we will read out the pins from one whole port and write the - * read value to another port. - * - * \section ioport_quickstart_use_case_1_setup Setup steps - * - * \subsection ioport_quickstart_use_case_1_setup_code Example code - * \code - * #define IN_PORT IOPORT_PORTA - * #define OUT_PORT IOPORT_PORTB - * #define MASK 0x00000060 - * - * ioport_init(); - * - * ioport_set_port_dir(IN_PORT, MASK, IOPORT_DIR_INPUT); - * ioport_set_port_dir(OUT_PORT, MASK, IOPORT_DIR_OUTPUT); - * \endcode - * - * \subsection ioport_quickstart_basic_setup_flow Workflow - * -# It's useful to give the ports symbolic names: - * - \code - * #define IN_PORT IOPORT_PORTA - * #define OUT_PORT IOPORT_PORTB - * \endcode - * - \note The port names differ between architectures: - * - MEGA_RF, MEGA and XMEGA: There are predefined names for ports: IOPORT_PORTA, - * IOPORT_PORTB ... - * - UC3: Use the index value of the different IO blocks: 0, 1 ... - * - SAM: There are predefined names for ports: IOPORT_PIOA, IOPORT_PIOB - * ... - * -# Also useful to define a mask for the bits to work with: - * - \code #define MASK 0x00000060 \endcode - * -# Initialize the ioport service. This typically enables the IO module if - * needed. - * - \code ioport_init(); \endcode - * -# Set one of the ports as input: - * - \code ioport_set_pin_dir(IN_PORT, MASK, IOPORT_DIR_INPUT); \endcode - * -# Set the other port as output: - * - \code ioport_set_pin_dir(OUT_PORT, MASK, IOPORT_DIR_OUTPUT); \endcode - * - * \section ioport_quickstart_basic_usage Usage steps - * - * \subsection ioport_quickstart_basic_usage_code Example code - * \code - * ioport_port_mask_t value; - * - * value = ioport_get_port_level(IN_PORT, MASK); - * ioport_set_port_level(OUT_PORT, MASK, value); - * \endcode - * - * \subsection ioport_quickstart_basic_usage_flow Workflow - * -# Define a variable for port date storage: - * - \code ioport_port_mask_t value; \endcode - * -# Read out from one port: - * - \code value = ioport_get_port_level(IN_PORT, MASK); \endcode - * -# Put the read data out on the other port: - * - \code ioport_set_port_level(OUT_PORT, MASK, value); \endcode - */ - -#ifdef __cplusplus -} -#endif - -#endif /* IOPORT_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/ioport/sam/ioport_pio.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/ioport/sam/ioport_pio.h deleted file mode 100644 index 20f97c0a1..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/services/ioport/sam/ioport_pio.h +++ /dev/null @@ -1,364 +0,0 @@ -/** - * \file - * - * \brief SAM architecture specific IOPORT service implementation header file. - * - * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ -#ifndef IOPORT_SAM_H -#define IOPORT_SAM_H - -#include - -#define IOPORT_CREATE_PIN(port, pin) ((IOPORT_ ## port) * 32 + (pin)) -#define IOPORT_BASE_ADDRESS (uintptr_t)PIOA -#define IOPORT_PIO_OFFSET ((uintptr_t)PIOB - (uintptr_t)PIOA) - -#define IOPORT_PIOA 0 -#define IOPORT_PIOB 1 -#define IOPORT_PIOC 2 -#define IOPORT_PIOD 3 -#define IOPORT_PIOE 4 -#define IOPORT_PIOF 5 - -/** - * \weakgroup ioport_group - * \section ioport_modes IOPORT Modes - * - * For details on these please see the SAM Manual. - * - * @{ - */ - -/** \name IOPORT Mode bit definitions */ -/** @{ */ -#define IOPORT_MODE_MUX_MASK (0x7 << 0) /*!< MUX bits mask */ -#define IOPORT_MODE_MUX_BIT0 ( 1 << 0) /*!< MUX BIT0 mask */ - -#if SAM3N || SAM3S || SAM4S || SAM4E || SAM4N -#define IOPORT_MODE_MUX_BIT1 ( 1 << 1) /*!< MUX BIT1 mask */ -#endif - -#define IOPORT_MODE_MUX_A ( 0 << 0) /*!< MUX function A */ -#define IOPORT_MODE_MUX_B ( 1 << 0) /*!< MUX function B */ - -#if SAM3N || SAM3S || SAM4S || SAM4E || SAM4N -#define IOPORT_MODE_MUX_C ( 2 << 0) /*!< MUX function C */ -#define IOPORT_MODE_MUX_D ( 3 << 0) /*!< MUX function D */ -#endif - -#define IOPORT_MODE_PULLUP ( 1 << 3) /*!< Pull-up */ - -#if SAM3N || SAM3S || SAM4S || SAM4E || SAM4N -#define IOPORT_MODE_PULLDOWN ( 1 << 4) /*!< Pull-down */ -#endif - -#define IOPORT_MODE_OPEN_DRAIN ( 1 << 5) /*!< Open drain */ - -#define IOPORT_MODE_GLITCH_FILTER ( 1 << 6) /*!< Glitch filter */ -#define IOPORT_MODE_DEBOUNCE ( 1 << 7) /*!< Input debounce */ -/** @} */ - -/** @} */ - -typedef uint32_t ioport_mode_t; -typedef uint32_t ioport_pin_t; -typedef uint32_t ioport_port_t; -typedef uint32_t ioport_port_mask_t; - -__always_inline static ioport_port_t arch_ioport_pin_to_port_id(ioport_pin_t pin) -{ - return pin >> 5; -} - -__always_inline static Pio *arch_ioport_port_to_base(ioport_port_t port) -{ - return (Pio *)((uintptr_t)IOPORT_BASE_ADDRESS + - (IOPORT_PIO_OFFSET * port)); -} - -__always_inline static Pio *arch_ioport_pin_to_base(ioport_pin_t pin) -{ - return arch_ioport_port_to_base(arch_ioport_pin_to_port_id(pin)); -} - -__always_inline static ioport_port_mask_t arch_ioport_pin_to_mask(ioport_pin_t pin) -{ - return 1U << (pin & 0x1F); -} - -__always_inline static void arch_ioport_init(void) -{ -#ifdef ID_PIOA - sysclk_enable_peripheral_clock(ID_PIOA); -#endif -#ifdef ID_PIOB - sysclk_enable_peripheral_clock(ID_PIOB); -#endif -#ifdef ID_PIOC - sysclk_enable_peripheral_clock(ID_PIOC); -#endif -#ifdef ID_PIOD - sysclk_enable_peripheral_clock(ID_PIOD); -#endif -#ifdef ID_PIOE - sysclk_enable_peripheral_clock(ID_PIOE); -#endif -#ifdef ID_PIOF - sysclk_enable_peripheral_clock(ID_PIOF); -#endif -} - -__always_inline static void arch_ioport_enable_port(ioport_port_t port, - ioport_port_mask_t mask) -{ - arch_ioport_port_to_base(port)->PIO_PER = mask; -} - -__always_inline static void arch_ioport_disable_port(ioport_port_t port, - ioport_port_mask_t mask) -{ - arch_ioport_port_to_base(port)->PIO_PDR = mask; -} - -__always_inline static void arch_ioport_enable_pin(ioport_pin_t pin) -{ - arch_ioport_enable_port(arch_ioport_pin_to_port_id(pin), - arch_ioport_pin_to_mask(pin)); -} - -__always_inline static void arch_ioport_disable_pin(ioport_pin_t pin) -{ - arch_ioport_disable_port(arch_ioport_pin_to_port_id(pin), - arch_ioport_pin_to_mask(pin)); -} - -__always_inline static void arch_ioport_set_port_mode(ioport_port_t port, - ioport_port_mask_t mask, ioport_mode_t mode) -{ - Pio *base = arch_ioport_port_to_base(port); - - if (mode & IOPORT_MODE_PULLUP) { - base->PIO_PUER = mask; - } else { - base->PIO_PUDR = mask; - } - -#if defined(IOPORT_MODE_PULLDOWN) - if (mode & IOPORT_MODE_PULLDOWN) { - base->PIO_PPDER = mask; - } else { - base->PIO_PPDDR = mask; - } -#endif - - if (mode & IOPORT_MODE_OPEN_DRAIN) { - base->PIO_MDER = mask; - } else { - base->PIO_MDDR = mask; - } - - if (mode & (IOPORT_MODE_GLITCH_FILTER | IOPORT_MODE_DEBOUNCE)) { - base->PIO_IFER = mask; - } else { - base->PIO_IFDR = mask; - } - - if (mode & IOPORT_MODE_DEBOUNCE) { -#if SAM3U || SAM3XA - base->PIO_DIFSR = mask; -#else - base->PIO_IFSCER = mask; -#endif - } else { -#if SAM3U || SAM3XA - base->PIO_SCIFSR = mask; -#else - base->PIO_IFSCDR = mask; -#endif - } - -#if !defined(IOPORT_MODE_MUX_BIT1) - if (mode & IOPORT_MODE_MUX_BIT0) { - base->PIO_ABSR |= mask; - } else { - base->PIO_ABSR &= ~mask; - } -#else - if (mode & IOPORT_MODE_MUX_BIT0) { - base->PIO_ABCDSR[0] |= mask; - } else { - base->PIO_ABCDSR[0] &= ~mask; - } - - if (mode & IOPORT_MODE_MUX_BIT1) { - base->PIO_ABCDSR[1] |= mask; - } else { - base->PIO_ABCDSR[1] &= ~mask; - } -#endif -} - -__always_inline static void arch_ioport_set_pin_mode(ioport_pin_t pin, - ioport_mode_t mode) -{ - arch_ioport_set_port_mode(arch_ioport_pin_to_port_id(pin), - arch_ioport_pin_to_mask(pin), mode); -} - -__always_inline static void arch_ioport_set_port_dir(ioport_port_t port, - ioport_port_mask_t mask, enum ioport_direction group_direction) -{ - Pio *base = arch_ioport_port_to_base(port); - - if (group_direction == IOPORT_DIR_OUTPUT) { - base->PIO_OER = mask; - } else if (group_direction == IOPORT_DIR_INPUT) { - base->PIO_ODR = mask; - } - - base->PIO_OWER = mask; -} - -__always_inline static void arch_ioport_set_pin_dir(ioport_pin_t pin, - enum ioport_direction dir) -{ - Pio *base = arch_ioport_pin_to_base(pin); - - if (dir == IOPORT_DIR_OUTPUT) { - base->PIO_OER = arch_ioport_pin_to_mask(pin); - } else if (dir == IOPORT_DIR_INPUT) { - base->PIO_ODR = arch_ioport_pin_to_mask(pin); - } - - base->PIO_OWER = arch_ioport_pin_to_mask(pin); -} - -__always_inline static void arch_ioport_set_pin_level(ioport_pin_t pin, - bool level) -{ - Pio *base = arch_ioport_pin_to_base(pin); - - if (level) { - base->PIO_SODR = arch_ioport_pin_to_mask(pin); - } else { - base->PIO_CODR = arch_ioport_pin_to_mask(pin); - } -} - -__always_inline static void arch_ioport_set_port_level(ioport_port_t port, - ioport_port_mask_t mask, ioport_port_mask_t level) -{ - Pio *base = arch_ioport_port_to_base(port); - - base->PIO_SODR = mask & level; - base->PIO_CODR = mask & ~level; -} - -__always_inline static bool arch_ioport_get_pin_level(ioport_pin_t pin) -{ - return arch_ioport_pin_to_base(pin)->PIO_PDSR & arch_ioport_pin_to_mask(pin); -} - -__always_inline static ioport_port_mask_t arch_ioport_get_port_level( - ioport_port_t port, ioport_port_mask_t mask) -{ - return arch_ioport_port_to_base(port)->PIO_PDSR & mask; -} - -__always_inline static void arch_ioport_toggle_pin_level(ioport_pin_t pin) -{ - Pio *port = arch_ioport_pin_to_base(pin); - ioport_port_mask_t mask = arch_ioport_pin_to_mask(pin); - - if (port->PIO_PDSR & arch_ioport_pin_to_mask(pin)) { - port->PIO_CODR = mask; - } else { - port->PIO_SODR = mask; - } -} - -__always_inline static void arch_ioport_toggle_port_level(ioport_port_t port, - ioport_port_mask_t mask) -{ - arch_ioport_port_to_base(port)->PIO_ODSR ^= mask; -} - -__always_inline static void arch_ioport_set_port_sense_mode(ioport_port_t port, - ioport_port_mask_t mask, enum ioport_sense pin_sense) -{ - Pio *base = arch_ioport_port_to_base(port); - /* AIMMR ELSR FRLHSR - * 0 X X IOPORT_SENSE_BOTHEDGES (Default) - * 1 0 0 IOPORT_SENSE_FALLING - * 1 0 1 IOPORT_SENSE_RISING - * 1 1 0 IOPORT_SENSE_LEVEL_LOW - * 1 1 1 IOPORT_SENSE_LEVEL_HIGH - */ - switch(pin_sense) { - case IOPORT_SENSE_LEVEL_LOW: - base->PIO_LSR = mask; - base->PIO_FELLSR = mask; - break; - case IOPORT_SENSE_LEVEL_HIGH: - base->PIO_LSR = mask; - base->PIO_REHLSR = mask; - break; - case IOPORT_SENSE_FALLING: - base->PIO_ESR = mask; - base->PIO_FELLSR = mask; - break; - case IOPORT_SENSE_RISING: - base->PIO_ESR = mask; - base->PIO_REHLSR = mask; - break; - default: - base->PIO_AIMDR = mask; - return; - } - base->PIO_AIMER = mask; -} - -__always_inline static void arch_ioport_set_pin_sense_mode(ioport_pin_t pin, - enum ioport_sense pin_sense) -{ - arch_ioport_set_port_sense_mode(arch_ioport_pin_to_port_id(pin), - arch_ioport_pin_to_mask(pin), pin_sense); -} - -#endif /* IOPORT_SAM_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt.h deleted file mode 100644 index 677487989..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt.h +++ /dev/null @@ -1,139 +0,0 @@ -/** - * \file - * - * \brief Global interrupt management for 8- and 32-bit AVR - * - * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ -#ifndef UTILS_INTERRUPT_H -#define UTILS_INTERRUPT_H - -#include - -#if XMEGA || MEGA || TINY -# include "interrupt/interrupt_avr8.h" -#elif UC3 -# include "interrupt/interrupt_avr32.h" -#elif SAM3S || SAM3N || SAM3XA || SAM3U || SAM4S || SAM4L || SAM4E || SAMD20 || SAM -# include "interrupt/interrupt_sam_nvic.h" -#else -# error Unsupported device. -#endif - -/** - * \defgroup interrupt_group Global interrupt management - * - * This is a driver for global enabling and disabling of interrupts. - * - * @{ - */ - -#if defined(__DOXYGEN__) -/** - * \def CONFIG_INTERRUPT_FORCE_INTC - * \brief Force usage of the ASF INTC driver - * - * Predefine this symbol when preprocessing to force the use of the ASF INTC driver. - * This is useful to ensure compatibility across compilers and shall be used only when required - * by the application needs. - */ -# define CONFIG_INTERRUPT_FORCE_INTC -#endif - -//! \name Global interrupt flags -//@{ -/** - * \typedef irqflags_t - * \brief Type used for holding state of interrupt flag - */ - -/** - * \def cpu_irq_enable - * \brief Enable interrupts globally - */ - -/** - * \def cpu_irq_disable - * \brief Disable interrupts globally - */ - -/** - * \fn irqflags_t cpu_irq_save(void) - * \brief Get and clear the global interrupt flags - * - * Use in conjunction with \ref cpu_irq_restore. - * - * \return Current state of interrupt flags. - * - * \note This function leaves interrupts disabled. - */ - -/** - * \fn void cpu_irq_restore(irqflags_t flags) - * \brief Restore global interrupt flags - * - * Use in conjunction with \ref cpu_irq_save. - * - * \param flags State to set interrupt flag to. - */ - -/** - * \fn bool cpu_irq_is_enabled_flags(irqflags_t flags) - * \brief Check if interrupts are globally enabled in supplied flags - * - * \param flags Currents state of interrupt flags. - * - * \return True if interrupts are enabled. - */ - -/** - * \def cpu_irq_is_enabled - * \brief Check if interrupts are globally enabled - * - * \return True if interrupts are enabled. - */ -//@} - -//! @} - -/** - * \ingroup interrupt_group - * \defgroup interrupt_deprecated_group Deprecated interrupt definitions - */ - -#endif /* UTILS_INTERRUPT_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c deleted file mode 100644 index 37dd08398..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c +++ /dev/null @@ -1,83 +0,0 @@ -/** - * \file - * - * \brief Global interrupt management for SAM D20, SAM3 and SAM4 (NVIC based) - * - * Copyright (c) 2012-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#include "interrupt_sam_nvic.h" - -#if !defined(__DOXYGEN__) -/* Deprecated - global flag to determine the global interrupt state. Required by - * QTouch library, however new applications should use cpu_irq_is_enabled() - * which probes the true global interrupt state from the CPU special registers. - */ -volatile bool g_interrupt_enabled = true; -#endif - -void cpu_irq_enter_critical(void) -{ - if (cpu_irq_critical_section_counter == 0) { - if (cpu_irq_is_enabled()) { - cpu_irq_disable(); - cpu_irq_prev_interrupt_state = true; - } else { - /* Make sure the to save the prev state as false */ - cpu_irq_prev_interrupt_state = false; - } - - } - - cpu_irq_critical_section_counter++; -} - -void cpu_irq_leave_critical(void) -{ - /* Check if the user is trying to leave a critical section when not in a critical section */ - Assert(cpu_irq_critical_section_counter > 0); - - cpu_irq_critical_section_counter--; - - /* Only enable global interrupts when the counter reaches 0 and the state of the global interrupt flag - was enabled when entering critical state */ - if ((cpu_irq_critical_section_counter == 0) && (cpu_irq_prev_interrupt_state)) { - cpu_irq_enable(); - } -} - diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h deleted file mode 100644 index 8dbe15e01..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h +++ /dev/null @@ -1,178 +0,0 @@ -/** - * \file - * - * \brief Global interrupt management for SAM D20, SAM3 and SAM4 (NVIC based) - * - * Copyright (c) 2012-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef UTILS_INTERRUPT_INTERRUPT_H -#define UTILS_INTERRUPT_INTERRUPT_H - -#include -#include - -/** - * \weakgroup interrupt_group - * - * @{ - */ - -/** - * \name Interrupt Service Routine definition - * - * @{ - */ - -/** - * \brief Define service routine - * - * \note For NVIC devices the interrupt service routines are predefined to - * add to vector table in binary generation, so there is no service - * register at run time. The routine collections are in exceptions.h. - * - * Usage: - * \code - * ISR(foo_irq_handler) - * { - * // Function definition - * ... - * } - * \endcode - * - * \param func Name for the function. - */ -# define ISR(func) \ - void func (void) - -/** - * \brief Initialize interrupt vectors - * - * For NVIC the interrupt vectors are put in vector table. So nothing - * to do to initialize them, except defined the vector function with - * right name. - * - * This must be called prior to \ref irq_register_handler. - */ -# define irq_initialize_vectors() \ - do { \ - } while(0) - -/** - * \brief Register handler for interrupt - * - * For NVIC the interrupt vectors are put in vector table. So nothing - * to do to register them, except defined the vector function with - * right name. - * - * Usage: - * \code - * irq_initialize_vectors(); - * irq_register_handler(foo_irq_handler); - * \endcode - * - * \note The function \a func must be defined with the \ref ISR macro. - * \note The functions prototypes can be found in the device exception header - * files (exceptions.h). - */ -# define irq_register_handler(int_num, int_prio) \ - NVIC_ClearPendingIRQ( (IRQn_Type)int_num); \ - NVIC_SetPriority( (IRQn_Type)int_num, int_prio); \ - NVIC_EnableIRQ( (IRQn_Type)int_num); \ - -//@} - -# define cpu_irq_enable() \ - do { \ - g_interrupt_enabled = true; \ - __DMB(); \ - __enable_irq(); \ - } while (0) -# define cpu_irq_disable() \ - do { \ - __disable_irq(); \ - __DMB(); \ - g_interrupt_enabled = false; \ - } while (0) - -typedef uint32_t irqflags_t; - -#if !defined(__DOXYGEN__) -extern volatile bool g_interrupt_enabled; -#endif - -#define cpu_irq_is_enabled() (__get_PRIMASK() == 0) - -static volatile uint32_t cpu_irq_critical_section_counter; -static volatile bool cpu_irq_prev_interrupt_state; - -static inline irqflags_t cpu_irq_save(void) -{ - irqflags_t flags = cpu_irq_is_enabled(); - cpu_irq_disable(); - return flags; -} - -static inline bool cpu_irq_is_enabled_flags(irqflags_t flags) -{ - return (flags); -} - -static inline void cpu_irq_restore(irqflags_t flags) -{ - if (cpu_irq_is_enabled_flags(flags)) - cpu_irq_enable(); -} - -void cpu_irq_enter_critical(void); -void cpu_irq_leave_critical(void); - -/** - * \weakgroup interrupt_deprecated_group - * @{ - */ - -#define Enable_global_interrupt() cpu_irq_enable() -#define Disable_global_interrupt() cpu_irq_disable() -#define Is_global_interrupt_enabled() cpu_irq_is_enabled() - -//@} - -//@} - -#endif /* UTILS_INTERRUPT_INTERRUPT_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/utils/parts.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/utils/parts.h deleted file mode 100644 index 4f063a553..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/common/utils/parts.h +++ /dev/null @@ -1,949 +0,0 @@ -/** - * \file - * - * \brief Atmel part identification macros - * - * Copyright (C) 2012-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef ATMEL_PARTS_H -#define ATMEL_PARTS_H - -/** - * \defgroup part_macros_group Atmel part identification macros - * - * This collection of macros identify which series and families that the various - * Atmel parts belong to. These can be used to select part-dependent sections of - * code at compile time. - * - * @{ - */ - -/** - * \name Convenience macros for part checking - * @{ - */ -/* ! Check GCC and IAR part definition for 8-bit AVR */ -#define AVR8_PART_IS_DEFINED(part) \ - (defined(__ ## part ## __) || defined(__AVR_ ## part ## __)) - -/* ! Check GCC and IAR part definition for 32-bit AVR */ -#define AVR32_PART_IS_DEFINED(part) \ - (defined(__AT32 ## part ## __) || defined(__AVR32_ ## part ## __)) - -/* ! Check GCC and IAR part definition for SAM */ -#define SAM_PART_IS_DEFINED(part) (defined(__ ## part ## __)) -/** @} */ - -/** - * \defgroup uc3_part_macros_group AVR UC3 parts - * @{ - */ - -/** - * \name AVR UC3 A series - * @{ - */ -#define UC3A0 ( \ - AVR32_PART_IS_DEFINED(UC3A0128) || \ - AVR32_PART_IS_DEFINED(UC3A0256) || \ - AVR32_PART_IS_DEFINED(UC3A0512) \ - ) - -#define UC3A1 ( \ - AVR32_PART_IS_DEFINED(UC3A1128) || \ - AVR32_PART_IS_DEFINED(UC3A1256) || \ - AVR32_PART_IS_DEFINED(UC3A1512) \ - ) - -#define UC3A3 ( \ - AVR32_PART_IS_DEFINED(UC3A364) || \ - AVR32_PART_IS_DEFINED(UC3A364S) || \ - AVR32_PART_IS_DEFINED(UC3A3128) || \ - AVR32_PART_IS_DEFINED(UC3A3128S) || \ - AVR32_PART_IS_DEFINED(UC3A3256) || \ - AVR32_PART_IS_DEFINED(UC3A3256S) \ - ) - -#define UC3A4 ( \ - AVR32_PART_IS_DEFINED(UC3A464) || \ - AVR32_PART_IS_DEFINED(UC3A464S) || \ - AVR32_PART_IS_DEFINED(UC3A4128) || \ - AVR32_PART_IS_DEFINED(UC3A4128S) || \ - AVR32_PART_IS_DEFINED(UC3A4256) || \ - AVR32_PART_IS_DEFINED(UC3A4256S) \ - ) -/** @} */ - -/** - * \name AVR UC3 B series - * @{ - */ -#define UC3B0 ( \ - AVR32_PART_IS_DEFINED(UC3B064) || \ - AVR32_PART_IS_DEFINED(UC3B0128) || \ - AVR32_PART_IS_DEFINED(UC3B0256) || \ - AVR32_PART_IS_DEFINED(UC3B0512) \ - ) - -#define UC3B1 ( \ - AVR32_PART_IS_DEFINED(UC3B164) || \ - AVR32_PART_IS_DEFINED(UC3B1128) || \ - AVR32_PART_IS_DEFINED(UC3B1256) || \ - AVR32_PART_IS_DEFINED(UC3B1512) \ - ) -/** @} */ - -/** - * \name AVR UC3 C series - * @{ - */ -#define UC3C0 ( \ - AVR32_PART_IS_DEFINED(UC3C064C) || \ - AVR32_PART_IS_DEFINED(UC3C0128C) || \ - AVR32_PART_IS_DEFINED(UC3C0256C) || \ - AVR32_PART_IS_DEFINED(UC3C0512C) \ - ) - -#define UC3C1 ( \ - AVR32_PART_IS_DEFINED(UC3C164C) || \ - AVR32_PART_IS_DEFINED(UC3C1128C) || \ - AVR32_PART_IS_DEFINED(UC3C1256C) || \ - AVR32_PART_IS_DEFINED(UC3C1512C) \ - ) - -#define UC3C2 ( \ - AVR32_PART_IS_DEFINED(UC3C264C) || \ - AVR32_PART_IS_DEFINED(UC3C2128C) || \ - AVR32_PART_IS_DEFINED(UC3C2256C) || \ - AVR32_PART_IS_DEFINED(UC3C2512C) \ - ) -/** @} */ - -/** - * \name AVR UC3 D series - * @{ - */ -#define UC3D3 ( \ - AVR32_PART_IS_DEFINED(UC64D3) || \ - AVR32_PART_IS_DEFINED(UC128D3) \ - ) - -#define UC3D4 ( \ - AVR32_PART_IS_DEFINED(UC64D4) || \ - AVR32_PART_IS_DEFINED(UC128D4) \ - ) -/** @} */ - -/** - * \name AVR UC3 L series - * @{ - */ -#define UC3L0 ( \ - AVR32_PART_IS_DEFINED(UC3L016) || \ - AVR32_PART_IS_DEFINED(UC3L032) || \ - AVR32_PART_IS_DEFINED(UC3L064) \ - ) - -#define UC3L0128 ( \ - AVR32_PART_IS_DEFINED(UC3L0128) \ - ) - -#define UC3L0256 ( \ - AVR32_PART_IS_DEFINED(UC3L0256) \ - ) - -#define UC3L3 ( \ - AVR32_PART_IS_DEFINED(UC64L3U) || \ - AVR32_PART_IS_DEFINED(UC128L3U) || \ - AVR32_PART_IS_DEFINED(UC256L3U) \ - ) - -#define UC3L4 ( \ - AVR32_PART_IS_DEFINED(UC64L4U) || \ - AVR32_PART_IS_DEFINED(UC128L4U) || \ - AVR32_PART_IS_DEFINED(UC256L4U) \ - ) - -#define UC3L3_L4 (UC3L3 || UC3L4) -/** @} */ - -/** - * \name AVR UC3 families - * @{ - */ -/** AVR UC3 A family */ -#define UC3A (UC3A0 || UC3A1 || UC3A3 || UC3A4) - -/** AVR UC3 B family */ -#define UC3B (UC3B0 || UC3B1) - -/** AVR UC3 C family */ -#define UC3C (UC3C0 || UC3C1 || UC3C2) - -/** AVR UC3 D family */ -#define UC3D (UC3D3 || UC3D4) - -/** AVR UC3 L family */ -#define UC3L (UC3L0 || UC3L0128 || UC3L0256 || UC3L3_L4) -/** @} */ - -/** AVR UC3 product line */ -#define UC3 (UC3A || UC3B || UC3C || UC3D || UC3L) - -/** @} */ - -/** - * \defgroup xmega_part_macros_group AVR XMEGA parts - * @{ - */ - -/** - * \name AVR XMEGA A series - * @{ - */ -#define XMEGA_A1 ( \ - AVR8_PART_IS_DEFINED(ATxmega64A1) || \ - AVR8_PART_IS_DEFINED(ATxmega128A1) \ - ) - -#define XMEGA_A3 ( \ - AVR8_PART_IS_DEFINED(ATxmega64A3) || \ - AVR8_PART_IS_DEFINED(ATxmega128A3) || \ - AVR8_PART_IS_DEFINED(ATxmega192A3) || \ - AVR8_PART_IS_DEFINED(ATxmega256A3) \ - ) - -#define XMEGA_A3B ( \ - AVR8_PART_IS_DEFINED(ATxmega256A3B) \ - ) - -#define XMEGA_A4 ( \ - AVR8_PART_IS_DEFINED(ATxmega16A4) || \ - AVR8_PART_IS_DEFINED(ATxmega32A4) \ - ) -/** @} */ - -/** - * \name AVR XMEGA AU series - * @{ - */ -#define XMEGA_A1U ( \ - AVR8_PART_IS_DEFINED(ATxmega64A1U) || \ - AVR8_PART_IS_DEFINED(ATxmega128A1U) \ - ) - -#define XMEGA_A3U ( \ - AVR8_PART_IS_DEFINED(ATxmega64A3U) || \ - AVR8_PART_IS_DEFINED(ATxmega128A3U) || \ - AVR8_PART_IS_DEFINED(ATxmega192A3U) || \ - AVR8_PART_IS_DEFINED(ATxmega256A3U) \ - ) - -#define XMEGA_A3BU ( \ - AVR8_PART_IS_DEFINED(ATxmega256A3BU) \ - ) - -#define XMEGA_A4U ( \ - AVR8_PART_IS_DEFINED(ATxmega16A4U) || \ - AVR8_PART_IS_DEFINED(ATxmega32A4U) || \ - AVR8_PART_IS_DEFINED(ATxmega64A4U) || \ - AVR8_PART_IS_DEFINED(ATxmega128A4U) \ - ) -/** @} */ - -/** - * \name AVR XMEGA B series - * @{ - */ -#define XMEGA_B1 ( \ - AVR8_PART_IS_DEFINED(ATxmega64B1) || \ - AVR8_PART_IS_DEFINED(ATxmega128B1) \ - ) - -#define XMEGA_B3 ( \ - AVR8_PART_IS_DEFINED(ATxmega64B3) || \ - AVR8_PART_IS_DEFINED(ATxmega128B3) \ - ) -/** @} */ - -/** - * \name AVR XMEGA C series - * @{ - */ -#define XMEGA_C3 ( \ - AVR8_PART_IS_DEFINED(ATxmega384C3) || \ - AVR8_PART_IS_DEFINED(ATxmega256C3) || \ - AVR8_PART_IS_DEFINED(ATxmega192C3) || \ - AVR8_PART_IS_DEFINED(ATxmega128C3) || \ - AVR8_PART_IS_DEFINED(ATxmega64C3) \ - ) - -#define XMEGA_C4 ( \ - AVR8_PART_IS_DEFINED(ATxmega32C4) || \ - AVR8_PART_IS_DEFINED(ATxmega16C4) \ - ) -/** @} */ - -/** - * \name AVR XMEGA D series - * @{ - */ -#define XMEGA_D3 ( \ - AVR8_PART_IS_DEFINED(ATxmega64D3) || \ - AVR8_PART_IS_DEFINED(ATxmega128D3) || \ - AVR8_PART_IS_DEFINED(ATxmega192D3) || \ - AVR8_PART_IS_DEFINED(ATxmega256D3) || \ - AVR8_PART_IS_DEFINED(ATxmega384D3) \ - ) - -#define XMEGA_D4 ( \ - AVR8_PART_IS_DEFINED(ATxmega16D4) || \ - AVR8_PART_IS_DEFINED(ATxmega32D4) || \ - AVR8_PART_IS_DEFINED(ATxmega64D4) || \ - AVR8_PART_IS_DEFINED(ATxmega128D4) \ - ) -/** @} */ - -/** - * \name AVR XMEGA E series - * @{ - */ -#define XMEGA_E5 ( \ - AVR8_PART_IS_DEFINED(ATxmega8E5) || \ - AVR8_PART_IS_DEFINED(ATxmega16E5) || \ - AVR8_PART_IS_DEFINED(ATxmega32E5) \ - ) -/** @} */ - - -/** - * \name AVR XMEGA families - * @{ - */ -/** AVR XMEGA A family */ -#define XMEGA_A (XMEGA_A1 || XMEGA_A3 || XMEGA_A3B || XMEGA_A4) - -/** AVR XMEGA AU family */ -#define XMEGA_AU (XMEGA_A1U || XMEGA_A3U || XMEGA_A3BU || XMEGA_A4U) - -/** AVR XMEGA B family */ -#define XMEGA_B (XMEGA_B1 || XMEGA_B3) - -/** AVR XMEGA C family */ -#define XMEGA_C (XMEGA_C3 || XMEGA_C4) - -/** AVR XMEGA D family */ -#define XMEGA_D (XMEGA_D3 || XMEGA_D4) - -/** AVR XMEGA E family */ -#define XMEGA_E (XMEGA_E5) -/** @} */ - - -/** AVR XMEGA product line */ -#define XMEGA (XMEGA_A || XMEGA_AU || XMEGA_B || XMEGA_C || XMEGA_D || XMEGA_E) - -/** @} */ - -/** - * \defgroup mega_part_macros_group megaAVR parts - * - * \note These megaAVR groupings are based on the groups in AVR Libc for the - * part header files. They are not names of official megaAVR device series or - * families. - * - * @{ - */ - -/** - * \name ATmegaxx0/xx1 subgroups - * @{ - */ -#define MEGA_XX0 ( \ - AVR8_PART_IS_DEFINED(ATmega640) || \ - AVR8_PART_IS_DEFINED(ATmega1280) || \ - AVR8_PART_IS_DEFINED(ATmega2560) \ - ) - -#define MEGA_XX1 ( \ - AVR8_PART_IS_DEFINED(ATmega1281) || \ - AVR8_PART_IS_DEFINED(ATmega2561) \ - ) -/** @} */ - -/** - * \name megaAVR groups - * @{ - */ -/** ATmegaxx0/xx1 group */ -#define MEGA_XX0_1 (MEGA_XX0 || MEGA_XX1) - -/** ATmegaxx4 group */ -#define MEGA_XX4 ( \ - AVR8_PART_IS_DEFINED(ATmega164A) || \ - AVR8_PART_IS_DEFINED(ATmega164PA) || \ - AVR8_PART_IS_DEFINED(ATmega324A) || \ - AVR8_PART_IS_DEFINED(ATmega324PA) || \ - AVR8_PART_IS_DEFINED(ATmega644) || \ - AVR8_PART_IS_DEFINED(ATmega644A) || \ - AVR8_PART_IS_DEFINED(ATmega644PA) || \ - AVR8_PART_IS_DEFINED(ATmega1284P) || \ - AVR8_PART_IS_DEFINED(ATmega128RFA1) \ - ) - -/** ATmegaxx4 group */ -#define MEGA_XX4_A ( \ - AVR8_PART_IS_DEFINED(ATmega164A) || \ - AVR8_PART_IS_DEFINED(ATmega164PA) || \ - AVR8_PART_IS_DEFINED(ATmega324A) || \ - AVR8_PART_IS_DEFINED(ATmega324PA) || \ - AVR8_PART_IS_DEFINED(ATmega644A) || \ - AVR8_PART_IS_DEFINED(ATmega644PA) || \ - AVR8_PART_IS_DEFINED(ATmega1284P) \ - ) - -/** ATmegaxx8 group */ -#define MEGA_XX8 ( \ - AVR8_PART_IS_DEFINED(ATmega48) || \ - AVR8_PART_IS_DEFINED(ATmega48A) || \ - AVR8_PART_IS_DEFINED(ATmega48PA) || \ - AVR8_PART_IS_DEFINED(ATmega88) || \ - AVR8_PART_IS_DEFINED(ATmega88A) || \ - AVR8_PART_IS_DEFINED(ATmega88PA) || \ - AVR8_PART_IS_DEFINED(ATmega168) || \ - AVR8_PART_IS_DEFINED(ATmega168A) || \ - AVR8_PART_IS_DEFINED(ATmega168PA) || \ - AVR8_PART_IS_DEFINED(ATmega328) || \ - AVR8_PART_IS_DEFINED(ATmega328P) \ - ) - -/** ATmegaxx8A/P/PA group */ -#define MEGA_XX8_A ( \ - AVR8_PART_IS_DEFINED(ATmega48A) || \ - AVR8_PART_IS_DEFINED(ATmega48PA) || \ - AVR8_PART_IS_DEFINED(ATmega88A) || \ - AVR8_PART_IS_DEFINED(ATmega88PA) || \ - AVR8_PART_IS_DEFINED(ATmega168A) || \ - AVR8_PART_IS_DEFINED(ATmega168PA) || \ - AVR8_PART_IS_DEFINED(ATmega328P) \ - ) - -/** ATmegaxx group */ -#define MEGA_XX ( \ - AVR8_PART_IS_DEFINED(ATmega16) || \ - AVR8_PART_IS_DEFINED(ATmega16A) || \ - AVR8_PART_IS_DEFINED(ATmega32) || \ - AVR8_PART_IS_DEFINED(ATmega32A) || \ - AVR8_PART_IS_DEFINED(ATmega64) || \ - AVR8_PART_IS_DEFINED(ATmega64A) || \ - AVR8_PART_IS_DEFINED(ATmega128) || \ - AVR8_PART_IS_DEFINED(ATmega128A) \ - ) - -/** ATmegaxxA/P/PA group */ -#define MEGA_XX_A ( \ - AVR8_PART_IS_DEFINED(ATmega16A) || \ - AVR8_PART_IS_DEFINED(ATmega32A) || \ - AVR8_PART_IS_DEFINED(ATmega64A) || \ - AVR8_PART_IS_DEFINED(ATmega128A) \ - ) -/** ATmegaxxRFA1 group */ -#define MEGA_RFA1 ( \ - AVR8_PART_IS_DEFINED(ATmega128RFA1) \ - ) - -/** ATmegaxxRFR2 group */ -#define MEGA_RFR2 ( \ - AVR8_PART_IS_DEFINED(ATmega64RFR2) || \ - AVR8_PART_IS_DEFINED(ATmega128RFR2) || \ - AVR8_PART_IS_DEFINED(ATmega256RFR2) \ - ) - - -/** ATmegaxxRFxx group */ -#define MEGA_RF (MEGA_RFA1 || MEGA_RFR2) - -/** - * \name ATmegaxx_un0/un1/un2 subgroups - * @{ - */ -#define MEGA_XX_UN0 ( \ - AVR8_PART_IS_DEFINED(ATmega16) || \ - AVR8_PART_IS_DEFINED(ATmega16A) || \ - AVR8_PART_IS_DEFINED(ATmega32) || \ - AVR8_PART_IS_DEFINED(ATmega32A) \ - ) - -/** ATmegaxx group without power reduction and - * And interrupt sense register. - */ -#define MEGA_XX_UN1 ( \ - AVR8_PART_IS_DEFINED(ATmega64) || \ - AVR8_PART_IS_DEFINED(ATmega64A) || \ - AVR8_PART_IS_DEFINED(ATmega128) || \ - AVR8_PART_IS_DEFINED(ATmega128A) \ - ) - -/** ATmegaxx group without power reduction and - * And interrupt sense register. - */ -#define MEGA_XX_UN2 ( \ - AVR8_PART_IS_DEFINED(ATmega169P) || \ - AVR8_PART_IS_DEFINED(ATmega169PA) || \ - AVR8_PART_IS_DEFINED(ATmega329P) || \ - AVR8_PART_IS_DEFINED(ATmega329PA) \ - ) - -/** Devices added to complete megaAVR offering. - * Please do not use this group symbol as it is not intended - * to be permanent: the devices should be regrouped. - */ -#define MEGA_UNCATEGORIZED ( \ - AVR8_PART_IS_DEFINED(AT90CAN128) || \ - AVR8_PART_IS_DEFINED(AT90CAN32) || \ - AVR8_PART_IS_DEFINED(AT90CAN64) || \ - AVR8_PART_IS_DEFINED(AT90PWM1) || \ - AVR8_PART_IS_DEFINED(AT90PWM216) || \ - AVR8_PART_IS_DEFINED(AT90PWM2B) || \ - AVR8_PART_IS_DEFINED(AT90PWM316) || \ - AVR8_PART_IS_DEFINED(AT90PWM3B) || \ - AVR8_PART_IS_DEFINED(AT90PWM81) || \ - AVR8_PART_IS_DEFINED(AT90USB1286) || \ - AVR8_PART_IS_DEFINED(AT90USB1287) || \ - AVR8_PART_IS_DEFINED(AT90USB162) || \ - AVR8_PART_IS_DEFINED(AT90USB646) || \ - AVR8_PART_IS_DEFINED(AT90USB647) || \ - AVR8_PART_IS_DEFINED(AT90USB82) || \ - AVR8_PART_IS_DEFINED(ATmega1284) || \ - AVR8_PART_IS_DEFINED(ATmega162) || \ - AVR8_PART_IS_DEFINED(ATmega164P) || \ - AVR8_PART_IS_DEFINED(ATmega165A) || \ - AVR8_PART_IS_DEFINED(ATmega165P) || \ - AVR8_PART_IS_DEFINED(ATmega165PA) || \ - AVR8_PART_IS_DEFINED(ATmega168P) || \ - AVR8_PART_IS_DEFINED(ATmega169A) || \ - AVR8_PART_IS_DEFINED(ATmega16M1) || \ - AVR8_PART_IS_DEFINED(ATmega16U2) || \ - AVR8_PART_IS_DEFINED(ATmega16U4) || \ - AVR8_PART_IS_DEFINED(ATmega2564RFR2) || \ - AVR8_PART_IS_DEFINED(ATmega256RFA2) || \ - AVR8_PART_IS_DEFINED(ATmega324P) || \ - AVR8_PART_IS_DEFINED(ATmega325) || \ - AVR8_PART_IS_DEFINED(ATmega3250) || \ - AVR8_PART_IS_DEFINED(ATmega3250A) || \ - AVR8_PART_IS_DEFINED(ATmega3250P) || \ - AVR8_PART_IS_DEFINED(ATmega3250PA) || \ - AVR8_PART_IS_DEFINED(ATmega325A) || \ - AVR8_PART_IS_DEFINED(ATmega325P) || \ - AVR8_PART_IS_DEFINED(ATmega325PA) || \ - AVR8_PART_IS_DEFINED(ATmega329) || \ - AVR8_PART_IS_DEFINED(ATmega3290) || \ - AVR8_PART_IS_DEFINED(ATmega3290A) || \ - AVR8_PART_IS_DEFINED(ATmega3290P) || \ - AVR8_PART_IS_DEFINED(ATmega3290PA) || \ - AVR8_PART_IS_DEFINED(ATmega329A) || \ - AVR8_PART_IS_DEFINED(ATmega32M1) || \ - AVR8_PART_IS_DEFINED(ATmega32U2) || \ - AVR8_PART_IS_DEFINED(ATmega32U4) || \ - AVR8_PART_IS_DEFINED(ATmega48P) || \ - AVR8_PART_IS_DEFINED(ATmega644P) || \ - AVR8_PART_IS_DEFINED(ATmega645) || \ - AVR8_PART_IS_DEFINED(ATmega6450) || \ - AVR8_PART_IS_DEFINED(ATmega6450A) || \ - AVR8_PART_IS_DEFINED(ATmega6450P) || \ - AVR8_PART_IS_DEFINED(ATmega645A) || \ - AVR8_PART_IS_DEFINED(ATmega645P) || \ - AVR8_PART_IS_DEFINED(ATmega649) || \ - AVR8_PART_IS_DEFINED(ATmega6490) || \ - AVR8_PART_IS_DEFINED(ATmega6490A) || \ - AVR8_PART_IS_DEFINED(ATmega6490P) || \ - AVR8_PART_IS_DEFINED(ATmega649A) || \ - AVR8_PART_IS_DEFINED(ATmega649P) || \ - AVR8_PART_IS_DEFINED(ATmega64M1) || \ - AVR8_PART_IS_DEFINED(ATmega64RFA2) || \ - AVR8_PART_IS_DEFINED(ATmega8) || \ - AVR8_PART_IS_DEFINED(ATmega8515) || \ - AVR8_PART_IS_DEFINED(ATmega8535) || \ - AVR8_PART_IS_DEFINED(ATmega88P) || \ - AVR8_PART_IS_DEFINED(ATmega8A) || \ - AVR8_PART_IS_DEFINED(ATmega8U2) \ - ) - -/** Unspecified group */ -#define MEGA_UNSPECIFIED (MEGA_XX_UN0 || MEGA_XX_UN1 || MEGA_XX_UN2 || \ - MEGA_UNCATEGORIZED) - -/** @} */ - -/** megaAVR product line */ -#define MEGA (MEGA_XX0_1 || MEGA_XX4 || MEGA_XX8 || MEGA_XX || MEGA_RF || \ - MEGA_UNSPECIFIED) - -/** @} */ - -/** - * \defgroup tiny_part_macros_group tinyAVR parts - * - * @{ - */ - -/** - * \name tinyAVR groups - * @{ - */ - -/** Devices added to complete tinyAVR offering. - * Please do not use this group symbol as it is not intended - * to be permanent: the devices should be regrouped. - */ -#define TINY_UNCATEGORIZED ( \ - AVR8_PART_IS_DEFINED(ATtiny10) || \ - AVR8_PART_IS_DEFINED(ATtiny13) || \ - AVR8_PART_IS_DEFINED(ATtiny13A) || \ - AVR8_PART_IS_DEFINED(ATtiny1634) || \ - AVR8_PART_IS_DEFINED(ATtiny167) || \ - AVR8_PART_IS_DEFINED(ATtiny20) || \ - AVR8_PART_IS_DEFINED(ATtiny2313) || \ - AVR8_PART_IS_DEFINED(ATtiny2313A) || \ - AVR8_PART_IS_DEFINED(ATtiny24) || \ - AVR8_PART_IS_DEFINED(ATtiny24A) || \ - AVR8_PART_IS_DEFINED(ATtiny25) || \ - AVR8_PART_IS_DEFINED(ATtiny26) || \ - AVR8_PART_IS_DEFINED(ATtiny261) || \ - AVR8_PART_IS_DEFINED(ATtiny261A) || \ - AVR8_PART_IS_DEFINED(ATtiny4) || \ - AVR8_PART_IS_DEFINED(ATtiny40) || \ - AVR8_PART_IS_DEFINED(ATtiny4313) || \ - AVR8_PART_IS_DEFINED(ATtiny43U) || \ - AVR8_PART_IS_DEFINED(ATtiny44) || \ - AVR8_PART_IS_DEFINED(ATtiny44A) || \ - AVR8_PART_IS_DEFINED(ATtiny45) || \ - AVR8_PART_IS_DEFINED(ATtiny461) || \ - AVR8_PART_IS_DEFINED(ATtiny461A) || \ - AVR8_PART_IS_DEFINED(ATtiny48) || \ - AVR8_PART_IS_DEFINED(ATtiny5) || \ - AVR8_PART_IS_DEFINED(ATtiny828) || \ - AVR8_PART_IS_DEFINED(ATtiny84) || \ - AVR8_PART_IS_DEFINED(ATtiny84A) || \ - AVR8_PART_IS_DEFINED(ATtiny85) || \ - AVR8_PART_IS_DEFINED(ATtiny861) || \ - AVR8_PART_IS_DEFINED(ATtiny861A) || \ - AVR8_PART_IS_DEFINED(ATtiny87) || \ - AVR8_PART_IS_DEFINED(ATtiny88) || \ - AVR8_PART_IS_DEFINED(ATtiny9) \ - ) - -/** @} */ - -/** tinyAVR product line */ -#define TINY (TINY_UNCATEGORIZED) - -/** @} */ - -/** - * \defgroup sam_part_macros_group SAM parts - * @{ - */ - -/** - * \name SAM3S series - * @{ - */ -#define SAM3S1 ( \ - SAM_PART_IS_DEFINED(SAM3S1A) || \ - SAM_PART_IS_DEFINED(SAM3S1B) || \ - SAM_PART_IS_DEFINED(SAM3S1C) \ - ) - -#define SAM3S2 ( \ - SAM_PART_IS_DEFINED(SAM3S2A) || \ - SAM_PART_IS_DEFINED(SAM3S2B) || \ - SAM_PART_IS_DEFINED(SAM3S2C) \ - ) - -#define SAM3S4 ( \ - SAM_PART_IS_DEFINED(SAM3S4A) || \ - SAM_PART_IS_DEFINED(SAM3S4B) || \ - SAM_PART_IS_DEFINED(SAM3S4C) \ - ) - -#define SAM3S8 ( \ - SAM_PART_IS_DEFINED(SAM3S8B) || \ - SAM_PART_IS_DEFINED(SAM3S8C) \ - ) - -#define SAM3SD8 ( \ - SAM_PART_IS_DEFINED(SAM3SD8B) || \ - SAM_PART_IS_DEFINED(SAM3SD8C) \ - ) -/** @} */ - -/** - * \name SAM3U series - * @{ - */ -#define SAM3U1 ( \ - SAM_PART_IS_DEFINED(SAM3U1C) || \ - SAM_PART_IS_DEFINED(SAM3U1E) \ - ) - -#define SAM3U2 ( \ - SAM_PART_IS_DEFINED(SAM3U2C) || \ - SAM_PART_IS_DEFINED(SAM3U2E) \ - ) - -#define SAM3U4 ( \ - SAM_PART_IS_DEFINED(SAM3U4C) || \ - SAM_PART_IS_DEFINED(SAM3U4E) \ - ) -/** @} */ - -/** - * \name SAM3N series - * @{ - */ -#define SAM3N1 ( \ - SAM_PART_IS_DEFINED(SAM3N1A) || \ - SAM_PART_IS_DEFINED(SAM3N1B) || \ - SAM_PART_IS_DEFINED(SAM3N1C) \ - ) - -#define SAM3N2 ( \ - SAM_PART_IS_DEFINED(SAM3N2A) || \ - SAM_PART_IS_DEFINED(SAM3N2B) || \ - SAM_PART_IS_DEFINED(SAM3N2C) \ - ) - -#define SAM3N4 ( \ - SAM_PART_IS_DEFINED(SAM3N4A) || \ - SAM_PART_IS_DEFINED(SAM3N4B) || \ - SAM_PART_IS_DEFINED(SAM3N4C) \ - ) -/** @} */ - -/** - * \name SAM3X series - * @{ - */ -#define SAM3X4 ( \ - SAM_PART_IS_DEFINED(SAM3X4C) || \ - SAM_PART_IS_DEFINED(SAM3X4E) \ - ) - -#define SAM3X8 ( \ - SAM_PART_IS_DEFINED(SAM3X8C) || \ - SAM_PART_IS_DEFINED(SAM3X8E) || \ - SAM_PART_IS_DEFINED(SAM3X8H) \ - ) -/** @} */ - -/** - * \name SAM3A series - * @{ - */ -#define SAM3A4 ( \ - SAM_PART_IS_DEFINED(SAM3A4C) \ - ) - -#define SAM3A8 ( \ - SAM_PART_IS_DEFINED(SAM3A8C) \ - ) -/** @} */ - -/** - * \name SAM4S series - * @{ - */ -#define SAM4S8 ( \ - SAM_PART_IS_DEFINED(SAM4S8B) || \ - SAM_PART_IS_DEFINED(SAM4S8C) \ - ) - -#define SAM4S16 ( \ - SAM_PART_IS_DEFINED(SAM4S16B) || \ - SAM_PART_IS_DEFINED(SAM4S16C) \ - ) - -#define SAM4SA16 ( \ - SAM_PART_IS_DEFINED(SAM4SA16B) || \ - SAM_PART_IS_DEFINED(SAM4SA16C) \ - ) - -#define SAM4SD16 ( \ - SAM_PART_IS_DEFINED(SAM4SD16B) || \ - SAM_PART_IS_DEFINED(SAM4SD16C) \ - ) - -#define SAM4SD32 ( \ - SAM_PART_IS_DEFINED(SAM4SD32B) || \ - SAM_PART_IS_DEFINED(SAM4SD32C) \ - ) -/** @} */ - -/** - * \name SAM4L series - * @{ - */ -#define SAM4LS ( \ - SAM_PART_IS_DEFINED(SAM4LS2A) || \ - SAM_PART_IS_DEFINED(SAM4LS2B) || \ - SAM_PART_IS_DEFINED(SAM4LS2C) || \ - SAM_PART_IS_DEFINED(SAM4LS4A) || \ - SAM_PART_IS_DEFINED(SAM4LS4B) || \ - SAM_PART_IS_DEFINED(SAM4LS4C) || \ - SAM_PART_IS_DEFINED(SAM4LS8A) || \ - SAM_PART_IS_DEFINED(SAM4LS8B) || \ - SAM_PART_IS_DEFINED(SAM4LS8C) \ - ) - -#define SAM4LC ( \ - SAM_PART_IS_DEFINED(SAM4LC2A) || \ - SAM_PART_IS_DEFINED(SAM4LC2B) || \ - SAM_PART_IS_DEFINED(SAM4LC2C) || \ - SAM_PART_IS_DEFINED(SAM4LC4A) || \ - SAM_PART_IS_DEFINED(SAM4LC4B) || \ - SAM_PART_IS_DEFINED(SAM4LC4C) || \ - SAM_PART_IS_DEFINED(SAM4LC8A) || \ - SAM_PART_IS_DEFINED(SAM4LC8B) || \ - SAM_PART_IS_DEFINED(SAM4LC8C) \ - ) -/** @} */ - -/** - * \name SAMD20 series - * @{ - */ -#define SAMD20J ( \ - SAM_PART_IS_DEFINED(SAMD20J14) || \ - SAM_PART_IS_DEFINED(SAMD20J15) || \ - SAM_PART_IS_DEFINED(SAMD20J16) || \ - SAM_PART_IS_DEFINED(SAMD20J17) || \ - SAM_PART_IS_DEFINED(SAMD20J18) \ - ) - -#define SAMD20G ( \ - SAM_PART_IS_DEFINED(SAMD20G14) || \ - SAM_PART_IS_DEFINED(SAMD20G15) || \ - SAM_PART_IS_DEFINED(SAMD20G16) || \ - SAM_PART_IS_DEFINED(SAMD20G17) || \ - SAM_PART_IS_DEFINED(SAMD20G18) \ - ) - -#define SAMD20E ( \ - SAM_PART_IS_DEFINED(SAMD20E14) || \ - SAM_PART_IS_DEFINED(SAMD20E15) || \ - SAM_PART_IS_DEFINED(SAMD20E16) || \ - SAM_PART_IS_DEFINED(SAMD20E17) || \ - SAM_PART_IS_DEFINED(SAMD20E18) \ - ) -/** @} */ - -/** - * \name SAM4E series - * @{ - */ -#define SAM4E8 ( \ - SAM_PART_IS_DEFINED(SAM4E8E) \ - ) - -#define SAM4E16 ( \ - SAM_PART_IS_DEFINED(SAM4E16E) \ - ) -/** @} */ - -/** - * \name SAM4N series - * @{ - */ -#define SAM4N8 ( \ - SAM_PART_IS_DEFINED(SAM4N8A) || \ - SAM_PART_IS_DEFINED(SAM4N8B) || \ - SAM_PART_IS_DEFINED(SAM4N8C) \ - ) - -#define SAM4N16 ( \ - SAM_PART_IS_DEFINED(SAM4N16B) || \ - SAM_PART_IS_DEFINED(SAM4N16C) \ - ) -/** @} */ - -/** - * \name SAM families - * @{ - */ -/** SAM3S Family */ -#define SAM3S (SAM3S1 || SAM3S2 || SAM3S4 || SAM3S8 || SAM3SD8) - -/** SAM3U Family */ -#define SAM3U (SAM3U1 || SAM3U2 || SAM3U4) - -/** SAM3N Family */ -#define SAM3N (SAM3N1 || SAM3N2 || SAM3N4) - -/** SAM3XA Family */ -#define SAM3XA (SAM3X4 || SAM3X8 || SAM3A4 || SAM3A8) - -/** SAM4S Family */ -#define SAM4S (SAM4S8 || SAM4S16 || SAM4SA16 || SAM4SD16 || SAM4SD32) - -/** SAM4L Family */ -#define SAM4L (SAM4LS || SAM4LC) - -/** SAMD20 Family */ -#define SAMD20 (SAMD20J || SAMD20G || SAMD20E) -/** @} */ - -/** SAM4E Family */ -#define SAM4E (SAM4E8 || SAM4E16) - -/** SAM4N Family */ -#define SAM4N (SAM4N8 || SAM4N16) - -/** @} */ - -/** SAM product line */ -#define SAM (SAM3S || SAM3U || SAM3N || SAM3XA || SAM4S || SAM4L || SAM4E || SAMD20 || SAM4N) - -/** @} */ - -/** @} */ - -/** @} */ - -#endif /* ATMEL_PARTS_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/init.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/init.c deleted file mode 100644 index f6dff4635..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/init.c +++ /dev/null @@ -1,370 +0,0 @@ -/** - * \file - * - * \brief SAM4E-EK board init. - * - * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#include "compiler.h" -#include "board.h" -#include "conf_board.h" -#include "ioport.h" - -/** - * \brief Set peripheral mode for IOPORT pins. - * It will configure port mode and disable pin mode (but enable peripheral). - * \param port IOPORT port to configure - * \param masks IOPORT pin masks to configure - * \param mode Mode masks to configure for the specified pin (\ref ioport_modes) - */ -#define ioport_set_port_peripheral_mode(port, masks, mode) \ - do {\ - ioport_set_port_mode(port, masks, mode);\ - ioport_disable_port(port, masks);\ - } while (0) - -/** - * \brief Set peripheral mode for one single IOPORT pin. - * It will configure port mode and disable pin mode (but enable peripheral). - * \param pin IOPORT pin to configure - * \param mode Mode masks to configure for the specified pin (\ref ioport_modes) - */ -#define ioport_set_pin_peripheral_mode(pin, mode) \ - do {\ - ioport_set_pin_mode(pin, mode);\ - ioport_disable_pin(pin);\ - } while (0) - -/** - * \brief Set input mode for one single IOPORT pin. - * It will configure port mode and disable pin mode (but enable peripheral). - * \param pin IOPORT pin to configure - * \param mode Mode masks to configure for the specified pin (\ref ioport_modes) - * \param sense Sense for interrupt detection (\ref ioport_sense) - */ -#define ioport_set_pin_input_mode(pin, mode, sense) \ - do {\ - ioport_set_pin_dir(pin, IOPORT_DIR_INPUT);\ - ioport_set_pin_mode(pin, mode);\ - ioport_set_pin_sense_mode(pin, sense);\ - } while (0) - -void board_init(void) -{ -#ifndef CONF_BOARD_KEEP_WATCHDOG_AT_INIT - /* Disable the watchdog */ - WDT->WDT_MR = WDT_MR_WDDIS; -#endif - - /* Initialize IOPORTs */ - ioport_init(); - - /* Configure the pins connected to LEDs as output and set their - * default initial state to high (LEDs off). - */ - ioport_set_pin_dir(LED0_GPIO, IOPORT_DIR_OUTPUT); - ioport_set_pin_level(LED0_GPIO, LED0_INACTIVE_LEVEL); - ioport_set_pin_dir(LED1_GPIO, IOPORT_DIR_OUTPUT); - ioport_set_pin_level(LED1_GPIO, LED0_INACTIVE_LEVEL); - ioport_set_pin_dir(LED2_GPIO, IOPORT_DIR_OUTPUT); - ioport_set_pin_level(LED2_GPIO, LED0_INACTIVE_LEVEL); - - /* Configure Push Button pins */ - ioport_set_pin_input_mode(GPIO_PUSH_BUTTON_1, GPIO_PUSH_BUTTON_1_FLAGS, - GPIO_PUSH_BUTTON_1_SENSE); - ioport_set_pin_input_mode(GPIO_PUSH_BUTTON_2, GPIO_PUSH_BUTTON_2_FLAGS, - GPIO_PUSH_BUTTON_2_SENSE); - ioport_set_pin_input_mode(GPIO_PUSH_BUTTON_3, GPIO_PUSH_BUTTON_3_FLAGS, - GPIO_PUSH_BUTTON_3_SENSE); - ioport_set_pin_input_mode(GPIO_PUSH_BUTTON_4, GPIO_PUSH_BUTTON_4_FLAGS, - GPIO_PUSH_BUTTON_4_SENSE); - -#ifdef CONF_BOARD_UART_CONSOLE - /* Configure UART pins */ - ioport_set_port_peripheral_mode(PINS_UART0_PORT, PINS_UART0, - PINS_UART0_MASK); -#endif - -#ifdef CONF_BOARD_PWM_LED0 - /* Configure PWM LED0 pin */ - ioport_set_pin_peripheral_mode(PIN_PWM_LED0_GPIO, PIN_PWM_LED0_FLAGS); -#endif - -#ifdef CONF_BOARD_PWM_LED1 - /* Configure PWM LED1 pin */ - ioport_set_pin_peripheral_mode(PIN_PWM_LED1_GPIO, PIN_PWM_LED1_FLAGS); -#endif - -#ifdef CONF_BOARD_PWM_LED2 - /* Configure PWM LED2 pin */ - ioport_set_pin_peripheral_mode(PIN_PWM_LED2_GPIO, PIN_PWM_LED2_FLAGS); -#endif - -#ifdef CONF_BOARD_PWM_LED3 - /* Configure PWM LED3 pin */ - ioport_set_pin_peripheral_mode(PIN_PWM_LED3_GPIO, PIN_PWM_LED3_FLAGS); -#endif - -#ifdef CONF_BOARD_USART_RXD - /* Configure USART RXD pin */ - ioport_set_pin_peripheral_mode(PIN_USART1_RXD_IDX, - PIN_USART1_RXD_FLAGS); -#endif - -#ifdef CONF_BOARD_USART_TXD - /* Configure USART TXD pin */ - ioport_set_pin_peripheral_mode(PIN_USART1_TXD_IDX, - PIN_USART1_TXD_FLAGS); -#endif - -#ifdef CONF_BOARD_USART_CTS - /* Configure USART CTS pin */ - ioport_set_pin_peripheral_mode(PIN_USART1_CTS_IDX, - PIN_USART1_CTS_FLAGS); -#endif - -#ifdef CONF_BOARD_USART_RTS - /* Configure USART RTS pin */ - ioport_set_pin_peripheral_mode(PIN_USART1_RTS_IDX, - PIN_USART1_RTS_FLAGS); -#endif - -#ifdef CONF_BOARD_USART_SCK - /* Configure USART synchronous communication SCK pin */ - ioport_set_pin_peripheral_mode(PIN_USART1_SCK_IDX, - PIN_USART1_SCK_FLAGS); -#endif - -#ifdef CONF_BOARD_ADM3312_EN - /* Configure ADM3312 enable pin */ - ioport_set_pin_dir(PIN_USART1_EN_IDX, IOPORT_DIR_OUTPUT); -#ifdef CONF_BOARD_ADM3312_EN_DISABLE_AT_INIT - ioport_set_pin_level(PIN_USART1_EN_IDX, PIN_USART1_EN_INACTIVE_LEVEL); -#else - ioport_set_pin_level(PIN_USART1_EN_IDX, PIN_USART1_EN_ACTIVE_LEVEL); -#endif -#endif - -#ifdef CONF_BOARD_ADS7843 - /* Configure Touchscreen SPI pins */ - ioport_set_pin_dir(BOARD_ADS7843_IRQ_GPIO, IOPORT_DIR_INPUT); - ioport_set_pin_mode(BOARD_ADS7843_IRQ_GPIO, BOARD_ADS7843_IRQ_FLAGS); - ioport_set_pin_dir(BOARD_ADS7843_BUSY_GPIO, IOPORT_DIR_INPUT); - ioport_set_pin_mode(BOARD_ADS7843_BUSY_GPIO, BOARD_ADS7843_BUSY_FLAGS); - ioport_set_pin_peripheral_mode(SPI_MISO_GPIO, SPI_MISO_FLAGS); - ioport_set_pin_peripheral_mode(SPI_MOSI_GPIO, SPI_MOSI_FLAGS); - ioport_set_pin_peripheral_mode(SPI_SPCK_GPIO, SPI_SPCK_FLAGS); - ioport_set_pin_peripheral_mode(SPI_NPCS0_GPIO, SPI_NPCS0_FLAGS); -#endif - -#ifdef CONF_BOARD_CAN0 - /* Configure the CAN0 TX and RX pins. */ - ioport_set_pin_peripheral_mode(PIN_CAN0_RX_IDX, PIN_CAN0_RX_FLAGS); - ioport_set_pin_peripheral_mode(PIN_CAN0_TX_IDX, PIN_CAN0_TX_FLAGS); - /* Configure the transiver0 RS & EN pins. */ - ioport_set_pin_dir(PIN_CAN0_TR_RS_IDX, IOPORT_DIR_OUTPUT); - ioport_set_pin_dir(PIN_CAN0_TR_EN_IDX, IOPORT_DIR_OUTPUT); -#endif - -#ifdef CONF_BOARD_CAN1 - /* Configure the CAN1 TX and RX pin. */ - ioport_set_pin_peripheral_mode(PIN_CAN1_RX_IDX, PIN_CAN1_RX_FLAGS); - ioport_set_pin_peripheral_mode(PIN_CAN1_TX_IDX, PIN_CAN1_TX_FLAGS); - /* Configure the transiver1 RS & EN pins. */ - ioport_set_pin_dir(PIN_CAN1_TR_RS_IDX, IOPORT_DIR_OUTPUT); - ioport_set_pin_dir(PIN_CAN1_TR_EN_IDX, IOPORT_DIR_OUTPUT); -#endif - -#if defined(CONF_BOARD_USB_PORT) -# if defined(CONF_BOARD_USB_VBUS_DETECT) - gpio_configure_pin(USB_VBUS_PIN, USB_VBUS_FLAGS); -# endif -#endif - -#ifdef CONF_BOARD_ILI93XX - /* Configure LCD EBI pins */ - ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D0,PIN_EBI_DATA_BUS_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D1,PIN_EBI_DATA_BUS_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D2,PIN_EBI_DATA_BUS_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D3,PIN_EBI_DATA_BUS_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D4,PIN_EBI_DATA_BUS_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D5,PIN_EBI_DATA_BUS_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D6,PIN_EBI_DATA_BUS_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_DATA_BUS_D7,PIN_EBI_DATA_BUS_FLAGS); - - ioport_set_pin_peripheral_mode(PIN_EBI_NRD,PIN_EBI_NRD_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_NWE,PIN_EBI_NWE_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_NCS1,PIN_EBI_NCS1_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_LCD_RS,PIN_EBI_LCD_RS_FLAGS); -#endif - -#ifdef CONF_BOARD_AAT3155 - /* Configure Backlight control pin */ - ioport_set_pin_dir(BOARD_AAT31XX_SET_GPIO, IOPORT_DIR_OUTPUT); -#endif - -#ifdef CONF_BOARD_SPI - ioport_set_pin_peripheral_mode(SPI_MISO_GPIO, SPI_MISO_FLAGS); - ioport_set_pin_peripheral_mode(SPI_MOSI_GPIO, SPI_MOSI_FLAGS); - ioport_set_pin_peripheral_mode(SPI_SPCK_GPIO, SPI_SPCK_FLAGS); - -#ifdef CONF_BOARD_SPI_NPCS0 - ioport_set_pin_peripheral_mode(SPI_NPCS0_GPIO, SPI_NPCS0_FLAGS); -#endif - -#ifdef CONF_BOARD_SPI_NPCS3 -#if defined(CONF_BOARD_SPI_NPCS3_GPIO) && defined(CONF_BOARD_SPI_NPCS3_FLAGS) - ioport_set_pin_peripheral_mode(CONF_BOARD_SPI_NPCS3_GPIO, - CONF_BOARD_SPI_NPCS3_FLAGS); -#else - ioport_set_pin_peripheral_mode(SPI_NPCS3_PA5_GPIO, SPI_NPCS3_PA5_FLAGS); -#endif -#endif -#endif - -#if (defined(CONF_BOARD_TWI0) || defined(CONF_BOARD_QTOUCH)) - ioport_set_pin_peripheral_mode(TWI0_DATA_GPIO, TWI0_DATA_FLAGS); - ioport_set_pin_peripheral_mode(TWI0_CLK_GPIO, TWI0_CLK_FLAGS); -#endif - -#if defined (CONF_BOARD_SD_MMC_HSMCI) - /* Configure HSMCI pins */ - ioport_set_pin_peripheral_mode(PIN_HSMCI_MCCDA_GPIO, PIN_HSMCI_MCCDA_FLAGS); - ioport_set_pin_peripheral_mode(PIN_HSMCI_MCCK_GPIO, PIN_HSMCI_MCCK_FLAGS); - ioport_set_pin_peripheral_mode(PIN_HSMCI_MCDA0_GPIO, PIN_HSMCI_MCDA0_FLAGS); - ioport_set_pin_peripheral_mode(PIN_HSMCI_MCDA1_GPIO, PIN_HSMCI_MCDA1_FLAGS); - ioport_set_pin_peripheral_mode(PIN_HSMCI_MCDA2_GPIO, PIN_HSMCI_MCDA2_FLAGS); - ioport_set_pin_peripheral_mode(PIN_HSMCI_MCDA3_GPIO, PIN_HSMCI_MCDA3_FLAGS); - - /* Configure SD/MMC card detect pin */ - ioport_set_pin_peripheral_mode(SD_MMC_0_CD_GPIO, SD_MMC_0_CD_FLAGS); -#endif - -#ifdef CONF_BOARD_TWI1 - ioport_set_pin_peripheral_mode(TWI1_DATA_GPIO, TWI1_DATA_FLAGS); - ioport_set_pin_peripheral_mode(TWI1_CLK_GPIO, TWI1_CLK_FLAGS); -#endif - -#ifdef CONF_BOARD_KSZ8051MNL - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_RXC_IDX, - PIN_KSZ8051MNL_RXC_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_TXC_IDX, - PIN_KSZ8051MNL_TXC_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_TXEN_IDX, - PIN_KSZ8051MNL_TXEN_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_TXD3_IDX, - PIN_KSZ8051MNL_TXD3_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_TXD2_IDX, - PIN_KSZ8051MNL_TXD2_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_TXD1_IDX, - PIN_KSZ8051MNL_TXD1_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_TXD0_IDX, - PIN_KSZ8051MNL_TXD0_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_RXD3_IDX, - PIN_KSZ8051MNL_RXD3_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_RXD2_IDX, - PIN_KSZ8051MNL_RXD2_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_RXD1_IDX, - PIN_KSZ8051MNL_RXD1_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_RXD0_IDX, - PIN_KSZ8051MNL_RXD0_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_RXER_IDX, - PIN_KSZ8051MNL_RXER_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_RXDV_IDX, - PIN_KSZ8051MNL_RXDV_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_CRS_IDX, - PIN_KSZ8051MNL_CRS_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_COL_IDX, - PIN_KSZ8051MNL_COL_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_MDC_IDX, - PIN_KSZ8051MNL_MDC_FLAGS); - ioport_set_pin_peripheral_mode(PIN_KSZ8051MNL_MDIO_IDX, - PIN_KSZ8051MNL_MDIO_FLAGS); - ioport_set_pin_dir(PIN_KSZ8051MNL_INTRP_IDX, IOPORT_DIR_INPUT); -#endif - -#ifdef CONF_BOARD_TFDU4300_SD - /* Configure IrDA transceiver shutdown pin */ - ioport_set_pin_dir(PIN_IRDA_SD_IDX, IOPORT_DIR_OUTPUT); - ioport_set_pin_level(PIN_IRDA_SD_IDX, IOPORT_PIN_LEVEL_HIGH); -#endif - -#ifdef CONF_BOARD_ADM3485_RE - /* Configure RS485 transceiver RE pin */ - ioport_set_pin_dir(PIN_RE_IDX, IOPORT_DIR_OUTPUT); - ioport_set_pin_level(PIN_RE_IDX, IOPORT_PIN_LEVEL_LOW); -#endif - -#ifdef CONF_BOARD_ISO7816_RST - /* Configure ISO7816 card reset pin */ - ioport_set_pin_dir(PIN_ISO7816_RST_IDX, IOPORT_DIR_OUTPUT); - ioport_set_pin_level(PIN_ISO7816_RST_IDX, IOPORT_PIN_LEVEL_LOW); -#endif - -#ifdef CONF_BOARD_ISO7816 - /* Configure ISO7816 interface TXD & SCK pin */ - ioport_set_pin_peripheral_mode(PIN_USART1_TXD_IDX, PIN_USART1_TXD_FLAGS); - ioport_set_pin_peripheral_mode(PIN_USART1_SCK_IDX, PIN_USART1_SCK_FLAGS); -#endif - -#ifdef CONF_BOARD_NAND - ioport_set_pin_peripheral_mode(PIN_EBI_NANDOE, PIN_EBI_NANDOE_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_NANDWE, PIN_EBI_NANDWE_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_NANDCLE, PIN_EBI_NANDCLE_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_NANDALE, PIN_EBI_NANDALE_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_0, PIN_EBI_NANDIO_0_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_1, PIN_EBI_NANDIO_1_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_2, PIN_EBI_NANDIO_2_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_3, PIN_EBI_NANDIO_3_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_4, PIN_EBI_NANDIO_4_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_5, PIN_EBI_NANDIO_5_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_6, PIN_EBI_NANDIO_6_FLAGS); - ioport_set_pin_peripheral_mode(PIN_EBI_NANDIO_7, PIN_EBI_NANDIO_7_FLAGS); - ioport_set_pin_dir(PIN_NF_CE_IDX, IOPORT_DIR_OUTPUT); - ioport_set_pin_dir(PIN_NF_RB_IDX, IOPORT_DIR_INPUT); - ioport_set_pin_mode(PIN_NF_RB_IDX, IOPORT_MODE_PULLUP); -#endif - - -#ifdef CONF_BOARD_QTOUCH - /* Configure CHANGE pin for QTouch device */ - ioport_set_pin_input_mode(BOARD_QT_CHANGE_PIN_IDX, BOARD_QT_CHANGE_PIN_FLAGS, - BOARD_QT_CHANGE_PIN_SENSE); -#endif -} diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/led.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/led.h deleted file mode 100644 index 22efbf248..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/led.h +++ /dev/null @@ -1,78 +0,0 @@ -/** - * \file - * - * \brief SAM4E-EK LEDs support package. - * - * Copyright (c) 2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef LED_H_INCLUDED -#define LED_H_INCLUDED - -#include "compiler.h" -#include "ioport.h" - -/** - * \brief Turns off the specified LEDs. - * - * \param led LED to turn off (LEDx_GPIO). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -#define LED_Off(led) ioport_set_pin_level(led##_GPIO, led##_INACTIVE_LEVEL) - -/** - * \brief Turns on the specified LEDs. - * - * \param led LED to turn on (LEDx_GPIO). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -#define LED_On(led) ioport_set_pin_level(led##_GPIO, led##_ACTIVE_LEVEL) - -/** - * \brief Toggles the specified LEDs. - * - * \param led LED to toggle (LEDx_GPIO). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -#define LED_Toggle(led) ioport_toggle_pin_level(led##_GPIO) - - -#endif // LED_H_INCLUDED diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/sam4e_ek.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/sam4e_ek.h deleted file mode 100644 index 678c0fd6d..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/boards/sam4e_ek/sam4e_ek.h +++ /dev/null @@ -1,811 +0,0 @@ -/** - * \file - * - * \brief SAM4E-EK Board Definition. - * - * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_EK_H_ -#define _SAM4E_EK_H_ - -#include "compiler.h" -#include "system_sam4e.h" -#include "exceptions.h" - -/*----------------------------------------------------------------------------*/ -/** - * \page sam4e_ek_opfreq "SAM4E-EK - Operating frequencies" - * This page lists several definition related to the board operating frequency - * - * \section Definitions - * - \ref BOARD_FREQ_* - * - \ref BOARD_MCK - */ - -/** Board oscillator settings */ -#define BOARD_FREQ_SLCK_XTAL (32768U) -#define BOARD_FREQ_SLCK_BYPASS (32768U) -#define BOARD_FREQ_MAINCK_XTAL (12000000U) -#define BOARD_FREQ_MAINCK_BYPASS (12000000U) - -/** Master clock frequency */ -#define BOARD_MCK CHIP_FREQ_CPU_MAX - -/** board main clock xtal statup time */ -#define BOARD_OSC_STARTUP_US 15625 - -/*----------------------------------------------------------------------------*/ -/** - * \page sam4e_ek_board_info "SAM4E-EK - Board informations" - * This page lists several definition related to the board description. - * - * \section Definitions - * - \ref BOARD_NAME - */ - -/** Name of the board */ -#define BOARD_NAME "SAM4E-EK" -/** Board definition */ -#define sam4eek -/** Family definition (already defined) */ -#define sam4e -/** Core definition */ -#define cortexm4 - -/*----------------------------------------------------------------------------*/ - -/** UART0 pins (UTXD0 and URXD0) definitions, PA10,9. */ -#define PINS_UART0 (PIO_PA9A_URXD0 | PIO_PA10A_UTXD0) -#define PINS_UART0_FLAGS (IOPORT_MODE_MUX_A) - -#define PINS_UART0_PORT IOPORT_PIOA -#define PINS_UART0_MASK (PIO_PA9A_URXD0 | PIO_PA10A_UTXD0) -#define PINS_UART0_PIO PIOA -#define PINS_UART0_ID ID_PIOA -#define PINS_UART0_TYPE PIO_PERIPH_A -#define PINS_UART0_ATTR PIO_DEFAULT - -/** UART1 pins (UTXD1 and URXD1) definitions, PA6,5. */ -#define PINS_UART1 (PIO_PA6C_URXD1 | PIO_PA5C_UTXD1) -#define PINS_UART1_FLAGS (IOPORT_MODE_MUX_C) - -#define PINS_UART1_PORT IOPORT_PIOA -#define PINS_UART1_MASK (PIO_PA6C_URXD1 | PIO_PA5C_UTXD1) -#define PINS_UART1_PIO PIOA -#define PINS_UART1_ID ID_PIOA -#define PINS_UART1_TYPE PIO_PERIPH_C -#define PINS_UART1_ATTR PIO_DEFAULT - -/** LED #0 pin definition (Blue). */ -#define LED_0_NAME "Blue LED D2" -#define PIN_LED_0 {PIO_PA0, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT} -#define PIN_LED_0_MASK PIO_PA0 -#define PIN_LED_0_PIO PIOA -#define PIN_LED_0_ID ID_PIOA -#define PIN_LED_0_TYPE PIO_OUTPUT_1 -#define PIN_LED_0_ATTR PIO_DEFAULT - -#define LED0_GPIO (PIO_PA0_IDX) -#define LED0_FLAGS (0) -#define LED0_ACTIVE_LEVEL IOPORT_PIN_LEVEL_LOW -#define LED0_INACTIVE_LEVEL IOPORT_PIN_LEVEL_HIGH - -/** LED #1 pin definition (Amber). */ -#define LED_1_NAME "Amber LED D3" -#define PIN_LED_1 {PIO_PD20, PIOD, ID_PIOD, PIO_OUTPUT_1, PIO_DEFAULT} -#define PIN_LED_1_MASK PIO_PD20 -#define PIN_LED_1_PIO PIOD -#define PIN_LED_1_ID ID_PIOD -#define PIN_LED_1_TYPE PIO_OUTPUT_1 -#define PIN_LED_1_ATTR PIO_DEFAULT - -#define LED1_GPIO (PIO_PD20_IDX) -#define LED1_FLAGS (0) -#define LED1_ACTIVE_LEVEL IOPORT_PIN_LEVEL_LOW -#define LED1_INACTIVE_LEVEL IOPORT_PIN_LEVEL_HIGH - -/** LED #2 pin definition (Green). */ -#define LED_2_NAME "Green LED D4" -#define PIN_LED_2_MASK PIO_PD21 -#define PIN_LED_2_PIO PIOD -#define PIN_LED_2_ID ID_PIOD -#define PIN_LED_2_TYPE PIO_OUTPUT_1 -#define PIN_LED_2_ATTR PIO_DEFAULT - -#define LED2_GPIO (PIO_PD21_IDX) -#define LED2_FLAGS (0) -#define LED2_ACTIVE_LEVEL IOPORT_PIN_LEVEL_LOW -#define LED2_INACTIVE_LEVEL IOPORT_PIN_LEVEL_HIGH - -/** LED #3 pin definition (Red). */ -#define LED_3_NAME "Red LED D5" -#define PIN_LED_3_MASK PIO_PD22 -#define PIN_LED_3_PIO PIOD -#define PIN_LED_3_ID ID_PIOD -#define PIN_LED_3_TYPE PIO_OUTPUT_0 -#define PIN_LED_3_ATTR PIO_DEFAULT - -#define LED3_GPIO (PIO_PD22_IDX) -#define LED3_FLAGS (0) -#define LED3_ACTIVE_LEVEL IOPORT_PIN_LEVEL_HIGH -#define LED3_INACTIVE_LEVEL IOPORT_PIN_LEVEL_LOW - -#define BOARD_NUM_OF_LED 4 - -/** HSMCI pins definition. */ -/*! Number of slot connected on HSMCI interface */ -#define SD_MMC_HSMCI_MEM_CNT 1 -#define SD_MMC_HSMCI_SLOT_0_SIZE 4 -#define PINS_HSMCI {0x3fUL << 26, PIOA, ID_PIOA, PIO_PERIPH_C, PIO_PULLUP} -/** HSMCI MCCDA pin definition. */ -#define PIN_HSMCI_MCCDA_GPIO (PIO_PA28_IDX) -#define PIN_HSMCI_MCCDA_FLAGS (IOPORT_MODE_MUX_C) -/** HSMCI MCCK pin definition. */ -#define PIN_HSMCI_MCCK_GPIO (PIO_PA29_IDX) -#define PIN_HSMCI_MCCK_FLAGS (IOPORT_MODE_MUX_C) -/** HSMCI MCDA0 pin definition. */ -#define PIN_HSMCI_MCDA0_GPIO (PIO_PA30_IDX) -#define PIN_HSMCI_MCDA0_FLAGS (IOPORT_MODE_MUX_C) -/** HSMCI MCDA1 pin definition. */ -#define PIN_HSMCI_MCDA1_GPIO (PIO_PA31_IDX) -#define PIN_HSMCI_MCDA1_FLAGS (IOPORT_MODE_MUX_C) -/** HSMCI MCDA2 pin definition. */ -#define PIN_HSMCI_MCDA2_GPIO (PIO_PA26_IDX) -#define PIN_HSMCI_MCDA2_FLAGS (IOPORT_MODE_MUX_C) -/** HSMCI MCDA3 pin definition. */ -#define PIN_HSMCI_MCDA3_GPIO (PIO_PA27_IDX) -#define PIN_HSMCI_MCDA3_FLAGS (IOPORT_MODE_MUX_C) - -/** SD/MMC card detect pin definition. */ -#define PIN_HSMCI_CD {PIO_PA6, PIOA, ID_PIOA, PIO_INPUT, PIO_PULLUP} -#define SD_MMC_0_CD_GPIO (PIO_PA6_IDX) -#define SD_MMC_0_CD_PIO_ID ID_PIOA -#define SD_MMC_0_CD_FLAGS (IOPORT_MODE_PULLUP) -#define SD_MMC_0_CD_DETECT_VALUE 0 - -/** - * Push button #0 definition. Attributes = pull-up + debounce + interrupt on - * rising edge. - */ -#define PUSHBUTTON_1_NAME "BP2 WAKU" -#define PUSHBUTTON_1_WKUP_LINE (9) -#define PUSHBUTTON_1_WKUP_FSTT (PMC_FSMR_FSTT9) -#define GPIO_PUSH_BUTTON_1 (PIO_PA19_IDX) -#define GPIO_PUSH_BUTTON_1_FLAGS (IOPORT_MODE_PULLUP | IOPORT_MODE_DEBOUNCE) -#define GPIO_PUSH_BUTTON_1_SENSE (IOPORT_SENSE_RISING) - -#define PIN_PUSHBUTTON_1 {PIO_PA19, PIOA, ID_PIOA, PIO_INPUT, \ - PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE} -#define PIN_PUSHBUTTON_1_MASK PIO_PA19 -#define PIN_PUSHBUTTON_1_PIO PIOA -#define PIN_PUSHBUTTON_1_ID ID_PIOA -#define PIN_PUSHBUTTON_1_TYPE PIO_INPUT -#define PIN_PUSHBUTTON_1_ATTR (PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE) -#define PIN_PUSHBUTTON_1_IRQn PIOA_IRQn - -/** - * Push button #1 definition. Attributes = pull-up + debounce + interrupt on - * falling edge. - */ -#define PUSHBUTTON_2_NAME "BP3 TAMP" -#define PUSHBUTTON_2_WKUP_LINE (10) -#define PUSHBUTTON_2_WKUP_FSTT (PMC_FSMR_FSTT10) -#define GPIO_PUSH_BUTTON_2 (PIO_PA20_IDX) -#define GPIO_PUSH_BUTTON_2_FLAGS (IOPORT_MODE_PULLUP | IOPORT_MODE_DEBOUNCE) -#define GPIO_PUSH_BUTTON_2_SENSE (IOPORT_SENSE_FALLING) - -#define PIN_PUSHBUTTON_2 {PIO_PA20, PIOA, ID_PIOA, PIO_INPUT, \ - PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_FALL_EDGE} -#define PIN_PUSHBUTTON_2_MASK PIO_PA20 -#define PIN_PUSHBUTTON_2_PIO PIOA -#define PIN_PUSHBUTTON_2_ID ID_PIOA -#define PIN_PUSHBUTTON_2_TYPE PIO_INPUT -#define PIN_PUSHBUTTON_2_ATTR (PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_FALL_EDGE) -#define PIN_PUSHBUTTON_2_IRQn PIOA_IRQn - -/** - * Push button #2 definition. Attributes = pull-up + debounce + interrupt on - * both edges. - */ -#define PUSHBUTTON_3_NAME "BP4 SCROLL-UP" -#define PUSHBUTTON_3_WKUP_LINE (1) -#define PUSHBUTTON_3_WKUP_FSTT (PMC_FSMR_FSTT1) -#define GPIO_PUSH_BUTTON_3 (PIO_PA1_IDX) -#define GPIO_PUSH_BUTTON_3_FLAGS (IOPORT_MODE_PULLUP | IOPORT_MODE_DEBOUNCE) -#define GPIO_PUSH_BUTTON_3_SENSE (IOPORT_SENSE_BOTHEDGES) - -#define PIN_PUSHBUTTON_3 {PIO_PA1, PIOA, ID_PIOA, PIO_INPUT, \ - PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE} -#define PIN_PUSHBUTTON_3_MASK PIO_PA1 -#define PIN_PUSHBUTTON_3_PIO PIOA -#define PIN_PUSHBUTTON_3_ID ID_PIOA -#define PIN_PUSHBUTTON_3_TYPE PIO_INPUT -#define PIN_PUSHBUTTON_3_ATTR (PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE) -#define PIN_PUSHBUTTON_3_IRQn PIOA_IRQn - -/** - * Push button #3 definition. Attributes = pull-up + debounce + interrupt on - * rising edge. - */ -#define PUSHBUTTON_4_NAME "BP5 SCROLL-DOWN" -#define PUSHBUTTON_4_WKUP_LINE (2) -#define PUSHBUTTON_4_WKUP_FSTT (PMC_FSMR_FSTT2) -#define GPIO_PUSH_BUTTON_4 (PIO_PA2_IDX) -#define GPIO_PUSH_BUTTON_4_FLAGS (IOPORT_MODE_PULLUP | IOPORT_MODE_DEBOUNCE) -#define GPIO_PUSH_BUTTON_4_SENSE (IOPORT_SENSE_RISING) - -#define PIN_PUSHBUTTON_4 {PIO_PA2, PIOA, ID_PIOA, PIO_INPUT, \ - PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE} -#define PIN_PUSHBUTTON_4_MASK PIO_PA2 -#define PIN_PUSHBUTTON_4_PIO PIOA -#define PIN_PUSHBUTTON_4_ID ID_PIOA -#define PIN_PUSHBUTTON_4_TYPE PIO_INPUT -#define PIN_PUSHBUTTON_4_ATTR (PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE) -#define PIN_PUSHBUTTON_4_IRQn PIOA_IRQn - -/** List of all push button definitions. */ -#define PINS_PUSHBUTTONS {PIN_PUSHBUTTON_1, PIN_PUSHBUTTON_2,\ - PIN_PUSHBUTTON_3, PIN_PUSHBUTTON_4} - -#define PIN_TC0_TIOA0 (PIO_PA0_IDX) -#define PIN_TC0_TIOA0_MUX (IOPORT_MODE_MUX_B) -#define PIN_TC0_TIOA0_FLAGS (IOPORT_MODE_MUX_B) - -#define PIN_TC0_TIOA1 (PIO_PA15_IDX) -#define PIN_TC0_TIOA1_MUX (IOPORT_MODE_MUX_B) -#define PIN_TC0_TIOA1_FLAGS (IOPORT_MODE_MUX_B) - -#define PIN_TC0_TIOA1_PIO PIOA -#define PIN_TC0_TIOA1_MASK PIO_PA15 -#define PIN_TC0_TIOA1_ID ID_PIOA -#define PIN_TC0_TIOA1_TYPE PIO_PERIPH_B -#define PIN_TC0_TIOA1_ATTR PIO_DEFAULT - -#define PIN_TC0_TIOA2 (PIO_PA26_IDX) -#define PIN_TC0_TIOA2_MUX (IOPORT_MODE_MUX_B) -#define PIN_TC0_TIOA2_FLAGS (IOPORT_MODE_MUX_B) - -#define PIN_TC0_TIOA2_PIO PIOA -#define PIN_TC0_TIOA2_MASK PIO_PA26 -#define PIN_TC0_TIOA2_ID ID_PIOA -#define PIN_TC0_TIOA2_TYPE PIO_PERIPH_B -#define PIN_TC0_TIOA2_ATTR PIO_DEFAULT - -/** PWM LED0 pin definitions. */ -#define PIN_PWM_LED0_GPIO PIO_PD20_IDX -#define PIN_PWM_LED0_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_PWM_LED0_CHANNEL PWM_CHANNEL_0 - -/** PWM LED1 pin definitions. */ -#define PIN_PWM_LED1_GPIO PIO_PD21_IDX -#define PIN_PWM_LED1_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_PWM_LED1_CHANNEL PWM_CHANNEL_1 - -/** PWM LED2 pin definitions. */ -#define PIN_PWM_LED2_GPIO PIO_PD22_IDX -#define PIN_PWM_LED2_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_PWM_LED2_CHANNEL PWM_CHANNEL_2 - -/** PWM LED3 pin definitions. */ -#define PIN_PWM_LED3_GPIO PIO_PA0_IDX -#define PIN_PWM_LED3_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_PWM_LED3_CHANNEL PWM_CHANNEL_0 - - -/** SPI MISO pin definition. */ -#define SPI_MISO_GPIO (PIO_PA12_IDX) -#define SPI_MISO_FLAGS (IOPORT_MODE_MUX_A) -/** SPI MOSI pin definition. */ -#define SPI_MOSI_GPIO (PIO_PA13_IDX) -#define SPI_MOSI_FLAGS (IOPORT_MODE_MUX_A) -/** SPI SPCK pin definition. */ -#define SPI_SPCK_GPIO (PIO_PA14_IDX) -#define SPI_SPCK_FLAGS (IOPORT_MODE_MUX_A) - -/** SPI chip select 0 pin definition. (Only one configuration is possible) */ -#define SPI_NPCS0_GPIO (PIO_PA11_IDX) -#define SPI_NPCS0_FLAGS (IOPORT_MODE_MUX_A) -/** SPI chip select 1 pin definition. (multiple configurations are possible) */ -#define SPI_NPCS1_PA9_GPIO (PIO_PA9_IDX) -#define SPI_NPCS1_PA9_FLAGS (IOPORT_MODE_MUX_B) -#define SPI_NPCS1_PA31_GPIO (PIO_PA31_IDX) -#define SPI_NPCS1_PA31_FLAGS (IOPORT_MODE_MUX_A) -#define SPI_NPCS1_PB14_GPIO (PIO_PB14_IDX) -#define SPI_NPCS1_PB14_FLAGS (IOPORT_MODE_MUX_A) -#define SPI_NPCS1_PC4_GPIO (PIO_PC4_IDX) -#define SPI_NPCS1_PC4_FLAGS (IOPORT_MODE_MUX_B) -/** SPI chip select 2 pin definition. (multiple configurations are possible) */ -#define SPI_NPCS2_PA10_GPIO (PIO_PA10_IDX) -#define SPI_NPCS2_PA10_FLAGS (IOPORT_MODE_MUX_B) -#define SPI_NPCS2_PA30_GPIO (PIO_PA30_IDX) -#define SPI_NPCS2_PA30_FLAGS (IOPORT_MODE_MUX_B) -#define SPI_NPCS2_PB2_GPIO (PIO_PB2_IDX) -#define SPI_NPCS2_PB2_FLAGS (IOPORT_MODE_MUX_B) -/** SPI chip select 3 pin definition. (multiple configurations are possible) */ -#define SPI_NPCS3_PA3_GPIO (PIO_PA3_IDX) -#define SPI_NPCS3_PA3_FLAGS (IOPORT_MODE_MUX_B) -#define SPI_NPCS3_PA5_GPIO (PIO_PA5_IDX) -#define SPI_NPCS3_PA5_FLAGS (IOPORT_MODE_MUX_B) -#define SPI_NPCS3_PA22_GPIO (PIO_PA22_IDX) -#define SPI_NPCS3_PA22_FLAGS (IOPORT_MODE_MUX_B) - -/* Select the SPI module that AT25DFx is connected to */ -#define AT25DFX_SPI_MODULE SPI - -/* Chip select used by AT25DFx components on the SPI module instance */ -#define AT25DFX_CS 3 - -/* Touch screen IRQ & Busy pin definition */ -#define BOARD_ADS7843_IRQ_GPIO (PIO_PA16_IDX) -#define BOARD_ADS7843_IRQ_FLAGS IOPORT_MODE_PULLUP -#define BOARD_ADS7843_BUSY_GPIO (PIO_PA17_IDX) -#define BOARD_ADS7843_BUSY_FLAGS IOPORT_MODE_PULLUP -/** -* SPI instance, which can be SPI, SPI0 or SPI1, depends on which SPI -* channel is used. -*/ -#define BOARD_ADS7843_SPI_BASE SPI -/* SPI chip select NO., depends on which SPI CS pin is used by ADS7843. */ -#define BOARD_ADS7843_SPI_NPCS 0 - -/** TWI0 pins definition */ -#define TWI0_DATA_GPIO PIO_PA3_IDX -#define TWI0_DATA_FLAGS (IOPORT_MODE_MUX_A) -#define TWI0_CLK_GPIO PIO_PA4_IDX -#define TWI0_CLK_FLAGS (IOPORT_MODE_MUX_A) - -/** TWI1 pins definition */ -#define TWI1_DATA_GPIO PIO_PB4_IDX -#define TWI1_DATA_FLAGS (IOPORT_MODE_MUX_A) -#define TWI1_CLK_GPIO PIO_PB5_IDX -#define TWI1_CLK_FLAGS (IOPORT_MODE_MUX_A) - -/** PCK0 pin definition (PA6) */ -#define PIN_PCK0 (PIO_PA6_IDX) -#define PIN_PCK0_MUX (IOPORT_MODE_MUX_B) -#define PIN_PCK0_FLAGS (IOPORT_MODE_MUX_B) -#define PIN_PCK0_PORT IOPORT_PIOA -#define PIN_PCK0_MASK PIO_PA6B_PCK0 -#define PIN_PCK0_PIO PIOA -#define PIN_PCK0_ID ID_PIOA -#define PIN_PCK0_TYPE PIO_PERIPH_B -#define PIN_PCK0_ATTR PIO_DEFAULT - -/** USART0 pin RX */ -#define PIN_USART0_RXD {PIO_PB0C_RXD0, PIOB, ID_PIOB, PIO_PERIPH_C, \ - PIO_DEFAULT} -#define PIN_USART0_RXD_IDX (PIO_PB0_IDX) -#define PIN_USART0_RXD_FLAGS (IOPORT_MODE_MUX_C) -/** USART0 pin TX */ -#define PIN_USART0_TXD {PIO_PB1C_TXD0, PIOB, ID_PIOB, PIO_PERIPH_C, \ - PIO_DEFAULT} -#define PIN_USART0_TXD_IDX (PIO_PB1_IDX) -#define PIN_USART0_TXD_FLAGS (IOPORT_MODE_MUX_C) -/** USART0 pin CTS */ -#define PIN_USART0_CTS {PIO_PB2C_CTS0, PIOB, ID_PIOB, PIO_PERIPH_C, \ - PIO_DEFAULT} -#define PIN_USART0_CTS_IDX (PIO_PB2_IDX) -#define PIN_USART0_CTS_FLAGS (IOPORT_MODE_MUX_C) -/** USART0 pin RTS */ -#define PIN_USART0_RTS {PIO_PB3C_RTS0, PIOB, ID_PIOB, PIO_PERIPH_C, \ - PIO_DEFAULT} -#define PIN_USART0_RTS_IDX (PIO_PB3_IDX) -#define PIN_USART0_RTS_FLAGS (IOPORT_MODE_MUX_C) -/** USART0 pin SCK */ -#define PIN_USART0_SCK {PIO_PB13C_SCK0, PIOB, ID_PIOB, PIO_PERIPH_C, \ - PIO_DEFAULT} -#define PIN_USART0_SCK_IDX (PIO_PB13_IDX) -#define PIN_USART0_SCK_FLAGS (IOPORT_MODE_MUX_C) - -/** USART1 pin RX */ -#define PIN_USART1_RXD {PIO_PA21A_RXD1, PIOA, ID_PIOA, PIO_PERIPH_A, \ - PIO_DEFAULT} -#define PIN_USART1_RXD_IDX (PIO_PA21_IDX) -#define PIN_USART1_RXD_FLAGS (IOPORT_MODE_MUX_A) -/** USART1 pin TX */ -#define PIN_USART1_TXD {PIO_PA22A_TXD1, PIOA, ID_PIOA, PIO_PERIPH_A, \ - PIO_DEFAULT} -#define PIN_USART1_TXD_IDX (PIO_PA22_IDX) -#define PIN_USART1_TXD_FLAGS (IOPORT_MODE_MUX_A) -/** USART1 pin CTS */ -#define PIN_USART1_CTS {PIO_PA25A_CTS1, PIOA, ID_PIOA, PIO_PERIPH_A, \ - PIO_DEFAULT} -#define PIN_USART1_CTS_IDX (PIO_PA25_IDX) -#define PIN_USART1_CTS_FLAGS (IOPORT_MODE_MUX_A) -/** USART1 pin RTS */ -#define PIN_USART1_RTS {PIO_PA24A_RTS1, PIOA, ID_PIOA, PIO_PERIPH_A, \ - PIO_DEFAULT} -#define PIN_USART1_RTS_IDX (PIO_PA24_IDX) -#define PIN_USART1_RTS_FLAGS (IOPORT_MODE_MUX_A) -/** USART1 pin SCK */ -#define PIN_USART1_SCK {PIO_PA23A_SCK1, PIOA, ID_PIOA, PIO_PERIPH_A, \ - PIO_DEFAULT} -#define PIN_USART1_SCK_IDX (PIO_PA23_IDX) -#define PIN_USART1_SCK_FLAGS (IOPORT_MODE_MUX_A) -/** USART1 pin ENABLE */ -#define PIN_USART1_EN {PIO_PA23, PIOA, ID_PIOA, PIO_OUTPUT_0, \ - PIO_DEFAULT} -#define PIN_USART1_EN_IDX (PIO_PA23_IDX) -#define PIN_USART1_EN_FLAGS (0) -#define PIN_USART1_EN_ACTIVE_LEVEL IOPORT_PIN_LEVEL_LOW -#define PIN_USART1_EN_INACTIVE_LEVEL IOPORT_PIN_LEVEL_HIGH - -/** USB VBus monitoring pin definition. */ -#define PIN_USB_VBUS {PIO_PC21, PIOC, ID_PIOC, PIO_INPUT, PIO_PULLUP} -#define USB_VBUS_FLAGS (PIO_INPUT | PIO_DEBOUNCE | PIO_IT_EDGE) -#define USB_VBUS_PIN_IRQn (PIOC_IRQn) -#define USB_VBUS_PIN (PIO_PC21_IDX) -#define USB_VBUS_PIO_ID (ID_PIOC) -#define USB_VBUS_PIO_MASK (PIO_PC21) -/* This pin can not be used as fast wakeup source such as - * USB_VBUS_WKUP PMC_FSMR_FSTT7 */ - -/** USB D- pin (System function) */ -#define PIN_USB_DM {PIO_PB10} -/** USB D+ pin (System function) */ -#define PIN_USB_DP {PIO_PB11} - -/** EBI Data Bus pins */ -#define PIN_EBI_DATA_BUS_D0 PIO_PC0_IDX -#define PIN_EBI_DATA_BUS_D1 PIO_PC1_IDX -#define PIN_EBI_DATA_BUS_D2 PIO_PC2_IDX -#define PIN_EBI_DATA_BUS_D3 PIO_PC3_IDX -#define PIN_EBI_DATA_BUS_D4 PIO_PC4_IDX -#define PIN_EBI_DATA_BUS_D5 PIO_PC5_IDX -#define PIN_EBI_DATA_BUS_D6 PIO_PC6_IDX -#define PIN_EBI_DATA_BUS_D7 PIO_PC7_IDX -#define PIN_EBI_DATA_BUS_FLAGS (IOPORT_MODE_MUX_A | IOPORT_MODE_PULLUP) - -#define PIN_EBI_NRD PIO_PC11_IDX -#define PIN_EBI_NRD_FLAGS (IOPORT_MODE_MUX_A | IOPORT_MODE_PULLUP) -#define PIN_EBI_NWE PIO_PC8_IDX -#define PIN_EBI_NWE_FLAGS (IOPORT_MODE_MUX_A | IOPORT_MODE_PULLUP) - -/** EBI pin for LCD CS and RS **/ -#define PIN_EBI_NCS1 PIO_PD18_IDX -#define PIN_EBI_NCS1_FLAGS (IOPORT_MODE_MUX_A | IOPORT_MODE_PULLUP) -#define PIN_EBI_LCD_RS PIO_PC19_IDX -#define PIN_EBI_LCD_RS_FLAGS (IOPORT_MODE_MUX_A | IOPORT_MODE_PULLUP) - -/** Indicates board has an ILI9325 external component to manage LCD. */ -#define BOARD_LCD_ILI93XX - -/** Backlight pin definition. */ -#define BOARD_AAT31XX_SET_GPIO PIO_PC13_IDX -/** Define ILI93xx base address. */ -#define BOARD_ILI93XX_ADDR 0x61000000 -/** Define ILI9325 register select signal. */ -#define BOARD_ILI93XX_RS (1 << 1) -/** Display width in pixels. */ -#define BOARD_LCD_WIDTH 240 -/** Display height in pixels. */ -#define BOARD_LCD_HEIGHT 320 - -/* KSZ8051MNL relate PIN definition */ -#define PIN_KSZ8051MNL_RXC_IDX PIO_PD14_IDX -#define PIN_KSZ8051MNL_RXC_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_TXC_IDX PIO_PD0_IDX -#define PIN_KSZ8051MNL_TXC_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_TXEN_IDX PIO_PD1_IDX -#define PIN_KSZ8051MNL_TXEN_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_TXD3_IDX PIO_PD16_IDX -#define PIN_KSZ8051MNL_TXD3_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_TXD2_IDX PIO_PD15_IDX -#define PIN_KSZ8051MNL_TXD2_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_TXD1_IDX PIO_PD3_IDX -#define PIN_KSZ8051MNL_TXD1_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_TXD0_IDX PIO_PD2_IDX -#define PIN_KSZ8051MNL_TXD0_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_RXD3_IDX PIO_PD12_IDX -#define PIN_KSZ8051MNL_RXD3_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_RXD2_IDX PIO_PD11_IDX -#define PIN_KSZ8051MNL_RXD2_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_RXD1_IDX PIO_PD6_IDX -#define PIN_KSZ8051MNL_RXD1_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_RXD0_IDX PIO_PD5_IDX -#define PIN_KSZ8051MNL_RXD0_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_RXER_IDX PIO_PD7_IDX -#define PIN_KSZ8051MNL_RXER_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_RXDV_IDX PIO_PD4_IDX -#define PIN_KSZ8051MNL_RXDV_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_CRS_IDX PIO_PD10_IDX -#define PIN_KSZ8051MNL_CRS_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_COL_IDX PIO_PD13_IDX -#define PIN_KSZ8051MNL_COL_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_MDC_IDX PIO_PD8_IDX -#define PIN_KSZ8051MNL_MDC_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_MDIO_IDX PIO_PD9_IDX -#define PIN_KSZ8051MNL_MDIO_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_KSZ8051MNL_INTRP_IDX PIO_PD28_IDX - -/** NandFlash pins definition: OE. */ -#define PIN_EBI_NANDOE (PIO_PC9_IDX) -#define PIN_EBI_NANDOE_FLAGS (IOPORT_MODE_MUX_A) - -/** NandFlash pins definition: WE. */ -#define PIN_EBI_NANDWE (PIO_PC10_IDX) -#define PIN_EBI_NANDWE_FLAGS (IOPORT_MODE_MUX_A) - -/** NandFlash pins definition: CLE. */ -#define PIN_EBI_NANDCLE (PIO_PC17_IDX) -#define PIN_EBI_NANDCLE_FLAGS (IOPORT_MODE_MUX_A) - -/** NandFlash pins definition: ALE. */ -#define PIN_EBI_NANDALE (PIO_PC16_IDX) -#define PIN_EBI_NANDALE_FLAGS (IOPORT_MODE_MUX_A) - -/** NandFlash pins definition: DATA. */ -#define PIN_EBI_NANDIO_0 (PIO_PC0_IDX) -#define PIN_EBI_NANDIO_0_FLAGS (IOPORT_MODE_MUX_A) - -#define PIN_EBI_NANDIO_1 (PIO_PC1_IDX) -#define PIN_EBI_NANDIO_1_FLAGS (IOPORT_MODE_MUX_A) - -#define PIN_EBI_NANDIO_2 (PIO_PC2_IDX) -#define PIN_EBI_NANDIO_2_FLAGS (IOPORT_MODE_MUX_A) - -#define PIN_EBI_NANDIO_3 (PIO_PC3_IDX) -#define PIN_EBI_NANDIO_3_FLAGS (IOPORT_MODE_MUX_A) - -#define PIN_EBI_NANDIO_4 (PIO_PC4_IDX) -#define PIN_EBI_NANDIO_4_FLAGS (IOPORT_MODE_MUX_A) - -#define PIN_EBI_NANDIO_5 (PIO_PC5_IDX) -#define PIN_EBI_NANDIO_5_FLAGS (IOPORT_MODE_MUX_A) - -#define PIN_EBI_NANDIO_6 (PIO_PC6_IDX) -#define PIN_EBI_NANDIO_6_FLAGS (IOPORT_MODE_MUX_A) - -#define PIN_EBI_NANDIO_7 (PIO_PC7_IDX) -#define PIN_EBI_NANDIO_7_FLAGS (IOPORT_MODE_MUX_A) - -/** Nandflash chip enable pin definition. */ -#define PIN_NF_CE_IDX (PIO_PC14_IDX) - -/** Nandflash ready/busy pin definition. */ -#define PIN_NF_RB_IDX (PIO_PC18_IDX) - -/* Chip select number for nand */ -#define BOARD_NAND_CS 0 - -/*----------------------------------------------------------------------------*/ -/** - * \page sam4e_ek_usb "SAM4E-EK - USB device" - * - * \section Definitions - * - \ref BOARD_USB_BMATTRIBUTES - * - \ref CHIP_USB_UDP - * - \ref CHIP_USB_PULLUP_INTERNAL - * - \ref CHIP_USB_NUMENDPOINTS - * - \ref CHIP_USB_ENDPOINTS_MAXPACKETSIZE - * - \ref CHIP_USB_ENDPOINTS_BANKS - */ - -/** - * USB attributes configuration descriptor (bus or self powered, - * remote wakeup) - */ -#define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_SELFPOWERED_RWAKEUP - -/** Indicates chip has an UDP Full Speed. */ -#define CHIP_USB_UDP - -/** Indicates chip has an internal pull-up. */ -#define CHIP_USB_PULLUP_INTERNAL - -/** Number of USB endpoints */ -#define CHIP_USB_NUMENDPOINTS 8 - -/** Endpoints max packet size */ -#define CHIP_USB_ENDPOINTS_MAXPACKETSIZE(i) \ - ((i == 0) ? 64 : \ - ((i == 1) ? 64 : \ - ((i == 2) ? 64 : \ - ((i == 3) ? 64 : \ - ((i == 4) ? 512 : \ - ((i == 5) ? 512 : \ - ((i == 6) ? 64 : \ - ((i == 7) ? 64 : 0 )))))))) - -/** Endpoints Number of Bank */ -#define CHIP_USB_ENDPOINTS_BANKS(i) \ - ((i == 0) ? 1 : \ - ((i == 1) ? 2 : \ - ((i == 2) ? 2 : \ - ((i == 3) ? 1 : \ - ((i == 4) ? 2 : \ - ((i == 5) ? 2 : \ - ((i == 6) ? 2 : \ - ((i == 7) ? 2 : 0 )))))))) - -/*----------------------------------------------------------------------------*/ -/** - * \page sam4e_ek_extcomp "SAM4E-EK - External components" - * This page lists the definitions related to external on-board components - * located in the board.h file for the SAM4E-EK. - * - * SD Card - * - \ref BOARD_SD_PINS - * - \ref BOARD_SD_PIN_CD - * - * QTouch component (QT2160) - * - \ref BOARD_QT_TWI_INSTANCE - * - \ref BOARD_QT_DEVICE_ADDRESS - * - \ref BOARD_QT_CHANGE_PIN_IDX - * - \ref BOARD_QT_CHANGE_PIN_FLAGS - * - \ref BOARD_QT_CHANGE_PIN_SENSE - */ - -/** HSMCI pins that shall be configured to access the SD card. */ -#define BOARD_SD_PINS PINS_HSMCI -/** HSMCI Card Detect pin. */ -#define BOARD_SD_PIN_CD PIN_HSMCI_CD - -/** TWI instance for QTouch device */ -#define BOARD_QT_TWI_INSTANCE TWI0 -/* QTouch device address (I2CA1 = I2CA0 = 0) */ -#define BOARD_QT_DEVICE_ADDRESS 0x0D -/** QTouch component pin definition */ -#define BOARD_QT_CHANGE_PIN_IDX (PIO_PE4_IDX) -#define BOARD_QT_CHANGE_PIN_FLAGS (IOPORT_MODE_PULLUP | IOPORT_MODE_DEBOUNCE) -#define BOARD_QT_CHANGE_PIN_SENSE (IOPORT_SENSE_FALLING) - -/*----------------------------------------------------------------------------*/ -/** - * \page sam4e_ek_mem "SAM4E-EK - Memories" - * This page lists definitions related to internal & external on-board memories. - * - * \section NandFlash - * - \ref BOARD_NF_COMMAND_ADDR - * - \ref BOARD_NF_ADDRESS_ADDR - * - \ref BOARD_NF_DATA_ADDR - * - * \section NorFlash - * - \ref BOARD_NORFLASH_ADDR - * - \ref BOARD_NORFLASH_DFT_BUS_SIZE - */ - -/** Address for transferring command bytes to the nandflash. */ -#define BOARD_NF_COMMAND_ADDR 0x60400000 -/** Address for transferring address bytes to the nandflash. */ -#define BOARD_NF_ADDRESS_ADDR 0x60200000 -/** Address for transferring data bytes to the nandflash. */ -#define BOARD_NF_DATA_ADDR 0x60000000 -/* Bus width for NAND */ -#define CONF_NF_BUSWIDTH 8 -/* Access timing for NAND */ -#define CONF_NF_SETUP_TIMING (SMC_SETUP_NWE_SETUP(0) \ - | SMC_SETUP_NCS_WR_SETUP(1) \ - | SMC_SETUP_NRD_SETUP(0) \ - | SMC_SETUP_NCS_RD_SETUP(1)) -#define CONF_NF_PULSE_TIMING (SMC_PULSE_NWE_PULSE(2) \ - | SMC_PULSE_NCS_WR_PULSE(3) \ - | SMC_PULSE_NRD_PULSE(4) \ - | SMC_PULSE_NCS_RD_PULSE(4)) -#define CONF_NF_CYCLE_TIMING (SMC_CYCLE_NWE_CYCLE(4) \ - | SMC_CYCLE_NRD_CYCLE(7)) - -/** Address for transferring command bytes to the norflash. */ -#define BOARD_NORFLASH_ADDR 0x63000000 -/** Default NOR bus size after power up reset */ -#define BOARD_NORFLASH_DFT_BUS_SIZE 8 - -/*----------------------------------------------------------------------------*/ - -#define CONSOLE_UART UART0 -#define CONSOLE_UART_ID ID_UART0 - -/* RE pin. */ -#define PIN_RE_IDX PIN_USART1_CTS_IDX -#define PIN_RE_FLAGS (0) - -/* IRDA SD pin. */ -#define PIN_IRDA_SD_IDX PIN_USART1_CTS_IDX -#define PIN_IRDA_SD_FLAGS (0) - -/* TXD pin configuration. */ -#define PIN_USART_TXD_IDX PIN_USART1_TXD_IDX -#define PIN_USART_TXD_FLAGS (IOPORT_MODE_MUX_A) -#define PIN_USART_TXD_IO_FLAGS (0) - -/* ISO7816 example relate PIN definition. */ -#define ISO7816_USART_ID ID_USART1 -#define ISO7816_USART USART1 -#define PIN_ISO7816_RST_IDX PIO_PA15_IDX -#define PIN_ISO7816_RST_FLAG (0) - -/*----------------------------------------------------------------------------*/ -/* GMAC HW configurations */ -#define BOARD_GMAC_PHY_ADDR 0 - -/*----------------------------------------------------------------------------*/ -/** - * \page sam4e_ek_CAN "SAM4E-EK - CAN" - * This page lists definitions related to CAN0 and CAN1. - * - * CAN - * - \ref PIN_CAN0_TRANSCEIVER_RXEN - * - \ref PIN_CAN0_TRANSCEIVER_RS - * - \ref PIN_CAN0_TXD - * - \ref PIN_CAN0_RXD - * - \ref PINS_CAN0 - * - * - \ref PIN_CAN1_TRANSCEIVER_RXEN - * - \ref PIN_CAN1_TRANSCEIVER_RS - * - \ref PIN_CAN1_TXD - * - \ref PIN_CAN1_RXD - * - \ref PINS_CAN1 - */ -/** CAN0 transceiver PIN RS. */ -#define PIN_CAN0_TR_RS_IDX PIO_PE0_IDX -#define PIN_CAN0_TR_RS_FLAGS IOPORT_DIR_OUTPUT - -/** CAN0 transceiver PIN EN. */ -#define PIN_CAN0_TR_EN_IDX PIO_PE1_IDX -#define PIN_CAN0_TR_EN_FLAGS IOPORT_DIR_OUTPUT - -/** CAN0 PIN RX. */ -#define PIN_CAN0_RX_IDX PIO_PB3_IDX -#define PIN_CAN0_RX_FLAGS IOPORT_MODE_MUX_A - -/** CAN0 PIN TX. */ -#define PIN_CAN0_TX_IDX PIO_PB2_IDX -#define PIN_CAN0_TX_FLAGS IOPORT_MODE_MUX_A - -/** CAN1 transceiver PIN RS. */ -#define PIN_CAN1_TR_RS_IDX PIO_PE2_IDX -#define PIN_CAN1_TR_RS_FLAGS IOPORT_DIR_OUTPUT - -/** CAN1 transceiver PIN EN. */ -#define PIN_CAN1_TR_EN_IDX PIO_PE3_IDX -#define PIN_CAN1_TR_EN_FLAGS IOPORT_DIR_OUTPUT - -/** CAN1 PIN RX. */ -#define PIN_CAN1_RX_IDX PIO_PC12_IDX -#define PIN_CAN1_RX_FLAGS IOPORT_MODE_MUX_C - -/** CAN1 PIN TX. */ -#define PIN_CAN1_TX_IDX PIO_PC15_IDX -#define PIN_CAN1_TX_FLAGS IOPORT_MODE_MUX_C - -/** AFEC channel for potentiometer */ -#define AFEC_CHANNEL_POTENTIOMETER AFEC_CHANNEL_5 - -/*----------------------------------------------------------------------------*/ -#endif /* _SAM4E_EK_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/aat31xx/aat31xx.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/aat31xx/aat31xx.c deleted file mode 100644 index 6a5d4b387..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/aat31xx/aat31xx.c +++ /dev/null @@ -1,137 +0,0 @@ -/** - * \file - * - * \brief API driver for component aat31xx. - * - * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -/** - * \defgroup aat31xx_display_group Display - AAT31XX Controller - * - * Low-level driver for the AAT31XX LCD backlight controller. This driver provides access to the main - * features of the AAT31XX controller. - * - * \{ - */ - -#include "board.h" -#include "ioport.h" -#include "aat31xx.h" -#include "conf_aat31xx.h" - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -#define DELAY_PULSE (0x18u) -#define DELAY_ENABLE (0x20000u) -#define DELAY_DISABLE (0x20000u) - -/** - * \brief Set the LCD backlight level. - * - * \param ul_level backlight level. - * - * \note pin BOARD_AAT31XX_SET_GPIO must be configured before calling aat31xx_set_backlight. - */ -void aat31xx_set_backlight(uint32_t ul_level) -{ - volatile uint32_t ul_delay; - uint32_t i; - -#ifdef CONF_BOARD_AAT3155 - ul_level = AAT31XX_MAX_BACKLIGHT_LEVEL - ul_level + 1; -#endif - -#ifdef CONF_BOARD_AAT3193 - ul_level = AAT31XX_MAX_BACKLIGHT_LEVEL - ul_level + 1; -#endif - - /* Ensure valid level */ - ul_level = (ul_level > AAT31XX_MAX_BACKLIGHT_LEVEL) ? AAT31XX_MAX_BACKLIGHT_LEVEL : ul_level; - ul_level = (ul_level < AAT31XX_MIN_BACKLIGHT_LEVEL) ? AAT31XX_MIN_BACKLIGHT_LEVEL : ul_level; - - /* Set new backlight level */ - for (i = 0; i < ul_level; i++) { - ioport_set_pin_level(BOARD_AAT31XX_SET_GPIO, IOPORT_PIN_LEVEL_LOW); - ul_delay = DELAY_PULSE; - while (ul_delay--) { - } - - ioport_set_pin_level(BOARD_AAT31XX_SET_GPIO, IOPORT_PIN_LEVEL_HIGH); - - ul_delay = DELAY_PULSE; - while (ul_delay--) { - } - } - - ul_delay = DELAY_ENABLE; - while (ul_delay--) { - } -} - -/** - * \brief Switch off backlight. - */ -void aat31xx_disable_backlight(void) -{ - volatile uint32_t ul_delay; - - ioport_set_pin_level(BOARD_AAT31XX_SET_GPIO, IOPORT_PIN_LEVEL_LOW); - - ul_delay = DELAY_DISABLE; - while (ul_delay--) { - } -} - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond - -/** - * \} - */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/aat31xx/aat31xx.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/aat31xx/aat31xx.h deleted file mode 100644 index 8d0397ba6..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/aat31xx/aat31xx.h +++ /dev/null @@ -1,94 +0,0 @@ -/** - * \file - * - * \brief API driver for component aat31xx. - * - * Copyright (c) 2011-2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef AAT31XX_H_INCLUDED -#define AAT31XX_H_INCLUDED - -#include "compiler.h" -#include "conf_board.h" - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -/* The minimum, average and maximum brightness level values */ -#ifdef CONF_BOARD_AAT3155 -#define AAT31XX_MIN_BACKLIGHT_LEVEL 1 -#define AAT31XX_AVG_BACKLIGHT_LEVEL 8 -#define AAT31XX_MAX_BACKLIGHT_LEVEL 16 -#endif -#ifdef CONF_BOARD_AAT3193 -#define AAT31XX_MIN_BACKLIGHT_LEVEL 1 -#define AAT31XX_AVG_BACKLIGHT_LEVEL 8 -#define AAT31XX_MAX_BACKLIGHT_LEVEL 16 -#endif -#ifdef CONF_BOARD_AAT3194 -#define AAT31XX_MIN_BACKLIGHT_LEVEL 1 -#define AAT31XX_AVG_BACKLIGHT_LEVEL 25 -#define AAT31XX_MAX_BACKLIGHT_LEVEL 32 -#endif - -/* No component found */ -#ifndef AAT31XX_MIN_BACKLIGHT_LEVEL -#warning Cannot configure AAT31XX. The component must be declared in conf_board.h first! -#define AAT31XX_MIN_BACKLIGHT_LEVEL 0 -#define AAT31XX_AVG_BACKLIGHT_LEVEL 0 -#define AAT31XX_MAX_BACKLIGHT_LEVEL 0 -#endif - -void aat31xx_set_backlight(uint32_t ul_level); -void aat31xx_disable_backlight(void); - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond - -#endif /* AAT31XX_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili9325_regs.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili9325_regs.h deleted file mode 100644 index 6e0ac4fe0..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili9325_regs.h +++ /dev/null @@ -1,646 +0,0 @@ -/** - * \file - * - * \brief registers definition for ili9325 TFT display component. - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef ILI9325_REGS_H_INCLUDED -#define ILI9325_REGS_H_INCLUDED - -/** @cond 0 */ -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/** @endcond */ - -/** ili9325 LCD Registers */ - -/** Driver Code Read */ -#define ILI9325_DEVICE_CODE_REG (0x00u) - -/** ILI9325_START_OSC_CTRL : (Offset: 0x00) Start Oscillator Control*/ -#define ILI9325_START_OSC_CTRL (0x00u) -#define ILI9325_START_OSC_CTRL_EN (0x1u << 0) - -/** ILI9325_DRIVER_OUTPUT_CTRL1 : (Offset: 0x01) Driver Output Control 1*/ -#define ILI9325_DRIVER_OUTPUT_CTRL1 (0x01u) -#define ILI9325_DRIVER_OUTPUT_CTRL1_SS (0x1u << 8) -#define ILI9325_DRIVER_OUTPUT_CTRL1_SM (0x1u << 10) - -/** ILI9325_LCD_DRIVING_CTRL : (Offset: 0x02) LCD Driving Control */ -#define ILI9325_LCD_DRIVING_CTRL (0x02u) -#define ILI9325_LCD_DRIVING_CTRL_EOR (0x1u << 8) -#define ILI9325_LCD_DRIVING_CTRL_BC0 (0x1u << 9) -#define ILI9325_LCD_DRIVING_CTRL_BIT10 (0x1u << 10) - -/** ILI9325_ENTRY_MODE : (Offset: 0x03) Entry Mode*/ -#define ILI9325_ENTRY_MODE (0x03u) -#define ILI9325_ENTRY_MODE_AM (0x1u << 3) -#define ILI9325_ENTRY_MODE_ID_POS 4 -#define ILI9325_ENTRY_MODE_ID_MSK (0x3u << ILI9325_ENTRY_MODE_ID_POS) -#define ILI9325_ENTRY_MODE_ID(value) ((ILI9325_ENTRY_MODE_ID_MSK & \ - ((value) << ILI9325_ENTRY_MODE_ID_POS))) -#define ILI9325_ENTRY_MODE_ORG (0x1u << 7) -#define ILI9325_ENTRY_MODE_HWM (0x1u << 9) -#define ILI9325_ENTRY_MODE_BGR (0x1u << 12) -#define ILI9325_ENTRY_MODE_DFM (0x1u << 14) -#define ILI9325_ENTRY_MODE_TRI (0x1u << 15) - -/** ILI9325_RESIZE_CTRL : (Offset: 0x04) Resize Control */ -#define ILI9325_RESIZE_CTRL (0x04u) -#define ILI9325_RESIZE_CTRL_RSZ_POS 0 -#define ILI9325_RESIZE_CTRL_RSZ_MSK (0x3u << ILI9325_RESIZE_CTRL_RSZ_POS) -#define ILI9325_RESIZE_CTRL_RSZ(value) ((ILI9325_RESIZE_CTRL_RSZ_MSK & \ - ((value) << ILI9325_RESIZE_CTRL_RSZ_POS))) -#define ILI9325_RESIZE_CTRL_RCH_POS 4 -#define ILI9325_RESIZE_CTRL_RCH_MSK (0x3u << ILI9325_RESIZE_CTRL_RCH_POS) -#define ILI9325_RESIZE_CTRL_RCH(value) ((ILI9325_RESIZE_CTRL_RCH_MSK & \ - ((value) << ILI9325_RESIZE_CTRL_RCH_POS))) -#define ILI9325_RESIZE_CTRL_RCV_POS 8 -#define ILI9325_RESIZE_CTRL_RCV_MSK (0x3u << ILI9325_RESIZE_CTRL_RCV_POS) -#define ILI9325_RESIZE_CTRL_RCV(value) ((ILI9325_RESIZE_CTRL_RCV_MSK & \ - ((value) << ILI9325_RESIZE_CTRL_RCV_POS))) - -/** ILI9325_DISP_CTRL1 : (Offset: 0x07) Display Control 1 */ -#define ILI9325_DISP_CTRL1 (0x07u) -#define ILI9325_DISP_CTRL1_D_POS 0 -#define ILI9325_DISP_CTRL1_D_MSK (0x3u << ILI9325_DISP_CTRL1_D_POS) -#define ILI9325_DISP_CTRL1_D(value) ((ILI9325_DISP_CTRL1_D_MSK & \ - ((value) << ILI9325_DISP_CTRL1_D_POS))) -#define ILI9325_DISP_CTRL1_CL (0x1u << 3) -#define ILI9325_DISP_CTRL1_DTE (0x1u << 4) -#define ILI9325_DISP_CTRL1_GON (0x1u << 5) -#define ILI9325_DISP_CTRL1_BASEE (0x1u << 8) -#define ILI9325_DISP_CTRL1_PTDE_POS 12 -#define ILI9325_DISP_CTRL1_PTDE_MSK (0x3u << ILI9325_DISP_CTRL1_PTDE_POS) -#define ILI9325_DISP_CTRL1_PTDE(value) ((ILI9325_DISP_CTRL1_PTDE_MSK & \ - ((value) << ILI9325_DISP_CTRL1_PTDE_POS))) - -/** ILI9325_DISP_CTRL2 : (Offset: 0x08) Display Control 2 */ -#define ILI9325_DISP_CTRL2 (0x08u) -#define ILI9325_DISP_CTRL2_BP_POS 0 -#define ILI9325_DISP_CTRL2_BP_MSK (0xfu << ILI9325_DISP_CTRL2_BP_POS) -#define ILI9325_DISP_CTRL2_BP(value) ((ILI9325_DISP_CTRL2_BP_MSK & \ - ((value) << ILI9325_DISP_CTRL2_BP_POS))) -#define ILI9325_DISP_CTRL2_FP_POS 8 -#define ILI9325_DISP_CTRL2_FP_MSK (0xfu << ILI9325_DISP_CTRL2_FP_POS) -#define ILI9325_DISP_CTRL2_FP(value) ((ILI9325_DISP_CTRL2_FP_MSK & \ - ((value) << ILI9325_DISP_CTRL2_FP_POS))) - -/** ILI9325_DISP_CTRL3 : (Offset: 0x09) Display Control 3 */ -#define ILI9325_DISP_CTRL3 (0x09u) -#define ILI9325_DISP_CTRL3_ISC_POS 0 -#define ILI9325_DISP_CTRL3_ISC_MSK (0xfu << ILI9325_DISP_CTRL3_ISC_POS) -#define ILI9325_DISP_CTRL3_ISC(value) ((ILI9325_DISP_CTRL3_ISC_MSK & \ - ((value) << ILI9325_DISP_CTRL3_ISC_POS))) -#define ILI9325_DISP_CTRL3_PTG_POS 4 -#define ILI9325_DISP_CTRL3_PTG_MSK (0x3u << ILI9325_DISP_CTRL3_PTG_POS) -#define ILI9325_DISP_CTRL3_PTG(value) ((ILI9325_DISP_CTRL3_PTG_MSK & \ - ((value) << ILI9325_DISP_CTRL3_PTG_POS))) -#define ILI9325_DISP_CTRL3_PTS_POS 8 -#define ILI9325_DISP_CTRL3_PTS_MSK (0x7u << ILI9325_DISP_CTRL3_PTS_POS) -#define ILI9325_DISP_CTRL3_PTS(value) ((ILI9325_DISP_CTRL3_PTS_MSK & \ - ((value) << ILI9325_DISP_CTRL3_PTS_POS))) - -/** ILI9325_DISP_CTRL4 : (Offset: 0x0A) Display Control 4 */ -#define ILI9325_DISP_CTRL4 (0x0Au) -#define ILI9325_DISP_CTRL4_FMI_POS 0 -#define ILI9325_DISP_CTRL4_FMI_MSK (0x7u << ILI9325_DISP_CTRL4_FMI_POS) -#define ILI9325_DISP_CTRL4_FMI(value) ((ILI9325_DISP_CTRL4_FMI_MSK & \ - ((value) << ILI9325_DISP_CTRL4_FMI_POS))) -#define ILI9325_DISP_CTRL4_FMARKOE (0x1u << 3) - -/** ILI9325_RGB_DISP_INTERFACE_CTRL1 : (Offset: 0x0C) RGB Display - *Interface Control 1 */ -#define ILI9325_RGB_DISP_INTERFACE_CTRL1 (0x0Cu) -#define ILI9325_RGB_DISP_INTERFACE_CTRL1_RIM_POS 0 -#define ILI9325_RGB_DISP_INTERFACE_CTRL1_RIM_MSK (0x3u << \ - ILI9325_RGB_DISP_INTERFACE_CTRL1_RIM_POS) -#define ILI9325_RGB_DISP_INTERFACE_CTRL1_RIM(value) (( \ - ILI9325_RGB_DISP_INTERFACE_CTRL1_RIM_MSK & \ - ((value) << ILI9325_RGB_DISP_INTERFACE_CTRL1_RIM_POS))) -#define ILI9325_RGB_DISP_INTERFACE_CTRL1_DM0 (0x1u << 4) -#define ILI9325_RGB_DISP_INTERFACE_CTRL1_DM1 (0x1u << 5) -#define ILI9325_RGB_DISP_INTERFACE_CTRL1_DM_POS 4 -#define ILI9325_RGB_DISP_INTERFACE_CTRL1_DM_MSK (0x3u << \ - ILI9325_RGB_DISP_INTERFACE_CTRL1_DM_POS) -#define ILI9325_RGB_DISP_INTERFACE_CTRL1_DM(value) (( \ - ILI9325_RGB_DISP_INTERFACE_CTRL1_DM_MSK & \ - ((value) << ILI9325_RGB_DISP_INTERFACE_CTRL1_DM_POS))) -#define ILI9325_RGB_DISP_INTERFACE_CTRL1_RM (0x1u << 8) -#define ILI9325_RGB_DISP_INTERFACE_CTRL1_ENC_POS 12 -#define ILI9325_RGB_DISP_INTERFACE_CTRL1_ENC_MSK (0x7u << \ - ILI9325_RGB_DISP_INTERFACE_CTRL1_ENC_POS) -#define ILI9325_RGB_DISP_INTERFACE_CTRL1_ENC(value) (( \ - ILI9325_RGB_DISP_INTERFACE_CTRL1_ENC_MSK & \ - ((value) < ILI9325_RGB_DISP_INTERFACE_CTRL1_ENC_POS))) - -/** ILI9325_FRAME_MAKER_POS : (Offset: 0x0D) Frame Maker Position */ -#define ILI9325_FRAME_MAKER_POS (0x0Du) -#define ILI9325_FRAME_MAKER_POS_FMP_POS 0 -#define ILI9325_FRAME_MAKER_POS_FMP_MSK (0x1ffu << \ - ILI9325_FRAME_MAKER_POS_FMP_POS) -#define ILI9325_FRAME_MAKER_POS_FMP(value) ((ILI9325_FRAME_MAKER_POS_FMP_MSK & \ - ((value) << ILI9325_FRAME_MAKER_POS_FMP_POS))) - -/** ILI9325_RGB_DISP_INTERFACE_CTRL2 : (Offset: 0x0F) RGB Display - * Interface Control 2 */ -#define ILI9325_RGB_DISP_INTERFACE_CTRL2 (0x0Fu) -#define ILI9325_RGB_DISP_INTERFACE_CTRL2_EPL (0x1u << 0) -#define ILI9325_RGB_DISP_INTERFACE_CTRL2_DPL (0x1u << 1) -#define ILI9325_RGB_DISP_INTERFACE_CTRL2_HSPL (0x1u << 3) -#define ILI9325_RGB_DISP_INTERFACE_CTRL2_VSPL (0x1u << 4) - -/** ILI9325_POWER_CTRL1 : (Offset: 0x10) Power Control 1 */ -#define ILI9325_POWER_CTRL1 (0x10u) -#define ILI9325_POWER_CTRL1_STB (0x1u << 0) -#define ILI9325_POWER_CTRL1_SLP (0x1u << 1) -#define ILI9325_POWER_CTRL1_DSTB (0x1u << 2) -#define ILI9325_POWER_CTRL1_AP_POS 4 -#define ILI9325_POWER_CTRL1_AP_MSK (0x7u << ILI9325_POWER_CTRL1_AP_POS) -#define ILI9325_POWER_CTRL1_AP(value) ((ILI9325_POWER_CTRL1_AP_MSK & \ - ((value) << ILI9325_POWER_CTRL1_AP_POS))) -#define ILI9325_POWER_CTRL1_APE (0x1u << 7) -#define ILI9325_POWER_CTRL1_BT_POS 8 -#define ILI9325_POWER_CTRL1_BT_MSK (0x7u << ILI9325_POWER_CTRL1_BT_POS) -#define ILI9325_POWER_CTRL1_BT(value) ((ILI9325_POWER_CTRL1_BT_MSK & \ - ((value) << ILI9325_POWER_CTRL1_BT_POS))) -#define ILI9325_POWER_CTRL1_SAP (0x1u << 12) - -/** ILI9325_POWER_CTRL2 : (Offset: 0x11) Power Control 2 */ -#define ILI9325_POWER_CTRL2 (0x11u) -#define ILI9325_POWER_CTRL2_VC_POS 0 -#define ILI9325_POWER_CTRL2_VC_MSK (0x7u << ILI9325_POWER_CTRL2_VC_POS) -#define ILI9325_POWER_CTRL2_VC(value) ((ILI9325_POWER_CTRL2_VC_MSK & \ - ((value) << ILI9325_POWER_CTRL2_VC_POS))) -#define ILI9325_POWER_CTRL2_DC0_POS 4 -#define ILI9325_POWER_CTRL2_DC0_MSK (0x7u << ILI9325_POWER_CTRL2_DC0_POS) -#define ILI9325_POWER_CTRL2_DC0(value) ((ILI9325_POWER_CTRL2_DC0_MSK & \ - ((value) << ILI9325_POWER_CTRL2_DC0_POS))) -#define ILI9325_POWER_CTRL2_DC1_POS 8 -#define ILI9325_POWER_CTRL2_DC1_MSK (0x7u << ILI9325_POWER_CTRL2_DC1_POS) -#define ILI9325_POWER_CTRL2_DC1(value) ((ILI9325_POWER_CTRL2_DC1_MSK & \ - ((value) << ILI9325_POWER_CTRL2_DC1_POS))) - -/** ILI9325_POWER_CTRL3 : (Offset: 0x12) Power Control 3 */ -#define ILI9325_POWER_CTRL3 (0x12u) -#define ILI9325_POWER_CTRL3_VRH_POS 0 -#define ILI9325_POWER_CTRL3_VRH_MSK (0xfu << ILI9325_POWER_CTRL3_VRH_POS) -#define ILI9325_POWER_CTRL3_VRH(value) ((ILI9325_POWER_CTRL3_VRH_MSK & \ - ((value) << ILI9325_POWER_CTRL3_VRH_POS))) -#define ILI9325_POWER_CTRL3_PON (0x1u << 4) -#define ILI9325_POWER_CTRL3_VCIRE (0x1u << 7) - -/** ILI9325_POWER_CTRL4 : (Offset: 0x13) Power Control 4 */ -#define ILI9325_POWER_CTRL4 (0x13u) -#define ILI9325_POWER_CTRL4_VDV_POS 8 -#define ILI9325_POWER_CTRL4_VDV_MSK (0x1fu << ILI9325_POWER_CTRL4_VDV_POS) -#define ILI9325_POWER_CTRL4_VDV(value) ((ILI9325_POWER_CTRL4_VDV_MSK & \ - ((value) << ILI9325_POWER_CTRL4_VDV_POS))) - -/** ILI9325_HORIZONTAL_GRAM_ADDR_SET : (Offset: 0x20) Horizontal GRAM - * Address Set */ -#define ILI9325_HORIZONTAL_GRAM_ADDR_SET (0x20u) -#define ILI9325_HORIZONTAL_GRAM_ADDR_SET_AD_POS 0 -#define ILI9325_HORIZONTAL_GRAM_ADDR_SET_AD_MSK (0xffu << \ - ILI9325_HORIZONTAL_GRAM_ADDR_SET_AD_POS) -#define ILI9325_HORIZONTAL_GRAM_ADDR_SET_AD(value) (( \ - ILI9325_HORIZONTAL_GRAM_ADDR_SET_AD_MSK & \ - ((value) << ILI9325_HORIZONTAL_GRAM_ADDR_SET_AD_POS))) - -/** ILI9325_VERTICAL_GRAM_ADDR_SET : (Offset: 0x21) Vertical GRAM - * Address Set */ -#define ILI9325_VERTICAL_GRAM_ADDR_SET (0x21u) -#define ILI9325_VERTICAL_GRAM_ADDR_SET_AD_POS 0 -#define ILI9325_VERTICAL_GRAM_ADDR_SET_AD_MSK (0xffu << \ - ILI9325_VERTICAL_GRAM_ADDR_SET_AD_POS) -#define ILI9325_VERTICAL_GRAM_ADDR_SET_AD(value) (( \ - ILI9325_VERTICAL_GRAM_ADDR_SET_AD_MSK & \ - ((value) << ILI9325_VERTICAL_GRAM_ADDR_SET_AD_POS))) - -/** ILI9325_GRAM_DATA_REG : (Offset: 0x22) GRAM Data Register */ -#define ILI9325_GRAM_DATA_REG (0x22u) - -/** ILI9325_POWER_CTRL7 : (Offset: 0x29) Power Control 7 */ -#define ILI9325_POWER_CTRL7 (0x29u) -#define ILI9325_POWER_CTRL7_VCM_POS 0 -#define ILI9325_POWER_CTRL7_VCM_MSK (0x3fu << ILI9325_POWER_CTRL7_VCM_POS) -#define ILI9325_POWER_CTRL7_VCM(value) ((ILI9325_POWER_CTRL7_VCM_MSK & \ - ((value) << ILI9325_POWER_CTRL7_VCM_POS))) - -/** ILI9325_FRAME_RATE_AND_COLOR_CTRL : (Offset: 0x2B) Frame Rate and - * Color Control */ -#define ILI9325_FRAME_RATE_AND_COLOR_CTRL (0x2Bu) -#define ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS_POS 0 -#define ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS_MSK (0xfu << \ - ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS_POS) -#define ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS(value) (( \ - ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS_MSK & \ - ((value) << ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS_POS))) - -/** ILI9325_GAMMA_CTL1 : (Offset: 0x30) Gamma Control 1 */ -#define ILI9325_GAMMA_CTL1 (0x30u) -#define ILI9325_GAMMA_CTL1_KP0_POS 0 -#define ILI9325_GAMMA_CTL1_KP0_MSK (0x7u << ILI9325_GAMMA_CTL1_KP0_POS) -#define ILI9325_GAMMA_CTL1_KP0(value) ((ILI9325_GAMMA_CTL1_KP0_MSK & \ - ((value) << ILI9325_GAMMA_CTL1_KP0_POS))) -#define ILI9325_GAMMA_CTL1_KP1_POS 8 -#define ILI9325_GAMMA_CTL1_KP1_MSK (0x7u << ILI9325_GAMMA_CTL1_KP1_POS) -#define ILI9325_GAMMA_CTL1_KP1(value) ((ILI9325_GAMMA_CTL1_KP1_MSK & \ - ((value) << ILI9325_GAMMA_CTL1_KP1_POS))) - -/** ILI9325_GAMMA_CTL2 : (Offset: 0x31) Gamma Control 2 */ -#define ILI9325_GAMMA_CTL2 (0x31u) -#define ILI9325_GAMMA_CTL2_KP2_POS 0 -#define ILI9325_GAMMA_CTL2_KP2_MSK (0x7u << ILI9325_GAMMA_CTL2_KP2_POS) -#define ILI9325_GAMMA_CTL2_KP2(value) ((ILI9325_GAMMA_CTL2_KP2_MSK & \ - ((value) << ILI9325_GAMMA_CTL2_KP2_POS))) -#define ILI9325_GAMMA_CTL2_KP3_POS 8 -#define ILI9325_GAMMA_CTL2_KP3_MSK (0x7u << ILI9325_GAMMA_CTL2_KP3_POS) -#define ILI9325_GAMMA_CTL2_KP3(value) ((ILI9325_GAMMA_CTL2_KP3_MSK & \ - ((value) << ILI9325_GAMMA_CTL2_KP3_POS))) - -/** ILI9325_GAMMA_CTL3 : (Offset: 0x32) Gamma Control 3 */ -#define ILI9325_GAMMA_CTL3 (0x32u) -#define ILI9325_GAMMA_CTL3_KP4_POS 0 -#define ILI9325_GAMMA_CTL3_KP4_MSK (0x7u << ILI9325_GAMMA_CTL3_KP4_POS) -#define ILI9325_GAMMA_CTL3_KP4(value) ((ILI9325_GAMMA_CTL3_KP4_MSK & \ - ((value) << ILI9325_GAMMA_CTL3_KP4_POS))) -#define ILI9325_GAMMA_CTL3_KP5_POS 8 -#define ILI9325_GAMMA_CTL3_KP5_MSK (0x7u << ILI9325_GAMMA_CTL3_KP5_POS) -#define ILI9325_GAMMA_CTL3_KP5(value) ((ILI9325_GAMMA_CTL3_KP5_MSK & \ - ((value) << ILI9325_GAMMA_CTL3_KP5_POS))) - -/** ILI9325_GAMMA_CTL4 : (Offset: 0x35) Gamma Control 4 */ -#define ILI9325_GAMMA_CTL4 (0x35u) -#define ILI9325_GAMMA_CTL4_RP0_POS 0 -#define ILI9325_GAMMA_CTL4_RP0_MSK (0x7u << ILI9325_GAMMA_CTL4_RP0_POS) -#define ILI9325_GAMMA_CTL4_RP0(value) ((ILI9325_GAMMA_CTL4_RP0_MSK & \ - ((value) << ILI9325_GAMMA_CTL4_RP0_POS))) -#define ILI9325_GAMMA_CTL4_RP1_POS 8 -#define ILI9325_GAMMA_CTL4_RP1_MSK (0x7u << ILI9325_GAMMA_CTL4_RP1_POS) -#define ILI9325_GAMMA_CTL4_RP1(value) ((ILI9325_GAMMA_CTL4_RP1_MSK & \ - ((value) << ILI9325_GAMMA_CTL4_RP1_POS))) - -/** ILI9325_GAMMA_CTL5 : (Offset: 0x36) Gamma Control 5 */ -#define ILI9325_GAMMA_CTL5 (0x36u) -#define ILI9325_GAMMA_CTL5_VRP0_POS 0 -#define ILI9325_GAMMA_CTL5_VRP0_MSK (0xfu << ILI9325_GAMMA_CTL5_VRP0_POS) -#define ILI9325_GAMMA_CTL5_VRP0(value) ((ILI9325_GAMMA_CTL5_VRP0_MSK & \ - ((value) << ILI9325_GAMMA_CTL5_VRP0_POS))) -#define ILI9325_GAMMA_CTL5_VRP1_POS 8 -#define ILI9325_GAMMA_CTL5_VRP1_MSK (0x1fu << ILI9325_GAMMA_CTL5_VRP1_POS) -#define ILI9325_GAMMA_CTL5_VRP1(value) ((ILI9325_GAMMA_CTL5_VRP1_MSK & \ - ((value) << ILI9325_GAMMA_CTL5_VRP1_POS))) - -/** ILI9325_GAMMA_CTL6 : (Offset: 0x37) Gamma Control 6*/ -#define ILI9325_GAMMA_CTL6 (0x37u) -#define ILI9325_GAMMA_CTL6_KN0_POS 0 -#define ILI9325_GAMMA_CTL6_KN0_MSK (0x7u << ILI9325_GAMMA_CTL6_KN0_POS) -#define ILI9325_GAMMA_CTL6_KN0(value) ((ILI9325_GAMMA_CTL6_KN0_MSK & \ - ((value) << ILI9325_GAMMA_CTL6_KN0_POS))) -#define ILI9325_GAMMA_CTL6_KN1_POS 8 -#define ILI9325_GAMMA_CTL6_KN1_MSK (0x7u << ILI9325_GAMMA_CTL6_KN1_POS) -#define ILI9325_GAMMA_CTL6_KN1(value) ((ILI9325_GAMMA_CTL6_KN1_MSK \ - & ((value) << ILI9325_GAMMA_CTL6_KN1_POS))) - -/** ILI9325_GAMMA_CTL7 : (Offset: 0x38) Gamma Control 7*/ -#define ILI9325_GAMMA_CTL7 (0x38u) -#define ILI9325_GAMMA_CTL7_KN2_POS 0 -#define ILI9325_GAMMA_CTL7_KN2_MSK (0x7u << ILI9325_GAMMA_CTL7_KN2_POS) -#define ILI9325_GAMMA_CTL7_KN2(value) ((ILI9325_GAMMA_CTL7_KN2_MSK & \ - ((value) << ILI9325_GAMMA_CTL7_KN2_POS))) -#define ILI9325_GAMMA_CTL7_KN3_POS 8 -#define ILI9325_GAMMA_CTL7_KN3_MSK (0x7u << ILI9325_GAMMA_CTL7_KN3_POS) -#define ILI9325_GAMMA_CTL7_KN3(value) ((ILI9325_GAMMA_CTL7_KN3_MSK & \ - ((value) << ILI9325_GAMMA_CTL7_KN3_POS))) - -/** ILI9325_GAMMA_CTL8 : (Offset: 0x39) Gamma Control 8*/ -#define ILI9325_GAMMA_CTL8 (0x39u) -#define ILI9325_GAMMA_CTL8_KN4_POS 0 -#define ILI9325_GAMMA_CTL8_KN4_MSK (0x7u << ILI9325_GAMMA_CTL8_KN4_POS) -#define ILI9325_GAMMA_CTL8_KN4(value) ((ILI9325_GAMMA_CTL8_KN4_MSK & \ - ((value) << ILI9325_GAMMA_CTL8_KN4_POS))) -#define ILI9325_GAMMA_CTL8_KN5_POS 8 -#define ILI9325_GAMMA_CTL8_KN5_MSK (0x7u << ILI9325_GAMMA_CTL8_KN5_POS) -#define ILI9325_GAMMA_CTL8_KN5(value) ((ILI9325_GAMMA_CTL8_KN5_MSK & \ - ((value) << ILI9325_GAMMA_CTL8_KN5_POS))) - -/** ILI9325_GAMMA_CTL9 : (Offset: 0x3C) Gamma Control 9*/ -#define ILI9325_GAMMA_CTL9 (0x3Cu) -#define ILI9325_GAMMA_CTL9_RN0_POS 0 -#define ILI9325_GAMMA_CTL9_RN0_MSK (0x7u << ILI9325_GAMMA_CTL9_RN0_POS) -#define ILI9325_GAMMA_CTL9_RN0(value) ((ILI9325_GAMMA_CTL9_RN0_MSK & \ - ((value) << ILI9325_GAMMA_CTL9_RN0_POS))) -#define ILI9325_GAMMA_CTL9_RN1_POS 8 -#define ILI9325_GAMMA_CTL9_RN1_MSK (0x7u << ILI9325_GAMMA_CTL9_RN1_POS) -#define ILI9325_GAMMA_CTL9_RN1(value) ((ILI9325_GAMMA_CTL9_RN1_MSK & \ - ((value) << ILI9325_GAMMA_CTL9_RN1_POS))) - -/** ILI9325_GAMMA_CTL10 : (Offset: 0x3D) Gamma Control 10*/ -#define ILI9325_GAMMA_CTL10 (0x3Du) -#define ILI9325_GAMMA_CTL10_VRN0_POS 0 -#define ILI9325_GAMMA_CTL10_VRN0_MSK (0xfu << ILI9325_GAMMA_CTL10_VRN0_POS) -#define ILI9325_GAMMA_CTL10_VRN0(value) ((ILI9325_GAMMA_CTL10_VRN0_MSK & \ - ((value) << ILI9325_GAMMA_CTL10_VRN0_POS))) -#define ILI9325_GAMMA_CTL10_VRN1_POS 8 -#define ILI9325_GAMMA_CTL10_VRN1_MSK (0x1fu << \ - ILI9325_GAMMA_CTL10_VRN1_POS) -#define ILI9325_GAMMA_CTL10_VRN1(value) ((ILI9325_GAMMA_CTL10_VRN1_MSK & \ - ((value) << ILI9325_GAMMA_CTL10_VRN1_POS))) - -/** - * ILI9325_HORIZONTAL_ADDR_START : (Offset: 0x50) Horizontal Address - * Start Position - */ -#define ILI9325_HORIZONTAL_ADDR_START (0x50u) -#define ILI9325_HORIZONTAL_ADDR_START_HSA_POS 0 -#define ILI9325_HORIZONTAL_ADDR_START_HSA_MSK (0xffu << \ - ILI9325_HORIZONTAL_ADDR_START_HSA_POS) -#define ILI9325_HORIZONTAL_ADDR_START_HSA(value) (( \ - ILI9325_HORIZONTAL_ADDR_START_HSA_MSK & \ - ((value) << ILI9325_HORIZONTAL_ADDR_START_HSA_POS))) - -/** - * ILI9325_HORIZONTAL_ADDR_END : (Offset: 0x51) Horizontal Address End - * Position - */ -#define ILI9325_HORIZONTAL_ADDR_END (0x51u) -#define ILI9325_HORIZONTAL_ADDR_END_HEA_POS 0 -#define ILI9325_HORIZONTAL_ADDR_END_HEA_MSK (0xffu << \ - ILI9325_HORIZONTAL_ADDR_END_HEA_POS) -#define ILI9325_HORIZONTAL_ADDR_END_HEA(value) (( \ - ILI9325_HORIZONTAL_ADDR_END_HEA_MSK & \ - ((value) << ILI9325_HORIZONTAL_ADDR_END_HEA_POS))) - -/** - * ILI9325_VERTICAL_ADDR_START : (Offset: 0x52) Vertical Address Start - * Position - */ -#define ILI9325_VERTICAL_ADDR_START (0x52u) -#define ILI9325_VERTICAL_ADDR_START_VSA_POS 0 -#define ILI9325_VERTICAL_ADDR_START_VSA_MSK (0x1ffu << \ - ILI9325_VERTICAL_ADDR_START_VSA_POS) -#define ILI9325_VERTICAL_ADDR_START_VSA(value) (( \ - ILI9325_VERTICAL_ADDR_START_VSA_MSK & \ - ((value) << ILI9325_VERTICAL_ADDR_START_VSA_POS))) - -/** - * ILI9325_VERTICAL_ADDR_END : (Offset: 0x53) Vertical Address End - * Position - */ -#define ILI9325_VERTICAL_ADDR_END (0x53u) -#define ILI9325_VERTICAL_ADDR_END_VEA_POS 0 -#define ILI9325_VERTICAL_ADDR_END_VEA_MSK (0x1ffu << \ - ILI9325_VERTICAL_ADDR_END_VEA_POS) -#define ILI9325_VERTICAL_ADDR_END_VEA(value) ((ILI9325_VERTICAL_ADDR_END_VEA_MSK \ - & ((value) << ILI9325_VERTICAL_ADDR_END_VEA_POS))) - -/** - * ILI9325_DRIVER_OUTPUT_CTRL2 : (Offset: 0x60) Driver Output - * Control 2 - */ -#define ILI9325_DRIVER_OUTPUT_CTRL2 (0x60u) -#define ILI9325_DRIVER_OUTPUT_CTRL2_SCN_POS 0 -#define ILI9325_DRIVER_OUTPUT_CTRL2_SCN_MSK (0x3fu << \ - ILI9325_DRIVER_OUTPUT_CTRL2_SCN_POS) -#define ILI9325_DRIVER_OUTPUT_CTRL2_SCN(value) (( \ - ILI9325_DRIVER_OUTPUT_CTRL2_SCN_MSK & \ - ((value) << ILI9325_DRIVER_OUTPUT_CTRL2_SCN_POS))) -#define ILI9325_DRIVER_OUTPUT_CTRL2_NL_POS 8 -#define ILI9325_DRIVER_OUTPUT_CTRL2_NL_MSK (0x3fu << \ - ILI9325_DRIVER_OUTPUT_CTRL2_NL_POS) -#define ILI9325_DRIVER_OUTPUT_CTRL2_NL(value) (( \ - ILI9325_DRIVER_OUTPUT_CTRL2_NL_MSK & \ - ((value) << ILI9325_DRIVER_OUTPUT_CTRL2_NL_POS))) -#define ILI9325_DRIVER_OUTPUT_CTRL2_GS (0x1u << 15) - -/** - * ILI9325_BASE_IMG_DISP_CTRL : (Offset: 0x61) Base Image Display - * Control - */ -#define ILI9325_BASE_IMG_DISP_CTRL (0x61u) -#define ILI9325_BASE_IMG_DISP_CTRL_REV (0x1u << 0) -#define ILI9325_BASE_IMG_DISP_CTRL_VLE (0x1u << 1) -#define ILI9325_BASE_IMG_DISP_CTRL_NDL (0x1u << 2) - -/** - * ILI9325_VERTICAL_SCROLL_CTRL : (Offset: 0x6A) Vertical Scroll - * Control - */ -#define ILI9325_VERTICAL_SCROLL_CTRL (0x6Au) -#define ILI9325_VERTICAL_SCROLL_CTRL_VL_POS 0 -#define ILI9325_VERTICAL_SCROLL_CTRL_VL_MSK (0x1ffu << \ - ILI9325_VERTICAL_SCROLL_CTRL_VL_POS) -#define ILI9325_VERTICAL_SCROLL_CTRL_VL(value) (( \ - ILI9325_VERTICAL_SCROLL_CTRL_VL_MSK & \ - ((value) << ILI9325_VERTICAL_SCROLL_CTRL_VL_POS))) - -/** - * ILI9325_PARTIAL_IMG1_DISP_POS : (Offset: 0x80) Partial Image 1 - * Display Position - */ -#define ILI9325_PARTIAL_IMG1_DISP_POS (0x80u) -#define ILI9325_PARTIAL_IMG1_DISP_POS_PTDP0_POS 0 -#define ILI9325_PARTIAL_IMG1_DISP_POS_PTDP0_MSK (0x1ffu << \ - ILI9325_PARTIAL_IMG1_DISP_POS_PTDP0_POS) -#define ILI9325_PARTIAL_IMG1_DISP_POS_PTDP0(value) (( \ - ILI9325_PARTIAL_IMG1_DISP_POS_PTDP0_MSK & \ - ((value) << ILI9325_PARTIAL_IMG1_DISP_POS_PTDP0_POS))) - -/** - * ILI9325_PARTIAL_IMG1_AREA_START_LINE : (Offset: 0x81) Partial Image - * 1 Area (Start Line) - */ -#define ILI9325_PARTIAL_IMG1_AREA_START_LINE (0x81u) -#define ILI9325_PARTIAL_IMG1_AREA_START_LINE_PTSA0_POS 0 -#define ILI9325_PARTIAL_IMG1_AREA_START_LINE_PTSA0_MSK (0x1ffu << \ - ILI9325_PARTIAL_IMG1_AREA_START_LINE_PTSA0_POS) -#define ILI9325_PARTIAL_IMG1_AREA_START_LINE_PTSA0(value) (( \ - ILI9325_PARTIAL_IMG1_AREA_START_LINE_PTSA0_MSK & \ - ((value) << \ - ILI9325_PARTIAL_IMG1_AREA_START_LINE_PTSA0_POS))) - -/** - * ILI9325_PARTIAL_IMG1_AREA_END_LINE : (Offset: 0x82) Partial Image 1 - * Area (End Line) - */ -#define ILI9325_PARTIAL_IMG1_AREA_END_LINE (0x82u) -#define ILI9325_PARTIAL_IMG1_AREA_END_LINE_PTEA0_POS 0 -#define ILI9325_PARTIAL_IMG1_AREA_END_LINE_PTEA0_MSK (0x1ffu << \ - ILI9325_PARTIAL_IMG1_AREA_END_LINE_PTEA0_POS) -#define ILI9325_PARTIAL_IMG1_AREA_END_LINE_PTEA0(value) (( \ - ILI9325_PARTIAL_IMG1_AREA_END_LINE_PTEA0_MSK & \ - ((value) << \ - ILI9325_PARTIAL_IMG1_AREA_END_LINE_PTEA0_POS))) - -/** - * ILI9325_PARTIAL_IMG2_DISP_POS : (Offset: 0x83) Partial Image 2 - * Display Position - */ -#define ILI9325_PARTIAL_IMG2_DISP_POS (0x83u) -#define ILI9325_PARTIAL_IMG2_DISP_POS_PTDP1_POS 0 -#define ILI9325_PARTIAL_IMG2_DISP_POS_PTDP1_MSK (0x1ffu << \ - ILI9325_PARTIAL_IMG2_DISP_POS_PTDP1_POS) -#define ILI9325_PARTIAL_IMG2_DISP_POS_PTDP1(value) (( \ - ILI9325_PARTIAL_IMG2_DISP_POS_PTDP1_MSK & \ - ((value) << ILI9325_PARTIAL_IMG2_DISP_POS_PTDP1_POS))) - -/** - * ILI9325_PARTIAL_IMG2_AREA_START_LINE : (Offset: 0x84) Partial Image - * 2 Area (Start Line) - */ -#define ILI9325_PARTIAL_IMG2_AREA_START_LINE (0x84u) -#define ILI9325_PARTIAL_IMG2_AREA_START_LINE_PTSA1_POS 0 -#define ILI9325_PARTIAL_IMG2_AREA_START_LINE_PTSA1_MSK (0x1ffu << \ - ILI9325_PARTIAL_IMG2_AREA_START_LINE_PTSA1_POS) -#define ILI9325_PARTIAL_IMG2_AREA_START_LINE_PTSA1(value) (( \ - ILI9325_PARTIAL_IMG2_AREA_START_LINE_PTSA1_MSK & \ - ((value) << \ - ILI9325_PARTIAL_IMG2_AREA_START_LINE_PTSA1_POS))) - -/** - * ILI9325_PARTIAL_IMG2_AREA_END_LINE : (Offset: 0x85) Partial Image 2 - * Area (End Line) - */ -#define ILI9325_PARTIAL_IMG2_AREA_END_LINE (0x85u) -#define ILI9325_PARTIAL_IMG2_AREA_END_LINE_PTEA1_POS 0 -#define ILI9325_PARTIAL_IMG2_AREA_END_LINE_PTEA1_MSK (0x1ffu << \ - ILI9325_PARTIAL_IMG2_AREA_END_LINE_PTEA1_POS) -#define ILI9325_PARTIAL_IMG2_AREA_END_LINE_PTEA1(value) (( \ - ILI9325_PARTIAL_IMG2_AREA_END_LINE_PTEA1_MSK & \ - ((value) << \ - ILI9325_PARTIAL_IMG2_AREA_END_LINE_PTEA1_POS))) - -/** - * ILI9325_PANEL_INTERFACE_CTRL1 : (Offset: 0x90) Panel Interface - * Control 1 - */ -#define ILI9325_PANEL_INTERFACE_CTRL1 (0x90u) -#define ILI9325_PANEL_INTERFACE_CTRL1_RTNI_POS 0 -#define ILI9325_PANEL_INTERFACE_CTRL1_RTNI_MSK (0x1fu << \ - ILI9325_PANEL_INTERFACE_CTRL1_RTNI_POS) -#define ILI9325_PANEL_INTERFACE_CTRL1_RTNI(value) (( \ - ILI9325_PANEL_INTERFACE_CTRL1_RTNI_MSK & \ - ((value) << ILI9325_PANEL_INTERFACE_CTRL1_RTNI_POS))) -#define ILI9325_PANEL_INTERFACE_CTRL1_DIVI_POS 8 -#define ILI9325_PANEL_INTERFACE_CTRL1_DIVI_MSK (0x3u << \ - ILI9325_PANEL_INTERFACE_CTRL1_DIVI_POS) -#define ILI9325_PANEL_INTERFACE_CTRL1_DIVI(value) (( \ - ILI9325_PANEL_INTERFACE_CTRL1_DIVI_MSK & \ - ((value) << ILI9325_PANEL_INTERFACE_CTRL1_DIVI_POS))) - -/** - * ILI9325_PANEL_INTERFACE_CTRL2 : (Offset: 0x92) Panel Interface - * Control 2 - */ -#define ILI9325_PANEL_INTERFACE_CTRL2 (0x92u) -#define ILI9325_PANEL_INTERFACE_CTRL2_NOWI_POS 8 -#define ILI9325_PANEL_INTERFACE_CTRL2_NOWI_MSK (0x7u << \ - ILI9325_PANEL_INTERFACE_CTRL2_NOWI_POS) -#define ILI9325_PANEL_INTERFACE_CTRL2_NOWI(value) (( \ - ILI9325_PANEL_INTERFACE_CTRL2_NOWI_MSK & \ - ((value) << ILI9325_PANEL_INTERFACE_CTRL2_NOWI_POS))) - -/** - * ILI9325_PANEL_INTERFACE_CTRL4 : (Offset: 0x95) Panel Interface - * Control 4 - */ -#define ILI9325_PANEL_INTERFACE_CTRL4 (0x95u) -#define ILI9325_PANEL_INTERFACE_CTRL4_RTNE_POS 0 -#define ILI9325_PANEL_INTERFACE_CTRL4_RTNE_MSK (0x3fu << \ - ILI9325_PANEL_INTERFACE_CTRL4_RTNE_POS) -#define ILI9325_PANEL_INTERFACE_CTRL4_RTNE(value) (( \ - ILI9325_PANEL_INTERFACE_CTRL4_RTNE_MSK & \ - ((value) << ILI9325_PANEL_INTERFACE_CTRL4_RTNE_POS))) -#define ILI9325_PANEL_INTERFACE_CTRL4_DIVE_POS 8 -#define ILI9325_PANEL_INTERFACE_CTRL4_DIVE_MSK (0x3u << \ - ILI9325_PANEL_INTERFACE_CTRL4_DIVE_POS) -#define ILI9325_PANEL_INTERFACE_CTRL4_DIVE(value) (( \ - ILI9325_PANEL_INTERFACE_CTRL4_DIVE_MSK & \ - ((value) << ILI9325_PANEL_INTERFACE_CTRL4_DIVE_POS))) - -/** ILI9325_OTP_VCM_PROG_CTRL : (Offset: 0xA1) OTP VCM Programming Control */ -#define ILI9325_OTP_VCM_PROG_CTRL (0xA1u) -#define ILI9325_OTP_VCM_PROG_CTRL_VCM_OTP_POS 0 -#define ILI9325_OTP_VCM_PROG_CTRL_VCM_OTP_MSK (0x3fu << \ - ILI9325_OTP_VCM_PROG_CTRL_VCM_OTP_POS) -#define ILI9325_OTP_VCM_PROG_CTRL_VCM_OTP(value) (( \ - ILI9325_OTP_VCM_PROG_CTRL_VCM_OTP_MSK & \ - ((value) << ILI9325_OTP_VCM_PROG_CTRL_VCM_OTP_POS))) -#define ILI9325_OTP_VCM_PROG_CTRL_OTP_PGM_EN (0x1u << 11) - -/** ILI9325_OTP_VCM_STATUS_AND_ENABLE : (Offset: 0xA2) OTP VCM Status - * and Enable */ -#define ILI9325_OTP_VCM_STATUS_AND_ENABLE (0xA2u) -#define ILI9325_OTP_VCM_STATUS_AND_ENABLE_VCM_EN (0x1u << 0) -#define ILI9325_OTP_VCM_STATUS_AND_ENABLE_VCM_D_POS 8 -#define ILI9325_OTP_VCM_STATUS_AND_ENABLE_VCM_D_MSK (0x3fu << \ - ILI9325_OTP_VCM_STATUS_AND_ENABLE_VCM_D_POS) -#define ILI9325_OTP_VCM_STATUS_AND_ENABLE_VCM_D(value) (( \ - ILI9325_OTP_VCM_STATUS_AND_ENABLE_VCM_D_MSK & ((value) << \ - ILI9325_OTP_VCM_STATUS_AND_ENABLE_VCM_D_POS))) -#define ILI9325_OTP_VCM_STATUS_AND_ENABLE_PGM_CNT_POS 14 -#define ILI9325_OTP_VCM_STATUS_AND_ENABLE_PGM_CNT_MSK (0x3u << \ - ILI9325_OTP_VCM_STATUS_AND_ENABLE_PGM_CNT_POS) -#define ILI9325_OTP_VCM_STATUS_AND_ENABLE_PGM_CNT(value) (( \ - ILI9325_OTP_VCM_STATUS_AND_ENABLE_PGM_CNT_MSK & \ - ((value) << \ - IILI9325_OTP_VCM_STATUS_AND_ENABLE_PGM_CNT_POS))) - -/** ILI9325_OTP_PROG_ID_KEY : (Offset: 0xA5) OTP Programming ID Key */ -#define ILI9325_OTP_PROG_ID_KEY (0xA5u) -#define ILI9325_OTP_PROG_ID_KEY_KEY_POS 0 -#define ILI9325_OTP_PROG_ID_KEY_KEY_MSK (0xffffu << \ - ILI9325_OTP_PROG_ID_KEY_KEY_POS) -#define ILI9325_OTP_PROG_ID_KEY_KEY(value) ((ILI9325_OTP_PROG_ID_KEY_KEY_MSK & \ - ((value) << ILI9325_OTP_PROG_ID_KEY_KEY_POS))) - -/** @cond 0 */ -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/** @endcond */ - -#endif /* ILI9325_REGS_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili9341_regs.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili9341_regs.h deleted file mode 100644 index ccbff8088..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili9341_regs.h +++ /dev/null @@ -1,245 +0,0 @@ -/** - * \file - * - * \brief registers definition for ili9341 TFT display component. - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef ILI9341_REGS_H_INCLUDED -#define ILI9341_REGS_H_INCLUDED - -/** @cond 0 */ -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/** @endcond */ - -/** ili9341 LCD Registers */ - -/** Level 1 Commands (from the display Datasheet) */ -/** Nop operation*/ -#define ILI9341_CMD_NOP 0x00 -/** Software reset*/ -#define ILI9341_CMD_SOFTWARE_RESET 0x01 -/** Read Display Identification information*/ -#define ILI9341_CMD_READ_DISP_ID 0x04 -/** Read display status*/ -#define ILI9341_CMD_READ_DISP_STATUS 0x09 -/** Read display power mode*/ -#define ILI9341_CMD_READ_DISP_POWER_MODE 0x0A -/** Read display MADCTL*/ -#define ILI9341_CMD_READ_DISP_MADCTRL 0x0B -/** Read display pixel format*/ -#define ILI9341_CMD_READ_DISP_PIXEL_FORMAT 0x0C -/** Read display image format*/ -#define ILI9341_CMD_READ_DISP_IMAGE_FORMAT 0x0D -/** Read display signal mode*/ -#define ILI9341_CMD_READ_DISP_SIGNAL_MODE 0x0E -/** read display self-diagnostic resutl*/ -#define ILI9341_CMD_READ_DISP_SELF_DIAGNOSTIC 0x0F -/** Enter sleep mode*/ -#define ILI9341_CMD_ENTER_SLEEP_MODE 0x10 -/** Sleep out*/ -#define ILI9341_CMD_SLEEP_OUT 0x11 -/** Partial mode on*/ -#define ILI9341_CMD_PARTIAL_MODE_ON 0x12 -/** Normal display mode on*/ -#define ILI9341_CMD_NORMAL_DISP_MODE_ON 0x13 -/** Display inversion off*/ -#define ILI9341_CMD_DISP_INVERSION_OFF 0x20 -/** Display inversion on*/ -#define ILI9341_CMD_DISP_INVERSION_ON 0x21 -/** Gamma set*/ -#define ILI9341_CMD_GAMMA_SET 0x26 -/** Display off*/ -#define ILI9341_CMD_DISPLAY_OFF 0x28 -/** Display on*/ -#define ILI9341_CMD_DISPLAY_ON 0x29 -/** Column address set*/ -#define ILI9341_CMD_COLUMN_ADDRESS_SET 0x2A -/** Page address set*/ -#define ILI9341_CMD_PAGE_ADDRESS_SET 0x2B -/** Memory write*/ -#define ILI9341_CMD_MEMORY_WRITE 0x2C -/** Color set*/ -#define ILI9341_CMD_COLOR_SET 0x2D -/** Memory read*/ -#define ILI9341_CMD_MEMORY_READ 0x2E -/** Partial area*/ -#define ILI9341_CMD_PARTIAL_AREA 0x30 -/** Vertical scrolling definition*/ -#define ILI9341_CMD_VERT_SCROLL_DEFINITION 0x33 -/** Tearing effect line off*/ -#define ILI9341_CMD_TEARING_EFFECT_LINE_OFF 0x34 -/** Tearing effect line on*/ -#define ILI9341_CMD_TEARING_EFFECT_LINE_ON 0x35 - -/** Memory Access control*/ -#define ILI9341_CMD_MEMORY_ACCESS_CONTROL 0x36 -#define ILI9341_CMD_MEMORY_ACCESS_CONTROL_MY (0x1u << 7) -#define ILI9341_CMD_MEMORY_ACCESS_CONTROL_MX (0x1u << 6) -#define ILI9341_CMD_MEMORY_ACCESS_CONTROL_MV (0x1u << 5) -#define ILI9341_CMD_MEMORY_ACCESS_CONTROL_ML (0x1u << 4) -#define ILI9341_CMD_MEMORY_ACCESS_CONTROL_BGR (0x1u << 3) -#define ILI9341_CMD_MEMORY_ACCESS_CONTROL_MH (0x1u << 2) - -/** Vetical scrolling start address*/ -#define ILI9341_CMD_VERT_SCROLL_START_ADDRESS 0x37 -/** Idle mode off*/ -#define ILI9341_CMD_IDLE_MODE_OFF 0x38 -/** Idle mode on*/ -#define ILI9341_CMD_IDLE_MODE_ON 0x39 -/** Pixel Format set*/ -#define ILI9341_CMD_PIXEL_FORMAT_SET 0x3A -/** write memory continue*/ -#define ILI9341_CMD_WRITE_MEMORY_CONTINUE 0x3C -/** Read memory continue*/ -#define ILI9341_CMD_READ_MEMORY_CONTINUE 0x3E -/** set tear scanline*/ -#define ILI9341_CMD_SET_TEAR_SCANLINE 0x44 -/** get scanline*/ -#define ILI9341_CMD_GET_SCANLINE 0x45 -/** write display brightness*/ -#define ILI9341_CMD_WRITE_DISPLAY_BRIGHTNESS 0x51 -/** read display brightness*/ -#define ILI9341_CMD_READ_DISPLAY_BRIGHTNESS 0x52 -/** write control display*/ -#define ILI9341_CMD_WRITE_CTRL_DISPLAY 0x53 -/** read control display*/ -#define ILI9341_CMD_READ_CTRL_DISPLAY 0x54 -/** write content adaptive brightness control*/ -#define ILI9341_CMD_WRITE_CONTENT_ADAPT_BRIGHTNESS 0x55 -/** read content adaptive brightness control*/ -#define ILI9341_CMD_READ_CONTENT_ADAPT_BRIGHTNESS 0x56 -/** write CABC minimum brightness*/ -#define ILI9341_CMD_WRITE_MIN_CAB_LEVEL 0x5E -/** read CABC minimum brightness*/ -#define ILI9341_CMD_READ_MIN_CAB_LEVEL 0x5F -/** Read ID1*/ -#define ILI9341_CMD_READ_ID1 0xDA -/** Read ID2*/ -#define ILI9341_CMD_READ_ID2 0xDB -/** Read ID3*/ -#define ILI9341_CMD_READ_ID3 0xDC - -/** Level 2 Commands (from the display Datasheet) */ -/** RGB interface signal control*/ -#define ILI9341_CMD_RGB_SIGNAL_CONTROL 0xB0 -/** frame control*/ -#define ILI9341_CMD_FRAME_RATE_CONTROL_NORMAL 0xB1 -/** frame control in idle mode*/ -#define ILI9341_CMD_FRAME_RATE_CONTROL_IDLE_8COLOR 0xB2 -/** frame control in partial mode*/ -#define ILI9341_CMD_FRAME_RATE_CONTROL_PARTIAL 0xB3 -/** display inversion control*/ -#define ILI9341_CMD_DISPLAY_INVERSION_CONTROL 0xB4 -/** blanking porch control*/ -#define ILI9341_CMD_BLANKING_PORCH_CONTROL 0xB5 -/** display function control*/ -#define ILI9341_CMD_DISPLAY_FUNCTION_CTL 0xB6 -#define ILI9341_DISP_FUNC_CTL_REV (0x1u << 7) -#define ILI9341_DISP_FUNC_CTL_GS (0x1u << 6) -#define ILI9341_DISP_FUNC_CTL_SS (0x1u << 5) -#define ILI9341_DISP_FUNC_CTL_SM (0x1u << 4) -#define ILI9341_DISP_FUNC_CTL_ISC_POS 0 -#define ILI9341_DISP_FUNC_CTL_ISC_MSK (0x0F << 0) -#define ILI9341_DISP_FUNC_CTL_ISC(value) \ - (ILI9341_DISP_FUNC_CTL_ISC_MSK & \ - (value << ILI9341_DISP_FUNC_CTL_ISC_POS)) - -/** entry mode set*/ -#define ILI9341_CMD_ENTRY_MODE_SET 0xB7 -/** backlight control1*/ -#define ILI9341_CMD_BACKLIGHT_CONTROL_1 0xB8 -/** backlight control2*/ -#define ILI9341_CMD_BACKLIGHT_CONTROL_2 0xB9 -/** backlight control3*/ -#define ILI9341_CMD_BACKLIGHT_CONTROL_3 0xBA -/** backlight control 4*/ -#define ILI9341_CMD_BACKLIGHT_CONTROL_4 0xBB -/** backlight control 5*/ -#define ILI9341_CMD_BACKLIGHT_CONTROL_5 0xBC -/** backlight control 7*/ -#define ILI9341_CMD_BACKLIGHT_CONTROL_7 0xBE -/** backlight control 8*/ -#define ILI9341_CMD_BACKLIGHT_CONTROL_8 0xBF -/** power control 1*/ -#define ILI9341_CMD_POWER_CONTROL_1 0xC0 -/** power control 2*/ -#define ILI9341_CMD_POWER_CONTROL_2 0xC1 -/** VCOM control 1*/ -#define ILI9341_CMD_VCOM_CONTROL_1 0xC5 -/** VCOM control 2*/ -#define ILI9341_CMD_VCOM_CONTROL_2 0xC7 -/** Power control A*/ -#define ILI9341_CMD_POWER_CONTROL_A 0xCB -/** Power control B*/ -#define ILI9341_CMD_POWER_CONTROL_B 0xCF -/** NV memory write*/ -#define ILI9341_CMD_NVMEM_WRITE 0xD0 -/** NV memory protection key*/ -#define ILI9341_CMD_NVMEM_PROTECTION_KEY 0xD1 -/** NV memory status read*/ -#define ILI9341_CMD_NVMEM_STATUS_READ 0xD2 -/** Read ID4*/ -#define ILI9341_CMD_READ_ID4 0xD3 -/** positive gamma correction*/ -#define ILI9341_CMD_POSITIVE_GAMMA_CORRECTION 0xE0 -/** negative gamma correction*/ -#define ILI9341_CMD_NEGATIVE_GAMMA_CORRECTION 0xE1 -/** digital gamma control 1*/ -#define ILI9341_CMD_DIGITAL_GAMMA_CONTROL_1 0xE2 -/** digital gamma control 2*/ -#define ILI9341_CMD_DIGITAL_GAMMA_CONTROL_2 0xE3 -/** driver timing control A*/ -#define ILI9341_CMD_DRIVER_TIMING_CTL_A 0xE8 -/** driver timing control B*/ -#define ILI9341_CMD_DRIVER_TIMING_CTL_B 0xEA -/** power-on sequence control*/ -#define ILI9341_CMD_POWER_ON_SEQUENCE_CONTROL 0xED -/** enable 3g gamma control*/ -#define ILI9341_CMD_ENABLE_3_GAMMA_CONTROL 0xF2 -/** Interface control*/ -#define ILI9341_CMD_INTERFACE_CONTROL 0xF6 -/** pump ration control*/ -#define ILI9341_CMD_PUMP_RATIO_CONTROL 0xF7 - -#endif /* ILI9341_REGS_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili93xx.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili93xx.c deleted file mode 100644 index fb529482c..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili93xx.c +++ /dev/null @@ -1,1851 +0,0 @@ -/** - * \file - * - * \brief API driver for ILI93XX TFT display component. - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -/** - * \defgroup ili93xx_display_group Display - ILI93XX Controller - * - * Low-level driver for the ILI93XX LCD controller. This driver provides access - * to the main features of the ILI93XX controller. - * Now ILI9325 and ILI9341 are supported. - * - * \{ - */ - -#include -#include -#include -#include -#include "ili93xx.h" -#include "ili9341_regs.h" -#include "ili9325_regs.h" - -/** Device type*/ -static uint8_t g_uc_device_type = 0; - -/** Pixel cache used to speed up communication */ -#define LCD_DATA_CACHE_SIZE ILI93XX_LCD_WIDTH - -/** LCD X-axis and Y-axis length */ -static uint32_t g_ul_lcd_x_length = ILI93XX_LCD_WIDTH; -static uint32_t g_ul_lcd_y_length = ILI93XX_LCD_HEIGHT; - -static ili93xx_color_t g_ul_pixel_cache[LCD_DATA_CACHE_SIZE]; - -static volatile ili93xx_coord_t limit_start_x, limit_start_y; -static volatile ili93xx_coord_t limit_end_x, limit_end_y; - -/** Global variable describing the font size used by the driver */ -const struct ili93xx_font gfont = {10, 14}; - -/** - * Character set table for font 10x14 - * Coding format: - * Char height is 14 bits, which is coded using 2 bytes per column - * (2 unused bits). - * Char width is 10 bits. - */ -const uint8_t p_uc_charset10x14[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xCC, - 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0C, 0xC0, 0x0C, 0xC0, 0xFF, 0xFC, 0xFF, 0xFC, 0x0C, 0xC0, - 0x0C, 0xC0, 0xFF, 0xFC, 0xFF, 0xFC, 0x0C, 0xC0, 0x0C, 0xC0, - 0x0C, 0x60, 0x1E, 0x70, 0x3F, 0x30, 0x33, 0x30, 0xFF, 0xFC, - 0xFF, 0xFC, 0x33, 0x30, 0x33, 0xF0, 0x39, 0xE0, 0x18, 0xC0, - 0x60, 0x00, 0xF0, 0x0C, 0xF0, 0x3C, 0x60, 0xF0, 0x03, 0xC0, - 0x0F, 0x00, 0x3C, 0x18, 0xF0, 0x3C, 0xC0, 0x3C, 0x00, 0x18, - 0x3C, 0xF0, 0x7F, 0xF8, 0xC3, 0x1C, 0xC7, 0x8C, 0xCF, 0xCC, - 0xDC, 0xEC, 0x78, 0x78, 0x30, 0x30, 0x00, 0xFC, 0x00, 0xCC, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xEC, 0x00, - 0xF8, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x3F, 0xF0, 0x78, 0x78, - 0x60, 0x18, 0xC0, 0x0C, 0xC0, 0x0C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0C, 0xC0, 0x0C, 0x60, 0x18, - 0x78, 0x78, 0x3F, 0xF0, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, - 0x0C, 0x60, 0x0E, 0xE0, 0x07, 0xC0, 0x03, 0x80, 0x3F, 0xF8, - 0x3F, 0xF8, 0x03, 0x80, 0x07, 0xC0, 0x0E, 0xE0, 0x0C, 0x60, - 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x3F, 0xF0, - 0x3F, 0xF0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, - 0x00, 0x44, 0x00, 0xEC, 0x00, 0xF8, 0x00, 0x70, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, - 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, - 0x00, 0x18, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0C, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, - 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x00, 0xC0, 0x00, 0x00, 0x00, - 0x3F, 0xF0, 0x7F, 0xF8, 0xE0, 0xFC, 0xC1, 0xCC, 0xC3, 0x8C, - 0xC7, 0x0C, 0xCE, 0x0C, 0xFC, 0x1C, 0x7F, 0xF8, 0x3F, 0xF0, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x0C, 0x70, 0x0C, 0xFF, 0xFC, - 0xFF, 0xFC, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x0C, 0x70, 0x1C, 0xE0, 0x3C, 0xC0, 0x7C, 0xC0, 0xEC, - 0xC1, 0xCC, 0xC3, 0x8C, 0xE7, 0x0C, 0x7E, 0x0C, 0x3C, 0x0C, - 0x30, 0x30, 0x70, 0x38, 0xE0, 0x1C, 0xC0, 0x0C, 0xC0, 0x0C, - 0xC3, 0x0C, 0xC3, 0x0C, 0xE3, 0x1C, 0x7F, 0xF8, 0x3C, 0xF0, - 0x03, 0xC0, 0x07, 0xC0, 0x0E, 0xC0, 0x1C, 0xC0, 0x38, 0xC0, - 0x70, 0xC0, 0xFF, 0xFC, 0xFF, 0xFC, 0x00, 0xC0, 0x00, 0xC0, - 0xFC, 0x30, 0xFC, 0x38, 0xCC, 0x1C, 0xCC, 0x0C, 0xCC, 0x0C, - 0xCC, 0x0C, 0xCC, 0x0C, 0xCE, 0x1C, 0xC7, 0xF8, 0xC3, 0xF0, - 0x3F, 0xF0, 0x7F, 0xF8, 0xE3, 0x1C, 0xC3, 0x0C, 0xC3, 0x0C, - 0xC3, 0x0C, 0xC3, 0x0C, 0xE3, 0x9C, 0x71, 0xF8, 0x30, 0xF0, - 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC3, 0xFC, - 0xC7, 0xFC, 0xCE, 0x00, 0xDC, 0x00, 0xF8, 0x00, 0xF0, 0x00, - 0x3C, 0xF0, 0x7F, 0xF8, 0xE7, 0x9C, 0xC3, 0x0C, 0xC3, 0x0C, - 0xC3, 0x0C, 0xC3, 0x0C, 0xE7, 0x9C, 0x7F, 0xF8, 0x3C, 0xF0, - 0x3C, 0x00, 0x7E, 0x00, 0xE7, 0x0C, 0xC3, 0x0C, 0xC3, 0x1C, - 0xC3, 0x38, 0xC3, 0x70, 0xE7, 0xE0, 0x7F, 0xC0, 0x3F, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x60, 0x3C, 0xF0, - 0x3C, 0xF0, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x44, 0x3C, 0xEC, - 0x3C, 0xF8, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x07, 0x80, 0x0F, 0xC0, 0x1C, 0xE0, - 0x38, 0x70, 0x70, 0x38, 0xE0, 0x1C, 0xC0, 0x0C, 0x00, 0x00, - 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, - 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, - 0x00, 0x00, 0xC0, 0x0C, 0xE0, 0x1C, 0x70, 0x38, 0x38, 0x70, - 0x1C, 0xE0, 0x0F, 0xC0, 0x07, 0x80, 0x03, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0xC1, 0xEC, - 0xC3, 0xEC, 0xC3, 0x00, 0xE6, 0x00, 0x7E, 0x00, 0x3C, 0x00, - 0x30, 0xF0, 0x71, 0xF8, 0xE3, 0x9C, 0xC3, 0x0C, 0xC3, 0xFC, - 0xC3, 0xFC, 0xC0, 0x0C, 0xE0, 0x1C, 0x7F, 0xF8, 0x3F, 0xF0, - 0x3F, 0xFC, 0x7F, 0xFC, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, - 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xC0, 0x7F, 0xFC, 0x3F, 0xFC, - 0xFF, 0xFC, 0xFF, 0xFC, 0xC3, 0x0C, 0xC3, 0x0C, 0xC3, 0x0C, - 0xC3, 0x0C, 0xC3, 0x0C, 0xE7, 0x9C, 0x7F, 0xF8, 0x3C, 0xF0, - 0x3F, 0xF0, 0x7F, 0xF8, 0xE0, 0x1C, 0xC0, 0x0C, 0xC0, 0x0C, - 0xC0, 0x0C, 0xC0, 0x0C, 0xE0, 0x1C, 0x70, 0x38, 0x30, 0x30, - 0xFF, 0xFC, 0xFF, 0xFC, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, - 0xC0, 0x0C, 0xC0, 0x0C, 0xE0, 0x1C, 0x7F, 0xF8, 0x3F, 0xF0, - 0xFF, 0xFC, 0xFF, 0xFC, 0xC3, 0x0C, 0xC3, 0x0C, 0xC3, 0x0C, - 0xC3, 0x0C, 0xC3, 0x0C, 0xC3, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, - 0xFF, 0xFC, 0xFF, 0xFC, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, - 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC0, 0x00, 0xC0, 0x00, - 0x3F, 0xF0, 0x7F, 0xF8, 0xE0, 0x1C, 0xC0, 0x0C, 0xC0, 0x0C, - 0xC3, 0x0C, 0xC3, 0x0C, 0xE3, 0x1C, 0x73, 0xF8, 0x33, 0xF0, - 0xFF, 0xFC, 0xFF, 0xFC, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, - 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0xFF, 0xFC, 0xFF, 0xFC, - 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0C, 0xC0, 0x0C, 0xFF, 0xFC, - 0xFF, 0xFC, 0xC0, 0x0C, 0xC0, 0x0C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x38, 0xC0, 0x1C, 0xC0, 0x0C, 0xC0, 0x0C, - 0xC0, 0x1C, 0xFF, 0xF8, 0xFF, 0xF0, 0xC0, 0x00, 0xC0, 0x00, - 0xFF, 0xFC, 0xFF, 0xFC, 0x07, 0x80, 0x07, 0x80, 0x0F, 0xC0, - 0x1C, 0xE0, 0x38, 0x70, 0x70, 0x38, 0xE0, 0x1C, 0xC0, 0x0C, - 0xFF, 0xFC, 0xFF, 0xFC, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, - 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, - 0xFF, 0xFC, 0xFF, 0xFC, 0x70, 0x00, 0x38, 0x00, 0x1F, 0x00, - 0x1F, 0x00, 0x38, 0x00, 0x70, 0x00, 0xFF, 0xFC, 0xFF, 0xFC, - 0xFF, 0xFC, 0xFF, 0xFC, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, - 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0xFF, 0xFC, 0xFF, 0xFC, - 0x3F, 0xF0, 0x7F, 0xF8, 0xE0, 0x1C, 0xC0, 0x0C, 0xC0, 0x0C, - 0xC0, 0x0C, 0xC0, 0x0C, 0xE0, 0x1C, 0x7F, 0xF8, 0x3F, 0xF0, - 0xFF, 0xFC, 0xFF, 0xFC, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, - 0xC3, 0x00, 0xC3, 0x00, 0xE7, 0x00, 0x7E, 0x00, 0x3C, 0x00, - 0x3F, 0xF0, 0x7F, 0xF8, 0xE0, 0x1C, 0xC0, 0x0C, 0xC0, 0xCC, - 0xC0, 0xEC, 0xC0, 0x7C, 0xE0, 0x38, 0x7F, 0xFC, 0x3F, 0xEC, - 0xFF, 0xFC, 0xFF, 0xFC, 0xC3, 0x00, 0xC3, 0x80, 0xC3, 0x80, - 0xC3, 0xC0, 0xC3, 0xC0, 0xE7, 0x70, 0x7E, 0x3C, 0x3C, 0x1C, - 0x3C, 0x18, 0x7E, 0x1C, 0xE7, 0x0C, 0xC3, 0x0C, 0xC3, 0x0C, - 0xC3, 0x0C, 0xC3, 0x0C, 0xC3, 0x9C, 0xE1, 0xF8, 0x60, 0xF0, - 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xFF, 0xFC, - 0xFF, 0xFC, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, - 0xFF, 0xF0, 0xFF, 0xF8, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0C, - 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 0xFF, 0xF8, 0xFF, 0xF0, - 0xFF, 0xC0, 0xFF, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, - 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0xFF, 0xE0, 0xFF, 0xC0, - 0xFF, 0xF0, 0xFF, 0xF8, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0xF8, - 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1C, 0xFF, 0xF8, 0xFF, 0xF0, - 0xF0, 0x3C, 0xF8, 0x7C, 0x1C, 0xE0, 0x0F, 0xC0, 0x07, 0x80, - 0x07, 0x80, 0x0F, 0xC0, 0x1C, 0xE0, 0xF8, 0x7C, 0xF0, 0x3C, - 0xFC, 0x00, 0xFE, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xFC, - 0x01, 0xFC, 0x03, 0x80, 0x07, 0x00, 0xFE, 0x00, 0xFC, 0x00, - 0xC0, 0x3C, 0xC0, 0x7C, 0xC0, 0xEC, 0xC1, 0xCC, 0xC3, 0x8C, - 0xC7, 0x0C, 0xCE, 0x0C, 0xDC, 0x0C, 0xF8, 0x0C, 0xF0, 0x0C, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFC, 0xC0, 0x0C, - 0xC0, 0x0C, 0xC0, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x00, - 0x03, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x30, - 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, - 0xFF, 0xFC, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x00, - 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, - 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, - 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, - 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, - 0x38, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x06, 0x78, 0x0E, 0xFC, 0x0C, 0xCC, 0x0C, 0xCC, - 0x0C, 0xCC, 0x0C, 0xCC, 0x0E, 0xCC, 0x07, 0xFC, 0x03, 0xF8, - 0xFF, 0xFC, 0xFF, 0xFC, 0x03, 0x0C, 0x03, 0x0C, 0x03, 0x0C, - 0x03, 0x0C, 0x03, 0x0C, 0x03, 0x9C, 0x01, 0xF8, 0x00, 0xF0, - 0x03, 0xF0, 0x07, 0xF8, 0x0E, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, - 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0x30, - 0x00, 0xF0, 0x01, 0xF8, 0x03, 0x9C, 0x03, 0x0C, 0x03, 0x0C, - 0x03, 0x0C, 0x03, 0x0C, 0x03, 0x0C, 0xFF, 0xFC, 0xFF, 0xFC, - 0x03, 0xF0, 0x07, 0xF8, 0x0E, 0xDC, 0x0C, 0xCC, 0x0C, 0xCC, - 0x0C, 0xCC, 0x0C, 0xCC, 0x0E, 0xDC, 0x07, 0xD8, 0x03, 0x90, - 0x00, 0x00, 0x03, 0x00, 0x3F, 0xFC, 0x7F, 0xFC, 0xE3, 0x00, - 0xE3, 0x00, 0x70, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x18, 0x07, 0x9C, 0x0F, 0xCC, 0x0C, 0xCC, 0x0C, 0xCC, - 0x0C, 0xCC, 0x0C, 0xCC, 0x0C, 0xDC, 0x0F, 0xF8, 0x07, 0xF0, - 0xFF, 0xFC, 0xFF, 0xFC, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, - 0x03, 0x00, 0x03, 0x80, 0x01, 0xFC, 0x00, 0xFC, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xFC, - 0x1B, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, - 0x00, 0x0C, 0x00, 0x1C, 0xCF, 0xF8, 0xCF, 0xF0, 0x00, 0x00, - 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFC, 0x00, 0xE0, 0x01, 0xE0, - 0x03, 0xF0, 0x07, 0x38, 0x0E, 0x1C, 0x0C, 0x0C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0C, 0xC0, 0x0C, 0xFF, 0xFC, - 0xFF, 0xFC, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, - 0x0F, 0xFC, 0x0F, 0xFC, 0x0E, 0x00, 0x07, 0x00, 0x03, 0xC0, - 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x0F, 0xFC, 0x0F, 0xFC, - 0x0F, 0xFC, 0x0F, 0xFC, 0x03, 0x00, 0x07, 0x00, 0x0E, 0x00, - 0x0C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x07, 0xFC, 0x03, 0xFC, - 0x03, 0xF0, 0x07, 0xF8, 0x0E, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, - 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x1C, 0x07, 0xF8, 0x03, 0xF0, - 0x0F, 0xFC, 0x0F, 0xFC, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, - 0x0C, 0xC0, 0x0C, 0xC0, 0x0F, 0xC0, 0x07, 0x80, 0x03, 0x00, - 0x03, 0x00, 0x07, 0x80, 0x0F, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, - 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0F, 0xFC, 0x0F, 0xFC, - 0x0F, 0xFC, 0x0F, 0xFC, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, - 0x0C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x00, - 0x03, 0x18, 0x07, 0x9C, 0x0F, 0xCC, 0x0C, 0xCC, 0x0C, 0xCC, - 0x0C, 0xCC, 0x0C, 0xCC, 0x0C, 0xFC, 0x0E, 0x78, 0x06, 0x30, - 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0xF0, 0xFF, 0xF8, - 0x0C, 0x1C, 0x0C, 0x1C, 0x0C, 0x38, 0x0C, 0x30, 0x00, 0x00, - 0x0F, 0xF0, 0x0F, 0xF8, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0C, - 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 0x0F, 0xF8, 0x0F, 0xF0, - 0x0F, 0xC0, 0x0F, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, - 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x0F, 0xE0, 0x0F, 0xC0, - 0x0F, 0xF0, 0x0F, 0xF8, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0xF8, - 0x00, 0xF8, 0x00, 0x1C, 0x00, 0x1C, 0x0F, 0xF8, 0x0F, 0xF0, - 0x0C, 0x0C, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0xF0, 0x01, 0xE0, - 0x01, 0xE0, 0x03, 0xF0, 0x07, 0x38, 0x0E, 0x1C, 0x0C, 0x0C, - 0x0C, 0x00, 0x0E, 0x00, 0x07, 0x0C, 0x03, 0x9C, 0x01, 0xF8, - 0x01, 0xF0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0C, 0x00, - 0x0C, 0x0C, 0x0C, 0x1C, 0x0C, 0x3C, 0x0C, 0x7C, 0x0C, 0xEC, - 0x0D, 0xCC, 0x0F, 0x8C, 0x0F, 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, - 0x00, 0x00, 0x03, 0x00, 0x07, 0x80, 0x3F, 0xF0, 0x7C, 0xF8, - 0xE0, 0x1C, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0x00, 0x00, - 0x03, 0x0C, 0x03, 0x0C, 0x3F, 0xFC, 0x7F, 0xFC, 0xE3, 0x0C, - 0xC3, 0x0C, 0xC0, 0x0C, 0xE0, 0x0C, 0x70, 0x0C, 0x30, 0x0C, - 0x00, 0x00, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0xE0, 0x1C, - 0x7C, 0xF8, 0x3F, 0xF0, 0x07, 0x80, 0x03, 0x00, 0x00, 0x00, - 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, - 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, - 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, - 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC -}; - -/** - * \brief Prepare to write GRAM data for ili93xx. - */ -static void ili93xx_write_ram_prepare(void) -{ - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - /** Write Data to GRAM (R22h) */ - LCD_IR(0); - LCD_IR(ILI9325_GRAM_DATA_REG); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - /** memory write command (R2Ch)*/ - LCD_IR(ILI9341_CMD_MEMORY_WRITE); - LCD_IR(0); - LCD_IR(ILI9341_CMD_WRITE_MEMORY_CONTINUE); - } -} - -/** - * \brief Write data to LCD GRAM. - * - * \param ul_color 24-bits RGB color. - */ -static void ili93xx_write_ram(ili93xx_color_t ul_color) -{ - LCD_WD((ul_color >> 16) & 0xFF); - LCD_WD((ul_color >> 8) & 0xFF); - LCD_WD(ul_color & 0xFF); -} - -/** - * \brief Write multiple data in buffer to LCD controller for ili93xx. - * - * \param p_ul_buf data buffer. - * \param ul_size size in pixels. - */ -static void ili93xx_write_ram_buffer(const ili93xx_color_t *p_ul_buf, - uint32_t ul_size) -{ - uint32_t ul_addr; - for (ul_addr = 0; ul_addr < (ul_size - ul_size % 8); ul_addr += 8) { - ili93xx_write_ram(p_ul_buf[ul_addr]); - ili93xx_write_ram(p_ul_buf[ul_addr + 1]); - ili93xx_write_ram(p_ul_buf[ul_addr + 2]); - ili93xx_write_ram(p_ul_buf[ul_addr + 3]); - ili93xx_write_ram(p_ul_buf[ul_addr + 4]); - ili93xx_write_ram(p_ul_buf[ul_addr + 5]); - ili93xx_write_ram(p_ul_buf[ul_addr + 6]); - ili93xx_write_ram(p_ul_buf[ul_addr + 7]); - } - for (; ul_addr < ul_size; ul_addr++) { - ili93xx_write_ram(p_ul_buf[ul_addr]); - } -} - -/** - * \brief Write a word (16bits)to LCD Register. - * - * \param uc_reg register address. - * \param us_data data to be written. - */ -static void ili93xx_write_register_word(uint8_t uc_reg, uint16_t us_data) -{ - LCD_IR(0); - LCD_IR(uc_reg); - LCD_WD((us_data >> 8) & 0xFF); - LCD_WD(us_data & 0xFF); -} - -/** - * \brief Write data to LCD Register for ili93xx. - * - * \param uc_reg register address. - * \param us_data data to be written. - */ -static void ili93xx_write_register(uint8_t uc_reg, uint8_t *p_data, - uint8_t uc_datacnt) -{ -uint8_t i; - - LCD_IR(0); - LCD_IR(uc_reg); - for (i = 0; i < uc_datacnt; i++) { - LCD_WD(p_data[i]); - } -} - -/** - * \brief Prepare to read GRAM data for ili93xx. - */ -static void ili93xx_read_ram_prepare(void) -{ - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - LCD_IR(0); - /** Write Data to GRAM (R22h) */ - LCD_IR(ILI9325_GRAM_DATA_REG); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - LCD_IR(0); - /** Write Data to GRAM (R2Eh) */ - LCD_IR(ILI9341_CMD_MEMORY_READ); - } -} - -/** - * \brief Read data to LCD GRAM for ili93xx. - * - * \note For ili9325, because pixel data LCD GRAM is 18-bits, so convertion - * to RGB 24-bits will cause low color bit lose. - * - * \return color 24-bits RGB color. - */ -static uint32_t ili93xx_read_ram(void) -{ - uint8_t value[3]; - uint32_t color; - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - /** dummy read*/ - value[0] = LCD_RD(); - value[1] = LCD_RD(); - /** data upper byte*/ - value[0] = LCD_RD(); - /** data lower byte */ - value[1] = LCD_RD(); - - /** Convert RGB565 to RGB888 */ - /** For BGR format */ - color = ((value[0] & 0xF8)) | ((value[0] & 0x07) << 13) | - ((value[1] & 0xE0) << 5) | - ((value[1] & 0x1F) << 19); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - /** dummy read */ - value[0] = LCD_RD(); - /** the highest byte - R byte*/ - value[0] = LCD_RD(); - /** the middle byte - G byte*/ - value[1] = LCD_RD(); - /** the lowest byte - B byte*/ - value[2] = LCD_RD(); - /** combine R, G, B byte to a color value */ - color = (value[0] << 16) | (value[1] << 8) | value[2]; - } - - return color; -} - -/** - * \brief Read data from LCD Register. - * - * \param uc_reg register address. - * \param p_data the pointer to the read data. - * \param uc_datacnt the number of the read data - */ -static void ili93xx_read_register(uint8_t uc_reg, uint8_t *p_data, - uint8_t uc_datacnt) -{ -uint8_t i; - - LCD_IR(0); - LCD_IR(uc_reg); - - for (i = 0; i < uc_datacnt; i++) { - p_data[i] = LCD_RD(); - } -} - -/** - * \brief Delay function. - */ -static void ili93xx_delay(uint32_t ul_ms) -{ - volatile uint32_t i; - - for (i = 0; i < ul_ms; i++) { - for (i = 0; i < 100000; i++) { - } - } -} - -/** - * \brief Check box coordinates. - * - * \param p_ul_x1 X coordinate of upper-left corner on LCD. - * \param p_ul_y1 Y coordinate of upper-left corner on LCD. - * \param p_ul_x2 X coordinate of lower-right corner on LCD. - * \param p_ul_y2 Y coordinate of lower-right corner on LCD. - */ -static void ili93xx_check_box_coordinates(uint32_t *p_ul_x1, uint32_t *p_ul_y1, - uint32_t *p_ul_x2, uint32_t *p_ul_y2) -{ - uint32_t dw; - - if (*p_ul_x1 >= g_ul_lcd_x_length) { - *p_ul_x1 = g_ul_lcd_x_length - 1; - } - - if (*p_ul_x2 >= g_ul_lcd_x_length) { - *p_ul_x2 = g_ul_lcd_x_length - 1; - } - - if (*p_ul_y1 >= g_ul_lcd_y_length) { - *p_ul_y1 = g_ul_lcd_y_length - 1; - } - - if (*p_ul_y2 >= g_ul_lcd_y_length) { - *p_ul_y2 = g_ul_lcd_y_length - 1; - } - - if (*p_ul_x1 > *p_ul_x2) { - dw = *p_ul_x1; - *p_ul_x1 = *p_ul_x2; - *p_ul_x2 = dw; - } - - if (*p_ul_y1 > *p_ul_y2) { - dw = *p_ul_y1; - *p_ul_y1 = *p_ul_y2; - *p_ul_y2 = dw; - } -} - -/** - * \brief Read device ID to idenfity the device - * ILI9325 device ID locates in Device Code Read (R00h) register. - * ILI9341 device ID locates in Read ID4 (RD3h) register. - * - * \return 0 if secceed in identifying device; otherwise fails. - */ -uint8_t ili93xx_device_type_identify(void) -{ - uint8_t paratable[6]; - uint16_t chipid; - - /** Read ID4 (RD4h) register to get device code for ILI9341*/ - ili93xx_read_register(ILI9341_CMD_READ_ID4, paratable, 4); - chipid = ((uint16_t)paratable[2] << 8) + paratable[3]; - - if (chipid == ILI9341_DEVICE_CODE) { - g_uc_device_type = DEVICE_TYPE_ILI9341; - return 0; - } - - /** Driver Code Read (R00h) for ILI9325*/ - ili93xx_read_register(ILI9325_DEVICE_CODE_REG, paratable, 2); - chipid = ((uint16_t)paratable[0] << 8) + paratable[1]; - if (chipid == ILI9325_DEVICE_CODE) { - g_uc_device_type = DEVICE_TYPE_ILI9325; - return 0; - } - - return 1; -} - -/** - * \brief Initialize the ILI93XX lcd driver. - * - * \note Make sure below works have been done before calling ili93xx_init() - * 1. ILI93xx related Pins have been initialized correctly. - * 2. SMC has been configured correctly for access ILI93xx (8-bit system - * interface for now). - * - * \param p_opt pointer to ILI93xx option structure. - * - * \return 0 if initialization succeeds, otherwise fails. - */ -uint32_t ili93xx_init(struct ili93xx_opt_t *p_opt) -{ - uint8_t paratable[15]; - - /** Identify the LCD driver device*/ - if (ili93xx_device_type_identify() != 0) { - return 1; - } - - g_ul_lcd_x_length = ILI93XX_LCD_WIDTH; - g_ul_lcd_y_length = ILI93XX_LCD_HEIGHT; - - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - /** Turn off LCD */ - ili93xx_write_register_word(ILI9325_DISP_CTRL1, ILI9325_DISP_CTRL1_GON | - ILI9325_DISP_CTRL1_DTE | ILI9325_DISP_CTRL1_D(0x03)); - - /** Start initial sequence */ - /** Disable sleep and standby mode*/ - ili93xx_write_register_word(ILI9325_POWER_CTRL1, 0x0000); - /** Start internal OSC */ - ili93xx_write_register_word(ILI9325_START_OSC_CTRL, - ILI9325_START_OSC_CTRL_EN); - /** Set SS bit and direction output from S720 to S1 */ - ili93xx_write_register_word(ILI9325_DRIVER_OUTPUT_CTRL1, - ILI9325_DRIVER_OUTPUT_CTRL1_SS); - /** Set 1 line inversion */ - ili93xx_write_register_word(ILI9325_LCD_DRIVING_CTRL, - ILI9325_LCD_DRIVING_CTRL_BIT10 | ILI9325_LCD_DRIVING_CTRL_EOR - | ILI9325_LCD_DRIVING_CTRL_BC0); - /** Disable resizing feature */ - ili93xx_write_register_word(ILI9325_RESIZE_CTRL, 0x0000); - /** Set the back porch and front porch */ - ili93xx_write_register_word(ILI9325_DISP_CTRL2, - ILI9325_DISP_CTRL2_BP( - 0x07) | ILI9325_DISP_CTRL2_FP(0x02)); - /** Set non-display area refresh cycle ISC[3:0] */ - ili93xx_write_register_word(ILI9325_DISP_CTRL3, 0x0000); - /** Disable FMARK function */ - ili93xx_write_register_word(ILI9325_DISP_CTRL4, 0x0000); - /** 18-bit RGB interface and writing display data by system - *interface */ - ili93xx_write_register_word(ILI9325_RGB_DISP_INTERFACE_CTRL1, - 0x0000); - /** Set the output position of frame cycle */ - ili93xx_write_register_word(ILI9325_FRAME_MAKER_POS, 0x0000); - /** RGB interface polarity */ - ili93xx_write_register_word(ILI9325_RGB_DISP_INTERFACE_CTRL2, - 0x0000); - - /** Power on sequence */ - /** Disable sleep and standby mode */ - ili93xx_write_register_word(ILI9325_POWER_CTRL1, 0x0000); - - /** - * Selects the operating frequency of the step-up circuit 1,2 - * and Sets the ratio factor of Vci. - */ - ili93xx_write_register_word(ILI9325_POWER_CTRL2, 0x0000); - /** Set VREG1OUT voltage */ - ili93xx_write_register_word(ILI9325_POWER_CTRL3, 0x0000); - /** Set VCOM amplitude */ - ili93xx_write_register_word(ILI9325_POWER_CTRL4, 0x0000); - ili93xx_delay(200); - - /** Enable power supply and source driver */ - - /** - * Adjusts the constant current and Sets the factor used - * in the step-up circuits. - */ - ili93xx_write_register_word(ILI9325_POWER_CTRL1, - ILI9325_POWER_CTRL1_SAP | ILI9325_POWER_CTRL1_BT(0x02) | - ILI9325_POWER_CTRL1_APE | - ILI9325_POWER_CTRL1_AP(0x01)); - - /** - * Select the operating frequency of the step-up circuit 1,2 and - * Sets the ratio factor of Vci - */ - ili93xx_write_register_word(ILI9325_POWER_CTRL2, - ILI9325_POWER_CTRL2_DC1(0x02) | - ILI9325_POWER_CTRL2_DC0(0x02) | ILI9325_POWER_CTRL2_VC(0x07)); - ili93xx_delay(50); - /** Internal reference voltage= Vci */ - ili93xx_write_register_word(ILI9325_POWER_CTRL3, - ILI9325_POWER_CTRL3_PON | ILI9325_POWER_CTRL3_VRH(0x0B)); - ili93xx_delay(50); - /** Set VDV[4:0] for VCOM amplitude */ - ili93xx_write_register_word(ILI9325_POWER_CTRL4, - ILI9325_POWER_CTRL4_VDV(0x11)); - /** Set VCM[5:0] for VCOMH */ - ili93xx_write_register_word(ILI9325_POWER_CTRL7, - ILI9325_POWER_CTRL7_VCM(0x19)); - /** Set Frame Rate */ - ili93xx_write_register_word(ILI9325_FRAME_RATE_AND_COLOR_CTRL, - ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS(0x0D)); - ili93xx_delay(50); - - /** Adjust the Gamma Curve */ - ili93xx_write_register_word(ILI9325_GAMMA_CTL1, 0x0000); - ili93xx_write_register_word(ILI9325_GAMMA_CTL2, - ILI9325_GAMMA_CTL2_KP3(0x02) | - ILI9325_GAMMA_CTL2_KP2(0x04)); - ili93xx_write_register_word(ILI9325_GAMMA_CTL3, - ILI9325_GAMMA_CTL3_KP5(0x02) | - ILI9325_GAMMA_CTL3_KP4(0x00)); - ili93xx_write_register_word(ILI9325_GAMMA_CTL4, - ILI9325_GAMMA_CTL4_RP1(0x00) | - ILI9325_GAMMA_CTL4_RP0(0x07)); - ili93xx_write_register_word(ILI9325_GAMMA_CTL5, - ILI9325_GAMMA_CTL5_VRP1(0x14) | - ILI9325_GAMMA_CTL5_VRP0(0x04)); - ili93xx_write_register_word(ILI9325_GAMMA_CTL6, - ILI9325_GAMMA_CTL6_KN1(0x07) | - ILI9325_GAMMA_CTL6_KN0(0x05)); - ili93xx_write_register_word(ILI9325_GAMMA_CTL7, - ILI9325_GAMMA_CTL7_KN3(0x03) | - ILI9325_GAMMA_CTL7_KN2(0x05)); - ili93xx_write_register_word(ILI9325_GAMMA_CTL8, - ILI9325_GAMMA_CTL8_KN5(0x07) | - ILI9325_GAMMA_CTL8_KN4(0x07)); - ili93xx_write_register_word(ILI9325_GAMMA_CTL9, - ILI9325_GAMMA_CTL9_RN1(0x07) | - ILI9325_GAMMA_CTL9_RN0(0x01)); - ili93xx_write_register_word(ILI9325_GAMMA_CTL10, - ILI9325_GAMMA_CTL10_VRN1(0x00) | - ILI9325_GAMMA_CTL10_VRN0(0x0E)); - /** - * Use the high speed write mode (HWM=1) - * When TRI = 1, data are transferred to the internal RAM in - * 8-bit x 3 transfers mode via the 8-bit interface. - * DFM Set the mode of transferring data to the internal RAM - * when TRI = 1. - * I/D[1:0] = 11 Horizontal : increment Vertical : increment, - * AM=0:Horizontal - */ - ili93xx_write_register_word(ILI9325_ENTRY_MODE, - ILI9325_ENTRY_MODE_TRI | ILI9325_ENTRY_MODE_DFM | - ILI9325_ENTRY_MODE_ID(0x01) | ILI9325_ENTRY_MODE_BGR); - /** - * Sets the number of lines to drive the LCD at an interval of 8 - * lines. The scan direction is from G320 to G1 - */ - ili93xx_write_register_word(ILI9325_DRIVER_OUTPUT_CTRL2, - ILI9325_DRIVER_OUTPUT_CTRL2_GS | - ILI9325_DRIVER_OUTPUT_CTRL2_NL(0x27)); - - /** Vertical Scrolling */ - /** Disable scrolling and enable the grayscale inversion */ - ili93xx_write_register_word(ILI9325_BASE_IMG_DISP_CTRL, - ILI9325_BASE_IMG_DISP_CTRL_REV); - ili93xx_write_register_word(ILI9325_VERTICAL_SCROLL_CTRL, - 0x0000); - - /** Disable Partial Display */ - ili93xx_write_register_word(ILI9325_PARTIAL_IMG1_DISP_POS, - 0x0000); - ili93xx_write_register_word( - ILI9325_PARTIAL_IMG1_AREA_START_LINE, - 0x0000); - ili93xx_write_register_word(ILI9325_PARTIAL_IMG1_AREA_END_LINE, - 0x0000); - ili93xx_write_register_word(ILI9325_PARTIAL_IMG2_DISP_POS, - 0x0000); - ili93xx_write_register_word( - ILI9325_PARTIAL_IMG2_AREA_START_LINE, - 0x0000); - ili93xx_write_register_word(ILI9325_PARTIAL_IMG2_AREA_END_LINE, - 0x0000); - - /** Panel Control */ - ili93xx_write_register_word(ILI9325_PANEL_INTERFACE_CTRL1, - ILI9325_PANEL_INTERFACE_CTRL1_RTNI(0x10)); - ili93xx_write_register_word(ILI9325_PANEL_INTERFACE_CTRL2, - ILI9325_PANEL_INTERFACE_CTRL2_NOWI(0x06)); - ili93xx_write_register_word(ILI9325_PANEL_INTERFACE_CTRL4, - ILI9325_PANEL_INTERFACE_CTRL4_DIVE(0x01) | - ILI9325_PANEL_INTERFACE_CTRL4_RTNE(0x10)); - - ili93xx_set_window(0, 0, p_opt->ul_width, p_opt->ul_height); - ili93xx_set_foreground_color(p_opt->foreground_color); - ili93xx_set_cursor_position(0, 0); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - /** init for ILI9341 **/ - /** power control A configuration*/ - paratable[0] = 0x39; - paratable[1] = 0x2C; - paratable[2] = 0x00; - paratable[3] = 0x34; - paratable[4] = 0x02; - ili93xx_write_register(ILI9341_CMD_POWER_CONTROL_A, paratable, 5); - - /** power control B configuration */ - paratable[0] = 0; - paratable[1] = 0xAA; - paratable[2] = 0xB0; - ili93xx_write_register(ILI9341_CMD_POWER_CONTROL_B, paratable, 3); - - /** Pump Ratio Control configuration */ - paratable[0] = 0x30; - ili93xx_write_register(ILI9341_CMD_PUMP_RATIO_CONTROL, - paratable, 1); - - /** Power Control 1 configuration*/ - paratable[0] = 0x25; - ili93xx_write_register(ILI9341_CMD_POWER_CONTROL_1, paratable, 1); - - /** Power Control 2 configuration*/ - paratable[0] = 0x11; - ili93xx_write_register(ILI9341_CMD_POWER_CONTROL_2, paratable, 1); - - /** VOM Control 1 configuration*/ - paratable[0] = 0x5C; - paratable[1] = 0x4C; - ili93xx_write_register(ILI9341_CMD_VCOM_CONTROL_1, paratable, 2); - - /** VOM control 2 configuration*/ - paratable[0] = 0x94; - ili93xx_write_register(ILI9341_CMD_VCOM_CONTROL_2, paratable, 1); - - /** Driver Timing Control A configuration*/ - paratable[0] = 0x85; - paratable[1] = 0x01; - paratable[2] = 0x78; - ili93xx_write_register(ILI9341_CMD_DRIVER_TIMING_CTL_A, paratable, 3); - - /** Driver Timing Control B configuration*/ - paratable[0] = 0x00; - paratable[1] = 0x00; - ili93xx_write_register(ILI9341_CMD_DRIVER_TIMING_CTL_B, paratable, 2); - - /** Memory Access Control configuration*/ - paratable[0] = ILI9341_CMD_MEMORY_ACCESS_CONTROL_MX | - ILI9341_CMD_MEMORY_ACCESS_CONTROL_BGR; - ili93xx_write_register(ILI9341_CMD_MEMORY_ACCESS_CONTROL, - paratable, 1); - - /** Colmod Pixel Format Set configuation*/ - paratable[0] = 0x06; - ili93xx_write_register(ILI9341_CMD_PIXEL_FORMAT_SET, paratable, 1); - - /** Display Function Control */ - paratable[0] = 0x02; - paratable[1] = 0x82; - paratable[2] = 0x27; - paratable[3] = 0x00; - ili93xx_write_register(ILI9341_CMD_DISPLAY_FUNCTION_CTL, - paratable, 4); - - paratable[0] = 0x00; - ili93xx_write_register(ILI9341_CMD_ENABLE_3_GAMMA_CONTROL, - paratable,1); - - paratable[0] = 0x01; - ili93xx_write_register(ILI9341_CMD_GAMMA_SET, paratable,1); - - /** set gamma curve parameters*/ - paratable[0]=0x0F; - paratable[1]=0x31; - paratable[2]=0x2B; - paratable[3]=0x0C; - paratable[4]=0x0E; - paratable[5]=0x08; - paratable[6]=0x4E; - paratable[7]=0xF1; - paratable[8]=0x37; - paratable[9]=0x07; - paratable[10]=0x10; - paratable[11]=0x03; - paratable[12]=0x0E; - paratable[13]=0x09; - paratable[14]=0x00; - ili93xx_write_register(ILI9341_CMD_POSITIVE_GAMMA_CORRECTION, - paratable, 15); - paratable[0]=0x00; - paratable[1]=0x0E; - paratable[2]=0x14; - paratable[3]=0x03; - paratable[4]=0x11; - paratable[5]=0x07; - paratable[6]=0x31; - paratable[7]=0xC1; - paratable[8]=0x48; - paratable[9]=0x08; - paratable[10]=0x0F; - paratable[11]=0x0C; - paratable[12]=0x31; - paratable[13]=0x36; - paratable[14]=0x0F; - ili93xx_write_register(ILI9341_CMD_NEGATIVE_GAMMA_CORRECTION, - paratable, 15); - - /** set window area*/ - ili93xx_set_window(0, 0, p_opt->ul_width, p_opt->ul_height); - ili93xx_set_foreground_color(p_opt->foreground_color); - /** Leave sleep mode*/ - ili93xx_write_register(ILI9341_CMD_SLEEP_OUT, paratable, 0); - ili93xx_delay(10); - /** Display on*/ - ili93xx_write_register(ILI9341_CMD_DISPLAY_ON, paratable, 0); - } else { - /** exit with return value 1 if device type is not supported.*/ - return 1; - } - - return 0; -} - -/** - * \brief get the device type. - */ -uint8_t ili93xx_device_type(void) -{ - return g_uc_device_type; -} - -/** - * \brief Turn on the LCD. - */ -void ili93xx_display_on(void) -{ - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - ili93xx_write_register_word(ILI9325_DISP_CTRL1, - ILI9325_DISP_CTRL1_BASEE | - ILI9325_DISP_CTRL1_GON | - ILI9325_DISP_CTRL1_DTE | - ILI9325_DISP_CTRL1_D(0x03)); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - ili93xx_write_register(ILI9341_CMD_DISPLAY_ON, NULL, 0); - } -} - -/** - * \brief Turn off the LCD. - */ -void ili93xx_display_off(void) -{ - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - ili93xx_write_register_word(ILI9325_DISP_CTRL1, 0x00); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - ili93xx_write_register(ILI9341_CMD_DISPLAY_OFF, NULL, 0); - } -} - -/** - * \brief Set foreground color. - * - * \param ul_color foreground color. - */ -void ili93xx_set_foreground_color(ili93xx_color_t ul_color) -{ - uint32_t i; - - /** Fill the cache with selected color */ - for (i = 0; i < LCD_DATA_CACHE_SIZE; ++i) { - g_ul_pixel_cache[i] = ul_color; - } -} - -/** - * \brief Fill the LCD buffer with the specified color. - * - * \param ul_color fill color. - */ -void ili93xx_fill(ili93xx_color_t ul_color) -{ - uint32_t dw; - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - ili93xx_set_cursor_position(0, 0); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - ili93xx_set_window(0, 0, g_ul_lcd_x_length, g_ul_lcd_y_length); - } - - ili93xx_write_ram_prepare(); - - for (dw = ILI93XX_LCD_WIDTH * ILI93XX_LCD_HEIGHT; dw > 0; dw--) { - ili93xx_write_ram(ul_color); - } -} - -/** - * \brief Set display window. - * - * \param ul_x Horizontal address start position - * \param ul_y Vertical address start position - * \param ul_width The width of the window. - * \param ul_height The height of the window. - */ -void ili93xx_set_window(uint32_t ul_x, uint32_t ul_y, uint32_t ul_width, - uint32_t ul_height) -{ - Assert(ul_x <= (g_ul_lcd_x_length - 1)); - Assert(ul_y <= (g_ul_lcd_y_length - 1)); - Assert(ul_width <= (g_ul_lcd_x_length - ul_x)); - Assert(ul_height <= (g_ul_lcd_y_length - ul_y)); - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - /** Set Horizontal Address Start Position */ - ili93xx_write_register_word(ILI9325_HORIZONTAL_ADDR_START, - (uint16_t)ul_x); - - /** Set Horizontal Address End Position */ - ili93xx_write_register_word(ILI9325_HORIZONTAL_ADDR_END, - (uint16_t)(ul_x + ul_width - 1)); - - /** Set Vertical Address Start Position */ - ili93xx_write_register_word(ILI9325_VERTICAL_ADDR_START, - (uint16_t)ul_y); - - /** Set Vertical Address End Position */ - ili93xx_write_register_word(ILI9325_VERTICAL_ADDR_END, - (uint16_t)(ul_y + ul_height - 1)); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - uint8_t paratable[4]; - - /** Set Column Address Position */ - paratable[0] = (ul_x >> 8) & 0xFF; - paratable[1] = ul_x & 0xFF; - paratable[2] = ((ul_x + ul_width - 1) >> 8) & 0xFF; - paratable[3] = (ul_x + ul_width - 1) & 0xFF; - ili93xx_write_register(ILI9341_CMD_COLUMN_ADDRESS_SET, - paratable, 4); - - /** Set Page Address Position */ - paratable[0] = (ul_y >> 8) & 0xFF; - paratable[1] = ul_y & 0xFF; - paratable[2] = ((ul_y + ul_height - 1) >> 8) & 0xFF; - paratable[3] = (ul_y + ul_height - 1) & 0xFF; - ili93xx_write_register(ILI9341_CMD_PAGE_ADDRESS_SET, - paratable, 4); - } -} - -/** - * \brief Set cursor of LCD screen. - * - * \param us_x X coordinate of upper-left corner on LCD. - * \param us_y Y coordinate of upper-left corner on LCD. - */ -void ili93xx_set_cursor_position(uint16_t us_x, uint16_t us_y) -{ - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - /** GRAM Horizontal/Vertical Address Set (R20h, R21h) */ - ili93xx_write_register_word(ILI9325_HORIZONTAL_GRAM_ADDR_SET, us_x); - ili93xx_write_register_word(ILI9325_VERTICAL_GRAM_ADDR_SET, us_y); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - /** There is no corresponding operation for ILI9341. */ - } -} - -/** - * \brief Scroll up/down for the number of specified lines. - * - * \param ul_lines number of lines to scroll. - */ -void ili93xx_scroll(int32_t ul_lines) -{ - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - ili93xx_write_register_word(ILI9325_VERTICAL_SCROLL_CTRL, ul_lines); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - uint8_t paratable[2]; - - paratable[0] = (ul_lines >> 8) & 0xFF; - paratable[1] = ul_lines & 0xFF; - ili93xx_write_register(ILI9341_CMD_VERT_SCROLL_START_ADDRESS, - paratable, 2); - } -} - -/** - * \brief Vertical Scroll area definition for ili9341. - * - * \param us_tfa the top fixed area (the No. of lines) - * \param us_vsa the height of the vetical scrolling area - * \param us_bfa the bottom fixed area (the No. of lines) - */ -void ili93xx_vscroll_area_define(uint16_t us_tfa, uint16_t us_vsa, - uint16_t us_bfa) -{ - if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - uint8_t paratable[6]; - - paratable[0] = (us_tfa >> 8) & 0xFF; - paratable[1] = us_tfa & 0xFF; - paratable[2] = (us_vsa >> 8) & 0xFF; - paratable[3] = us_vsa & 0xFF; - paratable[4] = (us_bfa >> 8) & 0xFF; - paratable[5] = us_bfa & 0xFF; - ili93xx_write_register(ILI9341_CMD_VERT_SCROLL_DEFINITION, - paratable, 6); - } -} - -/** - * \brief Enable the scrolling feature. - */ -void ili93xx_enable_scroll(void) -{ - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - ili93xx_write_register_word(ILI9325_BASE_IMG_DISP_CTRL, - ILI9325_BASE_IMG_DISP_CTRL_REV | - ILI9325_BASE_IMG_DISP_CTRL_VLE); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - /** no operation needed for ILI9341*/ - } -} - -/** - * \brief Disable the scrolling feature. - */ -void ili93xx_disable_scroll(void) -{ - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - ili93xx_write_register_word(ILI9325_BASE_IMG_DISP_CTRL, - ILI9325_BASE_IMG_DISP_CTRL_REV); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - ili93xx_display_off(); - ili93xx_write_register(ILI9341_CMD_NORMAL_DISP_MODE_ON, NULL, 0); - ili93xx_display_on(); - } -} - -/** - * \brief Set display direction. - * - * \param e_dd 0: horizontal direction, 1: vertical direction - * \param e_shd: horizontal increase(0) or decrease(1) - * \param e_scd: vertical increase(1) or decrease(0) - */ -void ili93xx_set_display_direction(enum ili93xx_display_direction e_dd, - enum ili93xx_shift_direction e_shd, - enum ili93xx_scan_direction e_scd) -{ - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - if (e_dd == LANDSCAPE) { - ili93xx_write_register_word(ILI9325_ENTRY_MODE, - ILI9325_ENTRY_MODE_BGR | ILI9325_ENTRY_MODE_TRI | - ILI9325_ENTRY_MODE_DFM | ILI9325_ENTRY_MODE_ID(0x00)| - ILI9325_ENTRY_MODE_AM); - g_ul_lcd_x_length = ILI93XX_LCD_HEIGHT; - g_ul_lcd_y_length = ILI93XX_LCD_WIDTH; - } else { - ili93xx_write_register_word(ILI9325_ENTRY_MODE, - ILI9325_ENTRY_MODE_BGR | ILI9325_ENTRY_MODE_TRI | - ILI9325_ENTRY_MODE_DFM | ILI9325_ENTRY_MODE_ID(0x01)); - g_ul_lcd_x_length = ILI93XX_LCD_WIDTH; - g_ul_lcd_y_length = ILI93XX_LCD_HEIGHT; - } - - if (e_shd == H_INCREASE) { - ili93xx_write_register_word(ILI9325_DRIVER_OUTPUT_CTRL1, 0x0000); - } else { - ili93xx_write_register_word(ILI9325_DRIVER_OUTPUT_CTRL1, - ILI9325_DRIVER_OUTPUT_CTRL1_SS); - } - - if (e_scd == V_INCREASE) { - ili93xx_write_register_word(ILI9325_DRIVER_OUTPUT_CTRL2, - ILI9325_DRIVER_OUTPUT_CTRL2_NL(0x27)); - } else { - ili93xx_write_register_word(ILI9325_DRIVER_OUTPUT_CTRL2, - ILI9325_DRIVER_OUTPUT_CTRL2_GS | - ILI9325_DRIVER_OUTPUT_CTRL2_NL(0x27)); - } - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - if (e_dd == LANDSCAPE) { - uint8_t paratable[1]; - paratable[0] = ILI9341_CMD_MEMORY_ACCESS_CONTROL_MV | - ILI9341_CMD_MEMORY_ACCESS_CONTROL_BGR; - ili93xx_write_register( - ILI9341_CMD_MEMORY_ACCESS_CONTROL, - paratable, 1); - g_ul_lcd_x_length = ILI93XX_LCD_HEIGHT; - g_ul_lcd_y_length = ILI93XX_LCD_WIDTH; - } else { - uint8_t paratable[1]; - paratable[0] = ILI9341_CMD_MEMORY_ACCESS_CONTROL_BGR | - ILI9341_CMD_MEMORY_ACCESS_CONTROL_MX; - ili93xx_write_register( - ILI9341_CMD_MEMORY_ACCESS_CONTROL, - paratable, 1); - g_ul_lcd_x_length = ILI93XX_LCD_WIDTH; - g_ul_lcd_y_length = ILI93XX_LCD_HEIGHT; - } - } -} - -/** - * \brief Draw a pixel on LCD. - * - * \param ul_x X coordinate of pixel. - * \param ul_y Y coordinate of pixel. - * - * \return 0 if succeeds, otherwise fails. - */ -uint32_t ili93xx_draw_pixel(uint32_t ul_x, uint32_t ul_y) -{ - if ((ul_x >= g_ul_lcd_x_length) || (ul_y >= g_ul_lcd_y_length)) { - return 1; - } - - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - /** Set cursor */ - ili93xx_set_cursor_position(ul_x, ul_y); - /** Prepare to write in GRAM */ - ili93xx_write_ram_prepare(); - ili93xx_write_ram(*g_ul_pixel_cache); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - ili93xx_set_window(ul_x, ul_y, 0, 0); - /** Prepare to write in GRAM */ - ili93xx_write_ram_prepare(); - ili93xx_write_ram(*g_ul_pixel_cache); - } - - return 0; -} - -/** - * \brief Get a pixel from LCD. - * - * \param ul_x X coordinate of pixel. - * \param ul_y Y coordinate of pixel. - * - * \return the pixel color. - */ -ili93xx_color_t ili93xx_get_pixel(uint32_t ul_x, uint32_t ul_y) -{ - Assert(ul_x <= g_ul_lcd_x_length); - Assert(ul_y <= g_ul_lcd_y_length); - - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - /** Set cursor */ - ili93xx_set_cursor_position(ul_x, ul_y); - /** Prepare to write in GRAM */ - ili93xx_read_ram_prepare(); - return ili93xx_read_ram(); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - ili93xx_set_window(ul_x, ul_y, 0, 0); - /** Prepare to write in GRAM */ - ili93xx_read_ram_prepare(); - return ili93xx_read_ram(); - } - - return 0; -} - -/** - * \brief Draw a line on LCD, which is not horizontal or vertical. - * - * \param ul_x1 X coordinate of line start. - * \param ul_y1 Y coordinate of line start. - * \param ul_x2 X coordinate of line end. - * \param ul_y2 Y coordinate of line endl. - */ -static void ili93xx_draw_line_bresenham(uint32_t ul_x1, uint32_t ul_y1, - uint32_t ul_x2, uint32_t ul_y2) -{ - int dx, dy; - int i; - int xinc, yinc, cumul; - int x, y; - - x = ul_x1; - y = ul_y1; - dx = ul_x2 - ul_x1; - dy = ul_y2 - ul_y1; - xinc = (dx > 0) ? 1 : -1; - yinc = (dy > 0) ? 1 : -1; - dx = abs(ul_x2 - ul_x1); - dy = abs(ul_y2 - ul_y1); - - ili93xx_draw_pixel(x, y); - - if (dx > dy) { - cumul = dx >> 1; - - for (i = 1; i <= dx; i++) { - x += xinc; - cumul += dy; - - if (cumul >= dx) { - cumul -= dx; - y += yinc; - } - - ili93xx_draw_pixel(x, y); - } - } else { - cumul = dy >> 1; - - for (i = 1; i <= dy; i++) { - y += yinc; - cumul += dx; - - if (cumul >= dy) { - cumul -= dy; - x += xinc; - } - - ili93xx_draw_pixel(x, y); - } - } -} - -/** - * \brief Draw a line on LCD. - * - * \param ul_x1 X coordinate of line start. - * \param ul_y1 Y coordinate of line start. - * \param ul_x2 X coordinate of line end. - * \param ul_y2 Y coordinate of line end. - */ -void ili93xx_draw_line(uint32_t ul_x1, uint32_t ul_y1, - uint32_t ul_x2, uint32_t ul_y2) -{ - if ((ul_y1 == ul_y2) || (ul_x1 == ul_x2)) { - ili93xx_draw_filled_rectangle(ul_x1, ul_y1, ul_x2, ul_y2); - } else { - ili93xx_draw_line_bresenham(ul_x1, ul_y1, ul_x2, ul_y2); - } -} - -/** - * \brief Draw a rectangle on LCD. - * - * \param ul_x1 X coordinate of upper-left corner on LCD. - * \param ul_y1 Y coordinate of upper-left corner on LCD. - * \param ul_x2 X coordinate of lower-right corner on LCD. - * \param ul_y2 Y coordinate of lower-right corner on LCD. - */ -void ili93xx_draw_rectangle(uint32_t ul_x1, uint32_t ul_y1, - uint32_t ul_x2, uint32_t ul_y2) -{ - ili93xx_check_box_coordinates(&ul_x1, &ul_y1, &ul_x2, &ul_y2); - - ili93xx_draw_filled_rectangle(ul_x1, ul_y1, ul_x2, ul_y1); - ili93xx_draw_filled_rectangle(ul_x1, ul_y2, ul_x2, ul_y2); - - ili93xx_draw_filled_rectangle(ul_x1, ul_y1, ul_x1, ul_y2); - ili93xx_draw_filled_rectangle(ul_x2, ul_y1, ul_x2, ul_y2); -} - -/** - * \brief Draw a filled rectangle on LCD. - * - * \param ul_x1 X coordinate of upper-left corner on LCD. - * \param ul_y1 Y coordinate of upper-left corner on LCD. - * \param ul_x2 X coordinate of lower-right corner on LCD. - * \param ul_y2 Y coordinate of lower-right corner on LCD. - */ -void ili93xx_draw_filled_rectangle(uint32_t ul_x1, uint32_t ul_y1, - uint32_t ul_x2, uint32_t ul_y2) -{ - uint32_t size, blocks; - - /** Swap coordinates if necessary */ - ili93xx_check_box_coordinates(&ul_x1, &ul_y1, &ul_x2, &ul_y2); - - /** Determine the refresh window area */ - ili93xx_set_window(ul_x1, ul_y1, (ul_x2 - ul_x1) + 1, - (ul_y2 - ul_y1) + 1); - - /** Set cursor */ - ili93xx_set_cursor_position(ul_x1, ul_y1); - - /** Prepare to write in Graphic RAM */ - ili93xx_write_ram_prepare(); - - size = (ul_x2 - ul_x1 + 1) * (ul_y2 - ul_y1 + 1); - - /** Send pixels blocks => one SPI IT / block */ - blocks = size / LCD_DATA_CACHE_SIZE; - while (blocks--) { - ili93xx_write_ram_buffer(g_ul_pixel_cache, - LCD_DATA_CACHE_SIZE); - } - - /** Send remaining pixels */ - ili93xx_write_ram_buffer(g_ul_pixel_cache, - size % LCD_DATA_CACHE_SIZE); - - /** Reset the refresh window area */ - ili93xx_set_window(0, 0, g_ul_lcd_x_length, g_ul_lcd_y_length); -} - -/** - * \brief Draw a circle on LCD. - * - * \param ul_x X coordinate of circle center. - * \param ul_y Y coordinate of circle center. - * \param ul_r circle radius. - * - * \return 0 if succeeds, otherwise fails. - */ -uint32_t ili93xx_draw_circle(uint32_t ul_x, uint32_t ul_y, uint32_t ul_r) -{ - int32_t d; - uint32_t curX; - uint32_t curY; - - if (ul_r == 0) { - return 1; - } - - d = 3 - (ul_r << 1); - curX = 0; - curY = ul_r; - - while (curX <= curY) { - ili93xx_draw_pixel(ul_x + curX, ul_y + curY); - ili93xx_draw_pixel(ul_x + curX, ul_y - curY); - ili93xx_draw_pixel(ul_x - curX, ul_y + curY); - ili93xx_draw_pixel(ul_x - curX, ul_y - curY); - ili93xx_draw_pixel(ul_x + curY, ul_y + curX); - ili93xx_draw_pixel(ul_x + curY, ul_y - curX); - ili93xx_draw_pixel(ul_x - curY, ul_y + curX); - ili93xx_draw_pixel(ul_x - curY, ul_y - curX); - - if (d < 0) { - d += (curX << 2) + 6; - } else { - d += ((curX - curY) << 2) + 10; - curY--; - } - - curX++; - } - - return 0; -} - -/** - * \brief Draw a filled circle on LCD. - * - * \param ul_x X coordinate of circle center. - * \param ul_y Y coordinate of circle center. - * \param ul_r circle radius. - * - * \return 0 if succeeds, otherwise fails. - */ -uint32_t ili93xx_draw_filled_circle(uint32_t ul_x, uint32_t ul_y, uint32_t ul_r) -{ - signed int d; /* Decision Variable */ - uint32_t dwCurX; /* Current X Value */ - uint32_t dwCurY; /* Current Y Value */ - uint32_t dwXmin, dwYmin; - - if (ul_r == 0) { - return 1; - } - - d = 3 - (ul_r << 1); - dwCurX = 0; - dwCurY = ul_r; - - while (dwCurX <= dwCurY) { - dwXmin = (dwCurX > ul_x) ? 0 : ul_x - dwCurX; - dwYmin = (dwCurY > ul_y) ? 0 : ul_y - dwCurY; - ili93xx_draw_filled_rectangle(dwXmin, dwYmin, ul_x + dwCurX, - dwYmin); - ili93xx_draw_filled_rectangle(dwXmin, ul_y + dwCurY, - ul_x + dwCurX, ul_y + dwCurY); - dwXmin = (dwCurY > ul_x) ? 0 : ul_x - dwCurY; - dwYmin = (dwCurX > ul_y) ? 0 : ul_y - dwCurX; - ili93xx_draw_filled_rectangle(dwXmin, dwYmin, ul_x + dwCurY, - dwYmin); - ili93xx_draw_filled_rectangle(dwXmin, ul_y + dwCurX, - ul_x + dwCurY, ul_y + dwCurX); - - if (d < 0) { - d += (dwCurX << 2) + 6; - } else { - d += ((dwCurX - dwCurY) << 2) + 10; - dwCurY--; - } - - dwCurX++; - } - - return 0; -} - -/** - * \brief Draw an ASCII character on LCD. - * - * \param ul_x X coordinate of character upper-left corner. - * \param ul_y Y coordinate of character upper-left corner. - * \param uc_c character to print. - */ -static void ili93xx_draw_char(uint32_t ul_x, uint32_t ul_y, uint8_t uc_c) -{ - uint32_t row, col; - uint32_t offset, offset0, offset1; - - /** - * Compute offset according of the specified ASCII character - * Note: the first 32 characters of the ASCII table are not handled - */ - offset = ((uint32_t)uc_c - 0x20) * 20; - - for (col = 0; col < 10; col++) { - /** Compute the first and second byte offset of a column */ - offset0 = offset + col * 2; - offset1 = offset0 + 1; - - /** - * Draw pixel on screen depending on the corresponding bit value - * from the charset - */ - for (row = 0; row < 8; row++) { - if ((p_uc_charset10x14[offset0] >> (7 - row)) & 0x1) { - ili93xx_draw_pixel(ul_x + col, ul_y + row); - } - } - - for (row = 0; row < 6; row++) { - if ((p_uc_charset10x14[offset1] >> (7 - row)) & 0x1) { - ili93xx_draw_pixel(ul_x + col, ul_y + row + 8); - } - } - } -} - -/** - * \brief Draw a string on LCD. - * - * \param ul_x X coordinate of string top-left corner. - * \param ul_y Y coordinate of string top-left corner. - * \param p_str String to display. - */ -void ili93xx_draw_string(uint32_t ul_x, uint32_t ul_y, const uint8_t *p_str) -{ - uint32_t xorg = ul_x; - - while (*p_str != 0) { - /** If newline, jump to the next line (font height + 2) */ - if (*p_str == '\n') { - ul_y += gfont.height + 2; - ul_x = xorg; - } else { - /** - * Draw the character and place cursor right after (font - * width + 2) - */ - ili93xx_draw_char(ul_x, ul_y, *p_str); - ul_x += gfont.width + 2; - } - - p_str++; - } -} - -/** - * \brief Draw a pixmap on LCD. - * - * \param ul_x X coordinate of upper-left corner on LCD. - * \param ul_y Y coordinate of upper-left corner on LCD. - * \param ul_width width of the picture. - * \param ul_height height of the picture. - * \param p_ul_pixmap pixmap of the image. - */ -void ili93xx_draw_pixmap(uint32_t ul_x, uint32_t ul_y, uint32_t ul_width, - uint32_t ul_height, const ili93xx_color_t *p_ul_pixmap) -{ - uint32_t size; - uint32_t dwX1, dwY1, dwX2, dwY2; - dwX1 = ul_x; - dwY1 = ul_y; - dwX2 = ul_x + ul_width; - dwY2 = ul_y + ul_height; - - /** Swap coordinates if necessary */ - ili93xx_check_box_coordinates(&dwX1, &dwY1, &dwX2, &dwY2); - - /** Determine the refresh window area */ - ili93xx_set_window(dwX1, dwY1, (dwX2 - dwX1 + 1), (dwY2 - dwY1 + 1)); - - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - /** Set cursor */ - ili93xx_set_cursor_position(dwX1, dwY1); - /** Prepare to write in GRAM */ - ili93xx_write_ram_prepare(); - - size = (dwX2 - dwX1) * (dwY2 - dwY1); - - ili93xx_write_ram_buffer(p_ul_pixmap, size); - - /** Reset the refresh window area */ - ili93xx_set_window(0, 0, g_ul_lcd_x_length, g_ul_lcd_y_length); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - /** Prepare to write in GRAM */ - ili93xx_write_ram_prepare(); - - size = (dwX2 - dwX1) * (dwY2 - dwY1); - - ili93xx_write_ram_buffer(p_ul_pixmap, size); - - /** Reset the refresh window area */ - ili93xx_set_window(0, 0, g_ul_lcd_x_length, g_ul_lcd_y_length); - } -} - -/** - * \internal - * \brief Helper function to send the drawing limits (boundaries) to the display - * - * This function is used to send the currently set upper-left and lower-right - * drawing limits to the display, as set through the various limit functions. - * - * \param send_end_limits True to also send the lower-right drawing limits - */ -static inline void ili93xx_send_draw_limits(const bool send_end_limits) -{ - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - /** Set Horizontal Address Start Position */ - ili93xx_write_register_word(ILI9325_HORIZONTAL_ADDR_START, - (uint16_t)limit_start_x); - - if (send_end_limits) { - /** Set Horizontal Address End Position */ - ili93xx_write_register_word(ILI9325_HORIZONTAL_ADDR_END, - (uint16_t)(limit_end_x)); - } - - /** Set Vertical Address Start Position */ - ili93xx_write_register_word(ILI9325_VERTICAL_ADDR_START, - (uint16_t)limit_start_y); - if (send_end_limits) { - /** Set Vertical Address End Position */ - ili93xx_write_register_word(ILI9325_VERTICAL_ADDR_END, - (uint16_t)(limit_end_y)); - } - - /** GRAM Horizontal/Vertical Address Set (R20h, R21h) */ - ili93xx_write_register_word(ILI9325_HORIZONTAL_GRAM_ADDR_SET, - limit_start_x); - ili93xx_write_register_word(ILI9325_VERTICAL_GRAM_ADDR_SET, - limit_start_y); - - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - /** Set Horizontal Address Start Position */ - ili93xx_write_register_word(ILI9341_CMD_COLUMN_ADDRESS_SET, - (uint16_t)limit_start_x); - - if (send_end_limits) { - /** Set Horizontal Address End Position */ - ili93xx_write_register_word( - ILI9341_CMD_COLUMN_ADDRESS_SET, - (uint16_t)(limit_end_x)); - } - - ili93xx_write_register(0, NULL, 0); - - /** Set Vertical Address Start Position */ - ili93xx_write_register_word(ILI9341_CMD_PAGE_ADDRESS_SET, - (uint16_t)limit_start_y); - if (send_end_limits) { - /** Set Vertical Address End Position */ - ili93xx_write_register_word( - ILI9341_CMD_PAGE_ADDRESS_SET, - (uint16_t)(limit_end_y)); - } - - ili93xx_write_register(0, NULL, 0); - } -} - -/** - * \brief Set the display top left drawing limit - * - * Use this function to set the top left limit of the drawing limit box. - * - * \param x The x coordinate of the top left corner - * \param y The y coordinate of the top left corner - */ -void ili93xx_set_top_left_limit(ili93xx_coord_t x, ili93xx_coord_t y) -{ - limit_start_x = x; - limit_start_y = y; - - ili93xx_send_draw_limits(false); -} - -/** - * \brief Set the display bottom right drawing limit - * - * Use this function to set the bottom right corner of the drawing limit box. - * - * \param x The x coordinate of the bottom right corner - * \param y The y coordinate of the bottom right corner - */ -void ili93xx_set_bottom_right_limit(ili93xx_coord_t x, ili93xx_coord_t y) -{ - limit_end_x = x; - limit_end_y = y; - - ili93xx_send_draw_limits(true); -} - -/** - * \brief Set the full display drawing limits - * - * Use this function to set the full drawing limit box. - * - * \param start_x The x coordinate of the top left corner - * \param start_y The y coordinate of the top left corner - * \param end_x The x coordinate of the bottom right corner - * \param end_y The y coordinate of the bottom right corner - */ -void ili93xx_set_limits(ili93xx_coord_t start_x, ili93xx_coord_t start_y, - ili93xx_coord_t end_x, ili93xx_coord_t end_y) -{ - limit_start_x = start_x; - limit_start_y = start_y; - limit_end_x = end_x; - limit_end_y = end_y; - - ili93xx_send_draw_limits(true); -} - -/** - * \brief Read a single color from the graphical memory - * - * Use this function to read a color from the graphical memory of the - * controller. - * - * \retval ili93xx_color_t The read color pixel - */ -ili93xx_color_t ili93xx_read_gram(void) -{ - uint8_t value[3]; - ili93xx_color_t color; - - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - LCD_IR(0); - /** Write Data to GRAM (R22h) */ - LCD_IR(ILI9325_GRAM_DATA_REG); - /** two dummy read */ - value[0] = LCD_RD(); - value[1] = LCD_RD(); - /** data upper byte */ - value[0] = LCD_RD(); - /** data lower byte */ - value[1] = LCD_RD(); - - /** Convert RGB565 to RGB888 */ - /** For BGR format */ - color = ((value[0] & 0xF8)) | - ((value[0] & 0x07) << 13) | ((value[1] & 0xE0) << 5) | - ((value[1] & 0x1F) << 19); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - LCD_IR(0); - /** Write Data to GRAM (R2Eh) */ - LCD_IR(ILI9341_CMD_MEMORY_READ); - /** dummy read */ - value[0] = LCD_RD(); - /** the highest byte - R byte*/ - value[0] = LCD_RD(); - /** the middle byte - G byte*/ - value[1] = LCD_RD(); - /** the lowest byte - B byte*/ - value[2] = LCD_RD(); - /** combine R, G, B byte to a color value */ - color = (value[0] << 16) | (value[1] << 8) | value[2]; - } - return color; -} - -/** - * \brief Write the graphical memory with a single color pixel - * - * Use this function to write a single color pixel to the controller memory. - * - * \param color The color pixel to write to the screen - */ -void ili93xx_write_gram(ili93xx_color_t color) -{ - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - LCD_IR(0); - /** Write Data to GRAM (R22h) */ - LCD_IR(ILI9325_GRAM_DATA_REG); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - /** memory write command (R2Ch)*/ - LCD_IR(ILI9341_CMD_MEMORY_WRITE); - LCD_IR(0); - LCD_IR(ILI9341_CMD_WRITE_MEMORY_CONTINUE); - } - LCD_WD((color >> 16) & 0xFF); - LCD_WD((color >> 8) & 0xFF); - LCD_WD(color & 0xFF); -} - -/** - * \brief Copy pixels from SRAM to the screen - * - * Used to copy a large quantitative of data to the screen in one go. - * - * \param pixels Pointer to the pixel data - * \param count Number of pixels to copy to the screen - */ -void ili93xx_copy_pixels_to_screen(const ili93xx_color_t *pixels, - uint32_t count) -{ - /** Sanity check to make sure that the pixel count is not zero */ - Assert(count > 0); - - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - LCD_IR(0); - LCD_IR(ILI9325_GRAM_DATA_REG); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - LCD_IR(ILI9341_CMD_MEMORY_WRITE); - LCD_IR(0); - LCD_IR(ILI9341_CMD_WRITE_MEMORY_CONTINUE); - } - - while (count--) { - LCD_WD((*pixels >> 16) & 0xFF); - LCD_WD((*pixels >> 8) & 0xFF); - LCD_WD(*pixels & 0xFF); - pixels++; - } -} - -/** - * \brief Copy pixels from SRAM to the screen - * - * Used to copy a large quantitative of data to the screen in one go. - * - * \param pixels Pointer to the pixel data - * \param count Number of pixels to copy to the screen - */ -void ili93xx_copy_raw_pixel_24bits_to_screen(const uint8_t *raw_pixels, - uint32_t count) -{ - ili93xx_color_t pixels; - - /** Sanity check to make sure that the pixel count is not zero */ - Assert(count > 0); - - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - LCD_IR(0); - LCD_IR(ILI9325_GRAM_DATA_REG); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - LCD_IR(ILI9341_CMD_MEMORY_WRITE); - LCD_IR(0); - LCD_IR(ILI9341_CMD_WRITE_MEMORY_CONTINUE); - } - while (count--) { - pixels = (*raw_pixels) | - (*(raw_pixels +1)) << 8 | - (*(raw_pixels + 2)) << 16; - LCD_WD((pixels >> 16) & 0xFF); - LCD_WD((pixels >> 8) & 0xFF); - LCD_WD(pixels & 0xFF); - raw_pixels += 3; - } -} - -/** - * \brief Set a given number of pixels to the same color - * - * Use this function to write a certain number of pixels to the same color - * within a set limit. - * - * \param color The color to write to the display - * \param count The number of pixels to write with this color - */ -void ili93xx_duplicate_pixel(const ili93xx_color_t color, uint32_t count) -{ - /** Sanity check to make sure that the pixel count is not zero */ - Assert(count > 0); - - if (g_uc_device_type == DEVICE_TYPE_ILI9325) { - /** Write Data to GRAM (R22h) */ - LCD_IR(0); - LCD_IR(ILI9325_GRAM_DATA_REG); - } else if (g_uc_device_type == DEVICE_TYPE_ILI9341) { - LCD_IR(ILI9341_CMD_MEMORY_WRITE); - LCD_IR(0); - LCD_IR(ILI9341_CMD_WRITE_MEMORY_CONTINUE); - } - - while (count--) { - LCD_WD((color >> 16) & 0xFF); - LCD_WD((color >> 8) & 0xFF); - LCD_WD(color & 0xFF); - } -} - -/** - * \brief Copy pixels from the screen to a pixel buffer - * - * Use this function to copy pixels from the display to an internal SRAM buffer. - * - * \param pixels Pointer to the pixel buffer to read to - * \param count Number of pixels to read - */ -void ili93xx_copy_pixels_from_screen(ili93xx_color_t *pixels, uint32_t count) -{ - /** Remove warnings */ - UNUSED(pixels); - UNUSED(count); -} - -/** - * \} - */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili93xx.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili93xx.h deleted file mode 100644 index 61ba2140d..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/display/ili93xx/ili93xx.h +++ /dev/null @@ -1,349 +0,0 @@ -/** - * \file - * - * \brief API driver for ili93xx TFT display component. - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef ILI93XX_H_INCLUDED -#define ILI93XX_H_INCLUDED - -/** - * \defgroup ili93xx_display_group - LCD with ili93xx component driver - * - * This is a driver for LCD with ili93xx. Now this driver supports ili9325 and - * ili9341.This component is custom LCD used for SAM4E-EK. - * The driver provides functions for initializtion and control of the LCD. - * - * See \ref sam_component_ili93xx_quickstart. - * - * \{ - */ - -#include "compiler.h" -#include "board.h" -#include "conf_ili93xx.h" - -/** @cond 0 */ -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/** @endcond */ - -/** Type define for an integer type large enough to store a pixel color. */ -typedef uint32_t ili93xx_color_t; - -/** Type define for an integer type large enough to store a pixel coordinate. - */ -typedef int16_t ili93xx_coord_t; - -/** This macro generates a 16-bit native color for the display from a - * 24-bit RGB value. - */ -#define ili93xx_COLOR(r, g, b) ((r << 16) | (g << 8) | b) - -typedef ili93xx_color_t gfx_color_t; -typedef int16_t gfx_coord_t; - -/** ili93xx screen size */ -#define ILI93XX_LCD_WIDTH 240 -#define ILI93XX_LCD_HEIGHT 320 - -/** ili93xx ID code */ -#define ILI9325_DEVICE_CODE (0x9325u) -#define ILI9341_DEVICE_CODE (0x9341u) -#define DEVICE_TYPE_ILI9325 1 -#define DEVICE_TYPE_ILI9341 2 -/** Define EBI access for ILI93xx 8-bit System Interface.*/ -#if defined(BOARD_ILI93XX_ADDR) && defined (BOARD_ILI93XX_RS) -static inline void LCD_IR(uint8_t lcd_index) -{ - /** ILI9325 index register address */ - *((volatile uint8_t *)(BOARD_ILI93XX_ADDR)) = lcd_index; -} - -static inline void LCD_WD(uint8_t lcd_data) -{ - *((volatile uint8_t *)((BOARD_ILI93XX_ADDR) | (BOARD_ILI93XX_RS))) = - lcd_data; -} - -static inline uint8_t LCD_RD(void) -{ - return *((volatile uint8_t *)((BOARD_ILI93XX_ADDR) |(BOARD_ILI93XX_RS))); -} - -#else - #error "Missing module configuration for ILI93xx!" -#endif - -/** RGB 24-bits color table definition (RGB888). */ -#define COLOR_BLACK (0x000000u) -#define COLOR_WHITE (0xFFFFFFu) -#define COLOR_BLUE (0x0000FFu) -#define COLOR_GREEN (0x00FF00u) -#define COLOR_RED (0xFF0000u) -#define COLOR_NAVY (0x000080u) -#define COLOR_DARKBLUE (0x00008Bu) -#define COLOR_DARKGREEN (0x006400u) -#define COLOR_DARKCYAN (0x008B8Bu) -#define COLOR_CYAN (0x00FFFFu) -#define COLOR_TURQUOISE (0x40E0D0u) -#define COLOR_INDIGO (0x4B0082u) -#define COLOR_DARKRED (0x800000u) -#define COLOR_OLIVE (0x808000u) -#define COLOR_GRAY (0x808080u) -#define COLOR_SKYBLUE (0x87CEEBu) -#define COLOR_BLUEVIOLET (0x8A2BE2u) -#define COLOR_LIGHTGREEN (0x90EE90u) -#define COLOR_DARKVIOLET (0x9400D3u) -#define COLOR_YELLOWGREEN (0x9ACD32u) -#define COLOR_BROWN (0xA52A2Au) -#define COLOR_DARKGRAY (0xA9A9A9u) -#define COLOR_SIENNA (0xA0522Du) -#define COLOR_LIGHTBLUE (0xADD8E6u) -#define COLOR_GREENYELLOW (0xADFF2Fu) -#define COLOR_SILVER (0xC0C0C0u) -#define COLOR_LIGHTGREY (0xD3D3D3u) -#define COLOR_LIGHTCYAN (0xE0FFFFu) -#define COLOR_VIOLET (0xEE82EEu) -#define COLOR_AZUR (0xF0FFFFu) -#define COLOR_BEIGE (0xF5F5DCu) -#define COLOR_MAGENTA (0xFF00FFu) -#define COLOR_TOMATO (0xFF6347u) -#define COLOR_GOLD (0xFFD700u) -#define COLOR_ORANGE (0xFFA500u) -#define COLOR_SNOW (0xFFFAFAu) -#define COLOR_YELLOW (0xFFFF00u) - -/** - * Input parameters when initializing ili9325 driver. - */ -struct ili93xx_opt_t { - /** LCD width in pixel*/ - uint32_t ul_width; - /** LCD height in pixel*/ - uint32_t ul_height; - /** LCD foreground color*/ - uint32_t foreground_color; - /** LCD background color*/ - uint32_t background_color; -}; - -/** - * Font structure - */ -struct ili93xx_font { - /** Font width in pixels. */ - uint8_t width; - /** Font height in pixels. */ - uint8_t height; -}; - -/** - * Display direction option - */ -enum ili93xx_display_direction { - LANDSCAPE = 0, - PORTRAIT = 1 -}; - -/** - * Shift direction option - */ -enum ili93xx_shift_direction { - H_INCREASE = 0, - H_DECREASE = 1 -}; - -/** - * Scan direction option - */ -enum ili93xx_scan_direction { - V_INCREASE = 0, - V_DEREASE = 1 -}; - -uint32_t ili93xx_init(struct ili93xx_opt_t *p_opt); -void ili93xx_display_on(void); -void ili93xx_display_off(void); -void ili93xx_set_foreground_color(ili93xx_color_t ul_color); -void ili93xx_fill(ili93xx_color_t ul_color); -void ili93xx_set_window(uint32_t ul_x, uint32_t ul_y, - uint32_t ul_width, uint32_t ul_height); -void ili93xx_set_cursor_position(uint16_t us_x, uint16_t us_y); -void ili93xx_scroll(int32_t ul_lines); -void ili93xx_enable_scroll(void); -void ili93xx_disable_scroll(void); -void ili93xx_set_display_direction(enum ili93xx_display_direction e_dd, - enum ili93xx_shift_direction e_shd, - enum ili93xx_scan_direction e_scd); -uint32_t ili93xx_draw_pixel(uint32_t ul_x, uint32_t ul_y); -ili93xx_color_t ili93xx_get_pixel(uint32_t ul_x, uint32_t ul_y); -void ili93xx_draw_line(uint32_t ul_x1, uint32_t ul_y1, - uint32_t ul_x2, uint32_t ul_y2); -void ili93xx_draw_rectangle(uint32_t ul_x1, uint32_t ul_y1, - uint32_t ul_x2, uint32_t ul_y2); -void ili93xx_draw_filled_rectangle(uint32_t ul_x1, uint32_t ul_y1, - uint32_t ul_x2, uint32_t ul_y2); -uint32_t ili93xx_draw_circle(uint32_t ul_x, uint32_t ul_y, uint32_t ul_r); -uint32_t ili93xx_draw_filled_circle(uint32_t ul_x, uint32_t ul_y, - uint32_t ul_r); -void ili93xx_draw_string(uint32_t ul_x, uint32_t ul_y, const uint8_t *p_str); -void ili93xx_draw_pixmap(uint32_t ul_x, uint32_t ul_y, uint32_t ul_width, - uint32_t ul_height, const ili93xx_color_t *p_ul_pixmap); -void ili93xx_set_top_left_limit(ili93xx_coord_t x, ili93xx_coord_t y); -void ili93xx_set_bottom_right_limit(ili93xx_coord_t x, ili93xx_coord_t y); -void ili93xx_set_limits(ili93xx_coord_t start_x, ili93xx_coord_t start_y, - ili93xx_coord_t end_x, ili93xx_coord_t end_y); -ili93xx_color_t ili93xx_read_gram(void); -void ili93xx_write_gram(ili93xx_color_t color); -void ili93xx_copy_pixels_to_screen(const ili93xx_color_t *pixels, - uint32_t count); -void ili93xx_copy_raw_pixel_24bits_to_screen(const uint8_t *raw_pixels, - uint32_t count); -void ili93xx_duplicate_pixel(const ili93xx_color_t color, uint32_t count); -void ili93xx_copy_pixels_from_screen(ili93xx_color_t *pixels, uint32_t count); -uint8_t ili93xx_device_type(void); -void ili93xx_vscroll_area_define(uint16_t us_tfa, uint16_t us_vsa, - uint16_t us_bfa); -uint8_t ili93xx_device_type_identify(void); - -/** @cond 0 */ -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/** @endcond */ - -/** - * \} - */ - -/** - * \page sam_component_ili93xx_quickstart Quick Start Guide for the ILI93XX - * LCD Glass component. - * - * This is the quick start guide for the \ref ili93xx_display_group, with - * step-by-step instructions on how to configure and use the driver for - * a specific use case.The code examples can be copied into e.g the main - * application loop or any other function that will need to control the - * ili93xx LCD Glass component module. Now ili9325 and ili9341 are supported. - * - * \section ili93xx_qs_use_cases Use cases - * - \ref ili93xx_basic - * - * \section ili93xx_basic ili93xx LCD Glass basic usage - * - * This use case will demonstrate how to initialize the ili93xx LCD Glass - * module. - * - * - * \section ili93xx_basic_setup Setup steps - * - * \subsection ili93xx_basic_prereq Prerequisites - * - * This module requires the following driver - * - \ref smc_group - * - * \subsection ili93xx_basic_setup_code - * - * Add this to the main loop or a setup function: - * \code - * struct ili93xx_opt_t g_ili93xx_display_opt; - * g_ili93xx_display_opt.ul_width = ILI93XX_LCD_WIDTH; - * g_ili93xx_display_opt.ul_height = ILI93XX_LCD_HEIGHT; - * g_ili93xx_display_opt.foreground_color = COLOR_BLACK; - * g_ili93xx_display_opt.background_color = COLOR_WHITE; - * ili93xx_init(&g_ili93xx_display_opt); - * \endcode - * - * \subsection ili93xx_basic_setup_workflow - * -\ref ili93xx_basic_setup_code - * - * \section ili93xx_basic_usage Usage steps - * - * \subsection ili93xx_basic_usage_code - * - * -# Set display on - * \code - * ili93xx_display_on(); - * \endcode - * - * -# Turn display off - * \code - * ili93xx_display_off(); - * \endcode - * - * -# Draw a pixel - * \code - * ili93xx_set_foreground_color(COLOR_RED); - * ili93xx_draw_pixel(60, 60); - * \endcode - * - * -# Draw a line and circle - * \code - * ili93xx_set_foreground_color(COLOR_BLUE); - * ili93xx_draw_circle(180, 160, 40); - * ili93xx_set_foreground_color(COLOR_VIOLET); - * ili93xx_draw_line(0, 0, 240, 320); - * \endcode - * - * -# Draw a string of text - * \code - * ili93xx_set_foreground_color(COLOR_BLACK); - * ili93xx_draw_string(10, 20, (uint8_t *)"ili93xx_lcd example"); - * \endcode - * - * -# Fill a rectangle with one certain color - * \code - * ili93xx_set_foreground_color(COLOR_BLUE); - * ili93xx_draw_filled_rectangle(0, 0, ILI93XX_LCD_WIDTH, ILI93XX_LCD_HEIGHT); - * \endcode - * - * -# Get device type - * \code - * ili93xx_device_type(); - * \endcode - */ - -#endif /* ILI93XX_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/documentation.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/documentation.h deleted file mode 100644 index 63837b095..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/documentation.h +++ /dev/null @@ -1,72 +0,0 @@ -/** - * \file - * - * \brief Ethernet Phy management - * - * Copyright (c) 2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -/** - * - * \defgroup ethernet_phy_group Ethernet Phy - * - * This is the common API for Ethernet Phy on ARMs. Additional features are available - * in the documentation of the specific modules. - * - * \section ethernet_phy_group_platform Platform Dependencies - * - * The ethernet_phy API is partially chip- or platform-specific. While all - * platforms provide mostly the same functionality, there are some - * variations around how different bus types and clock tree structures - * are handled. - * - * The following functions are available on all platforms, but there may - * be variations in the function signature (i.e. parameters) and - * behaviour. These functions are typically called by platform-specific - * parts of drivers, and applications that aren't intended to be - * portable: - * - ethernet_phy_init() - * - ethernet_phy_set_link() - * - ethernet_phy_auto_negotiate() - * - ethernet_phy_reset() - * - * @{ - */ - -//! @} - diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/ksz8051mnl/ethernet_phy.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/ksz8051mnl/ethernet_phy.c deleted file mode 100644 index 790f9dfb9..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/ksz8051mnl/ethernet_phy.c +++ /dev/null @@ -1,428 +0,0 @@ - /** - * \file - * - * \brief API driver for KSZ8051MNL PHY component. - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#include "ethernet_phy.h" -#include "gmac.h" -#include "conf_eth.h" - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -/** - * \defgroup ksz8051mnl_ethernet_phy_group PHY component (KSZ8051MNL) - * - * Driver for the ksz8051mnl component. This driver provides access to the main - * features of the PHY. - * - * \section dependencies Dependencies - * This driver depends on the following modules: - * - \ref gmac_group Ethernet Media Access Controller (GMAC) module. - * - * @{ - */ - -/* Max PHY number */ -#define ETH_PHY_MAX_ADDR 31 - -/* Ethernet PHY operation max retry count */ -#define ETH_PHY_RETRY_MAX 1000000 - -/* Ethernet PHY operation timeout */ -#define ETH_PHY_TIMEOUT 10 - -/** - * \brief Find a valid PHY Address ( from addrStart to 31 ). - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_phy_addr PHY address. - * \param uc_start_addr Start address of the PHY to be searched. - * - * \return 0xFF when no valid PHY address is found. - */ -static uint8_t ethernet_phy_find_valid(Gmac *p_gmac, uint8_t uc_phy_addr, - uint8_t uc_start_addr) -{ - uint32_t ul_value = 0; - uint8_t uc_rc = 0; - uint8_t uc_cnt; - uint8_t uc_phy_address = uc_phy_addr; - - gmac_enable_management(p_gmac, true); - - /* Check the current PHY address */ - gmac_phy_read(p_gmac, uc_phy_addr, GMII_PHYID1, &ul_value); - - /* Find another one */ - if (ul_value != GMII_OUI_LSB) { - uc_rc = 0xFF; - for (uc_cnt = uc_start_addr; uc_cnt <= ETH_PHY_MAX_ADDR; uc_cnt++) { - uc_phy_address = (uc_phy_address + 1) & 0x1F; - gmac_phy_read(p_gmac, uc_phy_address, GMII_PHYID1, &ul_value); - if (ul_value == GMII_OUI_MSB) { - uc_rc = uc_phy_address; - break; - } - } - } - - gmac_enable_management(p_gmac, false); - - if (uc_rc != 0xFF) { - gmac_phy_read(p_gmac, uc_phy_address, GMII_BMSR, &ul_value); - } - return uc_rc; -} - - -/** - * \brief Perform a HW initialization to the PHY and set up clocks. - * - * This should be called only once to initialize the PHY pre-settings. - * The PHY address is the reset status of CRS, RXD[3:0] (the emacPins' pullups). - * The COL pin is used to select MII mode on reset (pulled up for Reduced MII). - * The RXDV pin is used to select test mode on reset (pulled up for test mode). - * The above pins should be predefined for corresponding settings in resetPins. - * The GMAC peripheral pins are configured after the reset is done. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_phy_addr PHY address. - * \param ul_mck GMAC MCK. - * - * Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. - */ -uint8_t ethernet_phy_init(Gmac *p_gmac, uint8_t uc_phy_addr, uint32_t mck) -{ - uint8_t uc_rc = GMAC_TIMEOUT; - uint8_t uc_phy; - - ethernet_phy_reset(GMAC,uc_phy_addr); - - /* Configure GMAC runtime clock */ - uc_rc = gmac_set_mdc_clock(p_gmac, mck); - if (uc_rc != GMAC_OK) { - return 0; - } - - /* Check PHY Address */ - uc_phy = ethernet_phy_find_valid(p_gmac, uc_phy_addr, 0); - if (uc_phy == 0xFF) { - return 0; - } - if (uc_phy != uc_phy_addr) { - ethernet_phy_reset(p_gmac, uc_phy_addr); - } - - return uc_rc; -} - - -/** - * \brief Get the Link & speed settings, and automatically set up the GMAC with the - * settings. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_phy_addr PHY address. - * \param uc_apply_setting_flag Set to 0 to not apply the PHY configurations, else to apply. - * - * Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. - */ -uint8_t ethernet_phy_set_link(Gmac *p_gmac, uint8_t uc_phy_addr, - uint8_t uc_apply_setting_flag) -{ - uint32_t ul_stat1; - uint32_t ul_stat2; - uint8_t uc_phy_address, uc_speed, uc_fd; - uint8_t uc_rc = GMAC_TIMEOUT; - - gmac_enable_management(p_gmac, true); - - uc_phy_address = uc_phy_addr; - - uc_rc = gmac_phy_read(p_gmac, uc_phy_address, GMII_BMSR, &ul_stat1); - if (uc_rc != GMAC_OK) { - /* Disable PHY management and start the GMAC transfer */ - gmac_enable_management(p_gmac, false); - - return uc_rc; - } - - if ((ul_stat1 & GMII_LINK_STATUS) == 0) { - /* Disable PHY management and start the GMAC transfer */ - gmac_enable_management(p_gmac, false); - - return GMAC_INVALID; - } - - if (uc_apply_setting_flag == 0) { - /* Disable PHY management and start the GMAC transfer */ - gmac_enable_management(p_gmac, false); - - return uc_rc; - } - - /* Read advertisement */ - uc_rc = gmac_phy_read(p_gmac, uc_phy_address, GMII_ANAR, &ul_stat2); - if (uc_rc != GMAC_OK) { - /* Disable PHY management and start the GMAC transfer */ - gmac_enable_management(p_gmac, false); - - return uc_rc; - } - - if ((ul_stat1 & GMII_100BASE_TX_FD) && (ul_stat2 & GMII_100TX_FDX)) { - /* Set GMAC for 100BaseTX and Full Duplex */ - uc_speed = true; - uc_fd = true; - } - - if ((ul_stat1 & GMII_10BASE_T_FD) && (ul_stat2 & GMII_10_FDX)) { - /* Set MII for 10BaseT and Full Duplex */ - uc_speed = false; - uc_fd = true; - } - - if ((ul_stat1 & GMII_100BASE_T4_HD) && (ul_stat2 & GMII_100TX_HDX)) { - /* Set MII for 100BaseTX and Half Duplex */ - uc_speed = true; - uc_fd = false; - } - - if ((ul_stat1 & GMII_10BASE_T_HD) && (ul_stat2 & GMII_10_HDX)) { - /* Set MII for 10BaseT and Half Duplex */ - uc_speed = false; - uc_fd = false; - } - - gmac_set_speed(p_gmac, uc_speed); - gmac_enable_full_duplex(p_gmac, uc_fd); - - /* Start the GMAC transfers */ - gmac_enable_management(p_gmac, false); - return uc_rc; -} - - -/** - * \brief Issue an auto negotiation of the PHY. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_phy_addr PHY address. - * - * Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. - */ -uint8_t ethernet_phy_auto_negotiate(Gmac *p_gmac, uint8_t uc_phy_addr) -{ - uint32_t ul_retry_max = ETH_PHY_RETRY_MAX; - uint32_t ul_value; - uint32_t ul_phy_anar; - uint32_t ul_phy_analpar; - uint32_t ul_retry_count = 0; - uint8_t uc_speed = 0; - uint8_t uc_fd=0; - uint8_t uc_rc = GMAC_TIMEOUT; - - gmac_enable_management(p_gmac, true); - - /* Set up control register */ - uc_rc = gmac_phy_read(p_gmac, uc_phy_addr, GMII_BMCR, &ul_value); - if (uc_rc != GMAC_OK) { - gmac_enable_management(p_gmac, false); - return uc_rc; - } - - ul_value &= ~(uint32_t)GMII_AUTONEG; /* Remove auto-negotiation enable */ - ul_value &= ~(uint32_t)(GMII_LOOPBACK | GMII_POWER_DOWN); - ul_value |= (uint32_t)GMII_ISOLATE; /* Electrically isolate PHY */ - uc_rc = gmac_phy_write(p_gmac, uc_phy_addr, GMII_BMCR, ul_value); - if (uc_rc != GMAC_OK) { - gmac_enable_management(p_gmac, false); - return uc_rc; - } - - /* - * Set the Auto_negotiation Advertisement Register. - * MII advertising for Next page. - * 100BaseTxFD and HD, 10BaseTFD and HD, IEEE 802.3. - */ - ul_phy_anar = GMII_100TX_FDX | GMII_100TX_HDX | GMII_10_FDX | GMII_10_HDX | - GMII_AN_IEEE_802_3; - uc_rc = gmac_phy_write(p_gmac, uc_phy_addr, GMII_ANAR, ul_phy_anar); - if (uc_rc != GMAC_OK) { - gmac_enable_management(p_gmac, false); - return uc_rc; - } - - /* Read & modify control register */ - uc_rc = gmac_phy_read(p_gmac, uc_phy_addr, GMII_BMCR, &ul_value); - if (uc_rc != GMAC_OK) { - gmac_enable_management(p_gmac, false); - return uc_rc; - } - - ul_value |= GMII_SPEED_SELECT | GMII_AUTONEG | GMII_DUPLEX_MODE; - uc_rc = gmac_phy_write(p_gmac, uc_phy_addr, GMII_BMCR, ul_value); - if (uc_rc != GMAC_OK) { - gmac_enable_management(p_gmac, false); - return uc_rc; - } - - /* Restart auto negotiation */ - ul_value |= (uint32_t)GMII_RESTART_AUTONEG; - ul_value &= ~(uint32_t)GMII_ISOLATE; - uc_rc = gmac_phy_write(p_gmac, uc_phy_addr, GMII_BMCR, ul_value); - if (uc_rc != GMAC_OK) { - gmac_enable_management(p_gmac, false); - return uc_rc; - } - - /* Check if auto negotiation is completed */ - while (1) { - uc_rc = gmac_phy_read(p_gmac, uc_phy_addr, GMII_BMSR, &ul_value); - if (uc_rc != GMAC_OK) { - gmac_enable_management(p_gmac, false); - return uc_rc; - } - /* Done successfully */ - if (ul_value & GMII_AUTONEG_COMP) { - break; - } - - /* Timeout check */ - if (ul_retry_max) { - if (++ul_retry_count >= ul_retry_max) { - gmac_enable_management(p_gmac, false); - return GMAC_TIMEOUT; - } - } - } - - /* Get the auto negotiate link partner base page */ - uc_rc = gmac_phy_read(p_gmac, uc_phy_addr, GMII_PCR1, &ul_phy_analpar); - if (uc_rc != GMAC_OK) { - gmac_enable_management(p_gmac, false); - return uc_rc; - } - - - /* Set up the GMAC link speed */ - if ((ul_phy_anar & ul_phy_analpar) & GMII_100TX_FDX) { - /* Set MII for 100BaseTX and Full Duplex */ - uc_speed = true; - uc_fd = true; - } else if ((ul_phy_anar & ul_phy_analpar) & GMII_10_FDX) { - /* Set MII for 10BaseT and Full Duplex */ - uc_speed = false; - uc_fd = true; - } else if ((ul_phy_anar & ul_phy_analpar) & GMII_100TX_HDX) { - /* Set MII for 100BaseTX and half Duplex */ - uc_speed = true; - uc_fd = false; - } else if ((ul_phy_anar & ul_phy_analpar) & GMII_10_HDX) { - /* Set MII for 10BaseT and half Duplex */ - uc_speed = false; - uc_fd = false; - } - - gmac_set_speed(p_gmac, uc_speed); - gmac_enable_full_duplex(p_gmac, uc_fd); - - /* Select Media Independent Interface type */ - gmac_select_mii_mode(p_gmac, ETH_PHY_MODE); - - gmac_enable_transmit(GMAC, true); - gmac_enable_receive(GMAC, true); - - gmac_enable_management(p_gmac, false); - return uc_rc; -} - -/** - * \brief Issue a SW reset to reset all registers of the PHY. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_phy_addr PHY address. - * - * \Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. - */ -uint8_t ethernet_phy_reset(Gmac *p_gmac, uint8_t uc_phy_addr) -{ - uint32_t ul_bmcr = GMII_RESET; - uint8_t uc_phy_address = uc_phy_addr; - uint32_t ul_timeout = ETH_PHY_TIMEOUT; - uint8_t uc_rc = GMAC_TIMEOUT; - - gmac_enable_management(p_gmac, true); - - ul_bmcr = GMII_RESET; - gmac_phy_write(p_gmac, uc_phy_address, GMII_BMCR, ul_bmcr); - - do { - gmac_phy_read(p_gmac, uc_phy_address, GMII_BMCR, &ul_bmcr); - ul_timeout--; - } while ((ul_bmcr & GMII_RESET) && ul_timeout); - - gmac_enable_management(p_gmac, false); - - if (!ul_timeout) { - uc_rc = GMAC_OK; - } - - return (uc_rc); -} - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond - -/** - * \} - */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/ksz8051mnl/ethernet_phy.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/ksz8051mnl/ethernet_phy.h deleted file mode 100644 index bb6c1bffa..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/components/ethernet_phy/ksz8051mnl/ethernet_phy.h +++ /dev/null @@ -1,211 +0,0 @@ -/** - * \file - * - * \brief KSZ8051MNL (Ethernet PHY) driver for SAM. - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef ETHERNET_PHY_H_INCLUDED -#define ETHERNET_PHY_H_INCLUDED - -#include "compiler.h" - -// IEEE defined Registers -#define GMII_BMCR 0x00 // Basic Control -#define GMII_BMSR 0x01 // Basic Status -#define GMII_PHYID1 0x02 // PHY Idendifier 1 -#define GMII_PHYID2 0x03 // PHY Idendifier 2 -#define GMII_ANAR 0x04 // Auto_Negotiation Advertisement -#define GMII_ANLPAR 0x05 // Auto_negotiation Link Partner Ability -#define GMII_ANER 0x06 // Auto-negotiation Expansion -#define GMII_ANNPR 0x07 // Auto-negotiation Next Page -#define GMII_ANLPNPAR 0x08 // Link Partner Next Page Ability -//#define GMII_1000BTCR 9 // 1000Base-T Control // Reserved -//#define GMII_1000BTSR 10 // 1000Base-T Status // Reserved -#define GMII_AFECR1 0x11 // AFE Control 1 -//#define GMII_ERDWR 12 // Extend Register - Data Write Register -//#define GMII_ERDRR 13 // Extend Register - Data Read Register -//14 reserved -#define GMII_RXERCR 0x15 // RXER Counter - -#define GMII_OMSOR 0x16 // Operation Mode Strap Override -#define GMII_OMSSR 0x17 // Operation Mode Strap Status -#define GMII_ECR 0x18 // Expanded Control -//#define GMII_DPPSR 19 // Digital PMA/PCS Status -//20 reserved -//#define GMII_RXERCR 21 // RXER Counter Register -//22-26 reserved -#define GMII_ICSR 0x1B // Interrupt Control/Status -//#define GMII_DDC1R 28 // Digital Debug Control 1 Register -#define GMII_LCSR 0x1D // LinkMD Control/Status - -//29-30 reserved -#define GMII_PCR1 0x1E // PHY Control 1 -#define GMII_PCR2 0x1F // PHY Control 2 - -/* -//Extend Registers -#define GMII_CCR 256 // Common Control Register -#define GMII_SSR 257 // Strap Status Register -#define GMII_OMSOR 258 // Operation Mode Strap Override Register -#define GMII_OMSSR 259 // Operation Mode Strap Status Register -#define GMII_RCCPSR 260 // RGMII Clock and Control Pad Skew Register -#define GMII_RRDPSR 261 // RGMII RX Data Pad Skew Register -#define GMII_ATR 263 // Analog Test Register -*/ - - -// Bit definitions: GMII_BMCR 0x00 Basic Control -#define GMII_RESET (1 << 15) // 1= Software Reset; 0=Normal Operation -#define GMII_LOOPBACK (1 << 14) // 1=loopback Enabled; 0=Normal Operation -#define GMII_SPEED_SELECT (1 << 13) // 1=100Mbps; 0=10Mbps -#define GMII_AUTONEG (1 << 12) // Auto-negotiation Enable -#define GMII_POWER_DOWN (1 << 11) // 1=Power down 0=Normal operation -#define GMII_ISOLATE (1 << 10) // 1 = Isolates 0 = Normal operation -#define GMII_RESTART_AUTONEG (1 << 9) // 1 = Restart auto-negotiation 0 = Normal operation -#define GMII_DUPLEX_MODE (1 << 8) // 1 = Full duplex operation 0 = Normal operation -#define GMII_COLLISION_TEST (1 << 7) // 1 = Enable COL test; 0 = Disable COL test -//#define GMII_SPEED_SELECT_MSB (1 << 6) // Reserved -// Reserved 6 to 0 // Read as 0, ignore on write - -// Bit definitions: GMII_BMSR 0x01 Basic Status -#define GMII_100BASE_T4 (1 << 15) // 100BASE-T4 Capable -#define GMII_100BASE_TX_FD (1 << 14) // 100BASE-TX Full Duplex Capable -#define GMII_100BASE_T4_HD (1 << 13) // 100BASE-TX Half Duplex Capable -#define GMII_10BASE_T_FD (1 << 12) // 10BASE-T Full Duplex Capable -#define GMII_10BASE_T_HD (1 << 11) // 10BASE-T Half Duplex Capable -// Reserved 10 to79 // Read as 0, ignore on write -//#define GMII_EXTEND_STATUS (1 << 8) // 1 = Extend Status Information In Reg 15 -// Reserved 7 -#define GMII_MF_PREAMB_SUPPR (1 << 6) // MII Frame Preamble Suppression -#define GMII_AUTONEG_COMP (1 << 5) // Auto-negotiation Complete -#define GMII_REMOTE_FAULT (1 << 4) // Remote Fault -#define GMII_AUTONEG_ABILITY (1 << 3) // Auto Configuration Ability -#define GMII_LINK_STATUS (1 << 2) // Link Status -#define GMII_JABBER_DETECT (1 << 1) // Jabber Detect -#define GMII_EXTEND_CAPAB (1 << 0) // Extended Capability - - -// Bit definitions: GMII_PHYID1 0x02 PHY Idendifier 1 -// Bit definitions: GMII_PHYID2 0x03 PHY Idendifier 2 -#define GMII_LSB_MASK 0x3F -#define GMII_OUI_MSB 0x0022 -#define GMII_OUI_LSB 0x05 - - -// Bit definitions: GMII_ANAR 0x04 Auto_Negotiation Advertisement -// Bit definitions: GMII_ANLPAR 0x05 Auto_negotiation Link Partner Ability -#define GMII_NP (1 << 15) // Next page Indication -// Reserved 7 -#define GMII_RF (1 << 13) // Remote Fault -// Reserved 12 // Write as 0, ignore on read -#define GMII_PAUSE_MASK (3 << 11) // 0,0 = No Pause 1,0 = Asymmetric Pause(link partner) - // 0,1 = Symmetric Pause 1,1 = Symmetric&Asymmetric Pause(local device) -#define GMII_100T4 (1 << 9) // 100BASE-T4 Support -#define GMII_100TX_FDX (1 << 8) // 100BASE-TX Full Duplex Support -#define GMII_100TX_HDX (1 << 7) // 100BASE-TX Support -#define GMII_10_FDX (1 << 6) // 10BASE-T Full Duplex Support -#define GMII_10_HDX (1 << 5) // 10BASE-T Support -// Selector 4 to 0 // Protocol Selection Bits -#define GMII_AN_IEEE_802_3 0x0001 // [00001] = IEEE 802.3 - - -// Bit definitions: GMII_ANER 0x06 Auto-negotiation Expansion -// Reserved 15 to 5 // Read as 0, ignore on write -#define GMII_PDF (1 << 4) // Local Device Parallel Detection Fault -#define GMII_LP_NP_ABLE (1 << 3) // Link Partner Next Page Able -#define GMII_NP_ABLE (1 << 2) // Local Device Next Page Able -#define GMII_PAGE_RX (1 << 1) // New Page Received -#define GMII_LP_AN_ABLE (1 << 0) // Link Partner Auto-negotiation Able - -/** - * \brief Perform a HW initialization to the PHY and set up clocks. - * - * This should be called only once to initialize the PHY pre-settings. - * The PHY address is the reset status of CRS, RXD[3:0] (the GmacPins' pullups). - * The COL pin is used to select MII mode on reset (pulled up for Reduced MII). - * The RXDV pin is used to select test mode on reset (pulled up for test mode). - * The above pins should be predefined for corresponding settings in resetPins. - * The GMAC peripheral pins are configured after the reset is done. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_phy_addr PHY address. - * \param ul_mck GMAC MCK. - * - * Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. - */ -uint8_t ethernet_phy_init(Gmac *p_gmac, uint8_t uc_phy_addr, uint32_t ul_mck); - - -/** - * \brief Get the Link & speed settings, and automatically set up the GMAC with the - * settings. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_phy_addr PHY address. - * \param uc_apply_setting_flag Set to 0 to not apply the PHY configurations, else to apply. - * - * Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. - */ -uint8_t ethernet_phy_set_link(Gmac *p_gmac, uint8_t uc_phy_addr, - uint8_t uc_apply_setting_flag); - - -/** - * \brief Issue an auto negotiation of the PHY. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_phy_addr PHY address. - * - * Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. - */ -uint8_t ethernet_phy_auto_negotiate(Gmac *p_gmac, uint8_t uc_phy_addr); - -/** - * \brief Issue a SW reset to reset all registers of the PHY. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_phy_addr PHY address. - * - * \Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. - */ -uint8_t ethernet_phy_reset(Gmac *p_gmac, uint8_t uc_phy_addr); - -#endif /* #ifndef ETHERNET_PHY_H_INCLUDED */ - diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/ebi/smc/smc.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/ebi/smc/smc.c deleted file mode 100644 index 4e18e6f16..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/ebi/smc/smc.c +++ /dev/null @@ -1,429 +0,0 @@ -/** - * \file - * - * \brief Static Memory Controller (SMC) driver for SAM. - * - * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#include "smc.h" -#include "board.h" - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -/** - * \defgroup sam_drivers_smc_group Static Memory Controller (SMC) - * - * Driver for the Static Memory Controller. It provides functions for configuring - * and using the on-chip SMC. - * - * @{ - */ - -#if ((SAM3S) || (SAM3U) || (SAM3XA) || (SAM4S) || (SAM4E)) -#define SMC_WPKEY_VALUE (0x534D43) -/** - * \brief Configure the SMC Setup timing for the specified Chip Select. - * - * \param p_smc Pointer to an SMC instance. - * \param ul_cs Chip Select number to be set. - * \param ul_setup_timing Setup timing for NWE, NCS, NRD. - */ -void smc_set_setup_timing(Smc *p_smc, uint32_t ul_cs, - uint32_t ul_setup_timing) -{ - p_smc->SMC_CS_NUMBER[ul_cs].SMC_SETUP = ul_setup_timing; -} - -/** - * \brief Configure the SMC pulse timing for the specified Chip Select. - * - * \param p_smc Pointer to an SMC instance. - * \param ul_cs Chip Select number to be set. - * \param ul_pulse_timing Pulse timing for NWE,NCS,NRD. - */ -void smc_set_pulse_timing(Smc *p_smc, uint32_t ul_cs, - uint32_t ul_pulse_timing) -{ - p_smc->SMC_CS_NUMBER[ul_cs].SMC_PULSE = ul_pulse_timing; -} - -/** - * \brief Configure the SMC cycle timing for the specified Chip Select. - * - * \param p_smc Pointer to an SMC instance. - * \param ul_cs Chip Select number to be set. - * \param ul_cycle_timing Cycle timing for NWE and NRD. - */ -void smc_set_cycle_timing(Smc *p_smc, uint32_t ul_cs, - uint32_t ul_cycle_timing) -{ - p_smc->SMC_CS_NUMBER[ul_cs].SMC_CYCLE = ul_cycle_timing; -} - -/** - * \brief Configure the SMC mode for the specified Chip Select. - * - * \param p_smc Pointer to an SMC instance. - * \param ul_cs Chip select number to be set. - * \param ul_mode SMC mode. - */ -void smc_set_mode(Smc *p_smc, uint32_t ul_cs, uint32_t ul_mode) -{ - p_smc->SMC_CS_NUMBER[ul_cs].SMC_MODE = ul_mode; -} - -/** - * \brief Get the SMC mode of the specified Chip Select. - * - * \param p_smc Pointer to an SMC instance. - * \param ul_cs Chip select number to be set. - * - * \return SMC mode. - */ -uint32_t smc_get_mode(Smc *p_smc, uint32_t ul_cs) -{ - return p_smc->SMC_CS_NUMBER[ul_cs].SMC_MODE; -} - -/** - * \brief Set write protection of SMC registers. - * - * \param p_smc Pointer to an SMC instance. - * \param ul_enable 1 to enable, 0 to disable. - */ -void smc_enable_writeprotect(Smc *p_smc, uint32_t ul_enable) -{ -#if (SAM3S || SAM4S || SAM4E) - if (ul_enable) - p_smc->SMC_WPMR = - SMC_WPMR_WPKEY(SMC_WPKEY_VALUE) | SMC_WPMR_WPEN; - else - p_smc->SMC_WPMR = SMC_WPMR_WPKEY(SMC_WPKEY_VALUE); -#else - if (ul_enable) - p_smc->SMC_WPCR = - SMC_WPCR_WP_KEY(SMC_WPKEY_VALUE) | - SMC_WPCR_WP_EN; - else - p_smc->SMC_WPCR = SMC_WPCR_WP_KEY(SMC_WPKEY_VALUE); -#endif -} - -/** - * \brief Get the status of SMC write protection register. - * - * \param p_smc Pointer to an SMC instance. - * - * \return Write protect status. - */ -uint32_t smc_get_writeprotect_status(Smc *p_smc) -{ - return p_smc->SMC_WPSR; -} -#endif /* ((SAM3S) || (SAM3U) || (SAM3XA)) */ - -#if ((SAM3U) || (SAM3XA)) -/** - * \brief Configure the SMC nand timing for the specified Chip Select. - * \param p_smc Pointer to an SMC instance. - * \param ul_cs Chip Select number to be set. - * \param ul_nand_timing nand timing for related signal. - */ -void smc_set_nand_timing(Smc *p_smc, uint32_t ul_cs, - uint32_t ul_nand_timing) -{ - p_smc->SMC_CS_NUMBER[ul_cs].SMC_TIMINGS= ul_nand_timing; -} - -/** - * \brief Initialize NFC configuration. - * \param p_smc Pointer to an SMC instance. - * \param ul_config SMC NFC Configuration. - */ -void smc_nfc_init(Smc *p_smc, uint32_t ul_config) -{ - p_smc->SMC_CFG = ul_config; -} - -/** - * \brief Set NFC page size. - * - * \param p_smc Pointer to an SMC instance. - * \param ul_page_size Use pattern defined in the device header file. - */ -void smc_nfc_set_page_size(Smc *p_smc, uint32_t ul_page_size) -{ - p_smc->SMC_CFG &= (~SMC_CFG_PAGESIZE_Msk); - p_smc->SMC_CFG |= ul_page_size; -} - -/** - * \brief Enable NFC controller to read both main and spare area in read mode. - * - * \param p_smc Pointer to an SMC instance. - */ -void smc_nfc_enable_spare_read(Smc *p_smc) -{ - p_smc->SMC_CFG |= SMC_CFG_RSPARE; -} - -/** - * \brief Prevent NFC controller from reading the spare area in read mode. - * - * \param p_smc Pointer to an SMC instance. - */ -void smc_nfc_disable_spare_read(Smc *p_smc) -{ - p_smc->SMC_CFG &= (~SMC_CFG_RSPARE); -} - -/** - * \brief Enable NFC controller to write both main and spare area in write mode. - * - * \param p_smc Pointer to an SMC instance. - */ -void smc_nfc_enable_spare_write(Smc *p_smc) -{ - p_smc->SMC_CFG |= SMC_CFG_WSPARE; -} - -/** - * \brief Prevent NFC controller from writing the spare area in read mode. - * - * \param p_smc Pointer to an SMC instance. - */ -void smc_nfc_disable_spare_write(Smc *p_smc) -{ - p_smc->SMC_CFG &= (~SMC_CFG_WSPARE); -} - -/** - * \brief Enable NFC controller. - * - * \param p_smc Pointer to an SMC instance. - */ -void smc_nfc_enable(Smc *p_smc) -{ - p_smc->SMC_CTRL = SMC_CTRL_NFCEN; -} - -/** - * \brief Disable NFC controller. - * - * \param p_smc Pointer to an SMC instance. - */ -void smc_nfc_disable(Smc *p_smc) -{ - p_smc->SMC_CTRL = SMC_CTRL_NFCDIS; -} - -/** - * \brief Get the NFC Status. - * - * \param p_smc Pointer to an SMC instance. - * - * \return Returns the current status register of SMC NFC Status Register. - * This resets the internal value of the status register, so further - * read may yield different values. - */ -uint32_t smc_nfc_get_status(Smc *p_smc) -{ - return p_smc->SMC_SR; -} - -/** - * \brief Enable SMC interrupts. - * - * \param p_smc Pointer to an SMC instance. - * \param ul_sources Interrupt source bitmap. - */ -void smc_nfc_enable_interrupt(Smc *p_smc, uint32_t ul_sources) -{ - p_smc->SMC_IER = ul_sources; -} - -/** - * \brief Disable SMC interrupts. - * - * \param p_smc Pointer to an SMC instance. - * \param ul_sources Interrupt source bitmap. - */ -void smc_nfc_disable_interrupt(Smc *p_smc, uint32_t ul_sources) -{ - p_smc->SMC_IDR = ul_sources; -} - -/** - * \brief Get the interrupt mask. - * - * \param p_smc Pointer to an SMC instance. - * - * \return Interrupt mask bitmap. - */ -uint32_t smc_nfc_get_interrupt_mask(Smc *p_smc) -{ - return p_smc->SMC_IMR; -} - -/** - * \brief Set flash cycle 0 address. - * - * \param p_smc Pointer to an SMC instance. - * \param uc_address0 Address cycle 0 in 5 address cycles. - */ -void smc_nfc_set_address0(Smc *p_smc, uint8_t uc_address0) -{ - p_smc->SMC_ADDR = uc_address0; -} - -/** - * \brief Set NFC sram bank. - * - * \param p_smc Pointer to an SMC instance. - * \param ul_bank NFC sram bank. - */ -void smc_nfc_set_bank(Smc *p_smc, uint32_t ul_bank) -{ - p_smc->SMC_BANK = SMC_BANK_BANK(ul_bank); -} - -/** - * \brief Use the HOST nandflash controller to send a command. - * - * \param p_smc Pointer to an SMC instance. - * \param ul_cmd Command to send. - * \param ul_address_cycle Address cycle when command access is decoded. - * \param ul_cycle0 Address at first cycle. - */ -void smc_nfc_send_command(Smc *p_smc, uint32_t ul_cmd, - uint32_t ul_address_cycle, uint32_t ul_cycle0) -{ - volatile uint32_t *p_command_address; - - /* Wait until host controller is not busy. */ - while (((*((volatile uint32_t *)(BOARD_NF_DATA_ADDR + NFCADDR_CMD_NFCCMD))) - & NFC_BUSY_FLAG) == NFC_BUSY_FLAG) { - } - /* Send the command plus the ADDR_CYCLE. */ - p_command_address = (volatile uint32_t *)(ul_cmd + BOARD_NF_DATA_ADDR); - p_smc->SMC_ADDR = ul_cycle0; - *p_command_address = ul_address_cycle; - while (!((p_smc->SMC_SR & SMC_SR_CMDDONE) == SMC_SR_CMDDONE)) { - } -} - -/** - * \brief Initialize ECC mode. - * - * \param p_smc Pointer to an SMC instance. - * \param ul_type Type of correction, use pattern defined in the device header file. - * \param ul_pagesize Page size of NAND Flash device, use pattern defined in - * the device header file. - */ -void smc_ecc_init(Smc *p_smc, uint32_t ul_type, uint32_t ul_pagesize) -{ - /* Software Reset ECC. */ - p_smc->SMC_ECC_CTRL = SMC_ECC_CTRL_SWRST; - p_smc->SMC_ECC_MD = ul_type | ul_pagesize; -} - -/** - * \brief Get ECC status by giving ecc number. - * - * \param p_smc Pointer to an SMC instance. - * \param ul_parity_number ECC parity number from 0 to 15. - * - * \return ECC status by giving ECC number. - */ -uint32_t smc_ecc_get_status(Smc *p_smc, uint32_t ul_parity_number) -{ - uint32_t status; - - if (ul_parity_number < 8) { - status = p_smc->SMC_ECC_SR1; - } else { - status = p_smc->SMC_ECC_SR2; - ul_parity_number -= 8; - } - - return ((status >> (ul_parity_number * 4)) & ECC_STATUS_MASK); -} - -/** - * \brief Get all ECC parity registers value. - * - * \param p_smc Pointer to an SMC instance. - * \param p_ecc Pointer to a parity buffer. - */ -void smc_ecc_get_value(Smc *p_smc, uint32_t *p_ecc) -{ - p_ecc[0] = p_smc->SMC_ECC_PR0; - p_ecc[1] = p_smc->SMC_ECC_PR1; - p_ecc[2] = p_smc->SMC_ECC_PR2; - p_ecc[3] = p_smc->SMC_ECC_PR3; - p_ecc[4] = p_smc->SMC_ECC_PR4; - p_ecc[5] = p_smc->SMC_ECC_PR5; - p_ecc[6] = p_smc->SMC_ECC_PR6; - p_ecc[7] = p_smc->SMC_ECC_PR7; - p_ecc[8] = p_smc->SMC_ECC_PR8; - p_ecc[9] = p_smc->SMC_ECC_PR9; - p_ecc[10] = p_smc->SMC_ECC_PR10; - p_ecc[11] = p_smc->SMC_ECC_PR11; - p_ecc[12] = p_smc->SMC_ECC_PR12; - p_ecc[13] = p_smc->SMC_ECC_PR13; - p_ecc[14] = p_smc->SMC_ECC_PR14; - p_ecc[15] = p_smc->SMC_ECC_PR15; -} -#endif /* ((SAM3U) || (SAM3XA)) */ - -//@} - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/ebi/smc/smc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/ebi/smc/smc.h deleted file mode 100644 index 5ba786ba5..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/ebi/smc/smc.h +++ /dev/null @@ -1,120 +0,0 @@ -/** - * \file - * - * \brief Static Memory Controller (SMC) driver for SAM. - * - * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef SMC_H_INCLUDED -#define SMC_H_INCLUDED - -#include "compiler.h" - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -#if ((SAM3S) || (SAM3U) || (SAM3XA) || (SAM4S) || (SAM4E)) -void smc_set_setup_timing(Smc *p_smc, uint32_t ul_cs, uint32_t ul_setup_timing); -void smc_set_pulse_timing(Smc *p_smc, uint32_t ul_cs, uint32_t ul_pulse_timing); -void smc_set_cycle_timing(Smc *p_smc, uint32_t ul_cs, uint32_t ul_cycle_timing); -void smc_set_mode(Smc *p_smc, uint32_t ul_cs, uint32_t ul_mode); -uint32_t smc_get_mode(Smc *p_smc, uint32_t ul_cs); -void smc_enable_writeprotect(Smc *p_smc, uint32_t ul_enable); -uint32_t smc_get_writeprotect_status(Smc *p_smc); -#endif /* ((SAM3S) || (SAM3U) || (SAM3XA)) */ - -#if ((SAM3U) || (SAM3XA)) -/* NFCADDR_CMD : NFC Address Command */ -#define NFCADDR_CMD_CMD1 (0xFFu << 2) /* Command Register Value for Cycle 1 */ -#define NFCADDR_CMD_CMD2 (0xFFu << 10) /* Command Register Value for Cycle 2 */ -#define NFCADDR_CMD_VCMD2 (0x1u << 18) /* Valid Cycle 2 Command */ -#define NFCADDR_CMD_ACYCLE (0x7u << 19) /* Number of Address required for the current command */ -#define NFCADDR_CMD_ACYCLE_NONE (0x0u << 19) /* No address cycle */ -#define NFCADDR_CMD_ACYCLE_ONE (0x1u << 19) /* One address cycle */ -#define NFCADDR_CMD_ACYCLE_TWO (0x2u << 19) /* Two address cycles */ -#define NFCADDR_CMD_ACYCLE_THREE (0x3u << 19) /* Three address cycles */ -#define NFCADDR_CMD_ACYCLE_FOUR (0x4u << 19) /* Four address cycles */ -#define NFCADDR_CMD_ACYCLE_FIVE (0x5u << 19) /* Five address cycles */ -#define NFCADDR_CMD_CSID_Pos 22 -#define NFCADDR_CMD_CSID_Msk (0x7u << NFCADDR_CMD_CSID_Pos) /* Chip Select Identifier */ -#define NFCADDR_CMD_CSID(value) ((NFCADDR_CMD_CSID_Msk & ((value) << NFCADDR_CMD_CSID_Pos))) -#define NFCADDR_CMD_NFCEN (0x1u << 25) /* NFC Enable */ -#define NFCADDR_CMD_NFC_READ (0x0u << 26) /* NFC Write Enable */ -#define NFCADDR_CMD_NFC_WIRTE (0x1u << 26) /* NFC Write Enable */ -#define NFCADDR_CMD_NFCCMD (0x1u << 27) /* NFC Command Enable */ - -#define NFC_BUSY_FLAG 0x8000000 -#define ECC_STATUS_MASK 0x07 - -void smc_set_nand_timing(Smc * p_smc, uint32_t ul_cs, - uint32_t ul_nand_timing); -void smc_nfc_init(Smc *p_smc, uint32_t ul_config); -void smc_nfc_set_page_size(Smc *p_smc, uint32_t ul_page_size); -void smc_nfc_enable_spare_read(Smc *p_smc); -void smc_nfc_disable_spare_read(Smc *p_smc); -void smc_nfc_enable_spare_write(Smc *p_smc); -void smc_nfc_disable_spare_write(Smc *p_smc); -void smc_nfc_enable(Smc *p_smc); -void smc_nfc_disable(Smc *p_smc); -uint32_t smc_nfc_get_status(Smc * p_smc); -void smc_nfc_enable_interrupt(Smc *p_smc, uint32_t ul_sources); -void smc_nfc_disable_interrupt(Smc *p_smc, uint32_t ul_sources); -uint32_t smc_nfc_get_interrupt_mask(Smc *p_smc); -void smc_nfc_set_address0(Smc *p_smc, uint8_t uc_address0); -void smc_nfc_set_bank(Smc *p_smc, uint32_t ul_bank); -void smc_nfc_send_command(Smc *p_smc, uint32_t ul_cmd, uint32_t ul_address_cycle, uint32_t ul_cycle0); -void smc_ecc_init(Smc *p_smc, uint32_t ul_type, uint32_t ul_pagesize); -uint32_t smc_ecc_get_status(Smc *p_smc, uint32_t ul_parity_number); -void smc_ecc_get_value(Smc *p_smc, uint32_t *p_ecc); -#endif /* ((SAM3U) || (SAM3XA)) */ - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond - -#endif /* SMC_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/gmac/gmac.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/gmac/gmac.c deleted file mode 100644 index 07e1c5a97..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/gmac/gmac.c +++ /dev/null @@ -1,783 +0,0 @@ - /** - * \file - * - * \brief GMAC (Ethernet MAC) driver for SAM. - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#include "compiler.h" -#include "gmac.h" -#include -#include "conf_eth.h" - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -/** - * \defgroup gmac_group Ethernet Media Access Controller - * - * See \ref gmac_quickstart. - * - * Driver for the GMAC (Ethernet Media Access Controller). - * This file contains basic functions for the GMAC, with support for all modes, settings - * and clock speeds. - * - * \section dependencies Dependencies - * This driver does not depend on other modules. - * - * @{ - */ - -/** TX descriptor lists */ -COMPILER_ALIGNED(8) -static gmac_tx_descriptor_t gs_tx_desc[GMAC_TX_BUFFERS]; -/** TX callback lists */ -static gmac_dev_tx_cb_t gs_tx_callback[GMAC_TX_BUFFERS]; -/** RX descriptors lists */ -COMPILER_ALIGNED(8) -static gmac_rx_descriptor_t gs_rx_desc[GMAC_RX_BUFFERS]; -/** Send Buffer. Section 3.6 of AMBA 2.0 spec states that burst should not cross the - * 1K Boundaries. Receive buffer manager write operations are burst of 2 words => 3 lsb bits - * of the address shall be set to 0. - */ -COMPILER_ALIGNED(8) -static uint8_t gs_uc_tx_buffer[GMAC_TX_BUFFERS * GMAC_TX_UNITSIZE]; - -/** Receive Buffer */ -COMPILER_ALIGNED(8) -static uint8_t gs_uc_rx_buffer[GMAC_RX_BUFFERS * GMAC_RX_UNITSIZE]; - -/** - * GMAC device memory management struct. - */ -typedef struct gmac_dev_mem { - /* Pointer to allocated buffer for RX. The address should be 8-byte aligned - and the size should be GMAC_RX_UNITSIZE * wRxSize. */ - uint8_t *p_rx_buffer; - /* Pointer to allocated RX descriptor list. */ - gmac_rx_descriptor_t *p_rx_dscr; - /* RX size, in number of registered units (RX descriptors). */ - uint16_t us_rx_size; - /* Pointer to allocated buffer for TX. The address should be 8-byte aligned - and the size should be GMAC_TX_UNITSIZE * wTxSize. */ - uint8_t *p_tx_buffer; - /* Pointer to allocated TX descriptor list. */ - gmac_tx_descriptor_t *p_tx_dscr; - /* TX size, in number of registered units (TX descriptors). */ - uint16_t us_tx_size; -} gmac_dev_mem_t; - -/** Return count in buffer */ -#define CIRC_CNT(head,tail,size) (((head) - (tail)) % (size)) - -/* - * Return space available, from 0 to size-1. - * Always leave one free char as a completely full buffer that has (head == tail), - * which is the same as empty. - */ -#define CIRC_SPACE(head,tail,size) CIRC_CNT((tail),((head)+1),(size)) - -/** Circular buffer is empty ? */ -#define CIRC_EMPTY(head, tail) (head == tail) -/** Clear circular buffer */ -#define CIRC_CLEAR(head, tail) (head = tail = 0) - -/** Increment head or tail */ -static void circ_inc(uint16_t *headortail, uint32_t size) -{ - (*headortail)++; - if((*headortail) >= size) { - (*headortail) = 0; - } -} - -/** - * \brief Wait PHY operation to be completed. - * - * \param p_gmac HW controller address. - * \param ul_retry The retry times, 0 to wait forever until completeness. - * - * Return GMAC_OK if the operation is completed successfully. - */ -static uint8_t gmac_wait_phy(Gmac* p_gmac, const uint32_t ul_retry) -{ - volatile uint32_t ul_retry_count = 0; - - while (!gmac_is_phy_idle(p_gmac)) { - if (ul_retry == 0) { - continue; - } - - ul_retry_count++; - - if (ul_retry_count >= ul_retry) { - return GMAC_TIMEOUT; - } - } - return GMAC_OK; -} - -/** - * \brief Disable transfer, reset registers and descriptor lists. - * - * \param p_dev Pointer to GMAC driver instance. - * - */ -static void gmac_reset_tx_mem(gmac_device_t* p_dev) -{ - Gmac *p_hw = p_dev->p_hw; - uint8_t *p_tx_buff = p_dev->p_tx_buffer; - gmac_tx_descriptor_t *p_td = p_dev->p_tx_dscr; - - uint32_t ul_index; - uint32_t ul_address; - - /* Disable TX */ - gmac_enable_transmit(p_hw, 0); - - /* Set up the TX descriptors */ - CIRC_CLEAR(p_dev->us_tx_head, p_dev->us_tx_tail); - for (ul_index = 0; ul_index < p_dev->us_tx_list_size; ul_index++) { - ul_address = (uint32_t) (&(p_tx_buff[ul_index * GMAC_TX_UNITSIZE])); - p_td[ul_index].addr = ul_address; - p_td[ul_index].status.val = GMAC_TXD_USED; - } - p_td[p_dev->us_tx_list_size - 1].status.val = - GMAC_TXD_USED | GMAC_TXD_WRAP; - - /* Set transmit buffer queue */ - gmac_set_tx_queue(p_hw, (uint32_t) p_td); -} - -/** - * \brief Disable receiver, reset registers and descriptor list. - * - * \param p_drv Pointer to GMAC Driver instance. - */ -static void gmac_reset_rx_mem(gmac_device_t* p_dev) -{ - Gmac *p_hw = p_dev->p_hw; - uint8_t *p_rx_buff = p_dev->p_rx_buffer; - gmac_rx_descriptor_t *pRd = p_dev->p_rx_dscr; - - uint32_t ul_index; - uint32_t ul_address; - - /* Disable RX */ - gmac_enable_receive(p_hw, 0); - - /* Set up the RX descriptors */ - p_dev->us_rx_idx = 0; - for (ul_index = 0; ul_index < p_dev->us_rx_list_size; ul_index++) { - ul_address = (uint32_t) (&(p_rx_buff[ul_index * GMAC_RX_UNITSIZE])); - pRd[ul_index].addr.val = ul_address & GMAC_RXD_ADDR_MASK; - pRd[ul_index].status.val = 0; - } - pRd[p_dev->us_rx_list_size - 1].addr.val |= GMAC_RXD_WRAP; - - /* Set receive buffer queue */ - gmac_set_rx_queue(p_hw, (uint32_t) pRd); -} - - -/** - * \brief Initialize the allocated buffer lists for GMAC driver to transfer data. - * Must be invoked after gmac_dev_init() but before RX/TX starts. - * - * \note If input address is not 8-byte aligned, the address is automatically - * adjusted and the list size is reduced by one. - * - * \param p_gmac Pointer to GMAC instance. - * \param p_gmac_dev Pointer to GMAC device instance. - * \param p_dev_mm Pointer to the GMAC memory management control block. - * \param p_tx_cb Pointer to allocated TX callback list. - * - * \return GMAC_OK or GMAC_PARAM. - */ -static uint8_t gmac_init_mem(Gmac* p_gmac, gmac_device_t* p_gmac_dev, - gmac_dev_mem_t* p_dev_mm, - gmac_dev_tx_cb_t* p_tx_cb) -{ - if (p_dev_mm->us_rx_size <= 1 || p_dev_mm->us_tx_size <= 1 || p_tx_cb == NULL) { - return GMAC_PARAM; - } - - /* Assign RX buffers */ - if (((uint32_t) p_dev_mm->p_rx_buffer & 0x7) - || ((uint32_t) p_dev_mm->p_rx_dscr & 0x7)) { - p_dev_mm->us_rx_size--; - } - p_gmac_dev->p_rx_buffer = - (uint8_t *) ((uint32_t) p_dev_mm->p_rx_buffer & 0xFFFFFFF8); - p_gmac_dev->p_rx_dscr = - (gmac_rx_descriptor_t *) ((uint32_t) p_dev_mm->p_rx_dscr - & 0xFFFFFFF8); - p_gmac_dev->us_rx_list_size = p_dev_mm->us_rx_size; - - /* Assign TX buffers */ - if (((uint32_t) p_dev_mm->p_tx_buffer & 0x7) - || ((uint32_t) p_dev_mm->p_tx_dscr & 0x7)) { - p_dev_mm->us_tx_size--; - } - p_gmac_dev->p_tx_buffer = - (uint8_t *) ((uint32_t) p_dev_mm->p_tx_buffer & 0xFFFFFFF8); - p_gmac_dev->p_tx_dscr = - (gmac_tx_descriptor_t *) ((uint32_t) p_dev_mm->p_tx_dscr - & 0xFFFFFFF8); - p_gmac_dev->us_tx_list_size = p_dev_mm->us_tx_size; - p_gmac_dev->func_tx_cb_list = p_tx_cb; - - /* Reset TX & RX */ - gmac_reset_rx_mem(p_gmac_dev); - gmac_reset_tx_mem(p_gmac_dev); - - /* Enable Rx and Tx, plus the statistics register */ - gmac_enable_transmit(p_gmac, true); - gmac_enable_receive(p_gmac, true); - gmac_enable_statistics_write(p_gmac, true); - - /* Set up the interrupts for transmission and errors */ - gmac_enable_interrupt(p_gmac, - GMAC_IER_RXUBR | /* Enable receive used bit read interrupt. */ - GMAC_IER_TUR | /* Enable transmit underrun interrupt. */ - GMAC_IER_RLEX | /* Enable retry limit exceeded interrupt. */ - GMAC_IER_TFC | /* Enable transmit buffers exhausted in mid-frame interrupt. */ - GMAC_IER_TCOMP | /* Enable transmit complete interrupt. */ - GMAC_IER_ROVR | /* Enable receive overrun interrupt. */ - GMAC_IER_HRESP | /* Enable Hresp not OK interrupt. */ - GMAC_IER_PFNZ | /* Enable pause frame received interrupt. */ - GMAC_IER_PTZ); /* Enable pause time zero interrupt. */ - - return GMAC_OK; -} - -/** - * \brief Read the PHY register. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_phy_address PHY address. - * \param uc_address Register address. - * \param p_value Pointer to a 32-bit location to store read data. - * - * \Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. - */ -uint8_t gmac_phy_read(Gmac* p_gmac, uint8_t uc_phy_address, uint8_t uc_address, - uint32_t* p_value) -{ - gmac_maintain_phy(p_gmac, uc_phy_address, uc_address, 1, 0); - - if (gmac_wait_phy(p_gmac, MAC_PHY_RETRY_MAX) == GMAC_TIMEOUT) { - return GMAC_TIMEOUT; - } - *p_value = gmac_get_phy_data(p_gmac); - return GMAC_OK; -} - -/** - * \brief Write the PHY register. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_phy_address PHY Address. - * \param uc_address Register Address. - * \param ul_value Data to write, actually 16-bit data. - * - * \Return GMAC_OK if successfully, GMAC_TIMEOUT if timeout. - */ -uint8_t gmac_phy_write(Gmac* p_gmac, uint8_t uc_phy_address, - uint8_t uc_address, uint32_t ul_value) -{ - gmac_maintain_phy(p_gmac, uc_phy_address, uc_address, 0, ul_value); - - if (gmac_wait_phy(p_gmac, MAC_PHY_RETRY_MAX) == GMAC_TIMEOUT) { - return GMAC_TIMEOUT; - } - return GMAC_OK; -} - -/** - * \brief Initialize the GMAC driver. - * - * \param p_gmac Pointer to the GMAC instance. - * \param p_gmac_dev Pointer to the GMAC device instance. - * \param p_opt GMAC configure options. - */ -void gmac_dev_init(Gmac* p_gmac, gmac_device_t* p_gmac_dev, - gmac_options_t* p_opt) -{ - gmac_dev_mem_t gmac_dev_mm; - - /* Disable TX & RX and more */ - gmac_network_control(p_gmac, 0); - gmac_disable_interrupt(p_gmac, ~0u); - - - gmac_clear_statistics(p_gmac); - - /* Clear all status bits in the receive status register. */ - gmac_clear_rx_status(p_gmac, GMAC_RSR_RXOVR | GMAC_RSR_REC | GMAC_RSR_BNA); - - /* Clear all status bits in the transmit status register */ - gmac_clear_tx_status(p_gmac, GMAC_TSR_UBR | GMAC_TSR_COL | GMAC_TSR_RLE - | GMAC_TSR_TFC | GMAC_TSR_TXCOMP | GMAC_TSR_UND); - - /* Clear interrupts */ - gmac_get_interrupt_status(p_gmac); - - /* Enable the copy of data into the buffers - ignore broadcasts, and not copy FCS. */ - gmac_set_configure(p_gmac, - gmac_get_configure(p_gmac) | GMAC_NCFGR_IRXFCS| GMAC_NCFGR_PEN); - - gmac_enable_copy_all(p_gmac, p_opt->uc_copy_all_frame); - gmac_disable_broadcast(p_gmac, p_opt->uc_no_boardcast); - - /* Fill in GMAC device memory management */ - gmac_dev_mm.p_rx_buffer = gs_uc_rx_buffer; - gmac_dev_mm.p_rx_dscr = gs_rx_desc; - gmac_dev_mm.us_rx_size = GMAC_RX_BUFFERS; - - gmac_dev_mm.p_tx_buffer = gs_uc_tx_buffer; - gmac_dev_mm.p_tx_dscr = gs_tx_desc; - gmac_dev_mm.us_tx_size = GMAC_TX_BUFFERS; - - gmac_init_mem(p_gmac, p_gmac_dev, &gmac_dev_mm, gs_tx_callback); - - gmac_set_address(p_gmac, 0, p_opt->uc_mac_addr); - -} - -/** - * \brief Frames can be read from the GMAC in multiple sections. - * Read ul_frame_size bytes from the GMAC receive buffers to pcTo. - * p_rcv_size is the size of the entire frame. Generally gmac_read - * will be repeatedly called until the sum of all the ul_frame_size equals - * the value of p_rcv_size. - * - * \param p_gmac_dev Pointer to the GMAC device instance. - * \param p_frame Address of the frame buffer. - * \param ul_frame_size Length of the frame. - * \param p_rcv_size Received frame size. - * - * \return GMAC_OK if receiving frame successfully, otherwise failed. - */ -uint32_t gmac_dev_read(gmac_device_t* p_gmac_dev, uint8_t* p_frame, - uint32_t ul_frame_size, uint32_t* p_rcv_size) -{ - uint16_t us_buffer_length; - uint32_t tmp_ul_frame_size = 0; - uint8_t *p_tmp_frame = 0; - uint16_t us_tmp_idx = p_gmac_dev->us_rx_idx; - gmac_rx_descriptor_t *p_rx_td = - &p_gmac_dev->p_rx_dscr[p_gmac_dev->us_rx_idx]; - int8_t c_is_frame = 0; - - if (p_frame == NULL) - return GMAC_PARAM; - - /* Set the default return value */ - *p_rcv_size = 0; - - /* Process received RX descriptor */ - while ((p_rx_td->addr.val & GMAC_RXD_OWNERSHIP) == GMAC_RXD_OWNERSHIP) { - /* A start of frame has been received, discard previous fragments */ - if ((p_rx_td->status.val & GMAC_RXD_SOF) == GMAC_RXD_SOF) { - /* Skip previous fragment */ - while (us_tmp_idx != p_gmac_dev->us_rx_idx) { - p_rx_td = &p_gmac_dev->p_rx_dscr[p_gmac_dev->us_rx_idx]; - p_rx_td->addr.val &= ~(GMAC_RXD_OWNERSHIP); - - circ_inc(&p_gmac_dev->us_rx_idx, p_gmac_dev->us_rx_list_size); - } - /* Reset the temporary frame pointer */ - p_tmp_frame = p_frame; - tmp_ul_frame_size = 0; - /* Start to gather buffers in a frame */ - c_is_frame = 1; - } - - /* Increment the pointer */ - circ_inc(&us_tmp_idx, p_gmac_dev->us_rx_list_size); - - /* Copy data in the frame buffer */ - if (c_is_frame) { - if (us_tmp_idx == p_gmac_dev->us_rx_idx) { - do { - p_rx_td = &p_gmac_dev->p_rx_dscr[p_gmac_dev->us_rx_idx]; - p_rx_td->addr.val &= ~(GMAC_RXD_OWNERSHIP); - circ_inc(&p_gmac_dev->us_rx_idx, p_gmac_dev->us_rx_list_size); - - } while (us_tmp_idx != p_gmac_dev->us_rx_idx); - - return GMAC_RX_NULL; - } - /* Copy the buffer into the application frame */ - us_buffer_length = GMAC_RX_UNITSIZE; - if ((tmp_ul_frame_size + us_buffer_length) > ul_frame_size) { - us_buffer_length = ul_frame_size - tmp_ul_frame_size; - } - - memcpy(p_tmp_frame, - (void *)(p_rx_td->addr.val & GMAC_RXD_ADDR_MASK), - us_buffer_length); - p_tmp_frame += us_buffer_length; - tmp_ul_frame_size += us_buffer_length; - - /* An end of frame has been received, return the data */ - if ((p_rx_td->status.val & GMAC_RXD_EOF) == GMAC_RXD_EOF) { - /* Frame size from the GMAC */ - *p_rcv_size = (p_rx_td->status.val & GMAC_RXD_LEN_MASK); - - /* All data have been copied in the application frame buffer => release TD */ - while (p_gmac_dev->us_rx_idx != us_tmp_idx) { - p_rx_td = &p_gmac_dev->p_rx_dscr[p_gmac_dev->us_rx_idx]; - p_rx_td->addr.val &= ~(GMAC_RXD_OWNERSHIP); - circ_inc(&p_gmac_dev->us_rx_idx, p_gmac_dev->us_rx_list_size); - } - - /* Application frame buffer is too small so that all data have not been copied */ - if (tmp_ul_frame_size < *p_rcv_size) { - return GMAC_SIZE_TOO_SMALL; - } - - return GMAC_OK; - } - } - /* SOF has not been detected, skip the fragment */ - else { - p_rx_td->addr.val &= ~(GMAC_RXD_OWNERSHIP); - p_gmac_dev->us_rx_idx = us_tmp_idx; - } - - /* Process the next buffer */ - p_rx_td = &p_gmac_dev->p_rx_dscr[us_tmp_idx]; - } - - return GMAC_RX_NULL; -} - -/** - * \brief Send ulLength bytes from pcFrom. This copies the buffer to one of the - * GMAC Tx buffers, and then indicates to the GMAC that the buffer is ready. - * If lEndOfFrame is true then the data being copied is the end of the frame - * and the frame can be transmitted. - * - * \param p_gmac_dev Pointer to the GMAC device instance. - * \param p_buffer Pointer to the data buffer. - * \param ul_size Length of the frame. - * \param func_tx_cb Transmit callback function. - * - * \return Length sent. - */ -uint32_t gmac_dev_write(gmac_device_t* p_gmac_dev, void *p_buffer, - uint32_t ul_size, gmac_dev_tx_cb_t func_tx_cb) -{ - - volatile gmac_tx_descriptor_t *p_tx_td; - volatile gmac_dev_tx_cb_t *p_func_tx_cb; - - Gmac *p_hw = p_gmac_dev->p_hw; - - - /* Check parameter */ - if (ul_size > GMAC_TX_UNITSIZE) { - return GMAC_PARAM; - } - - /* Pointers to the current transmit descriptor */ - p_tx_td = &p_gmac_dev->p_tx_dscr[p_gmac_dev->us_tx_head]; - - /* If no free TxTd, buffer can't be sent, schedule the wakeup callback */ - if (CIRC_SPACE(p_gmac_dev->us_tx_head, p_gmac_dev->us_tx_tail, - p_gmac_dev->us_tx_list_size) == 0) { - if (p_tx_td[p_gmac_dev->us_tx_head].status.val & GMAC_TXD_USED) - return GMAC_TX_BUSY; - } - - /* Pointers to the current Tx callback */ - p_func_tx_cb = &p_gmac_dev->func_tx_cb_list[p_gmac_dev->us_tx_head]; - - /* Set up/copy data to transmission buffer */ - if (p_buffer && ul_size) { - /* Driver manages the ring buffer */ - memcpy((void *)p_tx_td->addr, p_buffer, ul_size); - } - - /* Tx callback */ - *p_func_tx_cb = func_tx_cb; - - /* Update transmit descriptor status */ - - /* The buffer size defined is the length of ethernet frame, - so it's always the last buffer of the frame. */ - if (p_gmac_dev->us_tx_head == p_gmac_dev->us_tx_list_size - 1) { - p_tx_td->status.val = - (ul_size & GMAC_TXD_LEN_MASK) | GMAC_TXD_LAST - | GMAC_TXD_WRAP; - } else { - p_tx_td->status.val = - (ul_size & GMAC_TXD_LEN_MASK) | GMAC_TXD_LAST; - } - - circ_inc(&p_gmac_dev->us_tx_head, p_gmac_dev->us_tx_list_size); - - /* Now start to transmit if it is still not done */ - gmac_start_transmission(p_hw); - - return GMAC_OK; -} - -/** - * \brief Get current load of transmit. - * - * \param p_gmac_dev Pointer to the GMAC device instance. - * - * \return Current load of transmit. - */ -uint32_t gmac_dev_get_tx_load(gmac_device_t* p_gmac_dev) -{ - uint16_t us_head = p_gmac_dev->us_tx_head; - uint16_t us_tail = p_gmac_dev->us_tx_tail; - return CIRC_CNT(us_head, us_tail, p_gmac_dev->us_tx_list_size); -} - -/** - * \brief Register/Clear RX callback. Callback will be invoked after the next received - * frame. - * - * When gmac_dev_read() returns GMAC_RX_NULL, the application task calls - * gmac_dev_set_rx_callback() to register func_rx_cb() callback and enters suspend state. - * The callback is in charge to resume the task once a new frame has been - * received. The next time gmac_dev_read() is called, it will be successful. - * - * This function is usually invoked from the RX callback itself with NULL - * callback, to unregister. Once the callback has resumed the application task, - * there is no need to invoke the callback again. - * - * \param p_gmac_dev Pointer to the GMAC device instance. - * \param func_tx_cb Receive callback function. - */ -void gmac_dev_set_rx_callback(gmac_device_t* p_gmac_dev, - gmac_dev_tx_cb_t func_rx_cb) -{ - Gmac *p_hw = p_gmac_dev->p_hw; - - if (func_rx_cb == NULL) { - gmac_disable_interrupt(p_hw, GMAC_IDR_RCOMP); - p_gmac_dev->func_rx_cb = NULL; - } else { - p_gmac_dev->func_rx_cb = func_rx_cb; - gmac_enable_interrupt(p_hw, GMAC_IER_RCOMP); - } -} - -/** - * \brief Register/Clear TX wakeup callback. - * - * When gmac_dev_write() returns GMAC_TX_BUSY (all transmit descriptor busy), the application - * task calls gmac_dev_set_tx_wakeup_callback() to register func_wakeup() callback and - * enters suspend state. The callback is in charge to resume the task once - * several transmit descriptors have been released. The next time gmac_dev_write() will be called, - * it shall be successful. - * - * This function is usually invoked with NULL callback from the TX wakeup - * callback itself, to unregister. Once the callback has resumed the - * application task, there is no need to invoke the callback again. - * - * \param p_gmac_dev Pointer to GMAC device instance. - * \param func_wakeup Pointer to wakeup callback function. - * \param uc_threshold Number of free transmit descriptor before wakeup callback invoked. - * - * \return GMAC_OK, GMAC_PARAM on parameter error. - */ -uint8_t gmac_dev_set_tx_wakeup_callback(gmac_device_t* p_gmac_dev, - gmac_dev_wakeup_cb_t func_wakeup_cb, uint8_t uc_threshold) -{ - if (func_wakeup_cb == NULL) { - p_gmac_dev->func_wakeup_cb = NULL; - } else { - if (uc_threshold <= p_gmac_dev->us_tx_list_size) { - p_gmac_dev->func_wakeup_cb = func_wakeup_cb; - p_gmac_dev->uc_wakeup_threshold = uc_threshold; - } else { - return GMAC_PARAM; - } - } - - return GMAC_OK; -} - - -/** - * \brief Reset TX & RX queue & statistics. - * - * \param p_gmac_dev Pointer to GMAC device instance. - */ -void gmac_dev_reset(gmac_device_t* p_gmac_dev) -{ - Gmac *p_hw = p_gmac_dev->p_hw; - - gmac_reset_rx_mem(p_gmac_dev); - gmac_reset_tx_mem(p_gmac_dev); - gmac_network_control(p_hw, GMAC_NCR_TXEN | GMAC_NCR_RXEN - | GMAC_NCR_WESTAT | GMAC_NCR_CLRSTAT); -} - - -/** - * \brief GMAC Interrupt handler. - * - * \param p_gmac_dev Pointer to GMAC device instance. - */ -void gmac_handler(gmac_device_t* p_gmac_dev) -{ - Gmac *p_hw = p_gmac_dev->p_hw; - - gmac_tx_descriptor_t *p_tx_td; - gmac_dev_tx_cb_t *p_tx_cb; - volatile uint32_t ul_isr; - volatile uint32_t ul_rsr; - volatile uint32_t ul_tsr; - uint32_t ul_rx_status_flag; - uint32_t ul_tx_status_flag; - - ul_isr = gmac_get_interrupt_status(p_hw); - ul_rsr = gmac_get_rx_status(p_hw); - ul_tsr = gmac_get_tx_status(p_hw); - - ul_isr &= ~(gmac_get_interrupt_mask(p_hw) | 0xF8030300); - - /* RX packet */ - if ((ul_isr & GMAC_ISR_RCOMP) || (ul_rsr & GMAC_RSR_REC)) { - ul_rx_status_flag = GMAC_RSR_REC; - - /* Check OVR */ - if (ul_rsr & GMAC_RSR_RXOVR) { - ul_rx_status_flag |= GMAC_RSR_RXOVR; - } - /* Check BNA */ - if (ul_rsr & GMAC_RSR_BNA) { - ul_rx_status_flag |= GMAC_RSR_BNA; - } - /* Clear status */ - gmac_clear_rx_status(p_hw, ul_rx_status_flag); - - /* Invoke callbacks */ - if (p_gmac_dev->func_rx_cb) { - p_gmac_dev->func_rx_cb(ul_rx_status_flag); - } - } - - /* TX packet */ - if ((ul_isr & GMAC_ISR_TCOMP) || (ul_tsr & GMAC_TSR_TXCOMP)) { - - ul_tx_status_flag = GMAC_TSR_TXCOMP; - - /* A frame transmitted */ - - /* Check RLE */ - if (ul_tsr & GMAC_TSR_RLE) { - /* Status RLE & Number of discarded buffers */ - ul_tx_status_flag = GMAC_TSR_RLE | CIRC_CNT(p_gmac_dev->us_tx_head, - p_gmac_dev->us_tx_tail, p_gmac_dev->us_tx_list_size); - p_tx_cb = &p_gmac_dev->func_tx_cb_list[p_gmac_dev->us_tx_tail]; - gmac_reset_tx_mem(p_gmac_dev); - gmac_enable_transmit(p_hw, 1); - } - /* Check COL */ - if (ul_tsr & GMAC_TSR_COL) { - ul_tx_status_flag |= GMAC_TSR_COL; - } - /* Check UND */ - if (ul_tsr & GMAC_TSR_UND) { - ul_tx_status_flag |= GMAC_TSR_UND; - } - /* Clear status */ - gmac_clear_tx_status(p_hw, ul_tx_status_flag); - - if (!CIRC_EMPTY(p_gmac_dev->us_tx_head, p_gmac_dev->us_tx_tail)) { - /* Check the buffers */ - do { - p_tx_td = &p_gmac_dev->p_tx_dscr[p_gmac_dev->us_tx_tail]; - p_tx_cb = &p_gmac_dev->func_tx_cb_list[p_gmac_dev->us_tx_tail]; - /* Any error? Exit if buffer has not been sent yet */ - if ((p_tx_td->status.val & GMAC_TXD_USED) == 0) { - break; - } - - /* Notify upper layer that a packet has been sent */ - if (*p_tx_cb) { - (*p_tx_cb) (ul_tx_status_flag); - } - - circ_inc(&p_gmac_dev->us_tx_tail, p_gmac_dev->us_tx_list_size); - } while (CIRC_CNT(p_gmac_dev->us_tx_head, p_gmac_dev->us_tx_tail, - p_gmac_dev->us_tx_list_size)); - } - - if (ul_tsr & GMAC_TSR_RLE) { - /* Notify upper layer RLE */ - if (*p_tx_cb) { - (*p_tx_cb) (ul_tx_status_flag); - } - } - - /* If a wakeup has been scheduled, notify upper layer that it can - send other packets, and the sending will be successful. */ - if ((CIRC_SPACE(p_gmac_dev->us_tx_head, p_gmac_dev->us_tx_tail, - p_gmac_dev->us_tx_list_size) >= p_gmac_dev->uc_wakeup_threshold) - && p_gmac_dev->func_wakeup_cb) { - p_gmac_dev->func_wakeup_cb(); - } - } -} - -//@} - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/gmac/gmac.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/gmac/gmac.h deleted file mode 100644 index 2e1504d52..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/gmac/gmac.h +++ /dev/null @@ -1,1252 +0,0 @@ - /** - * \file - * - * \brief GMAC (Ethernet MAC) driver for SAM. - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef GMAC_H_INCLUDED -#define GMAC_H_INCLUDED - -#include "compiler.h" - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -/** The buffer addresses written into the descriptors must be aligned, so the - last few bits are zero. These bits have special meaning for the GMAC - peripheral and cannot be used as part of the address. */ -#define GMAC_RXD_ADDR_MASK 0xFFFFFFFC -#define GMAC_RXD_WRAP (1ul << 1) /**< Wrap bit */ -#define GMAC_RXD_OWNERSHIP (1ul << 0) /**< Ownership bit */ - -#define GMAC_RXD_BROADCAST (1ul << 31) /**< Broadcast detected */ -#define GMAC_RXD_MULTIHASH (1ul << 30) /**< Multicast hash match */ -#define GMAC_RXD_UNIHASH (1ul << 29) /**< Unicast hash match */ -#define GMAC_RXD_ADDR_FOUND (1ul << 27) /**< Specific address match found */ -#define GMAC_RXD_ADDR (3ul << 25) /**< Address match */ -#define GMAC_RXD_RXCOEN (1ul << 24) /**< RXCOEN related function */ -#define GMAC_RXD_TYPE (3ul << 22) /**< Type ID match */ -#define GMAC_RXD_VLAN (1ul << 21) /**< VLAN tag detected */ -#define GMAC_RXD_PRIORITY (1ul << 20) /**< Priority tag detected */ -#define GMAC_RXD_PRIORITY_MASK (3ul << 17) /**< VLAN priority */ -#define GMAC_RXD_CFI (1ul << 16) /**< Concatenation Format Indicator only if bit 21 is set */ -#define GMAC_RXD_EOF (1ul << 15) /**< End of frame */ -#define GMAC_RXD_SOF (1ul << 14) /**< Start of frame */ -#define GMAC_RXD_FCS (1ul << 13) /**< Frame check sequence */ -#define GMAC_RXD_OFFSET_MASK /**< Receive buffer offset */ -#define GMAC_RXD_LEN_MASK (0xFFF) /**< Length of frame including FCS (if selected) */ -#define GMAC_RXD_LENJUMBO_MASK (0x3FFF) /**< Jumbo frame length */ - -#define GMAC_TXD_USED (1ul << 31) /**< Frame is transmitted */ -#define GMAC_TXD_WRAP (1ul << 30) /**< Last descriptor */ -#define GMAC_TXD_ERROR (1ul << 29) /**< Retry limit exceeded, error */ -#define GMAC_TXD_UNDERRUN (1ul << 28) /**< Transmit underrun */ -#define GMAC_TXD_EXHAUSTED (1ul << 27) /**< Buffer exhausted */ -#define GMAC_TXD_LATE (1ul << 26) /**< Late collision,transmit error */ -#define GMAC_TXD_CHECKSUM_ERROR (7ul << 20) /**< Checksum error */ -#define GMAC_TXD_NOCRC (1ul << 16) /**< No CRC */ -#define GMAC_TXD_LAST (1ul << 15) /**< Last buffer in frame */ -#define GMAC_TXD_LEN_MASK (0x1FFF) /**< Length of buffer */ - -/** The MAC can support frame lengths up to 1536 bytes */ -#define GMAC_FRAME_LENTGH_MAX 1536 - -#define GMAC_RX_UNITSIZE 128 /**< Fixed size for RX buffer */ -#define GMAC_TX_UNITSIZE 1518 /**< Size for ETH frame length */ - -/** GMAC clock speed */ -#define GMAC_MCK_SPEED_240MHZ (240*1000*1000) -#define GMAC_MCK_SPEED_160MHZ (160*1000*1000) -#define GMAC_MCK_SPEED_120MHZ (120*1000*1000) -#define GMAC_MCK_SPEED_80MHZ (80*1000*1000) -#define GMAC_MCK_SPEED_40MHZ (40*1000*1000) -#define GMAC_MCK_SPEED_20MHZ (20*1000*1000) - -/** GMAC maintain code default value*/ -#define GMAC_MAN_CODE_VALUE (10) - -/** GMAC maintain start of frame default value*/ -#define GMAC_MAN_SOF_VALUE (1) - -/** GMAC maintain read/write*/ -#define GMAC_MAN_RW_TYPE (2) - -/** GMAC maintain read only*/ -#define GMAC_MAN_READ_ONLY (1) - -/** GMAC address length */ -#define GMAC_ADDR_LENGTH (6) - - -#define GMAC_DUPLEX_HALF 0 -#define GMAC_DUPLEX_FULL 1 - -#define GMAC_SPEED_10M 0 -#define GMAC_SPEED_100M 1 - -/** - * \brief Return codes for GMAC APIs. - */ -typedef enum { - GMAC_OK = 0, /** Operation OK */ - GMAC_TIMEOUT = 1, /** GMAC operation timeout */ - GMAC_TX_BUSY, /** TX in progress */ - GMAC_RX_NULL, /** No data received */ - GMAC_SIZE_TOO_SMALL, /** Buffer size not enough */ - GMAC_PARAM, /** Parameter error, TX packet invalid or RX size too small */ - GMAC_INVALID = 0xFF, /* Invalid */ -} gmac_status_t; - -/** - * \brief Media Independent Interface (MII) type. - */ -typedef enum { - GMAC_PHY_MII = 0, /** MII mode */ - GMAC_PHY_RMII = 1, /** Reduced MII mode */ - GMAC_PHY_INVALID = 0xFF, /* Invalid mode*/ -} gmac_mii_mode_t; - -/** Receive buffer descriptor struct */ -COMPILER_PACK_SET(8) -typedef struct gmac_rx_descriptor { - union gmac_rx_addr { - uint32_t val; - struct gmac_rx_addr_bm { - uint32_t b_ownership:1, /**< User clear, GMAC sets this to 1 once it has successfully written a frame to memory */ - b_wrap:1, /**< Marks last descriptor in receive buffer */ - addr_dw:30; /**< Address in number of DW */ - } bm; - } addr; /**< Address, Wrap & Ownership */ - union gmac_rx_status { - uint32_t val; - struct gmac_rx_status_bm { - uint32_t len:13, /** Length of frame including FCS */ - b_fcs:1, /** Receive buffer offset, bits 13:12 of frame length for jumbo frame */ - b_sof:1, /** Start of frame */ - b_eof:1, /** End of frame */ - b_cfi:1, /** Concatenation Format Indicator */ - vlan_priority:3, /** VLAN priority (if VLAN detected) */ - b_priority_detected:1, /** Priority tag detected */ - b_vlan_detected:1, /**< VLAN tag detected */ - b_type_id_match:2, /**< Type ID match */ - b_checksumoffload:1, /**< Checksum offload specific function */ - b_addrmatch:2, /**< Address register match */ - b_ext_addr_match:1, /**< External address match found */ - reserved:1, - b_uni_hash_match:1, /**< Unicast hash match */ - b_multi_hash_match:1, /**< Multicast hash match */ - b_boardcast_detect:1; /**< Global broadcast address detected */ - } bm; - } status; -} gmac_rx_descriptor_t; - -/** Transmit buffer descriptor struct */ -COMPILER_PACK_SET(8) -typedef struct gmac_tx_descriptor { - uint32_t addr; - union gmac_tx_status { - uint32_t val; - struct gmac_tx_status_bm { - uint32_t len:14, /**< Length of buffer */ - reserved:1, - b_last_buffer:1, /**< Last buffer (in the current frame) */ - b_no_crc:1, /**< No CRC */ - reserved1:3, - b_checksumoffload:3, /**< Transmit checksum generation offload errors */ - reserved2:3, - b_lco:1, /**< Late collision, transmit error detected */ - b_exhausted:1, /**< Buffer exhausted in mid frame */ - b_underrun:1, /**< Transmit underrun */ - b_error:1, /**< Retry limit exceeded, error detected */ - b_wrap:1, /**< Marks last descriptor in TD list */ - b_used:1; /**< User clear, GMAC sets this to 1 once a frame has been successfully transmitted */ - } bm; - } status; -} gmac_tx_descriptor_t; - -COMPILER_PACK_RESET() - -/** - * \brief Input parameters when initializing the gmac module mode. - */ -typedef struct gmac_options { - /* Enable/Disable CopyAllFrame */ - uint8_t uc_copy_all_frame; - /* Enable/Disable NoBroadCast */ - uint8_t uc_no_boardcast; - /* MAC address */ - uint8_t uc_mac_addr[GMAC_ADDR_LENGTH]; -} gmac_options_t; - -/** RX callback */ -typedef void (*gmac_dev_tx_cb_t) (uint32_t ul_status); -/** Wakeup callback */ -typedef void (*gmac_dev_wakeup_cb_t) (void); - -/** - * GMAC driver structure. - */ -typedef struct gmac_device { - - /** Pointer to HW register base */ - Gmac *p_hw; - /** - * Pointer to allocated TX buffer. - * Section 3.6 of AMBA 2.0 spec states that burst should not cross - * 1K Boundaries. - * Receive buffer manager writes are burst of 2 words => 3 lsb bits - * of the address shall be set to 0. - */ - uint8_t *p_tx_buffer; - /** Pointer to allocated RX buffer */ - uint8_t *p_rx_buffer; - /** Pointer to Rx TDs (must be 8-byte aligned) */ - gmac_rx_descriptor_t *p_rx_dscr; - /** Pointer to Tx TDs (must be 8-byte aligned) */ - gmac_tx_descriptor_t *p_tx_dscr; - /** Optional callback to be invoked once a frame has been received */ - gmac_dev_tx_cb_t func_rx_cb; - /** Optional callback to be invoked once several TDs have been released */ - gmac_dev_wakeup_cb_t func_wakeup_cb; - /** Optional callback list to be invoked once TD has been processed */ - gmac_dev_tx_cb_t *func_tx_cb_list; - /** RX TD list size */ - uint16_t us_rx_list_size; - /** RX index for current processing TD */ - uint16_t us_rx_idx; - /** TX TD list size */ - uint16_t us_tx_list_size; - /** Circular buffer head pointer by upper layer (buffer to be sent) */ - uint16_t us_tx_head; - /** Circular buffer tail pointer incremented by handlers (buffer sent) */ - uint16_t us_tx_tail; - - /** Number of free TD before wakeup callback is invoked */ - uint8_t uc_wakeup_threshold; -} gmac_device_t; - -/** - * \brief Write network control value. - * - * \param p_gmac Pointer to the GMAC instance. - * \param ul_ncr Network control value. - */ -static inline void gmac_network_control(Gmac* p_gmac, uint32_t ul_ncr) -{ - p_gmac->GMAC_NCR = ul_ncr; -} - -/** - * \brief Get network control value. - * - * \param p_gmac Pointer to the GMAC instance. - */ - -static inline uint32_t gmac_get_network_control(Gmac* p_gmac) -{ - return p_gmac->GMAC_NCR; -} - -/** - * \brief Enable/Disable GMAC receive. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable GMAC receiver, else to enable it. - */ -static inline void gmac_enable_receive(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCR |= GMAC_NCR_RXEN; - } else { - p_gmac->GMAC_NCR &= ~GMAC_NCR_RXEN; - } -} - -/** - * \brief Enable/Disable GMAC transmit. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable GMAC transmit, else to enable it. - */ -static inline void gmac_enable_transmit(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCR |= GMAC_NCR_TXEN; - } else { - p_gmac->GMAC_NCR &= ~GMAC_NCR_TXEN; - } -} - -/** - * \brief Enable/Disable GMAC management. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable GMAC management, else to enable it. - */ -static inline void gmac_enable_management(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCR |= GMAC_NCR_MPE; - } else { - p_gmac->GMAC_NCR &= ~GMAC_NCR_MPE; - } -} - -/** - * \brief Clear all statistics registers. - * - * \param p_gmac Pointer to the GMAC instance. - */ -static inline void gmac_clear_statistics(Gmac* p_gmac) -{ - p_gmac->GMAC_NCR |= GMAC_NCR_CLRSTAT; -} - -/** - * \brief Increase all statistics registers. - * - * \param p_gmac Pointer to the GMAC instance. - */ -static inline void gmac_increase_statistics(Gmac* p_gmac) -{ - p_gmac->GMAC_NCR |= GMAC_NCR_INCSTAT; -} - -/** - * \brief Enable/Disable statistics registers writing. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable the statistics registers writing, else to enable it. - */ -static inline void gmac_enable_statistics_write(Gmac* p_gmac, - uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCR |= GMAC_NCR_WESTAT; - } else { - p_gmac->GMAC_NCR &= ~GMAC_NCR_WESTAT; - } -} - -/** - * \brief In half-duplex mode, forces collisions on all received frames. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable the back pressure, else to enable it. - */ -static inline void gmac_enable_back_pressure(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCR |= GMAC_NCR_BP; - } else { - p_gmac->GMAC_NCR &= ~GMAC_NCR_BP; - } -} - -/** - * \brief Start transmission. - * - * \param p_gmac Pointer to the GMAC instance. - */ -static inline void gmac_start_transmission(Gmac* p_gmac) -{ - p_gmac->GMAC_NCR |= GMAC_NCR_TSTART; -} - -/** - * \brief Halt transmission. - * - * \param p_gmac Pointer to the GMAC instance. - */ -static inline void gmac_halt_transmission(Gmac* p_gmac) -{ - p_gmac->GMAC_NCR |= GMAC_NCR_THALT; -} - -/** - * \brief Transmit pause frame. - * - * \param p_gmac Pointer to the GMAC instance. - */ -static inline void gmac_tx_pause_frame(Gmac* p_gmac) -{ - p_gmac->GMAC_NCR |= GMAC_NCR_TXPF; -} - -/** - * \brief Transmit zero quantum pause frame. - * - * \param p_gmac Pointer to the GMAC instance. - */ -static inline void gmac_tx_pause_zero_quantum_frame(Gmac* p_gmac) -{ - p_gmac->GMAC_NCR |= GMAC_NCR_TXZQPF; -} - -/** - * \brief Read snapshot. - * - * \param p_gmac Pointer to the GMAC instance. - */ -static inline void gmac_read_snapshot(Gmac* p_gmac) -{ - p_gmac->GMAC_NCR |= GMAC_NCR_RDS; -} - -/** - * \brief Store receivetime stamp to memory. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to normal operation, else to enable the store. - */ -static inline void gmac_store_rx_time_stamp(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCR |= GMAC_NCR_SRTSM; - } else { - p_gmac->GMAC_NCR &= ~GMAC_NCR_SRTSM; - } -} - -/** - * \brief Enable PFC priority-based pause reception. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 1 to set the reception, 0 to disable. - */ -static inline void gmac_enable_pfc_pause_frame(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCR |= GMAC_NCR_ENPBPR; - } else { - p_gmac->GMAC_NCR &= ~GMAC_NCR_ENPBPR; - } -} - -/** - * \brief Transmit PFC priority-based pause reception. - * - * \param p_gmac Pointer to the GMAC instance. - */ -static inline void gmac_transmit_pfc_pause_frame(Gmac* p_gmac) -{ - p_gmac->GMAC_NCR |= GMAC_NCR_TXPBPF; -} - -/** - * \brief Flush next packet. - * - * \param p_gmac Pointer to the GMAC instance. - */ -static inline void gmac_flush_next_packet(Gmac* p_gmac) -{ - p_gmac->GMAC_NCR |= GMAC_NCR_FNP; -} - -/** - * \brief Set up network configuration register. - * - * \param p_gmac Pointer to the GMAC instance. - * \param ul_cfg Network configuration value. - */ -static inline void gmac_set_configure(Gmac* p_gmac, uint32_t ul_cfg) -{ - p_gmac->GMAC_NCFGR = ul_cfg; -} - -/** - * \brief Get network configuration. - * - * \param p_gmac Pointer to the GMAC instance. - * - * \return Network configuration. - */ -static inline uint32_t gmac_get_configure(Gmac* p_gmac) -{ - return p_gmac->GMAC_NCFGR; -} - -/** - * \brief Set speed. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_speed 1 to indicate 100Mbps, 0 to 10Mbps. - */ -static inline void gmac_set_speed(Gmac* p_gmac, uint8_t uc_speed) -{ - if (uc_speed) { - p_gmac->GMAC_NCFGR |= GMAC_NCFGR_SPD; - } else { - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_SPD; - } -} - -/** - * \brief Enable/Disable Full-Duplex mode. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable the Full-Duplex mode, else to enable it. - */ -static inline void gmac_enable_full_duplex(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCFGR |= GMAC_NCFGR_FD; - } else { - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_FD; - } -} - -/** - * \brief Enable/Disable Copy(Receive) All Valid Frames. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable copying all valid frames, else to enable it. - */ -static inline void gmac_enable_copy_all(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCFGR |= GMAC_NCFGR_CAF; - } else { - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_CAF; - } -} - -/** - * \brief Enable/Disable jumbo frames (up to 10240 bytes). - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable the jumbo frames, else to enable it. - */ -static inline void gmac_enable_jumbo_frames(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCFGR |= GMAC_NCFGR_JFRAME; - } else { - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_JFRAME; - } -} - -/** - * \brief Disable/Enable broadcast receiving. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 1 to disable the broadcast, else to enable it. - */ -static inline void gmac_disable_broadcast(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCFGR |= GMAC_NCFGR_NBC; - } else { - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_NBC; - } -} - -/** - * \brief Enable/Disable multicast hash. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable the multicast hash, else to enable it. - */ -static inline void gmac_enable_multicast_hash(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCFGR |= GMAC_NCFGR_UNIHEN; - } else { - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_UNIHEN; - } -} - -/** - * \brief Enable/Disable big frames (over 1518, up to 1536). - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable big frames else to enable it. - */ -static inline void gmac_enable_big_frame(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCFGR |= GMAC_NCFGR_MAXFS; - } else { - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_MAXFS; - } -} - -/** - * \brief Set MDC clock divider. - * - * \param p_gmac Pointer to the GMAC instance. - * \param ul_mck GMAC MCK. - * - * \return GMAC_OK if successfully. - */ -static inline uint8_t gmac_set_mdc_clock(Gmac* p_gmac, uint32_t ul_mck) -{ - uint32_t ul_clk; - - if (ul_mck > GMAC_MCK_SPEED_240MHZ) { - return GMAC_INVALID; - } else if (ul_mck > GMAC_MCK_SPEED_160MHZ) { - ul_clk = GMAC_NCFGR_CLK_MCK_96; - } else if (ul_mck > GMAC_MCK_SPEED_120MHZ) { - ul_clk = GMAC_NCFGR_CLK_MCK_64; - } else if (ul_mck > GMAC_MCK_SPEED_80MHZ) { - ul_clk = GMAC_NCFGR_CLK_MCK_48; - } else if (ul_mck > GMAC_MCK_SPEED_40MHZ) { - ul_clk = GMAC_NCFGR_CLK_MCK_32; - } else if (ul_mck > GMAC_MCK_SPEED_20MHZ) { - ul_clk = GMAC_NCFGR_CLK_MCK_16; - } else { - ul_clk = GMAC_NCFGR_CLK_MCK_8; - } - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_CLK_Msk; - p_gmac->GMAC_NCFGR |= ul_clk; - return GMAC_OK; -} - -/** - * \brief Enable/Disable retry test. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable the GMAC receiver, else to enable it. - */ -static inline void gmac_enable_retry_test(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCFGR |= GMAC_NCFGR_RTY; - } else { - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_RTY; - } -} - -/** - * \brief Enable/Disable pause (when a valid pause frame is received). - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable pause frame, else to enable it. - */ -static inline void gmac_enable_pause_frame(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCFGR |= GMAC_NCFGR_PEN; - } else { - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_PEN; - } -} - -/** - * \brief Set receive buffer offset to 0 ~ 3. - * - * \param p_gmac Pointer to the GMAC instance. - */ -static inline void gmac_set_rx_buffer_offset(Gmac* p_gmac, uint8_t uc_offset) -{ - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_RXBUFO_Msk; - p_gmac->GMAC_NCFGR |= GMAC_NCFGR_RXBUFO(uc_offset); -} - -/** - * \brief Enable/Disable receive length field checking. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable receive length field checking, else to enable it. - */ -static inline void gmac_enable_rx_length_check(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCFGR |= GMAC_NCFGR_LFERD; - } else { - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_LFERD; - } -} - -/** - * \brief Enable/Disable discarding FCS field of received frames. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable discarding FCS field of received frames, else to enable it. - */ -static inline void gmac_enable_discard_fcs(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCFGR |= GMAC_NCFGR_RFCS; - } else { - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_RFCS; - } -} - - -/** - * \brief Enable/Disable frames to be received in half-duplex mode - * while transmitting. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable the received in half-duplex mode, else to enable it. - */ -static inline void gmac_enable_efrhd(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCFGR |= GMAC_NCFGR_EFRHD; - } else { - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_EFRHD; - } -} - -/** - * \brief Enable/Disable ignore RX FCS. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_enable 0 to disable ignore RX FCS, else to enable it. - */ -static inline void gmac_enable_ignore_rx_fcs(Gmac* p_gmac, uint8_t uc_enable) -{ - if (uc_enable) { - p_gmac->GMAC_NCFGR |= GMAC_NCFGR_IRXFCS; - } else { - p_gmac->GMAC_NCFGR &= ~GMAC_NCFGR_IRXFCS; - } -} - -/** - * \brief Get Network Status. - * - * \param p_gmac Pointer to the GMAC instance. - * - * \return Network status. - */ -static inline uint32_t gmac_get_status(Gmac* p_gmac) -{ - return p_gmac->GMAC_NSR; -} - -/** - * \brief Get MDIO IN pin status. - * - * \param p_gmac Pointer to the GMAC instance. - * - * \return MDIO IN pin status. - */ -static inline uint8_t gmac_get_MDIO(Gmac* p_gmac) -{ - return ((p_gmac->GMAC_NSR & GMAC_NSR_MDIO) > 0); -} - -/** - * \brief Check if PHY is idle. - * - * \param p_gmac Pointer to the GMAC instance. - * - * \return 1 if PHY is idle. - */ -static inline uint8_t gmac_is_phy_idle(Gmac* p_gmac) -{ - return ((p_gmac->GMAC_NSR & GMAC_NSR_IDLE) > 0); -} - -/** - * \brief Return transmit status. - * - * \param p_gmac Pointer to the GMAC instance. - * - * \return Transmit status. - */ -static inline uint32_t gmac_get_tx_status(Gmac* p_gmac) -{ - return p_gmac->GMAC_TSR; -} - -/** - * \brief Clear transmit status. - * - * \param p_gmac Pointer to the GMAC instance. - * \param ul_status Transmit status. - */ -static inline void gmac_clear_tx_status(Gmac* p_gmac, uint32_t ul_status) -{ - p_gmac->GMAC_TSR = ul_status; -} - -/** - * \brief Return receive status. - * - * \param p_gmac Pointer to the GMAC instance. - */ -static inline uint32_t gmac_get_rx_status(Gmac* p_gmac) -{ - return p_gmac->GMAC_RSR; -} - -/** - * \brief Clear receive status. - * - * \param p_gmac Pointer to the GMAC instance. - * \param ul_status Receive status. - */ -static inline void gmac_clear_rx_status(Gmac* p_gmac, uint32_t ul_status) -{ - p_gmac->GMAC_RSR = ul_status; -} - -/** - * \brief Set Rx Queue. - * - * \param p_gmac Pointer to the GMAC instance. - * \param ul_addr Rx queue address. - */ -static inline void gmac_set_rx_queue(Gmac* p_gmac, uint32_t ul_addr) -{ - p_gmac->GMAC_RBQB = GMAC_RBQB_ADDR_Msk & ul_addr; -} - -/** - * \brief Get Rx Queue Address. - * - * \param p_gmac Pointer to the GMAC instance. - * - * \return Rx queue address. - */ -static inline uint32_t gmac_get_rx_queue(Gmac* p_gmac) -{ - return p_gmac->GMAC_RBQB; -} - -/** - * \brief Set Tx Queue. - * - * \param p_gmac Pointer to the GMAC instance. - * \param ul_addr Tx queue address. - */ -static inline void gmac_set_tx_queue(Gmac* p_gmac, uint32_t ul_addr) -{ - p_gmac->GMAC_TBQB = GMAC_TBQB_ADDR_Msk & ul_addr; -} - -/** - * \brief Get Tx Queue. - * - * \param p_gmac Pointer to the GMAC instance. - * - * \return Rx queue address. - */ -static inline uint32_t gmac_get_tx_queue(Gmac* p_gmac) -{ - return p_gmac->GMAC_TBQB; -} - -/** - * \brief Enable interrupt(s). - * - * \param p_gmac Pointer to the GMAC instance. - * \param ul_source Interrupt source(s) to be enabled. - */ -static inline void gmac_enable_interrupt(Gmac* p_gmac, uint32_t ul_source) -{ - p_gmac->GMAC_IER = ul_source; -} - -/** - * \brief Disable interrupt(s). - * - * \param p_gmac Pointer to the GMAC instance. - * \param ul_source Interrupt source(s) to be disabled. - */ -static inline void gmac_disable_interrupt(Gmac* p_gmac, uint32_t ul_source) -{ - p_gmac->GMAC_IDR = ul_source; -} - -/** - * \brief Return interrupt status. - * - * \param p_gmac Pointer to the GMAC instance. - * - * \return Interrupt status. - */ -static inline uint32_t gmac_get_interrupt_status(Gmac* p_gmac) -{ - return p_gmac->GMAC_ISR; -} - -/** - * \brief Return interrupt mask. - * - * \param p_gmac Pointer to the GMAC instance. - * - * \return Interrupt mask. - */ -static inline uint32_t gmac_get_interrupt_mask(Gmac* p_gmac) -{ - return p_gmac->GMAC_IMR; -} - -/** - * \brief Execute PHY maintenance command. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_phy_addr PHY address. - * \param uc_reg_addr Register address. - * \param uc_rw 1 to Read, 0 to write. - * \param us_data Data to be performed, write only. - */ -static inline void gmac_maintain_phy(Gmac* p_gmac, - uint8_t uc_phy_addr, uint8_t uc_reg_addr, uint8_t uc_rw, - uint16_t us_data) -{ - /* Wait until bus idle */ - while ((p_gmac->GMAC_NSR & GMAC_NSR_IDLE) == 0); - /* Write maintain register */ - p_gmac->GMAC_MAN = GMAC_MAN_WTN(GMAC_MAN_CODE_VALUE) - | GMAC_MAN_CLTTO - | GMAC_MAN_PHYA(uc_phy_addr) - | GMAC_MAN_REGA(uc_reg_addr) - | GMAC_MAN_OP((uc_rw ? GMAC_MAN_RW_TYPE : GMAC_MAN_READ_ONLY)) - | GMAC_MAN_DATA(us_data); -} - -/** - * \brief Get PHY maintenance data returned. - * - * \param p_gmac Pointer to the GMAC instance. - * - * \return Get PHY data. - */ -static inline uint16_t gmac_get_phy_data(Gmac* p_gmac) -{ - /* Wait until bus idle */ - while ((p_gmac->GMAC_NSR & GMAC_NSR_IDLE) == 0); - /* Return data */ - return (uint16_t) (p_gmac->GMAC_MAN & GMAC_MAN_DATA_Msk); -} - -/** - * \brief Set Hash. - * - * \param p_gmac Pointer to the GMAC instance. - * \param ul_hash_top Hash top. - * \param ul_hash_bottom Hash bottom. - */ -static inline void gmac_set_hash(Gmac* p_gmac, uint32_t ul_hash_top, - uint32_t ul_hash_bottom) -{ - p_gmac->GMAC_HRB = ul_hash_bottom; - p_gmac->GMAC_HRT = ul_hash_top; -} - -/** - * \brief Set 64 bits Hash. - * - * \param p_gmac Pointer to the GMAC instance. - * \param ull_hash 64 bits hash value. - */ -static inline void gmac_set_hash64(Gmac* p_gmac, uint64_t ull_hash) -{ - p_gmac->GMAC_HRB = (uint32_t) ull_hash; - p_gmac->GMAC_HRT = (uint32_t) (ull_hash >> 32); -} - -/** - * \brief Set MAC Address. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_index GMAC specific address register index. - * \param p_mac_addr GMAC address. - */ -static inline void gmac_set_address(Gmac* p_gmac, uint8_t uc_index, - uint8_t* p_mac_addr) -{ - p_gmac->GMAC_SA[uc_index].GMAC_SAB = (p_mac_addr[3] << 24) - | (p_mac_addr[2] << 16) - | (p_mac_addr[1] << 8) - | (p_mac_addr[0]); - p_gmac->GMAC_SA[uc_index].GMAC_SAT = (p_mac_addr[5] << 8) - | (p_mac_addr[4]); -} - -/** - * \brief Set MAC Address via 2 dword. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_index GMAC specific address register index. - * \param ul_mac_top GMAC top address. - * \param ul_mac_bottom GMAC bottom address. - */ -static inline void gmac_set_address32(Gmac* p_gmac, uint8_t uc_index, - uint32_t ul_mac_top, uint32_t ul_mac_bottom) -{ - p_gmac->GMAC_SA[uc_index].GMAC_SAB = ul_mac_bottom; - p_gmac->GMAC_SA[uc_index].GMAC_SAT = ul_mac_top; -} - -/** - * \brief Set MAC Address via int64. - * - * \param p_gmac Pointer to the GMAC instance. - * \param uc_index GMAC specific address register index. - * \param ull_mac 64-bit GMAC address. - */ -static inline void gmac_set_address64(Gmac* p_gmac, uint8_t uc_index, - uint64_t ull_mac) -{ - p_gmac->GMAC_SA[uc_index].GMAC_SAB = (uint32_t) ull_mac; - p_gmac->GMAC_SA[uc_index].GMAC_SAT = (uint32_t) (ull_mac >> 32); -} - -/** - * \brief Select media independent interface mode. - * - * \param p_gmac Pointer to the GMAC instance. - * \param mode Media independent interface mode. - */ -static inline void gmac_select_mii_mode(Gmac* p_gmac, gmac_mii_mode_t mode) -{ - switch (mode) { - case GMAC_PHY_MII: - case GMAC_PHY_RMII: - p_gmac->GMAC_UR |= GMAC_UR_RMIIMII; - break; - - default: - p_gmac->GMAC_UR &= ~GMAC_UR_RMIIMII; - break; - } -} - -uint8_t gmac_phy_read(Gmac* p_gmac, uint8_t uc_phy_address, uint8_t uc_address, - uint32_t* p_value); -uint8_t gmac_phy_write(Gmac* p_gmac, uint8_t uc_phy_address, - uint8_t uc_address, uint32_t ul_value); -void gmac_dev_init(Gmac* p_gmac, gmac_device_t* p_gmac_dev, - gmac_options_t* p_opt); -uint32_t gmac_dev_read(gmac_device_t* p_gmac_dev, uint8_t* p_frame, - uint32_t ul_frame_size, uint32_t* p_rcv_size); -uint32_t gmac_dev_write(gmac_device_t* p_gmac_dev, void *p_buffer, - uint32_t ul_size, gmac_dev_tx_cb_t func_tx_cb); -uint32_t gmac_dev_get_tx_load(gmac_device_t* p_gmac_dev); -void gmac_dev_set_rx_callback(gmac_device_t* p_gmac_dev, - gmac_dev_tx_cb_t func_rx_cb); -uint8_t gmac_dev_set_tx_wakeup_callback(gmac_device_t* p_gmac_dev, - gmac_dev_wakeup_cb_t func_wakeup, uint8_t uc_threshold); -void gmac_dev_reset(gmac_device_t* p_gmac_dev); -void gmac_handler(gmac_device_t* p_gmac_dev); - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond - -/** - * \page gmac_quickstart Quickstart guide for GMAC driver. - * - * This is the quickstart guide for the \ref gmac_group "Ethernet MAC", - * with step-by-step instructions on how to configure and use the driver in a - * selection of use cases. - * - * The use cases contain several code fragments. The code fragments in the - * steps for setup can be copied into a custom initialization function, while - * the steps for usage can be copied into, e.g., the main application function. - * - * \section gmac_basic_use_case Basic use case - * In the basic use case, the GMAC driver are configured for: - * - PHY component KSZ8051MNL is used - * - GMAC uses MII mode - * - The number of receive buffer is 16 - * - The number of transfer buffer is 8 - * - MAC address is set to 00-04-25-1c-a0-02 - * - IP address is set to 192.168.0.2 - * - IP address is set to 192.168.0.2 - * - Gateway is set to 192.168.0.1 - * - Network mask is 255.255.255.0 - * - PHY operation max retry count is 1000000 - * - GMAC is configured to not support copy all frame and support broadcast - * - The data will be read from the ethernet - * - * \section gmac_basic_use_case_setup Setup steps - * - * \subsection gmac_basic_use_case_setup_prereq Prerequisites - * -# \ref sysclk_group "System Clock Management (sysclock)" - * -# \ref pmc_group "Power Management Controller (pmc)" - * -# \ref ksz8051mnl_ethernet_phy_group "PHY component (KSZ8051MNL)" - * - * \subsection gmac_basic_use_case_setup_code Example code - * Content of conf_eth.h - * \code - * #define GMAC_RX_BUFFERS 16 - * #define GMAC_TX_BUFFERS 8 - * #define MAC_PHY_RETRY_MAX 1000000 - * #define ETHERNET_CONF_ETHADDR0 0x00 - * #define ETHERNET_CONF_ETHADDR0 0x00 - * #define ETHERNET_CONF_ETHADDR1 0x04 - * #define ETHERNET_CONF_ETHADDR2 0x25 - * #define ETHERNET_CONF_ETHADDR3 0x1C - * #define ETHERNET_CONF_ETHADDR4 0xA0 - * #define ETHERNET_CONF_ETHADDR5 0x02 - * #define ETHERNET_CONF_IPADDR0 192 - * #define ETHERNET_CONF_IPADDR1 168 - * #define ETHERNET_CONF_IPADDR2 0 - * #define ETHERNET_CONF_IPADDR3 2 - * #define ETHERNET_CONF_GATEWAY_ADDR0 192 - * #define ETHERNET_CONF_GATEWAY_ADDR1 168 - * #define ETHERNET_CONF_GATEWAY_ADDR2 0 - * #define ETHERNET_CONF_GATEWAY_ADDR3 1 - * #define ETHERNET_CONF_NET_MASK0 255 - * #define ETHERNET_CONF_NET_MASK1 255 - * #define ETHERNET_CONF_NET_MASK2 255 - * #define ETHERNET_CONF_NET_MASK3 0 - * #define ETH_PHY_MODE ETH_PHY_MODE - * \endcode - * - * A specific gmac device and the receive data buffer must be defined; another ul_frm_size should be defined - * to trace the actual size of the data received. - * \code - * static gmac_device_t gs_gmac_dev; - * static volatile uint8_t gs_uc_eth_buffer[GMAC_FRAME_LENTGH_MAX]; - * - * uint32_t ul_frm_size; - * \endcode - * - * Add to application C-file: - * \code - * void gmac_init(void) - * { - * sysclk_init(); - * - * board_init(); - * - * pmc_enable_periph_clk(ID_GMAC); - * - * gmac_option.uc_copy_all_frame = 0; - * gmac_option.uc_no_boardcast = 0; - * memcpy(gmac_option.uc_mac_addr, gs_uc_mac_address, sizeof(gs_uc_mac_address)); - * gs_gmac_dev.p_hw = GMAC; - * - * gmac_dev_init(GMAC, &gs_gmac_dev, &gmac_option); - * - * NVIC_EnableIRQ(GMAC_IRQn); - * - * ethernet_phy_init(GMAC, BOARD_GMAC_PHY_ADDR, sysclk_get_cpu_hz()); - * - * ethernet_phy_auto_negotiate(GMAC, BOARD_GMAC_PHY_ADDR); - * - * ethernet_phy_set_link(GMAC, BOARD_GMAC_PHY_ADDR, 1); - * \endcode - * - * \subsection gmac_basic_use_case_setup_flow Workflow - * -# Ensure that conf_eth.h is present and contains the - * following configuration symbol. This configuration file is used - * by the driver and should not be included by the user. - * - \code - * #define GMAC_RX_BUFFERS 16 - * #define GMAC_TX_BUFFERS 8 - * #define MAC_PHY_RETRY_MAX 1000000 - * #define ETHERNET_CONF_ETHADDR0 0x00 - * #define ETHERNET_CONF_ETHADDR0 0x00 - * #define ETHERNET_CONF_ETHADDR1 0x04 - * #define ETHERNET_CONF_ETHADDR2 0x25 - * #define ETHERNET_CONF_ETHADDR3 0x1C - * #define ETHERNET_CONF_ETHADDR4 0xA0 - * #define ETHERNET_CONF_ETHADDR5 0x02 - * #define ETHERNET_CONF_IPADDR0 192 - * #define ETHERNET_CONF_IPADDR1 168 - * #define ETHERNET_CONF_IPADDR2 0 - * #define ETHERNET_CONF_IPADDR3 2 - * #define ETHERNET_CONF_GATEWAY_ADDR0 192 - * #define ETHERNET_CONF_GATEWAY_ADDR1 168 - * #define ETHERNET_CONF_GATEWAY_ADDR2 0 - * #define ETHERNET_CONF_GATEWAY_ADDR3 1 - * #define ETHERNET_CONF_NET_MASK0 255 - * #define ETHERNET_CONF_NET_MASK1 255 - * #define ETHERNET_CONF_NET_MASK2 255 - * #define ETHERNET_CONF_NET_MASK3 0 - * #define ETH_PHY_MODE GMAC_PHY_MII - * \endcode - * -# Enable the system clock: - * - \code sysclk_init(); \endcode - * -# Enable PIO configurations for GMAC: - * - \code board_init(); \endcode - * -# Enable PMC clock for GMAC: - * - \code pmc_enable_periph_clk(ID_GMAC); \endcode - * -# Set the GMAC options; it's set to copy all frame and support broadcast: - * - \code - * gmac_option.uc_copy_all_frame = 0; - * gmac_option.uc_no_boardcast = 0; - * memcpy(gmac_option.uc_mac_addr, gs_uc_mac_address, sizeof(gs_uc_mac_address)); - * gs_gmac_dev.p_hw = GMAC; - * \endcode - * -# Initialize GMAC device with the filled option: - * - \code - * gmac_dev_init(GMAC, &gs_gmac_dev, &gmac_option); - * \endcode - * -# Enable the interrupt service for GMAC: - * - \code - * NVIC_EnableIRQ(GMAC_IRQn); - * \endcode - * -# Initialize the PHY component: - * - \code - * ethernet_phy_init(GMAC, BOARD_GMAC_PHY_ADDR, sysclk_get_cpu_hz()); - * \endcode - * -# The link will be established based on auto negotiation. - * - \code - * ethernet_phy_auto_negotiate(GMAC, BOARD_GMAC_PHY_ADDR); - * \endcode - * -# Establish the ethernet link; the network can be worked from now on: - * - \code - * ethernet_phy_set_link(GMAC, BOARD_GMAC_PHY_ADDR, 1); - * \endcode - * - * \section gmac_basic_use_case_usage Usage steps - * \subsection gmac_basic_use_case_usage_code Example code - * Add to, e.g., main loop in application C-file: - * \code - * gmac_dev_read(&gs_gmac_dev, (uint8_t *) gs_uc_eth_buffer, sizeof(gs_uc_eth_buffer), &ul_frm_size)); - * \endcode - * - * \subsection gmac_basic_use_case_usage_flow Workflow - * -# Start reading the data from the ethernet: - * - \code gmac_dev_read(&gs_gmac_dev, (uint8_t *) gs_uc_eth_buffer, sizeof(gs_uc_eth_buffer), &ul_frm_size)); \endcode - */ - -#endif /* GMAC_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/pmc.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/pmc.c deleted file mode 100644 index 28565bbbe..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/pmc.c +++ /dev/null @@ -1,1294 +0,0 @@ -/** - * \file - * - * \brief Power Management Controller (PMC) driver for SAM. - * - * Copyright (c) 2011 - 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#include "pmc.h" - -#if (SAM3N) -# define MAX_PERIPH_ID 31 -#elif (SAM3XA) -# define MAX_PERIPH_ID 44 -#elif (SAM3U) -# define MAX_PERIPH_ID 29 -#elif (SAM3S || SAM4S) -# define MAX_PERIPH_ID 34 -#elif (SAM4E) -# define MAX_PERIPH_ID 47 -#elif (SAM4N) -# define MAX_PERIPH_ID 31 -#endif - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -/** - * \defgroup sam_drivers_pmc_group Power Management Controller (PMC) - * - * \par Purpose - * - * The Power Management Controller (PMC) optimizes power consumption by - * controlling all system and user peripheral clocks. The PMC enables/disables - * the clock inputs to many of the peripherals and the Cortex-M Processor. - * - * @{ - */ - -/** - * \brief Set the prescaler of the MCK. - * - * \param ul_pres Prescaler value. - */ -void pmc_mck_set_prescaler(uint32_t ul_pres) -{ - PMC->PMC_MCKR = - (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; - while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); -} - -/** - * \brief Set the source of the MCK. - * - * \param ul_source Source selection value. - */ -void pmc_mck_set_source(uint32_t ul_source) -{ - PMC->PMC_MCKR = - (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | ul_source; - while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); -} - -/** - * \brief Switch master clock source selection to slow clock. - * - * \param ul_pres Processor clock prescaler. - * - * \retval 0 Success. - * \retval 1 Timeout error. - */ -uint32_t pmc_switch_mck_to_sclk(uint32_t ul_pres) -{ - uint32_t ul_timeout; - - PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | - PMC_MCKR_CSS_SLOW_CLK; - for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); - --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; - for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); - --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - return 0; -} - -/** - * \brief Switch master clock source selection to main clock. - * - * \param ul_pres Processor clock prescaler. - * - * \retval 0 Success. - * \retval 1 Timeout error. - */ -uint32_t pmc_switch_mck_to_mainck(uint32_t ul_pres) -{ - uint32_t ul_timeout; - - PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | - PMC_MCKR_CSS_MAIN_CLK; - for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); - --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; - for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); - --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - return 0; -} - -/** - * \brief Switch master clock source selection to PLLA clock. - * - * \param ul_pres Processor clock prescaler. - * - * \retval 0 Success. - * \retval 1 Timeout error. - */ -uint32_t pmc_switch_mck_to_pllack(uint32_t ul_pres) -{ - uint32_t ul_timeout; - - PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; - for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); - --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | - PMC_MCKR_CSS_PLLA_CLK; - - for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); - --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - return 0; -} - -#if (SAM3S || SAM4S) -/** - * \brief Switch master clock source selection to PLLB clock. - * - * \param ul_pres Processor clock prescaler. - * - * \retval 0 Success. - * \retval 1 Timeout error. - */ -uint32_t pmc_switch_mck_to_pllbck(uint32_t ul_pres) -{ - uint32_t ul_timeout; - - PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; - for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); - --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | - PMC_MCKR_CSS_PLLB_CLK; - for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); - --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - return 0; -} -#endif - -#if (SAM3XA || SAM3U) -/** - * \brief Switch master clock source selection to UPLL clock. - * - * \param ul_pres Processor clock prescaler. - * - * \retval 0 Success. - * \retval 1 Timeout error. - */ -uint32_t pmc_switch_mck_to_upllck(uint32_t ul_pres) -{ - uint32_t ul_timeout; - - PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; - for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); - --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | - PMC_MCKR_CSS_UPLL_CLK; - for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); - --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - return 0; -} -#endif - -/** - * \brief Switch slow clock source selection to external 32k (Xtal or Bypass). - * - * \note This function disables the PLLs. - * - * \note Switching SCLK back to 32krc is only possible by shutting down the - * VDDIO power supply. - * - * \param ul_bypass 0 for Xtal, 1 for bypass. - */ -void pmc_switch_sclk_to_32kxtal(uint32_t ul_bypass) -{ - /* Set Bypass mode if required */ - if (ul_bypass == 1) { - SUPC->SUPC_MR |= SUPC_MR_KEY(SUPC_KEY_VALUE) | - SUPC_MR_OSCBYPASS; - } - - SUPC->SUPC_CR = SUPC_CR_KEY(SUPC_KEY_VALUE) | SUPC_CR_XTALSEL; -} - -/** - * \brief Check if the external 32k Xtal is ready. - * - * \retval 1 External 32k Xtal is ready. - * \retval 0 External 32k Xtal is not ready. - */ -uint32_t pmc_osc_is_ready_32kxtal(void) -{ - return ((SUPC->SUPC_SR & SUPC_SR_OSCSEL) - && (PMC->PMC_SR & PMC_SR_OSCSELS)); -} - -/** - * \brief Switch main clock source selection to internal fast RC. - * - * \param ul_moscrcf Fast RC oscillator(4/8/12Mhz). - * - * \retval 0 Success. - * \retval 1 Timeout error. - * \retval 2 Invalid frequency. - */ -void pmc_switch_mainck_to_fastrc(uint32_t ul_moscrcf) -{ - uint32_t ul_needXTEN = 0; - - /* Enable Fast RC oscillator but DO NOT switch to RC now */ - if (PMC->CKGR_MOR & CKGR_MOR_MOSCXTEN) { - PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCRCF_Msk) | - PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCRCEN | - ul_moscrcf; - } else { - ul_needXTEN = 1; - PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCRCF_Msk) | - PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCRCEN | - CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCXTST_Msk | - ul_moscrcf; - } - - /* Wait the Fast RC to stabilize */ - while (!(PMC->PMC_SR & PMC_SR_MOSCRCS)); - - /* Switch to Fast RC */ - PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCSEL) | - PMC_CKGR_MOR_KEY_VALUE; - - /* Disable xtal oscillator */ - if (ul_needXTEN) { - PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTEN) | - PMC_CKGR_MOR_KEY_VALUE; - } -} - -/** - * \brief Enable fast RC oscillator. - * - * \param ul_rc Fast RC oscillator(4/8/12Mhz). - */ -void pmc_osc_enable_fastrc(uint32_t ul_rc) -{ - /* Enable Fast RC oscillator but DO NOT switch to RC now. - * Keep MOSCSEL to 1 */ - PMC->CKGR_MOR = PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCSEL | - CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCRCEN | ul_rc; - /* Wait the Fast RC to stabilize */ - while (!(PMC->PMC_SR & PMC_SR_MOSCRCS)); -} - -/** - * \brief Disable the internal fast RC. - */ -void pmc_osc_disable_fastrc(void) -{ - /* Disable Fast RC oscillator */ - PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCRCEN & - ~CKGR_MOR_MOSCRCF_Msk) - | PMC_CKGR_MOR_KEY_VALUE; -} - -/** - * \brief Check if the main fastrc is ready. - * - * \retval 0 Xtal is not ready, otherwise ready. - */ -uint32_t pmc_osc_is_ready_fastrc(void) -{ - return (PMC->PMC_SR & PMC_SR_MOSCRCS); -} - -/** - * \brief Enable main XTAL oscillator. - * - * \param ul_xtal_startup_time Xtal start-up time, in number of slow clocks. - */ -void pmc_osc_enable_main_xtal(uint32_t ul_xtal_startup_time) -{ - uint32_t mor = PMC->CKGR_MOR; - mor &= ~(CKGR_MOR_MOSCXTBY|CKGR_MOR_MOSCXTEN); - mor |= PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCXTEN | - CKGR_MOR_MOSCXTST(ul_xtal_startup_time); - PMC->CKGR_MOR = mor; - /* Wait the main Xtal to stabilize */ - while (!(PMC->PMC_SR & PMC_SR_MOSCXTS)); -} - -/** - * \brief Bypass main XTAL. - */ -void pmc_osc_bypass_main_xtal(void) -{ - uint32_t mor = PMC->CKGR_MOR; - mor &= ~(CKGR_MOR_MOSCXTBY|CKGR_MOR_MOSCXTEN); - mor |= PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCXTBY; - /* Enable Crystal oscillator but DO NOT switch now. Keep MOSCSEL to 0 */ - PMC->CKGR_MOR = mor; - /* The MOSCXTS in PMC_SR is automatically set */ -} - -/** - * \brief Disable the main Xtal. - */ -void pmc_osc_disable_main_xtal(void) -{ - uint32_t mor = PMC->CKGR_MOR; - mor &= ~(CKGR_MOR_MOSCXTBY|CKGR_MOR_MOSCXTEN); - PMC->CKGR_MOR = PMC_CKGR_MOR_KEY_VALUE | mor; -} - -/** - * \brief Check if the main crystal is bypassed. - * - * \retval 0 Xtal is bypassed, otherwise not. - */ -uint32_t pmc_osc_is_bypassed_main_xtal(void) -{ - return (PMC->CKGR_MOR & CKGR_MOR_MOSCXTBY); -} - -/** - * \brief Check if the main crystal is ready. - * - * \note If main crystal is bypassed, it's always ready. - * - * \retval 0 main crystal is not ready, otherwise ready. - */ -uint32_t pmc_osc_is_ready_main_xtal(void) -{ - return (PMC->PMC_SR & PMC_SR_MOSCXTS); -} - -/** - * \brief Switch main clock source selection to external Xtal/Bypass. - * - * \note The function may switch MCK to SCLK if MCK source is MAINCK to avoid - * any system crash. - * - * \note If used in Xtal mode, the Xtal is automatically enabled. - * - * \param ul_bypass 0 for Xtal, 1 for bypass. - * - * \retval 0 Success. - * \retval 1 Timeout error. - */ -void pmc_switch_mainck_to_xtal(uint32_t ul_bypass, - uint32_t ul_xtal_startup_time) -{ - /* Enable Main Xtal oscillator */ - if (ul_bypass) { - PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTEN) | - PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCXTBY | - CKGR_MOR_MOSCSEL; - } else { - PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTBY) | - PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCXTEN | - CKGR_MOR_MOSCXTST(ul_xtal_startup_time); - /* Wait the Xtal to stabilize */ - while (!(PMC->PMC_SR & PMC_SR_MOSCXTS)); - - PMC->CKGR_MOR |= PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_MOSCSEL; - } -} - -/** - * \brief Disable the external Xtal. - * - * \param ul_bypass 0 for Xtal, 1 for bypass. - */ -void pmc_osc_disable_xtal(uint32_t ul_bypass) -{ - /* Disable xtal oscillator */ - if (ul_bypass) { - PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTBY) | - PMC_CKGR_MOR_KEY_VALUE; - } else { - PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTEN) | - PMC_CKGR_MOR_KEY_VALUE; - } -} - -/** - * \brief Check if the MAINCK is ready. Depending on MOSCEL, MAINCK can be one - * of Xtal, bypass or internal RC. - * - * \retval 1 Xtal is ready. - * \retval 0 Xtal is not ready. - */ -uint32_t pmc_osc_is_ready_mainck(void) -{ - return PMC->PMC_SR & PMC_SR_MOSCSELS; -} - -/** - * \brief Select Main Crystal or internal RC as main clock source. - * - * \note This function will not enable/disable RC or Main Crystal. - * - * \param ul_xtal_rc 0 internal RC is selected, otherwise Main Crystal. - */ -void pmc_mainck_osc_select(uint32_t ul_xtal_rc) -{ - uint32_t mor = PMC->CKGR_MOR; - if (ul_xtal_rc) { - mor |= CKGR_MOR_MOSCSEL; - } else { - mor &= ~CKGR_MOR_MOSCSEL; - } - PMC->CKGR_MOR = PMC_CKGR_MOR_KEY_VALUE | mor; -} - -/** - * \brief Enable PLLA clock. - * - * \param mula PLLA multiplier. - * \param pllacount PLLA counter. - * \param diva Divider. - */ -void pmc_enable_pllack(uint32_t mula, uint32_t pllacount, uint32_t diva) -{ - /* first disable the PLL to unlock the lock */ - pmc_disable_pllack(); - - PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | CKGR_PLLAR_DIVA(diva) | - CKGR_PLLAR_PLLACOUNT(pllacount) | CKGR_PLLAR_MULA(mula); - while ((PMC->PMC_SR & PMC_SR_LOCKA) == 0); -} - -/** - * \brief Disable PLLA clock. - */ -void pmc_disable_pllack(void) -{ - PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | CKGR_PLLAR_MULA(0); -} - -/** - * \brief Is PLLA locked? - * - * \retval 0 Not locked. - * \retval 1 Locked. - */ -uint32_t pmc_is_locked_pllack(void) -{ - return (PMC->PMC_SR & PMC_SR_LOCKA); -} - -#if (SAM3S || SAM4S) -/** - * \brief Enable PLLB clock. - * - * \param mulb PLLB multiplier. - * \param pllbcount PLLB counter. - * \param divb Divider. - */ -void pmc_enable_pllbck(uint32_t mulb, uint32_t pllbcount, uint32_t divb) -{ - /* first disable the PLL to unlock the lock */ - pmc_disable_pllbck(); - - PMC->CKGR_PLLBR = - CKGR_PLLBR_DIVB(divb) | CKGR_PLLBR_PLLBCOUNT(pllbcount) - | CKGR_PLLBR_MULB(mulb); - while ((PMC->PMC_SR & PMC_SR_LOCKB) == 0); -} - -/** - * \brief Disable PLLB clock. - */ -void pmc_disable_pllbck(void) -{ - PMC->CKGR_PLLBR = CKGR_PLLBR_MULB(0); -} - -/** - * \brief Is PLLB locked? - * - * \retval 0 Not locked. - * \retval 1 Locked. - */ -uint32_t pmc_is_locked_pllbck(void) -{ - return (PMC->PMC_SR & PMC_SR_LOCKB); -} -#endif - -#if (SAM3XA || SAM3U) -/** - * \brief Enable UPLL clock. - */ -void pmc_enable_upll_clock(void) -{ - PMC->CKGR_UCKR = CKGR_UCKR_UPLLCOUNT(3) | CKGR_UCKR_UPLLEN; - - /* Wait UTMI PLL Lock Status */ - while (!(PMC->PMC_SR & PMC_SR_LOCKU)); -} - -/** - * \brief Disable UPLL clock. - */ -void pmc_disable_upll_clock(void) -{ - PMC->CKGR_UCKR &= ~CKGR_UCKR_UPLLEN; -} - -/** - * \brief Is UPLL locked? - * - * \retval 0 Not locked. - * \retval 1 Locked. - */ -uint32_t pmc_is_locked_upll(void) -{ - return (PMC->PMC_SR & PMC_SR_LOCKU); -} -#endif - -/** - * \brief Enable the specified peripheral clock. - * - * \note The ID must NOT be shifted (i.e., 1 << ID_xxx). - * - * \param ul_id Peripheral ID (ID_xxx). - * - * \retval 0 Success. - * \retval 1 Invalid parameter. - */ -uint32_t pmc_enable_periph_clk(uint32_t ul_id) -{ - if (ul_id > MAX_PERIPH_ID) { - return 1; - } - - if (ul_id < 32) { - if ((PMC->PMC_PCSR0 & (1u << ul_id)) != (1u << ul_id)) { - PMC->PMC_PCER0 = 1 << ul_id; - } -#if (SAM3S || SAM3XA || SAM4S || SAM4E) - } else { - ul_id -= 32; - if ((PMC->PMC_PCSR1 & (1u << ul_id)) != (1u << ul_id)) { - PMC->PMC_PCER1 = 1 << ul_id; - } -#endif - } - - return 0; -} - -/** - * \brief Disable the specified peripheral clock. - * - * \note The ID must NOT be shifted (i.e., 1 << ID_xxx). - * - * \param ul_id Peripheral ID (ID_xxx). - * - * \retval 0 Success. - * \retval 1 Invalid parameter. - */ -uint32_t pmc_disable_periph_clk(uint32_t ul_id) -{ - if (ul_id > MAX_PERIPH_ID) { - return 1; - } - - if (ul_id < 32) { - if ((PMC->PMC_PCSR0 & (1u << ul_id)) == (1u << ul_id)) { - PMC->PMC_PCDR0 = 1 << ul_id; - } -#if (SAM3S || SAM3XA || SAM4S || SAM4E) - } else { - ul_id -= 32; - if ((PMC->PMC_PCSR1 & (1u << ul_id)) == (1u << ul_id)) { - PMC->PMC_PCDR1 = 1 << ul_id; - } -#endif - } - return 0; -} - -/** - * \brief Enable all peripheral clocks. - */ -void pmc_enable_all_periph_clk(void) -{ - PMC->PMC_PCER0 = PMC_MASK_STATUS0; - while ((PMC->PMC_PCSR0 & PMC_MASK_STATUS0) != PMC_MASK_STATUS0); - -#if (SAM3S || SAM3XA || SAM4S || SAM4E) - PMC->PMC_PCER1 = PMC_MASK_STATUS1; - while ((PMC->PMC_PCSR1 & PMC_MASK_STATUS1) != PMC_MASK_STATUS1); -#endif -} - -/** - * \brief Disable all peripheral clocks. - */ -void pmc_disable_all_periph_clk(void) -{ - PMC->PMC_PCDR0 = PMC_MASK_STATUS0; - while ((PMC->PMC_PCSR0 & PMC_MASK_STATUS0) != 0); - -#if (SAM3S || SAM3XA || SAM4S || SAM4E) - PMC->PMC_PCDR1 = PMC_MASK_STATUS1; - while ((PMC->PMC_PCSR1 & PMC_MASK_STATUS1) != 0); -#endif -} - -/** - * \brief Check if the specified peripheral clock is enabled. - * - * \note The ID must NOT be shifted (i.e., 1 << ID_xxx). - * - * \param ul_id Peripheral ID (ID_xxx). - * - * \retval 0 Peripheral clock is disabled or unknown. - * \retval 1 Peripheral clock is enabled. - */ -uint32_t pmc_is_periph_clk_enabled(uint32_t ul_id) -{ - if (ul_id > MAX_PERIPH_ID) { - return 0; - } - -#if (SAM3S || SAM3XA || SAM4S || SAM4E) - if (ul_id < 32) { -#endif - if ((PMC->PMC_PCSR0 & (1u << ul_id))) { - return 1; - } else { - return 0; - } -#if (SAM3S || SAM3XA || SAM4S || SAM4E) - } else { - ul_id -= 32; - if ((PMC->PMC_PCSR1 & (1u << ul_id))) { - return 1; - } else { - return 0; - } - } -#endif -} - -/** - * \brief Set the prescaler for the specified programmable clock. - * - * \param ul_id Peripheral ID. - * \param ul_pres Prescaler value. - */ -void pmc_pck_set_prescaler(uint32_t ul_id, uint32_t ul_pres) -{ - PMC->PMC_PCK[ul_id] = - (PMC->PMC_PCK[ul_id] & ~PMC_PCK_PRES_Msk) | ul_pres; - while ((PMC->PMC_SCER & (PMC_SCER_PCK0 << ul_id)) - && !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id))); -} - -/** - * \brief Set the source oscillator for the specified programmable clock. - * - * \param ul_id Peripheral ID. - * \param ul_source Source selection value. - */ -void pmc_pck_set_source(uint32_t ul_id, uint32_t ul_source) -{ - PMC->PMC_PCK[ul_id] = - (PMC->PMC_PCK[ul_id] & ~PMC_PCK_CSS_Msk) | ul_source; - while ((PMC->PMC_SCER & (PMC_SCER_PCK0 << ul_id)) - && !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id))); -} - -/** - * \brief Switch programmable clock source selection to slow clock. - * - * \param ul_id Id of the programmable clock. - * \param ul_pres Programmable clock prescaler. - * - * \retval 0 Success. - * \retval 1 Timeout error. - */ -uint32_t pmc_switch_pck_to_sclk(uint32_t ul_id, uint32_t ul_pres) -{ - uint32_t ul_timeout; - - PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_SLOW_CLK | ul_pres; - for (ul_timeout = PMC_TIMEOUT; - !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - return 0; -} - -/** - * \brief Switch programmable clock source selection to main clock. - * - * \param ul_id Id of the programmable clock. - * \param ul_pres Programmable clock prescaler. - * - * \retval 0 Success. - * \retval 1 Timeout error. - */ -uint32_t pmc_switch_pck_to_mainck(uint32_t ul_id, uint32_t ul_pres) -{ - uint32_t ul_timeout; - - PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_MAIN_CLK | ul_pres; - for (ul_timeout = PMC_TIMEOUT; - !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - return 0; -} - -/** - * \brief Switch programmable clock source selection to PLLA clock. - * - * \param ul_id Id of the programmable clock. - * \param ul_pres Programmable clock prescaler. - * - * \retval 0 Success. - * \retval 1 Timeout error. - */ -uint32_t pmc_switch_pck_to_pllack(uint32_t ul_id, uint32_t ul_pres) -{ - uint32_t ul_timeout; - - PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_PLLA_CLK | ul_pres; - for (ul_timeout = PMC_TIMEOUT; - !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - return 0; -} - -#if (SAM3S || SAM4S) -/** - * \brief Switch programmable clock source selection to PLLB clock. - * - * \param ul_id Id of the programmable clock. - * \param ul_pres Programmable clock prescaler. - * - * \retval 0 Success. - * \retval 1 Timeout error. - */ -uint32_t pmc_switch_pck_to_pllbck(uint32_t ul_id, uint32_t ul_pres) -{ - uint32_t ul_timeout; - - PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_PLLB_CLK | ul_pres; - for (ul_timeout = PMC_TIMEOUT; - !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); - --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - return 0; -} -#endif - -#if (SAM3XA || SAM3U) -/** - * \brief Switch programmable clock source selection to UPLL clock. - * - * \param ul_id Id of the programmable clock. - * \param ul_pres Programmable clock prescaler. - * - * \retval 0 Success. - * \retval 1 Timeout error. - */ -uint32_t pmc_switch_pck_to_upllck(uint32_t ul_id, uint32_t ul_pres) -{ - uint32_t ul_timeout; - - PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_UPLL_CLK | ul_pres; - for (ul_timeout = PMC_TIMEOUT; - !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); - --ul_timeout) { - if (ul_timeout == 0) { - return 1; - } - } - - return 0; -} -#endif - -/** - * \brief Enable the specified programmable clock. - * - * \param ul_id Id of the programmable clock. - */ -void pmc_enable_pck(uint32_t ul_id) -{ - PMC->PMC_SCER = PMC_SCER_PCK0 << ul_id; -} - -/** - * \brief Disable the specified programmable clock. - * - * \param ul_id Id of the programmable clock. - */ -void pmc_disable_pck(uint32_t ul_id) -{ - PMC->PMC_SCDR = PMC_SCER_PCK0 << ul_id; -} - -/** - * \brief Enable all programmable clocks. - */ -void pmc_enable_all_pck(void) -{ - PMC->PMC_SCER = PMC_SCER_PCK0 | PMC_SCER_PCK1 | PMC_SCER_PCK2; -} - -/** - * \brief Disable all programmable clocks. - */ -void pmc_disable_all_pck(void) -{ - PMC->PMC_SCDR = PMC_SCDR_PCK0 | PMC_SCDR_PCK1 | PMC_SCDR_PCK2; -} - -/** - * \brief Check if the specified programmable clock is enabled. - * - * \param ul_id Id of the programmable clock. - * - * \retval 0 Programmable clock is disabled or unknown. - * \retval 1 Programmable clock is enabled. - */ -uint32_t pmc_is_pck_enabled(uint32_t ul_id) -{ - if (ul_id > 2) { - return 0; - } - - return (PMC->PMC_SCSR & (PMC_SCSR_PCK0 << ul_id)); -} - -#if (SAM3S || SAM3XA || SAM4S || SAM4E) -/** - * \brief Switch UDP (USB) clock source selection to PLLA clock. - * - * \param ul_usbdiv Clock divisor. - */ -void pmc_switch_udpck_to_pllack(uint32_t ul_usbdiv) -{ - PMC->PMC_USB = PMC_USB_USBDIV(ul_usbdiv); -} -#endif - -#if (SAM3S || SAM4S) -/** - * \brief Switch UDP (USB) clock source selection to PLLB clock. - * - * \param ul_usbdiv Clock divisor. - */ -void pmc_switch_udpck_to_pllbck(uint32_t ul_usbdiv) -{ - PMC->PMC_USB = PMC_USB_USBDIV(ul_usbdiv) | PMC_USB_USBS; -} -#endif - -#if (SAM3XA) -/** - * \brief Switch UDP (USB) clock source selection to UPLL clock. - * - * \param dw_usbdiv Clock divisor. - */ -void pmc_switch_udpck_to_upllck(uint32_t ul_usbdiv) -{ - PMC->PMC_USB = PMC_USB_USBS | PMC_USB_USBDIV(ul_usbdiv); -} -#endif - -#if (SAM3S || SAM3XA || SAM4S || SAM4E) -/** - * \brief Enable UDP (USB) clock. - */ -void pmc_enable_udpck(void) -{ -# if (SAM3S || SAM4S || SAM4E) - PMC->PMC_SCER = PMC_SCER_UDP; -# else - PMC->PMC_SCER = PMC_SCER_UOTGCLK; -# endif -} - -/** - * \brief Disable UDP (USB) clock. - */ -void pmc_disable_udpck(void) -{ -# if (SAM3S || SAM4S || SAM4E) - PMC->PMC_SCDR = PMC_SCDR_UDP; -# else - PMC->PMC_SCDR = PMC_SCDR_UOTGCLK; -# endif -} -#endif - -/** - * \brief Enable PMC interrupts. - * - * \param ul_sources Interrupt sources bit map. - */ -void pmc_enable_interrupt(uint32_t ul_sources) -{ - PMC->PMC_IER = ul_sources; -} - -/** - * \brief Disable PMC interrupts. - * - * \param ul_sources Interrupt sources bit map. - */ -void pmc_disable_interrupt(uint32_t ul_sources) -{ - PMC->PMC_IDR = ul_sources; -} - -/** - * \brief Get PMC interrupt mask. - * - * \return The interrupt mask value. - */ -uint32_t pmc_get_interrupt_mask(void) -{ - return PMC->PMC_IMR; -} - -/** - * \brief Get current status. - * - * \return The current PMC status. - */ -uint32_t pmc_get_status(void) -{ - return PMC->PMC_SR; -} - -/** - * \brief Set the wake-up inputs for fast startup mode registers - * (event generation). - * - * \param ul_inputs Wake up inputs to enable. - */ -void pmc_set_fast_startup_input(uint32_t ul_inputs) -{ - ul_inputs &= PMC_FAST_STARTUP_Msk; - PMC->PMC_FSMR |= ul_inputs; -} - -/** - * \brief Clear the wake-up inputs for fast startup mode registers - * (remove event generation). - * - * \param ul_inputs Wake up inputs to disable. - */ -void pmc_clr_fast_startup_input(uint32_t ul_inputs) -{ - ul_inputs &= PMC_FAST_STARTUP_Msk; - PMC->PMC_FSMR &= ~ul_inputs; -} - -/** - * \brief Enable Sleep Mode. - * Enter condition: (WFE or WFI) + (SLEEPDEEP bit = 0) + (LPM bit = 0) - * - * \param uc_type 0 for wait for interrupt, 1 for wait for event. - * \note For SAM4S and SAM4E series, since only WFI is effective, uc_type = 1 - * will be treated as uc_type = 0. - */ -void pmc_enable_sleepmode(uint8_t uc_type) -{ -#if !defined(SAM4S) || !defined(SAM4E) || !defined(SAM4N) - PMC->PMC_FSMR &= (uint32_t) ~ PMC_FSMR_LPM; // Enter Sleep mode -#endif - SCB->SCR &= (uint32_t) ~ SCB_SCR_SLEEPDEEP_Msk; // Deep sleep - -#if (SAM4S || SAM4E || SAM4N) - UNUSED(uc_type); - __WFI(); -#else - if (uc_type == 0) { - __WFI(); - } else { - __WFE(); - } -#endif -} - -#if (SAM4S || SAM4E || SAM4N) -static uint32_t ul_flash_in_wait_mode = PMC_WAIT_MODE_FLASH_DEEP_POWERDOWN; -/** - * \brief Set the embedded flash state in wait mode - * - * \param ul_flash_state PMC_WAIT_MODE_FLASH_STANDBY flash in standby mode, - * PMC_WAIT_MODE_FLASH_DEEP_POWERDOWN flash in deep power down mode. - */ -void pmc_set_flash_in_wait_mode(uint32_t ul_flash_state) -{ - ul_flash_in_wait_mode = ul_flash_state; -} - -/** - * \brief Enable Wait Mode. Enter condition: (WAITMODE bit = 1) + - * (SLEEPDEEP bit = 0) + FLPM - */ -void pmc_enable_waitmode(void) -{ - uint32_t i; - - /* Flash in Deep Power Down mode */ - i = PMC->PMC_FSMR; - i &= ~PMC_FSMR_FLPM_Msk; - i |= ul_flash_in_wait_mode; - PMC->PMC_FSMR = i; - - /* Clear SLEEPDEEP bit */ - SCB->SCR &= (uint32_t) ~ SCB_SCR_SLEEPDEEP_Msk; - - /* Backup FWS setting and set Flash Wait State at 0 */ -#if defined(ID_EFC) - uint32_t fmr_backup; - fmr_backup = EFC->EEFC_FMR; - EFC->EEFC_FMR &= (uint32_t) ~ EEFC_FMR_FWS_Msk; -#endif -#if defined(ID_EFC0) - uint32_t fmr0_backup; - fmr0_backup = EFC0->EEFC_FMR; - EFC0->EEFC_FMR &= (uint32_t) ~ EEFC_FMR_FWS_Msk; -#endif -#if defined(ID_EFC1) - uint32_t fmr1_backup; - fmr1_backup = EFC1->EEFC_FMR; - EFC1->EEFC_FMR &= (uint32_t) ~ EEFC_FMR_FWS_Msk; -#endif - - /* Set the WAITMODE bit = 1 */ - PMC->CKGR_MOR |= CKGR_MOR_KEY(0x37u) | CKGR_MOR_WAITMODE; - - /* Waiting for Master Clock Ready MCKRDY = 1 */ - while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); - - /* Waiting for MOSCRCEN bit cleared is strongly recommended - * to ensure that the core will not execute undesired instructions - */ - for (i = 0; i < 500; i++) { - __NOP(); - } - while (!(PMC->CKGR_MOR & CKGR_MOR_MOSCRCEN)); - - /* Restore EFC FMR setting */ -#if defined(ID_EFC) - EFC->EEFC_FMR = fmr_backup; -#endif -#if defined(ID_EFC0) - EFC0->EEFC_FMR = fmr0_backup; -#endif -#if defined(ID_EFC1) - EFC1->EEFC_FMR = fmr1_backup; -#endif -} -#else -/** - * \brief Enable Wait Mode. Enter condition: WFE + (SLEEPDEEP bit = 0) + - * (LPM bit = 1) - */ -void pmc_enable_waitmode(void) -{ - uint32_t i; - - PMC->PMC_FSMR |= PMC_FSMR_LPM; /* Enter Wait mode */ - SCB->SCR &= (uint32_t) ~ SCB_SCR_SLEEPDEEP_Msk; /* Deep sleep */ - __WFE(); - - /* Waiting for MOSCRCEN bit cleared is strongly recommended - * to ensure that the core will not execute undesired instructions - */ - for (i = 0; i < 500; i++) { - __NOP(); - } - while (!(PMC->CKGR_MOR & CKGR_MOR_MOSCRCEN)); -} -#endif - -/** - * \brief Enable Backup Mode. Enter condition: WFE/(VROFF bit = 1) + - * (SLEEPDEEP bit = 1) - */ -void pmc_enable_backupmode(void) -{ - SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; -#if (SAM4S || SAM4E || SAM4N) - SUPC->SUPC_CR = SUPC_CR_KEY(SUPC_KEY_VALUE) | SUPC_CR_VROFF_STOP_VREG; -#else - __WFE(); -#endif -} - -/** - * \brief Enable Clock Failure Detector. - */ -void pmc_enable_clock_failure_detector(void) -{ - uint32_t ul_reg = PMC->CKGR_MOR; - - PMC->CKGR_MOR = PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_CFDEN | ul_reg; -} - -/** - * \brief Disable Clock Failure Detector. - */ -void pmc_disable_clock_failure_detector(void) -{ - uint32_t ul_reg = PMC->CKGR_MOR & (~CKGR_MOR_CFDEN); - - PMC->CKGR_MOR = PMC_CKGR_MOR_KEY_VALUE | ul_reg; -} - -#if SAM4N -/** - * \brief Enable Slow Crystal Oscillator Frequency Monitoring. - */ -void pmc_enable_sclk_osc_freq_monitor(void) -{ - uint32_t ul_reg = PMC->CKGR_MOR; - - PMC->CKGR_MOR = PMC_CKGR_MOR_KEY_VALUE | CKGR_MOR_XT32KFME | ul_reg; -} - -/** - * \brief Disable Slow Crystal Oscillator Frequency Monitoring. - */ -void pmc_disable_sclk_osc_freq_monitor(void) -{ - uint32_t ul_reg = PMC->CKGR_MOR & (~CKGR_MOR_XT32KFME); - - PMC->CKGR_MOR = PMC_CKGR_MOR_KEY_VALUE | ul_reg; -} -#endif - -/** - * \brief Enable or disable write protect of PMC registers. - * - * \param ul_enable 1 to enable, 0 to disable. - */ -void pmc_set_writeprotect(uint32_t ul_enable) -{ - if (ul_enable) { - PMC->PMC_WPMR = PMC_WPMR_WPKEY_VALUE | PMC_WPMR_WPEN; - } else { - PMC->PMC_WPMR = PMC_WPMR_WPKEY_VALUE; - } -} - -/** - * \brief Return write protect status. - * - * \retval 0 Protection disabled. - * \retval 1 Protection enabled. - */ -uint32_t pmc_get_writeprotect_status(void) -{ - return PMC->PMC_WPMR & PMC_WPMR_WPEN; -} - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/pmc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/pmc.h deleted file mode 100644 index 2d2c34a9e..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/pmc.h +++ /dev/null @@ -1,484 +0,0 @@ -/** - * \file - * - * \brief Power Management Controller (PMC) driver for SAM. - * - * Copyright (c) 2011 - 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef PMC_H_INCLUDED -#define PMC_H_INCLUDED - -#include "compiler.h" - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -/** Bit mask for peripheral clocks (PCER0) */ -#define PMC_MASK_STATUS0 (0xFFFFFFFC) - -/** Bit mask for peripheral clocks (PCER1) */ -#define PMC_MASK_STATUS1 (0xFFFFFFFF) - -/** Loop counter timeout value */ -#define PMC_TIMEOUT (2048) - -/** Key to unlock CKGR_MOR register */ -#define PMC_CKGR_MOR_KEY_VALUE CKGR_MOR_KEY(0x37) - -/** Key used to write SUPC registers */ -#define SUPC_KEY_VALUE ((uint32_t) 0xA5) - -/** Mask to access fast startup input */ -#define PMC_FAST_STARTUP_Msk (0x7FFFFu) - -/** PMC_WPMR Write Protect KEY, unlock it */ -#define PMC_WPMR_WPKEY_VALUE PMC_WPMR_WPKEY((uint32_t) 0x504D43) - -/** Using external oscillator */ -#define PMC_OSC_XTAL 0 - -/** Oscillator in bypass mode */ -#define PMC_OSC_BYPASS 1 - -#define PMC_PCK_0 0 /* PCK0 ID */ -#define PMC_PCK_1 1 /* PCK1 ID */ -#define PMC_PCK_2 2 /* PCK2 ID */ - -#if SAM4S || SAM4E || SAM4N -/** Flash state in Wait Mode */ -#define PMC_WAIT_MODE_FLASH_STANDBY PMC_FSMR_FLPM_FLASH_STANDBY -#define PMC_WAIT_MODE_FLASH_DEEP_POWERDOWN PMC_FSMR_FLPM_FLASH_DEEP_POWERDOWN -#define PMC_WAIT_MODE_FLASH_IDLE PMC_FSMR_FLPM_FLASH_IDLE -#endif - -/** Convert startup time from us to MOSCXTST */ -#define pmc_us_to_moscxtst(startup_us, slowck_freq) \ - ((startup_us * slowck_freq / 8 / 1000000) < 0x100 ? \ - (startup_us * slowck_freq / 8 / 1000000) : 0xFF) - -/** - * \name Master clock (MCK) Source and Prescaler configuration - * - * \note The following functions may be used to select the clock source and - * prescaler for the master clock. - */ -//@{ - -void pmc_mck_set_prescaler(uint32_t ul_pres); -void pmc_mck_set_source(uint32_t ul_source); -uint32_t pmc_switch_mck_to_sclk(uint32_t ul_pres); -uint32_t pmc_switch_mck_to_mainck(uint32_t ul_pres); -uint32_t pmc_switch_mck_to_pllack(uint32_t ul_pres); -#if (SAM3S || SAM4S) -uint32_t pmc_switch_mck_to_pllbck(uint32_t ul_pres); -#endif -#if (SAM3XA || SAM3U) -uint32_t pmc_switch_mck_to_upllck(uint32_t ul_pres); -#endif -#if (SAM4S || SAM4E || SAM4N) -void pmc_set_flash_in_wait_mode(uint32_t ul_flash_state); -#endif - - -//@} - -/** - * \name Slow clock (SLCK) oscillator and configuration - * - */ -//@{ - -void pmc_switch_sclk_to_32kxtal(uint32_t ul_bypass); -uint32_t pmc_osc_is_ready_32kxtal(void); - -//@} - -/** - * \name Main Clock (MAINCK) oscillator and configuration - * - */ -//@{ - -void pmc_switch_mainck_to_fastrc(uint32_t ul_moscrcf); -void pmc_osc_enable_fastrc(uint32_t ul_rc); -void pmc_osc_disable_fastrc(void); -uint32_t pmc_osc_is_ready_fastrc(void); -void pmc_osc_enable_main_xtal(uint32_t ul_xtal_startup_time); -void pmc_osc_bypass_main_xtal(void); -void pmc_osc_disable_main_xtal(void); -uint32_t pmc_osc_is_bypassed_main_xtal(void); -uint32_t pmc_osc_is_ready_main_xtal(void); -void pmc_switch_mainck_to_xtal(uint32_t ul_bypass, - uint32_t ul_xtal_startup_time); -void pmc_osc_disable_xtal(uint32_t ul_bypass); -uint32_t pmc_osc_is_ready_mainck(void); -void pmc_mainck_osc_select(uint32_t ul_xtal_rc); - -//@} - -/** - * \name PLL oscillator and configuration - * - */ -//@{ - -void pmc_enable_pllack(uint32_t mula, uint32_t pllacount, uint32_t diva); -void pmc_disable_pllack(void); -uint32_t pmc_is_locked_pllack(void); - -#if (SAM3S || SAM4S) -void pmc_enable_pllbck(uint32_t mulb, uint32_t pllbcount, uint32_t divb); -void pmc_disable_pllbck(void); -uint32_t pmc_is_locked_pllbck(void); -#endif - -#if (SAM3XA || SAM3U) -void pmc_enable_upll_clock(void); -void pmc_disable_upll_clock(void); -uint32_t pmc_is_locked_upll(void); -#endif - -//@} - -/** - * \name Peripherals clock configuration - * - */ -//@{ - -uint32_t pmc_enable_periph_clk(uint32_t ul_id); -uint32_t pmc_disable_periph_clk(uint32_t ul_id); -void pmc_enable_all_periph_clk(void); -void pmc_disable_all_periph_clk(void); -uint32_t pmc_is_periph_clk_enabled(uint32_t ul_id); - -//@} - -/** - * \name Programmable clock Source and Prescaler configuration - * - * The following functions may be used to select the clock source and - * prescaler for the specified programmable clock. - */ -//@{ - -void pmc_pck_set_prescaler(uint32_t ul_id, uint32_t ul_pres); -void pmc_pck_set_source(uint32_t ul_id, uint32_t ul_source); -uint32_t pmc_switch_pck_to_sclk(uint32_t ul_id, uint32_t ul_pres); -uint32_t pmc_switch_pck_to_mainck(uint32_t ul_id, uint32_t ul_pres); -uint32_t pmc_switch_pck_to_pllack(uint32_t ul_id, uint32_t ul_pres); -#if (SAM3S || SAM4S) -uint32_t pmc_switch_pck_to_pllbck(uint32_t ul_id, uint32_t ul_pres); -#endif -#if (SAM3XA || SAM3U) -uint32_t pmc_switch_pck_to_upllck(uint32_t ul_id, uint32_t ul_pres); -#endif -void pmc_enable_pck(uint32_t ul_id); -void pmc_disable_pck(uint32_t ul_id); -void pmc_enable_all_pck(void); -void pmc_disable_all_pck(void); -uint32_t pmc_is_pck_enabled(uint32_t ul_id); - -//@} - -/** - * \name USB clock configuration - * - */ -//@{ - -#if (SAM3S || SAM3XA || SAM4S || SAM4E) -void pmc_switch_udpck_to_pllack(uint32_t ul_usbdiv); -#endif -#if (SAM3S || SAM4S) -void pmc_switch_udpck_to_pllbck(uint32_t ul_usbdiv); -#endif -#if (SAM3XA) -void pmc_switch_udpck_to_upllck(uint32_t ul_usbdiv); -#endif -#if (SAM3S || SAM3XA || SAM4S || SAM4E) -void pmc_enable_udpck(void); -void pmc_disable_udpck(void); -#endif - -//@} - -/** - * \name Interrupt and status management - * - */ -//@{ - -void pmc_enable_interrupt(uint32_t ul_sources); -void pmc_disable_interrupt(uint32_t ul_sources); -uint32_t pmc_get_interrupt_mask(void); -uint32_t pmc_get_status(void); - -//@} - -/** - * \name Power management - * - * The following functions are used to configure sleep mode and additional - * wake up inputs. - */ -//@{ - -void pmc_set_fast_startup_input(uint32_t ul_inputs); -void pmc_clr_fast_startup_input(uint32_t ul_inputs); -void pmc_enable_sleepmode(uint8_t uc_type); -void pmc_enable_waitmode(void); -void pmc_enable_backupmode(void); - -//@} - -/** - * \name Failure detector - * - */ -//@{ - -void pmc_enable_clock_failure_detector(void); -void pmc_disable_clock_failure_detector(void); - -//@} - -#if SAM4N -/** - * \name Slow Crystal Oscillator Frequency Monitoring - * - */ -//@{ - -void pmc_enable_sclk_osc_freq_monitor(void); -void pmc_disable_sclk_osc_freq_monitor(void); - -//@} -#endif - -/** - * \name Write protection - * - */ -//@{ - -void pmc_set_writeprotect(uint32_t ul_enable); -uint32_t pmc_get_writeprotect_status(void); - -//@} - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond - -//! @} - -/** - * \page sam_pmc_quickstart Quick start guide for the SAM PMC module - * - * This is the quick start guide for the \ref pmc_group "PMC module", with - * step-by-step instructions on how to configure and use the driver in a - * selection of use cases. - * - * The use cases contain several code fragments. The code fragments in the - * steps for setup can be copied into a custom initialization function, while - * the steps for usage can be copied into, e.g., the main application function. - * - * \section pmc_use_cases PMC use cases - * - \ref pmc_basic_use_case Basic use case - Switch Main Clock sources - * - \ref pmc_use_case_2 Advanced use case - Configure Programmable Clocks - * - * \section pmc_basic_use_case Basic use case - Switch Main Clock sources - * In this use case, the PMC module is configured for a variety of system clock - * sources and speeds. A LED is used to visually indicate the current clock - * speed as the source is switched. - * - * \section pmc_basic_use_case_setup Setup - * - * \subsection pmc_basic_use_case_setup_prereq Prerequisites - * -# \ref gpio_group "General Purpose I/O Management (gpio)" - * - * \subsection pmc_basic_use_case_setup_code Code - * The following function needs to be added to the user application, to flash a - * board LED a variable number of times at a rate given in CPU ticks. - * - * \code - * #define FLASH_TICK_COUNT 0x00012345 - * - * void flash_led(uint32_t tick_count, uint8_t flash_count) - * { - * SysTick->CTRL = SysTick_CTRL_ENABLE_Msk; - * SysTick->LOAD = tick_count; - * - * while (flash_count--) - * { - * gpio_toggle_pin(LED0_GPIO); - * while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk)); - * gpio_toggle_pin(LED0_GPIO); - * while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk)); - * } - * } - * \endcode - * - * \section pmc_basic_use_case_usage Use case - * - * \subsection pmc_basic_use_case_usage_code Example code - * Add to application C-file: - * \code - * for (;;) - * { - * pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_12_MHz); - * flash_led(FLASH_TICK_COUNT, 5); - * pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_8_MHz); - * flash_led(FLASH_TICK_COUNT, 5); - * pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_4_MHz); - * flash_led(FLASH_TICK_COUNT, 5); - * pmc_switch_mainck_to_xtal(0); - * flash_led(FLASH_TICK_COUNT, 5); - * } - * \endcode - * - * \subsection pmc_basic_use_case_usage_flow Workflow - * -# Wrap the code in an infinite loop: - * \code - * for (;;) - * \endcode - * -# Switch the Master CPU frequency to the internal 12MHz RC oscillator, flash - * a LED on the board several times: - * \code - * pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_12_MHz); - * flash_led(FLASH_TICK_COUNT, 5); - * \endcode - * -# Switch the Master CPU frequency to the internal 8MHz RC oscillator, flash - * a LED on the board several times: - * \code - * pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_8_MHz); - * flash_led(FLASH_TICK_COUNT, 5); - * \endcode - * -# Switch the Master CPU frequency to the internal 4MHz RC oscillator, flash - * a LED on the board several times: - * \code - * pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_4_MHz); - * flash_led(FLASH_TICK_COUNT, 5); - * \endcode - * -# Switch the Master CPU frequency to the external crystal oscillator, flash - * a LED on the board several times: - * \code - * pmc_switch_mainck_to_xtal(0, BOARD_OSC_STARTUP_US); - * flash_led(FLASH_TICK_COUNT, 5); - * \endcode - */ - -/** - * \page pmc_use_case_2 Use case #2 - Configure Programmable Clocks - * In this use case, the PMC module is configured to start the Slow Clock from - * an attached 32KHz crystal, and start one of the Programmable Clock modules - * sourced from the Slow Clock divided down with a prescale factor of 64. - * - * \section pmc_use_case_2_setup Setup - * - * \subsection pmc_use_case_2_setup_prereq Prerequisites - * -# \ref pio_group "Parallel Input/Output Controller (pio)" - * - * \subsection pmc_use_case_2_setup_code Code - * The following code must be added to the user application: - * \code - * pio_set_peripheral(PIOA, PIO_PERIPH_B, PIO_PA17); - * \endcode - * - * \subsection pmc_use_case_2_setup_code_workflow Workflow - * -# Configure the PCK1 pin to output on a specific port pin (in this case, - * PIOA pin 17) of the microcontroller. - * \code - * pio_set_peripheral(PIOA, PIO_PERIPH_B, PIO_PA17); - * \endcode - * \note The peripheral selection and pin will vary according to your selected - * SAM device model. Refer to the "Peripheral Signal Multiplexing on I/O - * Lines" of your device's datasheet. - * - * \section pmc_use_case_2_usage Use case - * The generated PCK1 clock output can be viewed on an oscilloscope attached to - * the correct pin of the microcontroller. - * - * \subsection pmc_use_case_2_usage_code Example code - * Add to application C-file: - * \code - * pmc_switch_sclk_to_32kxtal(PMC_OSC_XTAL); - * pmc_switch_pck_to_sclk(PMC_PCK_1, PMC_PCK_PRES_CLK_64); - * pmc_enable_pck(PMC_PCK_1); - * - * for (;;) - * { - * // Do Nothing - * } - * \endcode - * - * \subsection pmc_use_case_2_usage_flow Workflow - * -# Switch the Slow Clock source input to an external 32KHz crystal: - * \code - * pmc_switch_sclk_to_32kxtal(PMC_OSC_XTAL); - * \endcode - * -# Switch the Programmable Clock module PCK1 source clock to the Slow Clock, - * with a prescaler of 64: - * \code - * pmc_switch_pck_to_sclk(PMC_PCK_1, PMC_PCK_PRES_CLK_64); - * \endcode - * -# Enable Programmable Clock module PCK1: - * \code - * pmc_enable_pck(PMC_PCK_1); - * \endcode - * -# Enter an infinite loop: - * \code - * for (;;) - * { - * // Do Nothing - * } - * \endcode - */ - -#endif /* PMC_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/sleep.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/sleep.c deleted file mode 100644 index 23985453c..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/sleep.c +++ /dev/null @@ -1,251 +0,0 @@ -/** - * \file - * - * \brief Sleep mode access - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#include -#include "sleep.h" - -/* SAM3 and SAM4 series */ -#if (SAM3S || SAM3N || SAM3XA || SAM3U || SAM4S || SAM4E || SAM4N) -# include "pmc.h" -# include "board.h" - -/* Checking board configuration of main clock xtal statup time */ -#if !defined(BOARD_OSC_STARTUP_US) -# warning The board main clock xtal statup time has not been defined. Using default settings. -# define BOARD_OSC_STARTUP_US (15625UL) -#endif - -/** - * Save clock settings and shutdown PLLs - */ -__always_inline static void pmc_save_clock_settings( - uint32_t *p_osc_setting, - uint32_t *p_pll0_setting, - uint32_t *p_pll1_setting, - uint32_t *p_mck_setting) -{ - if (p_osc_setting) { - *p_osc_setting = PMC->CKGR_MOR; - } - if (p_pll0_setting) { - *p_pll0_setting = PMC->CKGR_PLLAR; - } - if (p_pll1_setting) { -#if (SAM3S || SAM4S) - *p_pll1_setting = PMC->CKGR_PLLBR; -#elif (SAM3U || SAM3XA) - *p_pll1_setting = PMC->CKGR_UCKR; -#else - *p_pll1_setting = 0; -#endif - } - if (p_mck_setting) { - *p_mck_setting = PMC->PMC_MCKR; - } - - /* Switch MCK to internal 4/8/12M RC for fast wakeup - and disable unused clock for power saving. */ - pmc_switch_mck_to_sclk(PMC_MCKR_PRES_CLK_1); - pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_4_MHz); - pmc_osc_disable_xtal(0); - pmc_disable_pllack(); -#if (SAM3S || SAM4S) - pmc_disable_pllbck(); -#elif (SAM3U || SAM3XA) - pmc_disable_upll_clock(); -#endif - pmc_switch_mck_to_mainck(PMC_MCKR_PRES_CLK_1); -} - -/** - * Restore clock settings - */ -__always_inline static void pmc_restore_clock_setting( - uint32_t osc_setting, - uint32_t pll0_setting, - uint32_t pll1_setting, - uint32_t mck_setting) -{ - uint32_t mckr; - uint32_t pll_sr = 0; - - /* Switch MCK to slow clock */ - pmc_switch_mck_to_sclk(PMC_MCKR_PRES_CLK_1); - /* Switch mainck to external xtal */ - if (CKGR_MOR_MOSCXTBY == (osc_setting & CKGR_MOR_MOSCXTBY)) { - /* Bypass mode */ - pmc_switch_mainck_to_xtal(PMC_OSC_BYPASS, - pmc_us_to_moscxtst(BOARD_OSC_STARTUP_US, - CHIP_FREQ_SLCK_RC)); - pmc_osc_disable_fastrc(); - } else if (CKGR_MOR_MOSCXTEN == (osc_setting & CKGR_MOR_MOSCXTEN)) { - /* External XTAL */ - pmc_switch_mainck_to_xtal(PMC_OSC_XTAL, - pmc_us_to_moscxtst(BOARD_OSC_STARTUP_US, - CHIP_FREQ_SLCK_RC)); - pmc_osc_disable_fastrc(); - } - - if (pll0_setting & CKGR_PLLAR_MULA_Msk) { - PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | pll0_setting; - pll_sr |= PMC_SR_LOCKA; - } -#if (SAM3S || SAM4S) - if (pll1_setting & CKGR_PLLBR_MULB_Msk) { - PMC->CKGR_PLLBR = pll1_setting; - pll_sr |= PMC_SR_LOCKB; - } -#elif (SAM3U || SAM3XA) - if (pll1_setting & CKGR_UCKR_UPLLEN) { - PMC->CKGR_UCKR = pll1_setting; - pll_sr |= PMC_SR_LOCKU; - } -#else - UNUSED(pll1_setting); -#endif - /* Wait MCK source ready */ - switch(mck_setting & PMC_MCKR_CSS_Msk) { - case PMC_MCKR_CSS_PLLA_CLK: - while (!(PMC->PMC_SR & PMC_SR_LOCKA)); - break; -#if (SAM3S || SAM4S) - case PMC_MCKR_CSS_PLLB_CLK: - while (!(PMC->PMC_SR & PMC_SR_LOCKB)); - break; -#elif (SAM3U || SAM3XA) - case PMC_MCKR_CSS_UPLL_CLK: - while (!(PMC->PMC_SR & PMC_SR_LOCKU)); - break; -#endif - } - - /* Switch to faster clock */ - mckr = PMC->PMC_MCKR; - /* Set PRES */ - PMC->PMC_MCKR = (mckr & ~PMC_MCKR_PRES_Msk) - | (mck_setting & PMC_MCKR_PRES_Msk); - while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); - /* Set CSS and others */ - PMC->PMC_MCKR = mck_setting; - while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); - /* Waiting all restored PLLs ready */ - while (!(PMC->PMC_SR & pll_sr)); -} - -/** If clocks are switched to FASTRC for WAIT mode */ -static volatile bool b_is_fastrc_used = false; -/** Callback invoked once when clocks are restored */ -static pmc_callback_wakeup_clocks_restored_t callback_clocks_restored = NULL; - -void pmc_sleep(int sleep_mode) -{ - switch (sleep_mode) { - case SAM_PM_SMODE_SLEEP_WFI: - case SAM_PM_SMODE_SLEEP_WFE: -#if (SAM4S || SAM4E || SAM4N) - SCB->SCR &= (uint32_t)~SCR_SLEEPDEEP; - cpu_irq_enable(); - __WFI(); - break; -#else - PMC->PMC_FSMR &= (uint32_t)~PMC_FSMR_LPM; - SCB->SCR &= (uint32_t)~SCR_SLEEPDEEP; - cpu_irq_enable(); - if (sleep_mode == SAM_PM_SMODE_SLEEP_WFI) - __WFI(); - else - __WFE(); - break; -#endif - case SAM_PM_SMODE_WAIT: { - uint32_t mor, pllr0, pllr1, mckr; - cpu_irq_disable(); - b_is_fastrc_used = true; - pmc_save_clock_settings(&mor, &pllr0, &pllr1, &mckr); - - /* Enter wait mode */ - cpu_irq_enable(); - pmc_enable_waitmode(); - - cpu_irq_disable(); - pmc_restore_clock_setting(mor, pllr0, pllr1, mckr); - b_is_fastrc_used = false; - if (callback_clocks_restored) { - callback_clocks_restored(); - callback_clocks_restored = NULL; - } - cpu_irq_enable(); - break; - } - - case SAM_PM_SMODE_BACKUP: - SCB->SCR |= SCR_SLEEPDEEP; -#if (SAM4S || SAM4E || SAM4N) - SUPC->SUPC_CR = SUPC_CR_KEY(0xA5u) | SUPC_CR_VROFF_STOP_VREG; - cpu_irq_enable(); - __WFI() ; -#else - cpu_irq_enable(); - __WFE() ; -#endif - break; - } -} - -bool pmc_is_wakeup_clocks_restored(void) -{ - return !b_is_fastrc_used; -} - -void pmc_wait_wakeup_clocks_restore( - pmc_callback_wakeup_clocks_restored_t callback) -{ - if (b_is_fastrc_used) { - cpu_irq_disable(); - callback_clocks_restored = callback; - } else if (callback) { - callback(); - } -} - -#endif /* #if (SAM3S || SAM3N || SAM3XA || SAM3U || SAM4S || SAM4E || SAM4N) */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/sleep.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/sleep.h deleted file mode 100644 index cbfad6bfe..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/pmc/sleep.h +++ /dev/null @@ -1,122 +0,0 @@ -/** - * \file - * - * \brief Sleep mode access - * - * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef SLEEP_H -#define SLEEP_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/** - * \defgroup sleep_group Power Manager (PM) - * - * This is a stub on the SAM Power Manager Control (PMC) for the sleepmgr - * service. - * - * \note To minimize the code overhead, these functions do not feature - * interrupt-protected access since they are likely to be called inside - * interrupt handlers or in applications where such protection is not - * necessary. If such protection is needed, it must be ensured by the calling - * code. - * - * @{ - */ - -#if defined(__DOXYGEN__) -/** - * \brief Sets the MCU in the specified sleep mode - * \param sleep_mode Sleep mode to set. - */ -#endif -/* SAM3 and SAM4 series */ -#if (SAM3S || SAM3N || SAM3XA || SAM3U || SAM4S || SAM4E || SAM4N) - -# define SAM_PM_SMODE_ACTIVE 0 /**< Active */ -# define SAM_PM_SMODE_SLEEP_WFE 1 /**< Wait for Events */ -# define SAM_PM_SMODE_SLEEP_WFI 2 /**< Wait for Interrupts */ -# define SAM_PM_SMODE_WAIT 3 /**< Wait Mode */ -# define SAM_PM_SMODE_BACKUP 4 /**< Backup Mode */ - -/** (SCR) Sleep deep bit */ -#define SCR_SLEEPDEEP (0x1 << 2) - -/** - * Clocks restored callback function type. - * Registered by routine pmc_wait_wakeup_clocks_restore() - * Callback called when all clocks are restored. - */ -typedef void (*pmc_callback_wakeup_clocks_restored_t) (void); - -/** - * Enter sleep mode - * \param sleep_mode Sleep mode to enter - */ -void pmc_sleep(int sleep_mode); - -/** - * Check if clocks are restored after wakeup - * (For WAIT mode. In WAIT mode, clocks are switched to FASTRC. - * After wakeup clocks should be restored, before that some of the - * ISR should not be served, otherwise there may be timing or clock issue.) - */ -bool pmc_is_wakeup_clocks_restored(void); - -/** - * - * \return true if start waiting - */ -void pmc_wait_wakeup_clocks_restore( - pmc_callback_wakeup_clocks_restored_t callback); - -#endif - -//! @} - -#ifdef __cplusplus -} -#endif - -#endif /* SLEEP_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/tc/tc.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/tc/tc.c deleted file mode 100644 index dd95a52ea..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/tc/tc.c +++ /dev/null @@ -1,596 +0,0 @@ -/** - * \file - * - * \brief Timer Counter (TC) driver for SAM. - * - * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#include -#include "tc.h" - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -#define TC_WPMR_WPKEY_VALUE TC_WPMR_WPKEY((uint32_t)0x54494D) - -/** - * \defgroup sam_drivers_tc_group Timer Counter (TC) - * - * The Timer Counter (TC) includes three identical 32-bit Timer Counter - * channels. Each channel can be independently programmed to perform a wide - * range of functions including frequency measurement, event counting, - * interval measurement, pulse generation, delay timing and pulse width - * modulation. - * - * @{ - */ - -/** - * \brief Configure TC for timer, waveform generation or capture. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - * \param ul_mode Control mode register value to set. - * - * \attention If the TC is configured for waveform generation, the external - * event selection (EEVT) should only be set to \c TC_CMR_EEVT_TIOB or the - * equivalent value \c 0 if it really is the intention to use TIOB as an - * external event trigger.\n - * This is because the setting forces TIOB to be an input even if the - * external event trigger has not been enabled with \c TC_CMR_ENETRG, and - * thus prevents normal operation of TIOB. - */ -void tc_init(Tc *p_tc, uint32_t ul_channel, uint32_t ul_mode) -{ - TcChannel *tc_channel; - - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - tc_channel = p_tc->TC_CHANNEL + ul_channel; - - /* Disable TC clock. */ - tc_channel->TC_CCR = TC_CCR_CLKDIS; - - /* Disable interrupts. */ - tc_channel->TC_IDR = 0xFFFFFFFF; - - /* Clear status register. */ - tc_channel->TC_SR; - - /* Set mode. */ - tc_channel->TC_CMR = ul_mode; -} - -/** - * \brief Asserts a SYNC signal to generate a software trigger to - * all channels. - * - * \param p_tc Pointer to a TC instance. - * - */ -void tc_sync_trigger(Tc *p_tc) -{ - p_tc->TC_BCR = TC_BCR_SYNC; -} - -/** - * \brief Configure TC Block mode. - * \note tc_init() must be called first. - * - * \param p_tc Pointer to a TC instance. - * \param ul_blockmode Block mode register value to set. - * - */ -void tc_set_block_mode(Tc *p_tc, uint32_t ul_blockmode) -{ - p_tc->TC_BMR = ul_blockmode; -} - -#if (!SAM3U) - -/** - * \brief Configure TC for 2-bit Gray Counter for Stepper Motor. - * \note tc_init() must be called first. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - * \param ul_steppermode Stepper motor mode register value to set. - * - * \return 0 for OK. - */ -uint32_t tc_init_2bit_gray(Tc *p_tc, uint32_t ul_channel, - uint32_t ul_steppermode) -{ - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - - p_tc->TC_CHANNEL[ul_channel].TC_SMMR = ul_steppermode; - return 0; -} - -#endif - -/** - * \brief Start TC clock counter on the selected channel. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - */ -void tc_start(Tc *p_tc, uint32_t ul_channel) -{ - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - - p_tc->TC_CHANNEL[ul_channel].TC_CCR = TC_CCR_CLKEN | TC_CCR_SWTRG; -} - -/** - * \brief Stop TC clock counter on the selected channel. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - */ -void tc_stop(Tc *p_tc, uint32_t ul_channel) -{ - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - - p_tc->TC_CHANNEL[ul_channel].TC_CCR = TC_CCR_CLKDIS; -} - -/** - * \brief Read counter value on the selected channel. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - * - * \return Counter value. - */ -uint32_t tc_read_cv(Tc *p_tc, uint32_t ul_channel) -{ - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - - return p_tc->TC_CHANNEL[ul_channel].TC_CV; -} - -/** - * \brief Read RA TC counter on the selected channel. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - * - * \return RA value. - */ -uint32_t tc_read_ra(Tc *p_tc, uint32_t ul_channel) -{ - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - - return p_tc->TC_CHANNEL[ul_channel].TC_RA; -} - -/** - * \brief Read RB TC counter on the selected channel. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - * - * \return RB value. - */ -uint32_t tc_read_rb(Tc *p_tc, uint32_t ul_channel) -{ - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - - return p_tc->TC_CHANNEL[ul_channel].TC_RB; -} - -/** - * \brief Read RC TC counter on the selected channel. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - * - * \return RC value. - */ -uint32_t tc_read_rc(Tc *p_tc, uint32_t ul_channel) -{ - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - - return p_tc->TC_CHANNEL[ul_channel].TC_RC; -} - -/** - * \brief Write RA TC counter on the selected channel. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - * \param ul_value Value to set in register. - */ -void tc_write_ra(Tc *p_tc, uint32_t ul_channel, - uint32_t ul_value) -{ - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - - p_tc->TC_CHANNEL[ul_channel].TC_RA = ul_value; -} - -/** - * \brief Write RB TC counter on the selected channel. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - * \param ul_value Value to set in register. - */ -void tc_write_rb(Tc *p_tc, uint32_t ul_channel, - uint32_t ul_value) -{ - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - - p_tc->TC_CHANNEL[ul_channel].TC_RB = ul_value; -} - -/** - * \brief Write RC TC counter on the selected channel. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - * \param ul_value Value to set in register. - */ -void tc_write_rc(Tc *p_tc, uint32_t ul_channel, - uint32_t ul_value) -{ - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - - p_tc->TC_CHANNEL[ul_channel].TC_RC = ul_value; -} - -/** - * \brief Enable TC interrupts on the selected channel. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - * \param ul_sources Interrupt sources bit map. - */ -void tc_enable_interrupt(Tc *p_tc, uint32_t ul_channel, - uint32_t ul_sources) -{ - TcChannel *tc_channel; - - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - tc_channel = p_tc->TC_CHANNEL + ul_channel; - tc_channel->TC_IER = ul_sources; -} - -/** - * \brief Disable TC interrupts on the selected channel. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - * \param ul_sources Interrupt sources bit map. - */ -void tc_disable_interrupt(Tc *p_tc, uint32_t ul_channel, - uint32_t ul_sources) -{ - TcChannel *tc_channel; - - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - tc_channel = p_tc->TC_CHANNEL + ul_channel; - tc_channel->TC_IDR = ul_sources; -} - -/** - * \brief Read TC interrupt mask on the selected channel. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - * - * \return The interrupt mask value. - */ -uint32_t tc_get_interrupt_mask(Tc *p_tc, uint32_t ul_channel) -{ - TcChannel *tc_channel; - - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - tc_channel = p_tc->TC_CHANNEL + ul_channel; - return tc_channel->TC_IMR; -} - -/** - * \brief Get current status on the selected channel. - * - * \param p_tc Pointer to a TC instance. - * \param ul_channel Channel to configure. - * - * \return The current TC status. - */ -uint32_t tc_get_status(Tc *p_tc, uint32_t ul_channel) -{ - TcChannel *tc_channel; - - Assert(ul_channel < - (sizeof(p_tc->TC_CHANNEL) / sizeof(p_tc->TC_CHANNEL[0]))); - tc_channel = p_tc->TC_CHANNEL + ul_channel; - return tc_channel->TC_SR; -} - -/* TC divisor used to find the lowest acceptable timer frequency */ -#define TC_DIV_FACTOR 65536 - -#if (!SAM4L) - -#ifndef FREQ_SLOW_CLOCK_EXT -#define FREQ_SLOW_CLOCK_EXT 32768 /* External slow clock frequency (hz) */ -#endif - -/** - * \brief Find the best MCK divisor. - * - * Finds the best MCK divisor given the timer frequency and MCK. The result - * is guaranteed to satisfy the following equation: - * \code - * (MCK / (DIV * 65536)) <= freq <= (MCK / DIV) - * \endcode - * with DIV being the lowest possible value, - * to maximize timing adjust resolution. - * - * \param ul_freq Desired timer frequency. - * \param ul_mck Master clock frequency. - * \param p_uldiv Divisor value. - * \param p_ultcclks TCCLKS field value for divisor. - * \param ul_boardmck Board clock frequency. - * - * \return 1 if a proper divisor has been found, otherwise 0. - */ -uint32_t tc_find_mck_divisor(uint32_t ul_freq, uint32_t ul_mck, - uint32_t *p_uldiv, uint32_t *p_ultcclks, uint32_t ul_boardmck) -{ - const uint32_t divisors[5] = { 2, 8, 32, 128, - ul_boardmck / FREQ_SLOW_CLOCK_EXT }; - uint32_t ul_index; - uint32_t ul_high, ul_low; - - /* Satisfy frequency bound. */ - for (ul_index = 0; - ul_index < (sizeof(divisors) / sizeof(divisors[0])); - ul_index++) { - ul_high = ul_mck / divisors[ul_index]; - ul_low = ul_high / TC_DIV_FACTOR; - if (ul_freq > ul_high) { - return 0; - } else if (ul_freq >= ul_low) { - break; - } - } - if (ul_index >= (sizeof(divisors) / sizeof(divisors[0]))) { - return 0; - } - - /* Store results. */ - if (p_uldiv) { - *p_uldiv = divisors[ul_index]; - } - - if (p_ultcclks) { - *p_ultcclks = ul_index; - } - - return 1; -} - -#endif - -#if (SAM4L) -/** - * \brief Find the best PBA clock divisor. - * - * Finds the best divisor given the timer frequency and PBA clock. The result - * is guaranteed to satisfy the following equation: - * \code - * (ul_pbaclk / (2* DIV * 65536)) <= freq <= (ul_pbaclk / (2* DIV)) - * \endcode - * with DIV being the lowest possible value, - * to maximize timing adjust resolution. - * - * \param ul_freq Desired timer frequency. - * \param ul_mck PBA clock frequency. - * \param p_uldiv Divisor value. - * \param p_ultcclks TCCLKS field value for divisor. - * \param ul_boardmck useless here. - * - * \return 1 if a proper divisor has been found, otherwise 0. - */ -uint32_t tc_find_mck_divisor(uint32_t ul_freq, uint32_t ul_mck, - uint32_t *p_uldiv, uint32_t *p_ultcclks, uint32_t ul_boardmck) -{ - const uint32_t divisors[5] = { 0, 2, 8, 32, 128}; - uint32_t ul_index; - uint32_t ul_high, ul_low; - - UNUSED(ul_boardmck); - - /* Satisfy frequency bound. */ - for (ul_index = 1; - ul_index < (sizeof(divisors) / sizeof(divisors[0])); - ul_index++) { - ul_high = ul_mck / divisors[ul_index]; - ul_low = ul_high / TC_DIV_FACTOR; - if (ul_freq > ul_high) { - return 0; - } else if (ul_freq >= ul_low) { - break; - } - } - if (ul_index >= (sizeof(divisors) / sizeof(divisors[0]))) { - return 0; - } - - /* Store results. */ - if (p_uldiv) { - *p_uldiv = divisors[ul_index]; - } - - if (p_ultcclks) { - *p_ultcclks = ul_index; - } - - return 1; -} - -#endif - -#if (!SAM4L) - -/** - * \brief Enable TC QDEC interrupts. - * - * \param p_tc Pointer to a TC instance. - * \param ul_sources Interrupts to be enabled. - */ -void tc_enable_qdec_interrupt(Tc *p_tc, uint32_t ul_sources) -{ - p_tc->TC_QIER = ul_sources; -} - -/** - * \brief Disable TC QDEC interrupts. - * - * \param p_tc Pointer to a TC instance. - * \param ul_sources Interrupts to be disabled. - */ -void tc_disable_qdec_interrupt(Tc *p_tc, uint32_t ul_sources) -{ - p_tc->TC_QIDR = ul_sources; -} - -/** - * \brief Read TC QDEC interrupt mask. - * - * \param p_tc Pointer to a TC instance. - * - * \return The interrupt mask value. - */ -uint32_t tc_get_qdec_interrupt_mask(Tc *p_tc) -{ - return p_tc->TC_QIMR; -} - -/** - * \brief Get current QDEC status. - * - * \param p_tc Pointer to a TC instance. - * - * \return The current TC status. - */ -uint32_t tc_get_qdec_interrupt_status(Tc *p_tc) -{ - return p_tc->TC_QISR; -} - -#endif - -#if (!SAM3U) - -/** - * \brief Enable or disable write protection of TC registers. - * - * \param p_tc Pointer to a TC instance. - * \param ul_enable 1 to enable, 0 to disable. - */ -void tc_set_writeprotect(Tc *p_tc, uint32_t ul_enable) -{ - if (ul_enable) { - p_tc->TC_WPMR = TC_WPMR_WPKEY_VALUE | TC_WPMR_WPEN; - } else { - p_tc->TC_WPMR = TC_WPMR_WPKEY_VALUE; - } -} - -#endif - -#if SAM4L - -/** - * \brief Indicate features. - * - * \param p_tc Pointer to a TC instance. - * - * \return TC_FEATURES value. - */ -uint32_t tc_get_feature(Tc *p_tc) -{ - return p_tc->TC_FEATURES; -} - -/** - * \brief Indicate version. - * - * \param p_tc Pointer to a TC instance. - * - * \return TC_VERSION value. - */ -uint32_t tc_get_version(Tc *p_tc) -{ - return p_tc->TC_VERSION; -} - -#endif - -//@} - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/tc/tc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/tc/tc.h deleted file mode 100644 index 5dd169019..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/drivers/tc/tc.h +++ /dev/null @@ -1,114 +0,0 @@ -/** - * \file - * - * \brief Timer Counter (TC) driver for SAM. - * - * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef TC_H_INCLUDED -#define TC_H_INCLUDED - -#include "compiler.h" - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -void tc_init(Tc *p_tc, uint32_t ul_Channel, uint32_t ul_Mode); -void tc_sync_trigger(Tc *p_tc); -void tc_set_block_mode(Tc *p_tc, uint32_t ul_blockmode); - -#if (!SAM3U) -uint32_t tc_init_2bit_gray(Tc *p_tc, uint32_t ul_channel, - uint32_t ul_steppermode); -#endif - -void tc_start(Tc *p_tc, uint32_t ul_channel); -void tc_stop(Tc *p_tc, uint32_t ul_channel); - -uint32_t tc_read_cv(Tc *p_tc, uint32_t ul_channel); -uint32_t tc_read_ra(Tc *p_tc, uint32_t ul_channel); -uint32_t tc_read_rb(Tc *p_tc, uint32_t ul_channel); -uint32_t tc_read_rc(Tc *p_tc, uint32_t ul_channel); - -void tc_write_ra(Tc *p_tc, uint32_t ul_channel, - uint32_t ul_value); -void tc_write_rb(Tc *p_tc, uint32_t ul_channel, - uint32_t ul_value); -void tc_write_rc(Tc *p_tc, uint32_t ul_channel, - uint32_t ul_value); - -uint32_t tc_find_mck_divisor(uint32_t ul_freq, uint32_t ul_mck, - uint32_t *p_uldiv, uint32_t *ul_tcclks, uint32_t ul_boardmck); -void tc_enable_interrupt(Tc *p_tc, uint32_t ul_channel, - uint32_t ul_sources); -void tc_disable_interrupt(Tc *p_tc, uint32_t ul_channel, - uint32_t ul_sources); -uint32_t tc_get_interrupt_mask(Tc *p_tc, uint32_t ul_channel); -uint32_t tc_get_status(Tc *p_tc, uint32_t ul_channel); -#if (!SAM4L) -void tc_enable_qdec_interrupt(Tc *p_tc, uint32_t ul_sources); -void tc_disable_qdec_interrupt(Tc *p_tc, uint32_t ul_sources); -uint32_t tc_get_qdec_interrupt_mask(Tc *p_tc); -uint32_t tc_get_qdec_interrupt_status(Tc *p_tc); -#endif - -#if (!SAM3U) -void tc_set_writeprotect(Tc *p_tc, uint32_t ul_enable); -#endif - -#if SAM4L -uint32_t tc_get_feature(Tc *p_tc); -uint32_t tc_get_version(Tc *p_tc); - -#endif - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond - -#endif /* TC_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/acc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/acc.h deleted file mode 100644 index c6b3a47db..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/acc.h +++ /dev/null @@ -1,136 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_ACC_COMPONENT_ -#define _SAM4E_ACC_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Analog Comparator Controller */ -/* ============================================================================= */ -/** \addtogroup SAM4E_ACC Analog Comparator Controller */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Acc hardware registers */ -typedef struct { - WoReg ACC_CR; /**< \brief (Acc Offset: 0x00) Control Register */ - RwReg ACC_MR; /**< \brief (Acc Offset: 0x04) Mode Register */ - RoReg Reserved1[7]; - WoReg ACC_IER; /**< \brief (Acc Offset: 0x24) Interrupt Enable Register */ - WoReg ACC_IDR; /**< \brief (Acc Offset: 0x28) Interrupt Disable Register */ - RoReg ACC_IMR; /**< \brief (Acc Offset: 0x2C) Interrupt Mask Register */ - RoReg ACC_ISR; /**< \brief (Acc Offset: 0x30) Interrupt Status Register */ - RoReg Reserved2[24]; - RwReg ACC_ACR; /**< \brief (Acc Offset: 0x94) Analog Control Register */ - RoReg Reserved3[19]; - RwReg ACC_WPMR; /**< \brief (Acc Offset: 0xE4) Write Protect Mode Register */ - RoReg ACC_WPSR; /**< \brief (Acc Offset: 0xE8) Write Protect Status Register */ -} Acc; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- ACC_CR : (ACC Offset: 0x00) Control Register -------- */ -#define ACC_CR_SWRST (0x1u << 0) /**< \brief (ACC_CR) SoftWare ReSeT */ -/* -------- ACC_MR : (ACC Offset: 0x04) Mode Register -------- */ -#define ACC_MR_SELMINUS_Pos 0 -#define ACC_MR_SELMINUS_Msk (0x7u << ACC_MR_SELMINUS_Pos) /**< \brief (ACC_MR) SELection for MINUS comparator input */ -#define ACC_MR_SELMINUS_TS (0x0u << 0) /**< \brief (ACC_MR) SelectTS */ -#define ACC_MR_SELMINUS_ADVREF (0x1u << 0) /**< \brief (ACC_MR) Select ADVREF */ -#define ACC_MR_SELMINUS_DAC0 (0x2u << 0) /**< \brief (ACC_MR) Select DAC0 */ -#define ACC_MR_SELMINUS_DAC1 (0x3u << 0) /**< \brief (ACC_MR) Select DAC1 */ -#define ACC_MR_SELMINUS_AD0 (0x4u << 0) /**< \brief (ACC_MR) Select AD0 */ -#define ACC_MR_SELMINUS_AD1 (0x5u << 0) /**< \brief (ACC_MR) Select AD1 */ -#define ACC_MR_SELMINUS_AD2 (0x6u << 0) /**< \brief (ACC_MR) Select AD2 */ -#define ACC_MR_SELMINUS_AD3 (0x7u << 0) /**< \brief (ACC_MR) Select AD3 */ -#define ACC_MR_SELPLUS_Pos 4 -#define ACC_MR_SELPLUS_Msk (0x7u << ACC_MR_SELPLUS_Pos) /**< \brief (ACC_MR) SELection for PLUS comparator input */ -#define ACC_MR_SELPLUS_AD0 (0x0u << 4) /**< \brief (ACC_MR) Select AD0 */ -#define ACC_MR_SELPLUS_AD1 (0x1u << 4) /**< \brief (ACC_MR) Select AD1 */ -#define ACC_MR_SELPLUS_AD2 (0x2u << 4) /**< \brief (ACC_MR) Select AD2 */ -#define ACC_MR_SELPLUS_AD3 (0x3u << 4) /**< \brief (ACC_MR) Select AD3 */ -#define ACC_MR_SELPLUS_AD4 (0x4u << 4) /**< \brief (ACC_MR) Select AD4 */ -#define ACC_MR_SELPLUS_AD5 (0x5u << 4) /**< \brief (ACC_MR) Select AD5 */ -#define ACC_MR_SELPLUS_AD6 (0x6u << 4) /**< \brief (ACC_MR) Select AD6 */ -#define ACC_MR_SELPLUS_AD7 (0x7u << 4) /**< \brief (ACC_MR) Select AD7 */ -#define ACC_MR_ACEN (0x1u << 8) /**< \brief (ACC_MR) Analog Comparator ENable */ -#define ACC_MR_ACEN_DIS (0x0u << 8) /**< \brief (ACC_MR) Analog Comparator Disabled. */ -#define ACC_MR_ACEN_EN (0x1u << 8) /**< \brief (ACC_MR) Analog Comparator Enabled. */ -#define ACC_MR_EDGETYP_Pos 9 -#define ACC_MR_EDGETYP_Msk (0x3u << ACC_MR_EDGETYP_Pos) /**< \brief (ACC_MR) EDGE TYPe */ -#define ACC_MR_EDGETYP_RISING (0x0u << 9) /**< \brief (ACC_MR) only rising edge of comparator output */ -#define ACC_MR_EDGETYP_FALLING (0x1u << 9) /**< \brief (ACC_MR) falling edge of comparator output */ -#define ACC_MR_EDGETYP_ANY (0x2u << 9) /**< \brief (ACC_MR) any edge of comparator output */ -#define ACC_MR_INV (0x1u << 12) /**< \brief (ACC_MR) INVert comparator output */ -#define ACC_MR_INV_DIS (0x0u << 12) /**< \brief (ACC_MR) Analog Comparator output is directly processed. */ -#define ACC_MR_INV_EN (0x1u << 12) /**< \brief (ACC_MR) Analog Comparator output is inverted prior to being processed. */ -#define ACC_MR_SELFS (0x1u << 13) /**< \brief (ACC_MR) SELection of Fault Source */ -#define ACC_MR_SELFS_CF (0x0u << 13) /**< \brief (ACC_MR) the CF flag is used to drive the FAULT output. */ -#define ACC_MR_SELFS_OUTPUT (0x1u << 13) /**< \brief (ACC_MR) the output of the Analog Comparator flag is used to drive the FAULT output. */ -#define ACC_MR_FE (0x1u << 14) /**< \brief (ACC_MR) Fault Enable */ -#define ACC_MR_FE_DIS (0x0u << 14) /**< \brief (ACC_MR) the FAULT output is tied to 0. */ -#define ACC_MR_FE_EN (0x1u << 14) /**< \brief (ACC_MR) the FAULT output is driven by the signal defined by SELFS. */ -/* -------- ACC_IER : (ACC Offset: 0x24) Interrupt Enable Register -------- */ -#define ACC_IER_CE (0x1u << 0) /**< \brief (ACC_IER) Comparison Edge */ -/* -------- ACC_IDR : (ACC Offset: 0x28) Interrupt Disable Register -------- */ -#define ACC_IDR_CE (0x1u << 0) /**< \brief (ACC_IDR) Comparison Edge */ -/* -------- ACC_IMR : (ACC Offset: 0x2C) Interrupt Mask Register -------- */ -#define ACC_IMR_CE (0x1u << 0) /**< \brief (ACC_IMR) Comparison Edge */ -/* -------- ACC_ISR : (ACC Offset: 0x30) Interrupt Status Register -------- */ -#define ACC_ISR_CE (0x1u << 0) /**< \brief (ACC_ISR) Comparison Edge */ -#define ACC_ISR_SCO (0x1u << 1) /**< \brief (ACC_ISR) Synchronized Comparator Output */ -#define ACC_ISR_MASK (0x1u << 31) /**< \brief (ACC_ISR) */ -/* -------- ACC_ACR : (ACC Offset: 0x94) Analog Control Register -------- */ -#define ACC_ACR_ISEL (0x1u << 0) /**< \brief (ACC_ACR) Current SELection */ -#define ACC_ACR_ISEL_LOPW (0x0u << 0) /**< \brief (ACC_ACR) low power option. */ -#define ACC_ACR_ISEL_HISP (0x1u << 0) /**< \brief (ACC_ACR) high speed option. */ -#define ACC_ACR_HYST_Pos 1 -#define ACC_ACR_HYST_Msk (0x3u << ACC_ACR_HYST_Pos) /**< \brief (ACC_ACR) HYSTeresis selection */ -#define ACC_ACR_HYST(value) ((ACC_ACR_HYST_Msk & ((value) << ACC_ACR_HYST_Pos))) -/* -------- ACC_WPMR : (ACC Offset: 0xE4) Write Protect Mode Register -------- */ -#define ACC_WPMR_WPEN (0x1u << 0) /**< \brief (ACC_WPMR) Write Protect Enable */ -#define ACC_WPMR_WPKEY_Pos 8 -#define ACC_WPMR_WPKEY_Msk (0xffffffu << ACC_WPMR_WPKEY_Pos) /**< \brief (ACC_WPMR) Write Protect KEY */ -#define ACC_WPMR_WPKEY(value) ((ACC_WPMR_WPKEY_Msk & ((value) << ACC_WPMR_WPKEY_Pos))) -/* -------- ACC_WPSR : (ACC Offset: 0xE8) Write Protect Status Register -------- */ -#define ACC_WPSR_WPROTERR (0x1u << 0) /**< \brief (ACC_WPSR) Write PROTection ERRor */ - -/*@}*/ - - -#endif /* _SAM4E_ACC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/aes.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/aes.h deleted file mode 100644 index 7b7856374..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/aes.h +++ /dev/null @@ -1,161 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_AES_COMPONENT_ -#define _SAM4E_AES_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Advanced Encryption Standard */ -/* ============================================================================= */ -/** \addtogroup SAM4E_AES Advanced Encryption Standard */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Aes hardware registers */ -typedef struct { - WoReg AES_CR; /**< \brief (Aes Offset: 0x00) Control Register */ - RwReg AES_MR; /**< \brief (Aes Offset: 0x04) Mode Register */ - RoReg Reserved1[2]; - WoReg AES_IER; /**< \brief (Aes Offset: 0x10) Interrupt Enable Register */ - WoReg AES_IDR; /**< \brief (Aes Offset: 0x14) Interrupt Disable Register */ - RoReg AES_IMR; /**< \brief (Aes Offset: 0x18) Interrupt Mask Register */ - RoReg AES_ISR; /**< \brief (Aes Offset: 0x1C) Interrupt Status Register */ - WoReg AES_KEYWR[8]; /**< \brief (Aes Offset: 0x20) Key Word Register */ - WoReg AES_IDATAR[4]; /**< \brief (Aes Offset: 0x40) Input Data Register */ - RoReg AES_ODATAR[4]; /**< \brief (Aes Offset: 0x50) Output Data Register */ - WoReg AES_IVR[4]; /**< \brief (Aes Offset: 0x60) Initialization Vector Register */ -} Aes; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- AES_CR : (AES Offset: 0x00) Control Register -------- */ -#define AES_CR_START (0x1u << 0) /**< \brief (AES_CR) Start Processing */ -#define AES_CR_SWRST (0x1u << 8) /**< \brief (AES_CR) Software Reset */ -/* -------- AES_MR : (AES Offset: 0x04) Mode Register -------- */ -#define AES_MR_CIPHER (0x1u << 0) /**< \brief (AES_MR) Processing Mode */ -#define AES_MR_DUALBUFF (0x1u << 3) /**< \brief (AES_MR) Dual Input BUFFer */ -#define AES_MR_DUALBUFF_INACTIVE (0x0u << 3) /**< \brief (AES_MR) AES_IDATARx cannot be written during processing of previous block. */ -#define AES_MR_DUALBUFF_ACTIVE (0x1u << 3) /**< \brief (AES_MR) AES_IDATARx can be written during processing of previous block when SMOD = 0x2. It speeds up the overall runtime of large files. */ -#define AES_MR_PROCDLY_Pos 4 -#define AES_MR_PROCDLY_Msk (0xfu << AES_MR_PROCDLY_Pos) /**< \brief (AES_MR) Processing Delay */ -#define AES_MR_PROCDLY(value) ((AES_MR_PROCDLY_Msk & ((value) << AES_MR_PROCDLY_Pos))) -#define AES_MR_SMOD_Pos 8 -#define AES_MR_SMOD_Msk (0x3u << AES_MR_SMOD_Pos) /**< \brief (AES_MR) Start Mode */ -#define AES_MR_SMOD_MANUAL_START (0x0u << 8) /**< \brief (AES_MR) Manual Mode */ -#define AES_MR_SMOD_AUTO_START (0x1u << 8) /**< \brief (AES_MR) Auto Mode */ -#define AES_MR_SMOD_IDATAR0_START (0x2u << 8) /**< \brief (AES_MR) AES_IDATAR0 access only Auto Mode */ -#define AES_MR_KEYSIZE_Pos 10 -#define AES_MR_KEYSIZE_Msk (0x3u << AES_MR_KEYSIZE_Pos) /**< \brief (AES_MR) Key Size */ -#define AES_MR_KEYSIZE_AES128 (0x0u << 10) /**< \brief (AES_MR) AES Key Size is 128 bits */ -#define AES_MR_KEYSIZE_AES192 (0x1u << 10) /**< \brief (AES_MR) AES Key Size is 192 bits */ -#define AES_MR_KEYSIZE_AES256 (0x2u << 10) /**< \brief (AES_MR) AES Key Size is 256 bits */ -#define AES_MR_OPMOD_Pos 12 -#define AES_MR_OPMOD_Msk (0x7u << AES_MR_OPMOD_Pos) /**< \brief (AES_MR) Operation Mode */ -#define AES_MR_OPMOD_ECB (0x0u << 12) /**< \brief (AES_MR) ECB: Electronic Code Book mode */ -#define AES_MR_OPMOD_CBC (0x1u << 12) /**< \brief (AES_MR) CBC: Cipher Block Chaining mode */ -#define AES_MR_OPMOD_OFB (0x2u << 12) /**< \brief (AES_MR) OFB: Output Feedback mode */ -#define AES_MR_OPMOD_CFB (0x3u << 12) /**< \brief (AES_MR) CFB: Cipher Feedback mode */ -#define AES_MR_OPMOD_CTR (0x4u << 12) /**< \brief (AES_MR) CTR: Counter mode (16-bit internal counter) */ -#define AES_MR_LOD (0x1u << 15) /**< \brief (AES_MR) Last Output Data Mode */ -#define AES_MR_CFBS_Pos 16 -#define AES_MR_CFBS_Msk (0x7u << AES_MR_CFBS_Pos) /**< \brief (AES_MR) Cipher Feedback Data Size */ -#define AES_MR_CFBS_SIZE_128BIT (0x0u << 16) /**< \brief (AES_MR) 128-bit */ -#define AES_MR_CFBS_SIZE_64BIT (0x1u << 16) /**< \brief (AES_MR) 64-bit */ -#define AES_MR_CFBS_SIZE_32BIT (0x2u << 16) /**< \brief (AES_MR) 32-bit */ -#define AES_MR_CFBS_SIZE_16BIT (0x3u << 16) /**< \brief (AES_MR) 16-bit */ -#define AES_MR_CFBS_SIZE_8BIT (0x4u << 16) /**< \brief (AES_MR) 8-bit */ -#define AES_MR_CKEY_Pos 20 -#define AES_MR_CKEY_Msk (0xfu << AES_MR_CKEY_Pos) /**< \brief (AES_MR) Key */ -#define AES_MR_CKEY(value) ((AES_MR_CKEY_Msk & ((value) << AES_MR_CKEY_Pos))) -/* -------- AES_IER : (AES Offset: 0x10) Interrupt Enable Register -------- */ -#define AES_IER_DATRDY (0x1u << 0) /**< \brief (AES_IER) Data Ready Interrupt Enable */ -#define AES_IER_ENDRX (0x1u << 1) /**< \brief (AES_IER) End of Receive Buffer Interrupt Enable */ -#define AES_IER_ENDTX (0x1u << 2) /**< \brief (AES_IER) End of Transmit Buffer Interrupt Enable */ -#define AES_IER_RXBUFF (0x1u << 3) /**< \brief (AES_IER) Receive Buffer Full Interrupt Enable */ -#define AES_IER_TXBUFE (0x1u << 4) /**< \brief (AES_IER) Transmit Buffer Empty Interrupt Enable */ -#define AES_IER_URAD (0x1u << 8) /**< \brief (AES_IER) Unspecified Register Access Detection Interrupt Enable */ -/* -------- AES_IDR : (AES Offset: 0x14) Interrupt Disable Register -------- */ -#define AES_IDR_DATRDY (0x1u << 0) /**< \brief (AES_IDR) Data Ready Interrupt Disable */ -#define AES_IDR_ENDRX (0x1u << 1) /**< \brief (AES_IDR) End of Receive Buffer Interrupt Disable */ -#define AES_IDR_ENDTX (0x1u << 2) /**< \brief (AES_IDR) End of Transmit Buffer Interrupt Disable */ -#define AES_IDR_RXBUFF (0x1u << 3) /**< \brief (AES_IDR) Receive Buffer Full Interrupt Disable */ -#define AES_IDR_TXBUFE (0x1u << 4) /**< \brief (AES_IDR) Transmit Buffer Empty Interrupt Disable */ -#define AES_IDR_URAD (0x1u << 8) /**< \brief (AES_IDR) Unspecified Register Access Detection Interrupt Disable */ -/* -------- AES_IMR : (AES Offset: 0x18) Interrupt Mask Register -------- */ -#define AES_IMR_DATRDY (0x1u << 0) /**< \brief (AES_IMR) Data Ready Interrupt Mask */ -#define AES_IMR_ENDRX (0x1u << 1) /**< \brief (AES_IMR) End of Receive Buffer Interrupt Mask */ -#define AES_IMR_ENDTX (0x1u << 2) /**< \brief (AES_IMR) End of Transmit Buffer Interrupt Mask */ -#define AES_IMR_RXBUFF (0x1u << 3) /**< \brief (AES_IMR) Receive Buffer Full Interrupt Mask */ -#define AES_IMR_TXBUFE (0x1u << 4) /**< \brief (AES_IMR) Transmit Buffer Empty Interrupt Mask */ -#define AES_IMR_URAD (0x1u << 8) /**< \brief (AES_IMR) Unspecified Register Access Detection Interrupt Mask */ -/* -------- AES_ISR : (AES Offset: 0x1C) Interrupt Status Register -------- */ -#define AES_ISR_DATRDY (0x1u << 0) /**< \brief (AES_ISR) Data Ready */ -#define AES_ISR_ENDRX (0x1u << 1) /**< \brief (AES_ISR) End of RX Buffer */ -#define AES_ISR_ENDTX (0x1u << 2) /**< \brief (AES_ISR) End of TX Buffer */ -#define AES_ISR_RXBUFF (0x1u << 3) /**< \brief (AES_ISR) RX Buffer Full */ -#define AES_ISR_TXBUFE (0x1u << 4) /**< \brief (AES_ISR) TX Buffer Empty */ -#define AES_ISR_URAD (0x1u << 8) /**< \brief (AES_ISR) Unspecified Register Access Detection Status */ -#define AES_ISR_URAT_Pos 12 -#define AES_ISR_URAT_Msk (0xfu << AES_ISR_URAT_Pos) /**< \brief (AES_ISR) Unspecified Register Access: */ -#define AES_ISR_URAT_IDR_WR_PROCESSING (0x0u << 12) /**< \brief (AES_ISR) Input Data Register written during the data processing when SMOD=0x2 mode. */ -#define AES_ISR_URAT_ODR_RD_PROCESSING (0x1u << 12) /**< \brief (AES_ISR) Output Data Register read during the data processing. */ -#define AES_ISR_URAT_MR_WR_PROCESSING (0x2u << 12) /**< \brief (AES_ISR) Mode Register written during the data processing. */ -#define AES_ISR_URAT_ODR_RD_SUBKGEN (0x3u << 12) /**< \brief (AES_ISR) Output Data Register read during the sub-keys generation. */ -#define AES_ISR_URAT_MR_WR_SUBKGEN (0x4u << 12) /**< \brief (AES_ISR) Mode Register written during the sub-keys generation. */ -#define AES_ISR_URAT_WOR_RD_ACCESS (0x5u << 12) /**< \brief (AES_ISR) Write-only register read access. */ -/* -------- AES_KEYWR[8] : (AES Offset: 0x20) Key Word Register -------- */ -#define AES_KEYWR_KEYW_Pos 0 -#define AES_KEYWR_KEYW_Msk (0xffffffffu << AES_KEYWR_KEYW_Pos) /**< \brief (AES_KEYWR[8]) Key Word */ -#define AES_KEYWR_KEYW(value) ((AES_KEYWR_KEYW_Msk & ((value) << AES_KEYWR_KEYW_Pos))) -/* -------- AES_IDATAR[4] : (AES Offset: 0x40) Input Data Register -------- */ -#define AES_IDATAR_IDATA_Pos 0 -#define AES_IDATAR_IDATA_Msk (0xffffffffu << AES_IDATAR_IDATA_Pos) /**< \brief (AES_IDATAR[4]) Input Data Word */ -#define AES_IDATAR_IDATA(value) ((AES_IDATAR_IDATA_Msk & ((value) << AES_IDATAR_IDATA_Pos))) -/* -------- AES_ODATAR[4] : (AES Offset: 0x50) Output Data Register -------- */ -#define AES_ODATAR_ODATA_Pos 0 -#define AES_ODATAR_ODATA_Msk (0xffffffffu << AES_ODATAR_ODATA_Pos) /**< \brief (AES_ODATAR[4]) Output Data */ -/* -------- AES_IVR[4] : (AES Offset: 0x60) Initialization Vector Register -------- */ -#define AES_IVR_IV_Pos 0 -#define AES_IVR_IV_Msk (0xffffffffu << AES_IVR_IV_Pos) /**< \brief (AES_IVR[4]) Initialization Vector */ -#define AES_IVR_IV(value) ((AES_IVR_IV_Msk & ((value) << AES_IVR_IV_Pos))) - -/*@}*/ - - -#endif /* _SAM4E_AES_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/afec.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/afec.h deleted file mode 100644 index 24e2a90ee..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/afec.h +++ /dev/null @@ -1,559 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_AFEC_COMPONENT_ -#define _SAM4E_AFEC_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Analog-Front-End Controller */ -/* ============================================================================= */ -/** \addtogroup SAM4E_AFEC Analog-Front-End Controller */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Afec hardware registers */ -typedef struct { - WoReg AFEC_CR; /**< \brief (Afec Offset: 0x00) Control Register */ - RwReg AFEC_MR; /**< \brief (Afec Offset: 0x04) Mode Register */ - RwReg AFEC_EMR; /**< \brief (Afec Offset: 0x08) Extended Mode Register */ - RwReg AFEC_SEQ1R; /**< \brief (Afec Offset: 0x0C) Channel Sequence 1 Register */ - RwReg AFEC_SEQ2R; /**< \brief (Afec Offset: 0x10) Channel Sequence 2 Register */ - WoReg AFEC_CHER; /**< \brief (Afec Offset: 0x14) Channel Enable Register */ - WoReg AFEC_CHDR; /**< \brief (Afec Offset: 0x18) Channel Disable Register */ - RoReg AFEC_CHSR; /**< \brief (Afec Offset: 0x1C) Channel Status Register */ - RoReg AFEC_LCDR; /**< \brief (Afec Offset: 0x20) Last Converted Data Register */ - WoReg AFEC_IER; /**< \brief (Afec Offset: 0x24) Interrupt Enable Register */ - WoReg AFEC_IDR; /**< \brief (Afec Offset: 0x28) Interrupt Disable Register */ - RoReg AFEC_IMR; /**< \brief (Afec Offset: 0x2C) Interrupt Mask Register */ - RoReg AFEC_ISR; /**< \brief (Afec Offset: 0x30) Interrupt Status Register */ - RoReg Reserved1[6]; - RoReg AFEC_OVER; /**< \brief (Afec Offset: 0x4C) Overrun Status Register */ - RwReg AFEC_CWR; /**< \brief (Afec Offset: 0x50) Compare Window Register */ - RwReg AFEC_CGR; /**< \brief (Afec Offset: 0x54) Channel Gain Register */ - RoReg Reserved2[1]; - RwReg AFEC_CDOR; /**< \brief (Afec Offset: 0x5C) Channel Calibration DC Offset Register */ - RwReg AFEC_DIFFR; /**< \brief (Afec Offset: 0x60) Channel Differential Register */ - RwReg AFEC_CSELR; /**< \brief (Afec Offset: 0x64) Channel Register Selection */ - RoReg AFEC_CDR; /**< \brief (Afec Offset: 0x68) Channel Data Register */ - RwReg AFEC_COCR; /**< \brief (Afec Offset: 0x6C) Channel Offset Compensation Register */ - RwReg AFEC_TEMPMR; /**< \brief (Afec Offset: 0x70) Temperature Sensor Mode Register */ - RwReg AFEC_TEMPCWR; /**< \brief (Afec Offset: 0x74) Temperature Compare Window Register */ - RoReg Reserved3[7]; - RwReg AFEC_ACR; /**< \brief (Afec Offset: 0x94) Analog Control Register */ - RoReg Reserved4[19]; - RwReg AFEC_WPMR; /**< \brief (Afec Offset: 0xE4) Write Protect Mode Register */ - RoReg AFEC_WPSR; /**< \brief (Afec Offset: 0xE8) Write Protect Status Register */ - RoReg Reserved5[5]; - RwReg AFEC_RPR; /**< \brief (Afec Offset: 0x100) Receive Pointer Register */ - RwReg AFEC_RCR; /**< \brief (Afec Offset: 0x104) Receive Counter Register */ - RoReg Reserved6[2]; - RwReg AFEC_RNPR; /**< \brief (Afec Offset: 0x110) Receive Next Pointer Register */ - RwReg AFEC_RNCR; /**< \brief (Afec Offset: 0x114) Receive Next Counter Register */ - RoReg Reserved7[2]; - WoReg AFEC_PTCR; /**< \brief (Afec Offset: 0x120) Transfer Control Register */ - RoReg AFEC_PTSR; /**< \brief (Afec Offset: 0x124) Transfer Status Register */ -} Afec; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- AFEC_CR : (AFEC Offset: 0x00) Control Register -------- */ -#define AFEC_CR_SWRST (0x1u << 0) /**< \brief (AFEC_CR) Software Reset */ -#define AFEC_CR_START (0x1u << 1) /**< \brief (AFEC_CR) Start Conversion */ -#define AFEC_CR_AUTOCAL (0x1u << 3) /**< \brief (AFEC_CR) Automatic Calibration of AFEC */ -/* -------- AFEC_MR : (AFEC Offset: 0x04) Mode Register -------- */ -#define AFEC_MR_TRGEN (0x1u << 0) /**< \brief (AFEC_MR) Trigger Enable */ -#define AFEC_MR_TRGEN_DIS (0x0u << 0) /**< \brief (AFEC_MR) Hardware triggers are disabled. Starting a conversion is only possible by software. */ -#define AFEC_MR_TRGEN_EN (0x1u << 0) /**< \brief (AFEC_MR) Hardware trigger selected by TRGSEL field is enabled. */ -#define AFEC_MR_TRGSEL_Pos 1 -#define AFEC_MR_TRGSEL_Msk (0x7u << AFEC_MR_TRGSEL_Pos) /**< \brief (AFEC_MR) Trigger Selection */ -#define AFEC_MR_TRGSEL_AFEC_TRIG0 (0x0u << 1) /**< \brief (AFEC_MR) ADTRG pin */ -#define AFEC_MR_TRGSEL_AFEC_TRIG1 (0x1u << 1) /**< \brief (AFEC_MR) TIO Output of the Timer Counter Channel 0 */ -#define AFEC_MR_TRGSEL_AFEC_TRIG2 (0x2u << 1) /**< \brief (AFEC_MR) TIO Output of the Timer Counter Channel 1 */ -#define AFEC_MR_TRGSEL_AFEC_TRIG3 (0x3u << 1) /**< \brief (AFEC_MR) TIO Output of the Timer Counter Channel 2 */ -#define AFEC_MR_TRGSEL_AFEC_TRIG4 (0x4u << 1) /**< \brief (AFEC_MR) PWM Event Line 0 */ -#define AFEC_MR_TRGSEL_AFEC_TRIG5 (0x5u << 1) /**< \brief (AFEC_MR) PWM Event Line 1 */ -#define AFEC_MR_SLEEP (0x1u << 5) /**< \brief (AFEC_MR) Sleep Mode */ -#define AFEC_MR_SLEEP_NORMAL (0x0u << 5) /**< \brief (AFEC_MR) Normal Mode: The AFEC Core and reference voltage circuitry are kept ON between conversions */ -#define AFEC_MR_SLEEP_SLEEP (0x1u << 5) /**< \brief (AFEC_MR) Sleep Mode: The AFEC Core and reference voltage circuitry are OFF between conversions */ -#define AFEC_MR_FWUP (0x1u << 6) /**< \brief (AFEC_MR) Fast Wake Up */ -#define AFEC_MR_FWUP_OFF (0x0u << 6) /**< \brief (AFEC_MR) Normal Sleep Mode: The sleep mode is defined by the SLEEP bit */ -#define AFEC_MR_FWUP_ON (0x1u << 6) /**< \brief (AFEC_MR) Fast Wake Up Sleep Mode: The Voltage reference is ON between conversions and AFEC Core is OFF */ -#define AFEC_MR_FREERUN (0x1u << 7) /**< \brief (AFEC_MR) Free Run Mode */ -#define AFEC_MR_FREERUN_OFF (0x0u << 7) /**< \brief (AFEC_MR) Normal Mode */ -#define AFEC_MR_FREERUN_ON (0x1u << 7) /**< \brief (AFEC_MR) Free Run Mode: Never wait for any trigger. */ -#define AFEC_MR_PRESCAL_Pos 8 -#define AFEC_MR_PRESCAL_Msk (0xffu << AFEC_MR_PRESCAL_Pos) /**< \brief (AFEC_MR) Prescaler Rate Selection */ -#define AFEC_MR_PRESCAL(value) ((AFEC_MR_PRESCAL_Msk & ((value) << AFEC_MR_PRESCAL_Pos))) -#define AFEC_MR_STARTUP_Pos 16 -#define AFEC_MR_STARTUP_Msk (0xfu << AFEC_MR_STARTUP_Pos) /**< \brief (AFEC_MR) Start Up Time */ -#define AFEC_MR_STARTUP_SUT0 (0x0u << 16) /**< \brief (AFEC_MR) 0 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT8 (0x1u << 16) /**< \brief (AFEC_MR) 8 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT16 (0x2u << 16) /**< \brief (AFEC_MR) 16 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT24 (0x3u << 16) /**< \brief (AFEC_MR) 24 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT64 (0x4u << 16) /**< \brief (AFEC_MR) 64 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT80 (0x5u << 16) /**< \brief (AFEC_MR) 80 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT96 (0x6u << 16) /**< \brief (AFEC_MR) 96 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT112 (0x7u << 16) /**< \brief (AFEC_MR) 112 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT512 (0x8u << 16) /**< \brief (AFEC_MR) 512 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT576 (0x9u << 16) /**< \brief (AFEC_MR) 576 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT640 (0xAu << 16) /**< \brief (AFEC_MR) 640 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT704 (0xBu << 16) /**< \brief (AFEC_MR) 704 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT768 (0xCu << 16) /**< \brief (AFEC_MR) 768 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT832 (0xDu << 16) /**< \brief (AFEC_MR) 832 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT896 (0xEu << 16) /**< \brief (AFEC_MR) 896 periods of AFEClock */ -#define AFEC_MR_STARTUP_SUT960 (0xFu << 16) /**< \brief (AFEC_MR) 960 periods of AFEClock */ -#define AFEC_MR_SETTLING_Pos 20 -#define AFEC_MR_SETTLING_Msk (0x3u << AFEC_MR_SETTLING_Pos) /**< \brief (AFEC_MR) Analog Settling Time */ -#define AFEC_MR_SETTLING_AST3 (0x0u << 20) /**< \brief (AFEC_MR) 3 periods of AFEClock */ -#define AFEC_MR_SETTLING_AST5 (0x1u << 20) /**< \brief (AFEC_MR) 5 periods of AFEClock */ -#define AFEC_MR_SETTLING_AST9 (0x2u << 20) /**< \brief (AFEC_MR) 9 periods of AFEClock */ -#define AFEC_MR_SETTLING_AST17 (0x3u << 20) /**< \brief (AFEC_MR) 17 periods of AFEClock */ -#define AFEC_MR_ANACH (0x1u << 23) /**< \brief (AFEC_MR) Analog Change */ -#define AFEC_MR_ANACH_NONE (0x0u << 23) /**< \brief (AFEC_MR) No analog change on channel switching: DIFF0, GAIN0 are used for all channels */ -#define AFEC_MR_ANACH_ALLOWED (0x1u << 23) /**< \brief (AFEC_MR) Allows different analog settings for each channel. See AFEC_CGR Register. */ -#define AFEC_MR_TRACKTIM_Pos 24 -#define AFEC_MR_TRACKTIM_Msk (0xfu << AFEC_MR_TRACKTIM_Pos) /**< \brief (AFEC_MR) Tracking Time */ -#define AFEC_MR_TRACKTIM(value) ((AFEC_MR_TRACKTIM_Msk & ((value) << AFEC_MR_TRACKTIM_Pos))) -#define AFEC_MR_TRANSFER_Pos 28 -#define AFEC_MR_TRANSFER_Msk (0x3u << AFEC_MR_TRANSFER_Pos) /**< \brief (AFEC_MR) Transfer Period */ -#define AFEC_MR_TRANSFER(value) ((AFEC_MR_TRANSFER_Msk & ((value) << AFEC_MR_TRANSFER_Pos))) -#define AFEC_MR_USEQ (0x1u << 31) /**< \brief (AFEC_MR) Use Sequence Enable */ -#define AFEC_MR_USEQ_NUM_ORDER (0x0u << 31) /**< \brief (AFEC_MR) Normal Mode: The controller converts channels in a simple numeric order. */ -#define AFEC_MR_USEQ_REG_ORDER (0x1u << 31) /**< \brief (AFEC_MR) User Sequence Mode: The sequence respects what is defined in AFEC_SEQR1 and AFEC_SEQR2 registers. */ -/* -------- AFEC_EMR : (AFEC Offset: 0x08) Extended Mode Register -------- */ -#define AFEC_EMR_CMPMODE_Pos 0 -#define AFEC_EMR_CMPMODE_Msk (0x3u << AFEC_EMR_CMPMODE_Pos) /**< \brief (AFEC_EMR) Comparison Mode */ -#define AFEC_EMR_CMPMODE_LOW (0x0u << 0) /**< \brief (AFEC_EMR) Generates an event when the converted data is lower than the low threshold of the window. */ -#define AFEC_EMR_CMPMODE_HIGH (0x1u << 0) /**< \brief (AFEC_EMR) Generates an event when the converted data is higher than the high threshold of the window. */ -#define AFEC_EMR_CMPMODE_IN (0x2u << 0) /**< \brief (AFEC_EMR) Generates an event when the converted data is in the comparison window. */ -#define AFEC_EMR_CMPMODE_OUT (0x3u << 0) /**< \brief (AFEC_EMR) Generates an event when the converted data is out of the comparison window. */ -#define AFEC_EMR_CMPSEL_Pos 3 -#define AFEC_EMR_CMPSEL_Msk (0x1fu << AFEC_EMR_CMPSEL_Pos) /**< \brief (AFEC_EMR) Comparison Selected Channel */ -#define AFEC_EMR_CMPSEL(value) ((AFEC_EMR_CMPSEL_Msk & ((value) << AFEC_EMR_CMPSEL_Pos))) -#define AFEC_EMR_CMPALL (0x1u << 9) /**< \brief (AFEC_EMR) Compare All Channels */ -#define AFEC_EMR_CMPFILTER_Pos 12 -#define AFEC_EMR_CMPFILTER_Msk (0x3u << AFEC_EMR_CMPFILTER_Pos) /**< \brief (AFEC_EMR) Compare Event Filtering */ -#define AFEC_EMR_CMPFILTER(value) ((AFEC_EMR_CMPFILTER_Msk & ((value) << AFEC_EMR_CMPFILTER_Pos))) -#define AFEC_EMR_RES_Pos 16 -#define AFEC_EMR_RES_Msk (0x7u << AFEC_EMR_RES_Pos) /**< \brief (AFEC_EMR) Resolution */ -#define AFEC_EMR_RES_NO_AVERAGE (0x0u << 16) /**< \brief (AFEC_EMR) 12-bit resolution, AFEC sample rate is maximum (no averaging). */ -#define AFEC_EMR_RES_LOW_RES (0x1u << 16) /**< \brief (AFEC_EMR) 10-bit resolution, AFEC sample rate is maximum (no averaging). */ -#define AFEC_EMR_RES_OSR4 (0x2u << 16) /**< \brief (AFEC_EMR) 13-bit resolution, AFEC sample rate divided by 4 (averaging). */ -#define AFEC_EMR_RES_OSR16 (0x3u << 16) /**< \brief (AFEC_EMR) 14-bit resolution, AFEC sample rate divided by 16 (averaging). */ -#define AFEC_EMR_RES_OSR64 (0x4u << 16) /**< \brief (AFEC_EMR) 15-bit resolution, AFEC sample rate divided by 64 (averaging). */ -#define AFEC_EMR_RES_OSR256 (0x5u << 16) /**< \brief (AFEC_EMR) 16-bit resolution, AFEC sample rate divided by 256 (averaging). */ -#define AFEC_EMR_TAG (0x1u << 24) /**< \brief (AFEC_EMR) TAG of AFEC_LDCR register */ -#define AFEC_EMR_STM (0x1u << 25) /**< \brief (AFEC_EMR) Single Trigger Mode */ -/* -------- AFEC_SEQ1R : (AFEC Offset: 0x0C) Channel Sequence 1 Register -------- */ -#define AFEC_SEQ1R_USCH0_Pos 0 -#define AFEC_SEQ1R_USCH0_Msk (0xfu << AFEC_SEQ1R_USCH0_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 0 */ -#define AFEC_SEQ1R_USCH0(value) ((AFEC_SEQ1R_USCH0_Msk & ((value) << AFEC_SEQ1R_USCH0_Pos))) -#define AFEC_SEQ1R_USCH1_Pos 4 -#define AFEC_SEQ1R_USCH1_Msk (0xfu << AFEC_SEQ1R_USCH1_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 1 */ -#define AFEC_SEQ1R_USCH1(value) ((AFEC_SEQ1R_USCH1_Msk & ((value) << AFEC_SEQ1R_USCH1_Pos))) -#define AFEC_SEQ1R_USCH2_Pos 8 -#define AFEC_SEQ1R_USCH2_Msk (0xfu << AFEC_SEQ1R_USCH2_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 2 */ -#define AFEC_SEQ1R_USCH2(value) ((AFEC_SEQ1R_USCH2_Msk & ((value) << AFEC_SEQ1R_USCH2_Pos))) -#define AFEC_SEQ1R_USCH3_Pos 12 -#define AFEC_SEQ1R_USCH3_Msk (0xfu << AFEC_SEQ1R_USCH3_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 3 */ -#define AFEC_SEQ1R_USCH3(value) ((AFEC_SEQ1R_USCH3_Msk & ((value) << AFEC_SEQ1R_USCH3_Pos))) -#define AFEC_SEQ1R_USCH4_Pos 16 -#define AFEC_SEQ1R_USCH4_Msk (0xfu << AFEC_SEQ1R_USCH4_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 4 */ -#define AFEC_SEQ1R_USCH4(value) ((AFEC_SEQ1R_USCH4_Msk & ((value) << AFEC_SEQ1R_USCH4_Pos))) -#define AFEC_SEQ1R_USCH5_Pos 20 -#define AFEC_SEQ1R_USCH5_Msk (0xfu << AFEC_SEQ1R_USCH5_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 5 */ -#define AFEC_SEQ1R_USCH5(value) ((AFEC_SEQ1R_USCH5_Msk & ((value) << AFEC_SEQ1R_USCH5_Pos))) -#define AFEC_SEQ1R_USCH6_Pos 24 -#define AFEC_SEQ1R_USCH6_Msk (0xfu << AFEC_SEQ1R_USCH6_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 6 */ -#define AFEC_SEQ1R_USCH6(value) ((AFEC_SEQ1R_USCH6_Msk & ((value) << AFEC_SEQ1R_USCH6_Pos))) -#define AFEC_SEQ1R_USCH7_Pos 28 -#define AFEC_SEQ1R_USCH7_Msk (0xfu << AFEC_SEQ1R_USCH7_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 7 */ -#define AFEC_SEQ1R_USCH7(value) ((AFEC_SEQ1R_USCH7_Msk & ((value) << AFEC_SEQ1R_USCH7_Pos))) -/* -------- AFEC_SEQ2R : (AFEC Offset: 0x10) Channel Sequence 2 Register -------- */ -#define AFEC_SEQ2R_USCH8_Pos 0 -#define AFEC_SEQ2R_USCH8_Msk (0xfu << AFEC_SEQ2R_USCH8_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 8 */ -#define AFEC_SEQ2R_USCH8(value) ((AFEC_SEQ2R_USCH8_Msk & ((value) << AFEC_SEQ2R_USCH8_Pos))) -#define AFEC_SEQ2R_USCH9_Pos 4 -#define AFEC_SEQ2R_USCH9_Msk (0xfu << AFEC_SEQ2R_USCH9_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 9 */ -#define AFEC_SEQ2R_USCH9(value) ((AFEC_SEQ2R_USCH9_Msk & ((value) << AFEC_SEQ2R_USCH9_Pos))) -#define AFEC_SEQ2R_USCH10_Pos 8 -#define AFEC_SEQ2R_USCH10_Msk (0xfu << AFEC_SEQ2R_USCH10_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 10 */ -#define AFEC_SEQ2R_USCH10(value) ((AFEC_SEQ2R_USCH10_Msk & ((value) << AFEC_SEQ2R_USCH10_Pos))) -#define AFEC_SEQ2R_USCH11_Pos 12 -#define AFEC_SEQ2R_USCH11_Msk (0xfu << AFEC_SEQ2R_USCH11_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 11 */ -#define AFEC_SEQ2R_USCH11(value) ((AFEC_SEQ2R_USCH11_Msk & ((value) << AFEC_SEQ2R_USCH11_Pos))) -#define AFEC_SEQ2R_USCH12_Pos 16 -#define AFEC_SEQ2R_USCH12_Msk (0xfu << AFEC_SEQ2R_USCH12_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 12 */ -#define AFEC_SEQ2R_USCH12(value) ((AFEC_SEQ2R_USCH12_Msk & ((value) << AFEC_SEQ2R_USCH12_Pos))) -#define AFEC_SEQ2R_USCH13_Pos 20 -#define AFEC_SEQ2R_USCH13_Msk (0xfu << AFEC_SEQ2R_USCH13_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 13 */ -#define AFEC_SEQ2R_USCH13(value) ((AFEC_SEQ2R_USCH13_Msk & ((value) << AFEC_SEQ2R_USCH13_Pos))) -#define AFEC_SEQ2R_USCH14_Pos 24 -#define AFEC_SEQ2R_USCH14_Msk (0xfu << AFEC_SEQ2R_USCH14_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 14 */ -#define AFEC_SEQ2R_USCH14(value) ((AFEC_SEQ2R_USCH14_Msk & ((value) << AFEC_SEQ2R_USCH14_Pos))) -#define AFEC_SEQ2R_USCH15_Pos 28 -#define AFEC_SEQ2R_USCH15_Msk (0xfu << AFEC_SEQ2R_USCH15_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 15 */ -#define AFEC_SEQ2R_USCH15(value) ((AFEC_SEQ2R_USCH15_Msk & ((value) << AFEC_SEQ2R_USCH15_Pos))) -/* -------- AFEC_CHER : (AFEC Offset: 0x14) Channel Enable Register -------- */ -#define AFEC_CHER_CH0 (0x1u << 0) /**< \brief (AFEC_CHER) Channel 0 Enable */ -#define AFEC_CHER_CH1 (0x1u << 1) /**< \brief (AFEC_CHER) Channel 1 Enable */ -#define AFEC_CHER_CH2 (0x1u << 2) /**< \brief (AFEC_CHER) Channel 2 Enable */ -#define AFEC_CHER_CH3 (0x1u << 3) /**< \brief (AFEC_CHER) Channel 3 Enable */ -#define AFEC_CHER_CH4 (0x1u << 4) /**< \brief (AFEC_CHER) Channel 4 Enable */ -#define AFEC_CHER_CH5 (0x1u << 5) /**< \brief (AFEC_CHER) Channel 5 Enable */ -#define AFEC_CHER_CH6 (0x1u << 6) /**< \brief (AFEC_CHER) Channel 6 Enable */ -#define AFEC_CHER_CH7 (0x1u << 7) /**< \brief (AFEC_CHER) Channel 7 Enable */ -#define AFEC_CHER_CH8 (0x1u << 8) /**< \brief (AFEC_CHER) Channel 8 Enable */ -#define AFEC_CHER_CH9 (0x1u << 9) /**< \brief (AFEC_CHER) Channel 9 Enable */ -#define AFEC_CHER_CH10 (0x1u << 10) /**< \brief (AFEC_CHER) Channel 10 Enable */ -#define AFEC_CHER_CH11 (0x1u << 11) /**< \brief (AFEC_CHER) Channel 11 Enable */ -#define AFEC_CHER_CH12 (0x1u << 12) /**< \brief (AFEC_CHER) Channel 12 Enable */ -#define AFEC_CHER_CH13 (0x1u << 13) /**< \brief (AFEC_CHER) Channel 13 Enable */ -#define AFEC_CHER_CH14 (0x1u << 14) /**< \brief (AFEC_CHER) Channel 14 Enable */ -#define AFEC_CHER_CH15 (0x1u << 15) /**< \brief (AFEC_CHER) Channel 15 Enable */ -/* -------- AFEC_CHDR : (AFEC Offset: 0x18) Channel Disable Register -------- */ -#define AFEC_CHDR_CH0 (0x1u << 0) /**< \brief (AFEC_CHDR) Channel 0 Disable */ -#define AFEC_CHDR_CH1 (0x1u << 1) /**< \brief (AFEC_CHDR) Channel 1 Disable */ -#define AFEC_CHDR_CH2 (0x1u << 2) /**< \brief (AFEC_CHDR) Channel 2 Disable */ -#define AFEC_CHDR_CH3 (0x1u << 3) /**< \brief (AFEC_CHDR) Channel 3 Disable */ -#define AFEC_CHDR_CH4 (0x1u << 4) /**< \brief (AFEC_CHDR) Channel 4 Disable */ -#define AFEC_CHDR_CH5 (0x1u << 5) /**< \brief (AFEC_CHDR) Channel 5 Disable */ -#define AFEC_CHDR_CH6 (0x1u << 6) /**< \brief (AFEC_CHDR) Channel 6 Disable */ -#define AFEC_CHDR_CH7 (0x1u << 7) /**< \brief (AFEC_CHDR) Channel 7 Disable */ -#define AFEC_CHDR_CH8 (0x1u << 8) /**< \brief (AFEC_CHDR) Channel 8 Disable */ -#define AFEC_CHDR_CH9 (0x1u << 9) /**< \brief (AFEC_CHDR) Channel 9 Disable */ -#define AFEC_CHDR_CH10 (0x1u << 10) /**< \brief (AFEC_CHDR) Channel 10 Disable */ -#define AFEC_CHDR_CH11 (0x1u << 11) /**< \brief (AFEC_CHDR) Channel 11 Disable */ -#define AFEC_CHDR_CH12 (0x1u << 12) /**< \brief (AFEC_CHDR) Channel 12 Disable */ -#define AFEC_CHDR_CH13 (0x1u << 13) /**< \brief (AFEC_CHDR) Channel 13 Disable */ -#define AFEC_CHDR_CH14 (0x1u << 14) /**< \brief (AFEC_CHDR) Channel 14 Disable */ -#define AFEC_CHDR_CH15 (0x1u << 15) /**< \brief (AFEC_CHDR) Channel 15 Disable */ -/* -------- AFEC_CHSR : (AFEC Offset: 0x1C) Channel Status Register -------- */ -#define AFEC_CHSR_CH0 (0x1u << 0) /**< \brief (AFEC_CHSR) Channel 0 Status */ -#define AFEC_CHSR_CH1 (0x1u << 1) /**< \brief (AFEC_CHSR) Channel 1 Status */ -#define AFEC_CHSR_CH2 (0x1u << 2) /**< \brief (AFEC_CHSR) Channel 2 Status */ -#define AFEC_CHSR_CH3 (0x1u << 3) /**< \brief (AFEC_CHSR) Channel 3 Status */ -#define AFEC_CHSR_CH4 (0x1u << 4) /**< \brief (AFEC_CHSR) Channel 4 Status */ -#define AFEC_CHSR_CH5 (0x1u << 5) /**< \brief (AFEC_CHSR) Channel 5 Status */ -#define AFEC_CHSR_CH6 (0x1u << 6) /**< \brief (AFEC_CHSR) Channel 6 Status */ -#define AFEC_CHSR_CH7 (0x1u << 7) /**< \brief (AFEC_CHSR) Channel 7 Status */ -#define AFEC_CHSR_CH8 (0x1u << 8) /**< \brief (AFEC_CHSR) Channel 8 Status */ -#define AFEC_CHSR_CH9 (0x1u << 9) /**< \brief (AFEC_CHSR) Channel 9 Status */ -#define AFEC_CHSR_CH10 (0x1u << 10) /**< \brief (AFEC_CHSR) Channel 10 Status */ -#define AFEC_CHSR_CH11 (0x1u << 11) /**< \brief (AFEC_CHSR) Channel 11 Status */ -#define AFEC_CHSR_CH12 (0x1u << 12) /**< \brief (AFEC_CHSR) Channel 12 Status */ -#define AFEC_CHSR_CH13 (0x1u << 13) /**< \brief (AFEC_CHSR) Channel 13 Status */ -#define AFEC_CHSR_CH14 (0x1u << 14) /**< \brief (AFEC_CHSR) Channel 14 Status */ -#define AFEC_CHSR_CH15 (0x1u << 15) /**< \brief (AFEC_CHSR) Channel 15 Status */ -/* -------- AFEC_LCDR : (AFEC Offset: 0x20) Last Converted Data Register -------- */ -#define AFEC_LCDR_LDATA_Pos 0 -#define AFEC_LCDR_LDATA_Msk (0xffffu << AFEC_LCDR_LDATA_Pos) /**< \brief (AFEC_LCDR) Last Data Converted */ -#define AFEC_LCDR_CHNB_Pos 24 -#define AFEC_LCDR_CHNB_Msk (0xfu << AFEC_LCDR_CHNB_Pos) /**< \brief (AFEC_LCDR) Channel Number */ -/* -------- AFEC_IER : (AFEC Offset: 0x24) Interrupt Enable Register -------- */ -#define AFEC_IER_EOC0 (0x1u << 0) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 0 */ -#define AFEC_IER_EOC1 (0x1u << 1) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 1 */ -#define AFEC_IER_EOC2 (0x1u << 2) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 2 */ -#define AFEC_IER_EOC3 (0x1u << 3) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 3 */ -#define AFEC_IER_EOC4 (0x1u << 4) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 4 */ -#define AFEC_IER_EOC5 (0x1u << 5) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 5 */ -#define AFEC_IER_EOC6 (0x1u << 6) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 6 */ -#define AFEC_IER_EOC7 (0x1u << 7) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 7 */ -#define AFEC_IER_EOC8 (0x1u << 8) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 8 */ -#define AFEC_IER_EOC9 (0x1u << 9) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 9 */ -#define AFEC_IER_EOC10 (0x1u << 10) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 10 */ -#define AFEC_IER_EOC11 (0x1u << 11) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 11 */ -#define AFEC_IER_EOC12 (0x1u << 12) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 12 */ -#define AFEC_IER_EOC13 (0x1u << 13) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 13 */ -#define AFEC_IER_EOC14 (0x1u << 14) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 14 */ -#define AFEC_IER_EOC15 (0x1u << 15) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 15 */ -#define AFEC_IER_DRDY (0x1u << 24) /**< \brief (AFEC_IER) Data Ready Interrupt Enable */ -#define AFEC_IER_GOVRE (0x1u << 25) /**< \brief (AFEC_IER) General Overrun Error Interrupt Enable */ -#define AFEC_IER_COMPE (0x1u << 26) /**< \brief (AFEC_IER) Comparison Event Interrupt Enable+ */ -#define AFEC_IER_ENDRX (0x1u << 27) /**< \brief (AFEC_IER) End of Receive Buffer Interrupt Enable */ -#define AFEC_IER_RXBUFF (0x1u << 28) /**< \brief (AFEC_IER) Receive Buffer Full Interrupt Enable */ -#define AFEC_IER_TEMPCHG (0x1u << 30) /**< \brief (AFEC_IER) Temperature Change Interrupt Enable */ -#define AFEC_IER_EOCAL (0x1u << 31) /**< \brief (AFEC_IER) End of Calibration Sequence Interrupt Enable */ -/* -------- AFEC_IDR : (AFEC Offset: 0x28) Interrupt Disable Register -------- */ -#define AFEC_IDR_EOC0 (0x1u << 0) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 0 */ -#define AFEC_IDR_EOC1 (0x1u << 1) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 1 */ -#define AFEC_IDR_EOC2 (0x1u << 2) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 2 */ -#define AFEC_IDR_EOC3 (0x1u << 3) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 3 */ -#define AFEC_IDR_EOC4 (0x1u << 4) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 4 */ -#define AFEC_IDR_EOC5 (0x1u << 5) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 5 */ -#define AFEC_IDR_EOC6 (0x1u << 6) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 6 */ -#define AFEC_IDR_EOC7 (0x1u << 7) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 7 */ -#define AFEC_IDR_EOC8 (0x1u << 8) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 8 */ -#define AFEC_IDR_EOC9 (0x1u << 9) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 9 */ -#define AFEC_IDR_EOC10 (0x1u << 10) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 10 */ -#define AFEC_IDR_EOC11 (0x1u << 11) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 11 */ -#define AFEC_IDR_EOC12 (0x1u << 12) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 12 */ -#define AFEC_IDR_EOC13 (0x1u << 13) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 13 */ -#define AFEC_IDR_EOC14 (0x1u << 14) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 14 */ -#define AFEC_IDR_EOC15 (0x1u << 15) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 15 */ -#define AFEC_IDR_DRDY (0x1u << 24) /**< \brief (AFEC_IDR) Data Ready Interrupt Disable */ -#define AFEC_IDR_GOVRE (0x1u << 25) /**< \brief (AFEC_IDR) General Overrun Error Interrupt Disable */ -#define AFEC_IDR_COMPE (0x1u << 26) /**< \brief (AFEC_IDR) Comparison Event Interrupt Disable */ -#define AFEC_IDR_ENDRX (0x1u << 27) /**< \brief (AFEC_IDR) End of Receive Buffer Interrupt Disable */ -#define AFEC_IDR_RXBUFF (0x1u << 28) /**< \brief (AFEC_IDR) Receive Buffer Full Interrupt Disable */ -#define AFEC_IDR_TEMPCHG (0x1u << 30) /**< \brief (AFEC_IDR) Temperature Change Interrupt Disable */ -#define AFEC_IDR_EOCAL (0x1u << 31) /**< \brief (AFEC_IDR) End of Calibration Sequence Interrupt Disable */ -/* -------- AFEC_IMR : (AFEC Offset: 0x2C) Interrupt Mask Register -------- */ -#define AFEC_IMR_EOC0 (0x1u << 0) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 0 */ -#define AFEC_IMR_EOC1 (0x1u << 1) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 1 */ -#define AFEC_IMR_EOC2 (0x1u << 2) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 2 */ -#define AFEC_IMR_EOC3 (0x1u << 3) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 3 */ -#define AFEC_IMR_EOC4 (0x1u << 4) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 4 */ -#define AFEC_IMR_EOC5 (0x1u << 5) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 5 */ -#define AFEC_IMR_EOC6 (0x1u << 6) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 6 */ -#define AFEC_IMR_EOC7 (0x1u << 7) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 7 */ -#define AFEC_IMR_EOC8 (0x1u << 8) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 8 */ -#define AFEC_IMR_EOC9 (0x1u << 9) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 9 */ -#define AFEC_IMR_EOC10 (0x1u << 10) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 10 */ -#define AFEC_IMR_EOC11 (0x1u << 11) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 11 */ -#define AFEC_IMR_EOC12 (0x1u << 12) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 12 */ -#define AFEC_IMR_EOC13 (0x1u << 13) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 13 */ -#define AFEC_IMR_EOC14 (0x1u << 14) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 14 */ -#define AFEC_IMR_EOC15 (0x1u << 15) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 15 */ -#define AFEC_IMR_DRDY (0x1u << 24) /**< \brief (AFEC_IMR) Data Ready Interrupt Mask */ -#define AFEC_IMR_GOVRE (0x1u << 25) /**< \brief (AFEC_IMR) General Overrun Error Interrupt Mask */ -#define AFEC_IMR_COMPE (0x1u << 26) /**< \brief (AFEC_IMR) Comparison Event Interrupt Mask */ -#define AFEC_IMR_ENDRX (0x1u << 27) /**< \brief (AFEC_IMR) End of Receive Buffer Interrupt Mask */ -#define AFEC_IMR_RXBUFF (0x1u << 28) /**< \brief (AFEC_IMR) Receive Buffer Full Interrupt Mask */ -#define AFEC_IMR_TEMPCHG (0x1u << 30) /**< \brief (AFEC_IMR) Temperature Change Interrupt Mask */ -#define AFEC_IMR_EOCAL (0x1u << 31) /**< \brief (AFEC_IMR) End of Calibration Sequence Interrupt Mask */ -/* -------- AFEC_ISR : (AFEC Offset: 0x30) Interrupt Status Register -------- */ -#define AFEC_ISR_EOC0 (0x1u << 0) /**< \brief (AFEC_ISR) End of Conversion 0 */ -#define AFEC_ISR_EOC1 (0x1u << 1) /**< \brief (AFEC_ISR) End of Conversion 1 */ -#define AFEC_ISR_EOC2 (0x1u << 2) /**< \brief (AFEC_ISR) End of Conversion 2 */ -#define AFEC_ISR_EOC3 (0x1u << 3) /**< \brief (AFEC_ISR) End of Conversion 3 */ -#define AFEC_ISR_EOC4 (0x1u << 4) /**< \brief (AFEC_ISR) End of Conversion 4 */ -#define AFEC_ISR_EOC5 (0x1u << 5) /**< \brief (AFEC_ISR) End of Conversion 5 */ -#define AFEC_ISR_EOC6 (0x1u << 6) /**< \brief (AFEC_ISR) End of Conversion 6 */ -#define AFEC_ISR_EOC7 (0x1u << 7) /**< \brief (AFEC_ISR) End of Conversion 7 */ -#define AFEC_ISR_EOC8 (0x1u << 8) /**< \brief (AFEC_ISR) End of Conversion 8 */ -#define AFEC_ISR_EOC9 (0x1u << 9) /**< \brief (AFEC_ISR) End of Conversion 9 */ -#define AFEC_ISR_EOC10 (0x1u << 10) /**< \brief (AFEC_ISR) End of Conversion 10 */ -#define AFEC_ISR_EOC11 (0x1u << 11) /**< \brief (AFEC_ISR) End of Conversion 11 */ -#define AFEC_ISR_EOC12 (0x1u << 12) /**< \brief (AFEC_ISR) End of Conversion 12 */ -#define AFEC_ISR_EOC13 (0x1u << 13) /**< \brief (AFEC_ISR) End of Conversion 13 */ -#define AFEC_ISR_EOC14 (0x1u << 14) /**< \brief (AFEC_ISR) End of Conversion 14 */ -#define AFEC_ISR_EOC15 (0x1u << 15) /**< \brief (AFEC_ISR) End of Conversion 15 */ -#define AFEC_ISR_DRDY (0x1u << 24) /**< \brief (AFEC_ISR) Data Ready */ -#define AFEC_ISR_GOVRE (0x1u << 25) /**< \brief (AFEC_ISR) General Overrun Error */ -#define AFEC_ISR_COMPE (0x1u << 26) /**< \brief (AFEC_ISR) Comparison Error */ -#define AFEC_ISR_ENDRX (0x1u << 27) /**< \brief (AFEC_ISR) End of RX Buffer */ -#define AFEC_ISR_RXBUFF (0x1u << 28) /**< \brief (AFEC_ISR) RX Buffer Full */ -#define AFEC_ISR_TEMPCHG (0x1u << 30) /**< \brief (AFEC_ISR) Temperature Change */ -#define AFEC_ISR_EOCAL (0x1u << 31) /**< \brief (AFEC_ISR) End of Calibration Sequence */ -/* -------- AFEC_OVER : (AFEC Offset: 0x4C) Overrun Status Register -------- */ -#define AFEC_OVER_OVRE0 (0x1u << 0) /**< \brief (AFEC_OVER) Overrun Error 0 */ -#define AFEC_OVER_OVRE1 (0x1u << 1) /**< \brief (AFEC_OVER) Overrun Error 1 */ -#define AFEC_OVER_OVRE2 (0x1u << 2) /**< \brief (AFEC_OVER) Overrun Error 2 */ -#define AFEC_OVER_OVRE3 (0x1u << 3) /**< \brief (AFEC_OVER) Overrun Error 3 */ -#define AFEC_OVER_OVRE4 (0x1u << 4) /**< \brief (AFEC_OVER) Overrun Error 4 */ -#define AFEC_OVER_OVRE5 (0x1u << 5) /**< \brief (AFEC_OVER) Overrun Error 5 */ -#define AFEC_OVER_OVRE6 (0x1u << 6) /**< \brief (AFEC_OVER) Overrun Error 6 */ -#define AFEC_OVER_OVRE7 (0x1u << 7) /**< \brief (AFEC_OVER) Overrun Error 7 */ -#define AFEC_OVER_OVRE8 (0x1u << 8) /**< \brief (AFEC_OVER) Overrun Error 8 */ -#define AFEC_OVER_OVRE9 (0x1u << 9) /**< \brief (AFEC_OVER) Overrun Error 9 */ -#define AFEC_OVER_OVRE10 (0x1u << 10) /**< \brief (AFEC_OVER) Overrun Error 10 */ -#define AFEC_OVER_OVRE11 (0x1u << 11) /**< \brief (AFEC_OVER) Overrun Error 11 */ -#define AFEC_OVER_OVRE12 (0x1u << 12) /**< \brief (AFEC_OVER) Overrun Error 12 */ -#define AFEC_OVER_OVRE13 (0x1u << 13) /**< \brief (AFEC_OVER) Overrun Error 13 */ -#define AFEC_OVER_OVRE14 (0x1u << 14) /**< \brief (AFEC_OVER) Overrun Error 14 */ -#define AFEC_OVER_OVRE15 (0x1u << 15) /**< \brief (AFEC_OVER) Overrun Error 15 */ -/* -------- AFEC_CWR : (AFEC Offset: 0x50) Compare Window Register -------- */ -#define AFEC_CWR_LOWTHRES_Pos 0 -#define AFEC_CWR_LOWTHRES_Msk (0xfffu << AFEC_CWR_LOWTHRES_Pos) /**< \brief (AFEC_CWR) Low Threshold */ -#define AFEC_CWR_LOWTHRES(value) ((AFEC_CWR_LOWTHRES_Msk & ((value) << AFEC_CWR_LOWTHRES_Pos))) -#define AFEC_CWR_HIGHTHRES_Pos 16 -#define AFEC_CWR_HIGHTHRES_Msk (0xfffu << AFEC_CWR_HIGHTHRES_Pos) /**< \brief (AFEC_CWR) High Threshold */ -#define AFEC_CWR_HIGHTHRES(value) ((AFEC_CWR_HIGHTHRES_Msk & ((value) << AFEC_CWR_HIGHTHRES_Pos))) -/* -------- AFEC_CGR : (AFEC Offset: 0x54) Channel Gain Register -------- */ -#define AFEC_CGR_GAIN0_Pos 0 -#define AFEC_CGR_GAIN0_Msk (0x3u << AFEC_CGR_GAIN0_Pos) /**< \brief (AFEC_CGR) Gain for channel 0 */ -#define AFEC_CGR_GAIN0(value) ((AFEC_CGR_GAIN0_Msk & ((value) << AFEC_CGR_GAIN0_Pos))) -#define AFEC_CGR_GAIN1_Pos 2 -#define AFEC_CGR_GAIN1_Msk (0x3u << AFEC_CGR_GAIN1_Pos) /**< \brief (AFEC_CGR) Gain for channel 1 */ -#define AFEC_CGR_GAIN1(value) ((AFEC_CGR_GAIN1_Msk & ((value) << AFEC_CGR_GAIN1_Pos))) -#define AFEC_CGR_GAIN2_Pos 4 -#define AFEC_CGR_GAIN2_Msk (0x3u << AFEC_CGR_GAIN2_Pos) /**< \brief (AFEC_CGR) Gain for channel 2 */ -#define AFEC_CGR_GAIN2(value) ((AFEC_CGR_GAIN2_Msk & ((value) << AFEC_CGR_GAIN2_Pos))) -#define AFEC_CGR_GAIN3_Pos 6 -#define AFEC_CGR_GAIN3_Msk (0x3u << AFEC_CGR_GAIN3_Pos) /**< \brief (AFEC_CGR) Gain for channel 3 */ -#define AFEC_CGR_GAIN3(value) ((AFEC_CGR_GAIN3_Msk & ((value) << AFEC_CGR_GAIN3_Pos))) -#define AFEC_CGR_GAIN4_Pos 8 -#define AFEC_CGR_GAIN4_Msk (0x3u << AFEC_CGR_GAIN4_Pos) /**< \brief (AFEC_CGR) Gain for channel 4 */ -#define AFEC_CGR_GAIN4(value) ((AFEC_CGR_GAIN4_Msk & ((value) << AFEC_CGR_GAIN4_Pos))) -#define AFEC_CGR_GAIN5_Pos 10 -#define AFEC_CGR_GAIN5_Msk (0x3u << AFEC_CGR_GAIN5_Pos) /**< \brief (AFEC_CGR) Gain for channel 5 */ -#define AFEC_CGR_GAIN5(value) ((AFEC_CGR_GAIN5_Msk & ((value) << AFEC_CGR_GAIN5_Pos))) -#define AFEC_CGR_GAIN6_Pos 12 -#define AFEC_CGR_GAIN6_Msk (0x3u << AFEC_CGR_GAIN6_Pos) /**< \brief (AFEC_CGR) Gain for channel 6 */ -#define AFEC_CGR_GAIN6(value) ((AFEC_CGR_GAIN6_Msk & ((value) << AFEC_CGR_GAIN6_Pos))) -#define AFEC_CGR_GAIN7_Pos 14 -#define AFEC_CGR_GAIN7_Msk (0x3u << AFEC_CGR_GAIN7_Pos) /**< \brief (AFEC_CGR) Gain for channel 7 */ -#define AFEC_CGR_GAIN7(value) ((AFEC_CGR_GAIN7_Msk & ((value) << AFEC_CGR_GAIN7_Pos))) -#define AFEC_CGR_GAIN8_Pos 16 -#define AFEC_CGR_GAIN8_Msk (0x3u << AFEC_CGR_GAIN8_Pos) /**< \brief (AFEC_CGR) Gain for channel 8 */ -#define AFEC_CGR_GAIN8(value) ((AFEC_CGR_GAIN8_Msk & ((value) << AFEC_CGR_GAIN8_Pos))) -#define AFEC_CGR_GAIN9_Pos 18 -#define AFEC_CGR_GAIN9_Msk (0x3u << AFEC_CGR_GAIN9_Pos) /**< \brief (AFEC_CGR) Gain for channel 9 */ -#define AFEC_CGR_GAIN9(value) ((AFEC_CGR_GAIN9_Msk & ((value) << AFEC_CGR_GAIN9_Pos))) -#define AFEC_CGR_GAIN10_Pos 20 -#define AFEC_CGR_GAIN10_Msk (0x3u << AFEC_CGR_GAIN10_Pos) /**< \brief (AFEC_CGR) Gain for channel 10 */ -#define AFEC_CGR_GAIN10(value) ((AFEC_CGR_GAIN10_Msk & ((value) << AFEC_CGR_GAIN10_Pos))) -#define AFEC_CGR_GAIN11_Pos 22 -#define AFEC_CGR_GAIN11_Msk (0x3u << AFEC_CGR_GAIN11_Pos) /**< \brief (AFEC_CGR) Gain for channel 11 */ -#define AFEC_CGR_GAIN11(value) ((AFEC_CGR_GAIN11_Msk & ((value) << AFEC_CGR_GAIN11_Pos))) -#define AFEC_CGR_GAIN12_Pos 24 -#define AFEC_CGR_GAIN12_Msk (0x3u << AFEC_CGR_GAIN12_Pos) /**< \brief (AFEC_CGR) Gain for channel 12 */ -#define AFEC_CGR_GAIN12(value) ((AFEC_CGR_GAIN12_Msk & ((value) << AFEC_CGR_GAIN12_Pos))) -#define AFEC_CGR_GAIN13_Pos 26 -#define AFEC_CGR_GAIN13_Msk (0x3u << AFEC_CGR_GAIN13_Pos) /**< \brief (AFEC_CGR) Gain for channel 13 */ -#define AFEC_CGR_GAIN13(value) ((AFEC_CGR_GAIN13_Msk & ((value) << AFEC_CGR_GAIN13_Pos))) -#define AFEC_CGR_GAIN14_Pos 28 -#define AFEC_CGR_GAIN14_Msk (0x3u << AFEC_CGR_GAIN14_Pos) /**< \brief (AFEC_CGR) Gain for channel 14 */ -#define AFEC_CGR_GAIN14(value) ((AFEC_CGR_GAIN14_Msk & ((value) << AFEC_CGR_GAIN14_Pos))) -#define AFEC_CGR_GAIN15_Pos 30 -#define AFEC_CGR_GAIN15_Msk (0x3u << AFEC_CGR_GAIN15_Pos) /**< \brief (AFEC_CGR) Gain for channel 15 */ -#define AFEC_CGR_GAIN15(value) ((AFEC_CGR_GAIN15_Msk & ((value) << AFEC_CGR_GAIN15_Pos))) -/* -------- AFEC_CDOR : (AFEC Offset: 0x5C) Channel Calibration DC Offset Register -------- */ -#define AFEC_CDOR_OFF0 (0x1u << 0) /**< \brief (AFEC_CDOR) Offset for channel 0, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF1 (0x1u << 1) /**< \brief (AFEC_CDOR) Offset for channel 1, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF2 (0x1u << 2) /**< \brief (AFEC_CDOR) Offset for channel 2, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF3 (0x1u << 3) /**< \brief (AFEC_CDOR) Offset for channel 3, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF4 (0x1u << 4) /**< \brief (AFEC_CDOR) Offset for channel 4, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF5 (0x1u << 5) /**< \brief (AFEC_CDOR) Offset for channel 5, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF6 (0x1u << 6) /**< \brief (AFEC_CDOR) Offset for channel 6, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF7 (0x1u << 7) /**< \brief (AFEC_CDOR) Offset for channel 7, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF8 (0x1u << 8) /**< \brief (AFEC_CDOR) Offset for channel 8, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF9 (0x1u << 9) /**< \brief (AFEC_CDOR) Offset for channel 9, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF10 (0x1u << 10) /**< \brief (AFEC_CDOR) Offset for channel 10, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF11 (0x1u << 11) /**< \brief (AFEC_CDOR) Offset for channel 11, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF12 (0x1u << 12) /**< \brief (AFEC_CDOR) Offset for channel 12, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF13 (0x1u << 13) /**< \brief (AFEC_CDOR) Offset for channel 13, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF14 (0x1u << 14) /**< \brief (AFEC_CDOR) Offset for channel 14, used in automatic calibration procedure */ -#define AFEC_CDOR_OFF15 (0x1u << 15) /**< \brief (AFEC_CDOR) Offset for channel 15, used in automatic calibration procedure */ -/* -------- AFEC_DIFFR : (AFEC Offset: 0x60) Channel Differential Register -------- */ -#define AFEC_DIFFR_DIFF0 (0x1u << 0) /**< \brief (AFEC_DIFFR) Differential inputs for channel 0 */ -#define AFEC_DIFFR_DIFF1 (0x1u << 1) /**< \brief (AFEC_DIFFR) Differential inputs for channel 1 */ -#define AFEC_DIFFR_DIFF2 (0x1u << 2) /**< \brief (AFEC_DIFFR) Differential inputs for channel 2 */ -#define AFEC_DIFFR_DIFF3 (0x1u << 3) /**< \brief (AFEC_DIFFR) Differential inputs for channel 3 */ -#define AFEC_DIFFR_DIFF4 (0x1u << 4) /**< \brief (AFEC_DIFFR) Differential inputs for channel 4 */ -#define AFEC_DIFFR_DIFF5 (0x1u << 5) /**< \brief (AFEC_DIFFR) Differential inputs for channel 5 */ -#define AFEC_DIFFR_DIFF6 (0x1u << 6) /**< \brief (AFEC_DIFFR) Differential inputs for channel 6 */ -#define AFEC_DIFFR_DIFF7 (0x1u << 7) /**< \brief (AFEC_DIFFR) Differential inputs for channel 7 */ -#define AFEC_DIFFR_DIFF8 (0x1u << 8) /**< \brief (AFEC_DIFFR) Differential inputs for channel 8 */ -#define AFEC_DIFFR_DIFF9 (0x1u << 9) /**< \brief (AFEC_DIFFR) Differential inputs for channel 9 */ -#define AFEC_DIFFR_DIFF10 (0x1u << 10) /**< \brief (AFEC_DIFFR) Differential inputs for channel 10 */ -#define AFEC_DIFFR_DIFF11 (0x1u << 11) /**< \brief (AFEC_DIFFR) Differential inputs for channel 11 */ -#define AFEC_DIFFR_DIFF12 (0x1u << 12) /**< \brief (AFEC_DIFFR) Differential inputs for channel 12 */ -#define AFEC_DIFFR_DIFF13 (0x1u << 13) /**< \brief (AFEC_DIFFR) Differential inputs for channel 13 */ -#define AFEC_DIFFR_DIFF14 (0x1u << 14) /**< \brief (AFEC_DIFFR) Differential inputs for channel 14 */ -#define AFEC_DIFFR_DIFF15 (0x1u << 15) /**< \brief (AFEC_DIFFR) Differential inputs for channel 15 */ -/* -------- AFEC_CSELR : (AFEC Offset: 0x64) Channel Register Selection -------- */ -#define AFEC_CSELR_CSEL_Pos 0 -#define AFEC_CSELR_CSEL_Msk (0xfu << AFEC_CSELR_CSEL_Pos) /**< \brief (AFEC_CSELR) Channel Selection */ -#define AFEC_CSELR_CSEL(value) ((AFEC_CSELR_CSEL_Msk & ((value) << AFEC_CSELR_CSEL_Pos))) -/* -------- AFEC_CDR : (AFEC Offset: 0x68) Channel Data Register -------- */ -#define AFEC_CDR_DATA_Pos 0 -#define AFEC_CDR_DATA_Msk (0xfffu << AFEC_CDR_DATA_Pos) /**< \brief (AFEC_CDR) Converted Data */ -/* -------- AFEC_COCR : (AFEC Offset: 0x6C) Channel Offset Compensation Register -------- */ -#define AFEC_COCR_AOFF_Pos 0 -#define AFEC_COCR_AOFF_Msk (0xfffu << AFEC_COCR_AOFF_Pos) /**< \brief (AFEC_COCR) Analog Offset */ -#define AFEC_COCR_AOFF(value) ((AFEC_COCR_AOFF_Msk & ((value) << AFEC_COCR_AOFF_Pos))) -/* -------- AFEC_TEMPMR : (AFEC Offset: 0x70) Temperature Sensor Mode Register -------- */ -#define AFEC_TEMPMR_RTCT (0x1u << 0) /**< \brief (AFEC_TEMPMR) Temperature Sensor RTC Trigger mode */ -#define AFEC_TEMPMR_TEMPCMPMOD_Pos 4 -#define AFEC_TEMPMR_TEMPCMPMOD_Msk (0x3u << AFEC_TEMPMR_TEMPCMPMOD_Pos) /**< \brief (AFEC_TEMPMR) Temperature Comparison Mode */ -#define AFEC_TEMPMR_TEMPCMPMOD_LOW (0x0u << 4) /**< \brief (AFEC_TEMPMR) Generates an event when the converted data is lower than the low threshold of the window. */ -#define AFEC_TEMPMR_TEMPCMPMOD_HIGH (0x1u << 4) /**< \brief (AFEC_TEMPMR) Generates an event when the converted data is higher than the high threshold of the window. */ -#define AFEC_TEMPMR_TEMPCMPMOD_IN (0x2u << 4) /**< \brief (AFEC_TEMPMR) Generates an event when the converted data is in the comparison window. */ -#define AFEC_TEMPMR_TEMPCMPMOD_OUT (0x3u << 4) /**< \brief (AFEC_TEMPMR) Generates an event when the converted data is out of the comparison window. */ -/* -------- AFEC_TEMPCWR : (AFEC Offset: 0x74) Temperature Compare Window Register -------- */ -#define AFEC_TEMPCWR_TLOWTHRES_Pos 0 -#define AFEC_TEMPCWR_TLOWTHRES_Msk (0xffffu << AFEC_TEMPCWR_TLOWTHRES_Pos) /**< \brief (AFEC_TEMPCWR) Temperature Low Threshold */ -#define AFEC_TEMPCWR_TLOWTHRES(value) ((AFEC_TEMPCWR_TLOWTHRES_Msk & ((value) << AFEC_TEMPCWR_TLOWTHRES_Pos))) -#define AFEC_TEMPCWR_THIGHTHRES_Pos 16 -#define AFEC_TEMPCWR_THIGHTHRES_Msk (0xffffu << AFEC_TEMPCWR_THIGHTHRES_Pos) /**< \brief (AFEC_TEMPCWR) Temperature High Threshold */ -#define AFEC_TEMPCWR_THIGHTHRES(value) ((AFEC_TEMPCWR_THIGHTHRES_Msk & ((value) << AFEC_TEMPCWR_THIGHTHRES_Pos))) -/* -------- AFEC_ACR : (AFEC Offset: 0x94) Analog Control Register -------- */ -#define AFEC_ACR_IBCTL_Pos 8 -#define AFEC_ACR_IBCTL_Msk (0x3u << AFEC_ACR_IBCTL_Pos) /**< \brief (AFEC_ACR) AFEC Bias Current Control */ -#define AFEC_ACR_IBCTL(value) ((AFEC_ACR_IBCTL_Msk & ((value) << AFEC_ACR_IBCTL_Pos))) -/* -------- AFEC_WPMR : (AFEC Offset: 0xE4) Write Protect Mode Register -------- */ -#define AFEC_WPMR_WPEN (0x1u << 0) /**< \brief (AFEC_WPMR) Write Protect Enable */ -#define AFEC_WPMR_WPKEY_Pos 8 -#define AFEC_WPMR_WPKEY_Msk (0xffffffu << AFEC_WPMR_WPKEY_Pos) /**< \brief (AFEC_WPMR) Write Protect KEY */ -#define AFEC_WPMR_WPKEY_ADC (0x414443u << 8) /**< \brief (AFEC_WPMR) Should be written at value 0x414443 ("ADC" in ASCII). Writing any other value in this field aborts the write operation of the WPEN bit. Always reads as 0. */ -/* -------- AFEC_WPSR : (AFEC Offset: 0xE8) Write Protect Status Register -------- */ -#define AFEC_WPSR_WPVS (0x1u << 0) /**< \brief (AFEC_WPSR) Write Protect Violation Status */ -#define AFEC_WPSR_WPVSRC_Pos 8 -#define AFEC_WPSR_WPVSRC_Msk (0xffffu << AFEC_WPSR_WPVSRC_Pos) /**< \brief (AFEC_WPSR) Write Protect Violation Source */ -/* -------- AFEC_RPR : (AFEC Offset: 0x100) Receive Pointer Register -------- */ -#define AFEC_RPR_RXPTR_Pos 0 -#define AFEC_RPR_RXPTR_Msk (0xffffffffu << AFEC_RPR_RXPTR_Pos) /**< \brief (AFEC_RPR) Receive Pointer Register */ -#define AFEC_RPR_RXPTR(value) ((AFEC_RPR_RXPTR_Msk & ((value) << AFEC_RPR_RXPTR_Pos))) -/* -------- AFEC_RCR : (AFEC Offset: 0x104) Receive Counter Register -------- */ -#define AFEC_RCR_RXCTR_Pos 0 -#define AFEC_RCR_RXCTR_Msk (0xffffu << AFEC_RCR_RXCTR_Pos) /**< \brief (AFEC_RCR) Receive Counter Register */ -#define AFEC_RCR_RXCTR(value) ((AFEC_RCR_RXCTR_Msk & ((value) << AFEC_RCR_RXCTR_Pos))) -/* -------- AFEC_RNPR : (AFEC Offset: 0x110) Receive Next Pointer Register -------- */ -#define AFEC_RNPR_RXNPTR_Pos 0 -#define AFEC_RNPR_RXNPTR_Msk (0xffffffffu << AFEC_RNPR_RXNPTR_Pos) /**< \brief (AFEC_RNPR) Receive Next Pointer */ -#define AFEC_RNPR_RXNPTR(value) ((AFEC_RNPR_RXNPTR_Msk & ((value) << AFEC_RNPR_RXNPTR_Pos))) -/* -------- AFEC_RNCR : (AFEC Offset: 0x114) Receive Next Counter Register -------- */ -#define AFEC_RNCR_RXNCTR_Pos 0 -#define AFEC_RNCR_RXNCTR_Msk (0xffffu << AFEC_RNCR_RXNCTR_Pos) /**< \brief (AFEC_RNCR) Receive Next Counter */ -#define AFEC_RNCR_RXNCTR(value) ((AFEC_RNCR_RXNCTR_Msk & ((value) << AFEC_RNCR_RXNCTR_Pos))) -/* -------- AFEC_PTCR : (AFEC Offset: 0x120) Transfer Control Register -------- */ -#define AFEC_PTCR_RXTEN (0x1u << 0) /**< \brief (AFEC_PTCR) Receiver Transfer Enable */ -#define AFEC_PTCR_RXTDIS (0x1u << 1) /**< \brief (AFEC_PTCR) Receiver Transfer Disable */ -#define AFEC_PTCR_TXTEN (0x1u << 8) /**< \brief (AFEC_PTCR) Transmitter Transfer Enable */ -#define AFEC_PTCR_TXTDIS (0x1u << 9) /**< \brief (AFEC_PTCR) Transmitter Transfer Disable */ -/* -------- AFEC_PTSR : (AFEC Offset: 0x124) Transfer Status Register -------- */ -#define AFEC_PTSR_RXTEN (0x1u << 0) /**< \brief (AFEC_PTSR) Receiver Transfer Enable */ -#define AFEC_PTSR_TXTEN (0x1u << 8) /**< \brief (AFEC_PTSR) Transmitter Transfer Enable */ - -/*@}*/ - - -#endif /* _SAM4E_AFEC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/can.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/can.h deleted file mode 100644 index 3417afcec..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/can.h +++ /dev/null @@ -1,304 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_CAN_COMPONENT_ -#define _SAM4E_CAN_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Controller Area Network */ -/* ============================================================================= */ -/** \addtogroup SAM4E_CAN Controller Area Network */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief CanMb hardware registers */ -typedef struct { - RwReg CAN_MMR; /**< \brief (CanMb Offset: 0x0) Mailbox Mode Register */ - RwReg CAN_MAM; /**< \brief (CanMb Offset: 0x4) Mailbox Acceptance Mask Register */ - RwReg CAN_MID; /**< \brief (CanMb Offset: 0x8) Mailbox ID Register */ - RwReg CAN_MFID; /**< \brief (CanMb Offset: 0xC) Mailbox Family ID Register */ - RwReg CAN_MSR; /**< \brief (CanMb Offset: 0x10) Mailbox Status Register */ - RwReg CAN_MDL; /**< \brief (CanMb Offset: 0x14) Mailbox Data Low Register */ - RwReg CAN_MDH; /**< \brief (CanMb Offset: 0x18) Mailbox Data High Register */ - RwReg CAN_MCR; /**< \brief (CanMb Offset: 0x1C) Mailbox Control Register */ -} CanMb; -/** \brief Can hardware registers */ -#define CANMB_NUMBER 8 -typedef struct { - RwReg CAN_MR; /**< \brief (Can Offset: 0x0000) Mode Register */ - WoReg CAN_IER; /**< \brief (Can Offset: 0x0004) Interrupt Enable Register */ - WoReg CAN_IDR; /**< \brief (Can Offset: 0x0008) Interrupt Disable Register */ - RoReg CAN_IMR; /**< \brief (Can Offset: 0x000C) Interrupt Mask Register */ - RoReg CAN_SR; /**< \brief (Can Offset: 0x0010) Status Register */ - RwReg CAN_BR; /**< \brief (Can Offset: 0x0014) Baudrate Register */ - RoReg CAN_TIM; /**< \brief (Can Offset: 0x0018) Timer Register */ - RoReg CAN_TIMESTP; /**< \brief (Can Offset: 0x001C) Timestamp Register */ - RoReg CAN_ECR; /**< \brief (Can Offset: 0x0020) Error Counter Register */ - WoReg CAN_TCR; /**< \brief (Can Offset: 0x0024) Transfer Command Register */ - WoReg CAN_ACR; /**< \brief (Can Offset: 0x0028) Abort Command Register */ - RoReg Reserved1[46]; - RwReg CAN_WPMR; /**< \brief (Can Offset: 0x00E4) Write Protect Mode Register */ - RoReg CAN_WPSR; /**< \brief (Can Offset: 0x00E8) Write Protect Status Register */ - RoReg Reserved2[69]; - CanMb CAN_MB[CANMB_NUMBER]; /**< \brief (Can Offset: 0x200) MB = 0 .. 7 */ -} Can; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- CAN_MR : (CAN Offset: 0x0000) Mode Register -------- */ -#define CAN_MR_CANEN (0x1u << 0) /**< \brief (CAN_MR) CAN Controller Enable */ -#define CAN_MR_LPM (0x1u << 1) /**< \brief (CAN_MR) Disable/Enable Low Power Mode */ -#define CAN_MR_ABM (0x1u << 2) /**< \brief (CAN_MR) Disable/Enable Autobaud/Listen mode */ -#define CAN_MR_OVL (0x1u << 3) /**< \brief (CAN_MR) Disable/Enable Overload Frame */ -#define CAN_MR_TEOF (0x1u << 4) /**< \brief (CAN_MR) Timestamp messages at each end of Frame */ -#define CAN_MR_TTM (0x1u << 5) /**< \brief (CAN_MR) Disable/Enable Time Triggered Mode */ -#define CAN_MR_TIMFRZ (0x1u << 6) /**< \brief (CAN_MR) Enable Timer Freeze */ -#define CAN_MR_DRPT (0x1u << 7) /**< \brief (CAN_MR) Disable Repeat */ -/* -------- CAN_IER : (CAN Offset: 0x0004) Interrupt Enable Register -------- */ -#define CAN_IER_MB0 (0x1u << 0) /**< \brief (CAN_IER) Mailbox 0 Interrupt Enable */ -#define CAN_IER_MB1 (0x1u << 1) /**< \brief (CAN_IER) Mailbox 1 Interrupt Enable */ -#define CAN_IER_MB2 (0x1u << 2) /**< \brief (CAN_IER) Mailbox 2 Interrupt Enable */ -#define CAN_IER_MB3 (0x1u << 3) /**< \brief (CAN_IER) Mailbox 3 Interrupt Enable */ -#define CAN_IER_MB4 (0x1u << 4) /**< \brief (CAN_IER) Mailbox 4 Interrupt Enable */ -#define CAN_IER_MB5 (0x1u << 5) /**< \brief (CAN_IER) Mailbox 5 Interrupt Enable */ -#define CAN_IER_MB6 (0x1u << 6) /**< \brief (CAN_IER) Mailbox 6 Interrupt Enable */ -#define CAN_IER_MB7 (0x1u << 7) /**< \brief (CAN_IER) Mailbox 7 Interrupt Enable */ -#define CAN_IER_ERRA (0x1u << 16) /**< \brief (CAN_IER) Error Active Mode Interrupt Enable */ -#define CAN_IER_WARN (0x1u << 17) /**< \brief (CAN_IER) Warning Limit Interrupt Enable */ -#define CAN_IER_ERRP (0x1u << 18) /**< \brief (CAN_IER) Error Passive Mode Interrupt Enable */ -#define CAN_IER_BOFF (0x1u << 19) /**< \brief (CAN_IER) Bus Off Mode Interrupt Enable */ -#define CAN_IER_SLEEP (0x1u << 20) /**< \brief (CAN_IER) Sleep Interrupt Enable */ -#define CAN_IER_WAKEUP (0x1u << 21) /**< \brief (CAN_IER) Wakeup Interrupt Enable */ -#define CAN_IER_TOVF (0x1u << 22) /**< \brief (CAN_IER) Timer Overflow Interrupt Enable */ -#define CAN_IER_TSTP (0x1u << 23) /**< \brief (CAN_IER) TimeStamp Interrupt Enable */ -#define CAN_IER_CERR (0x1u << 24) /**< \brief (CAN_IER) CRC Error Interrupt Enable */ -#define CAN_IER_SERR (0x1u << 25) /**< \brief (CAN_IER) Stuffing Error Interrupt Enable */ -#define CAN_IER_AERR (0x1u << 26) /**< \brief (CAN_IER) Acknowledgment Error Interrupt Enable */ -#define CAN_IER_FERR (0x1u << 27) /**< \brief (CAN_IER) Form Error Interrupt Enable */ -#define CAN_IER_BERR (0x1u << 28) /**< \brief (CAN_IER) Bit Error Interrupt Enable */ -/* -------- CAN_IDR : (CAN Offset: 0x0008) Interrupt Disable Register -------- */ -#define CAN_IDR_MB0 (0x1u << 0) /**< \brief (CAN_IDR) Mailbox 0 Interrupt Disable */ -#define CAN_IDR_MB1 (0x1u << 1) /**< \brief (CAN_IDR) Mailbox 1 Interrupt Disable */ -#define CAN_IDR_MB2 (0x1u << 2) /**< \brief (CAN_IDR) Mailbox 2 Interrupt Disable */ -#define CAN_IDR_MB3 (0x1u << 3) /**< \brief (CAN_IDR) Mailbox 3 Interrupt Disable */ -#define CAN_IDR_MB4 (0x1u << 4) /**< \brief (CAN_IDR) Mailbox 4 Interrupt Disable */ -#define CAN_IDR_MB5 (0x1u << 5) /**< \brief (CAN_IDR) Mailbox 5 Interrupt Disable */ -#define CAN_IDR_MB6 (0x1u << 6) /**< \brief (CAN_IDR) Mailbox 6 Interrupt Disable */ -#define CAN_IDR_MB7 (0x1u << 7) /**< \brief (CAN_IDR) Mailbox 7 Interrupt Disable */ -#define CAN_IDR_ERRA (0x1u << 16) /**< \brief (CAN_IDR) Error Active Mode Interrupt Disable */ -#define CAN_IDR_WARN (0x1u << 17) /**< \brief (CAN_IDR) Warning Limit Interrupt Disable */ -#define CAN_IDR_ERRP (0x1u << 18) /**< \brief (CAN_IDR) Error Passive Mode Interrupt Disable */ -#define CAN_IDR_BOFF (0x1u << 19) /**< \brief (CAN_IDR) Bus Off Mode Interrupt Disable */ -#define CAN_IDR_SLEEP (0x1u << 20) /**< \brief (CAN_IDR) Sleep Interrupt Disable */ -#define CAN_IDR_WAKEUP (0x1u << 21) /**< \brief (CAN_IDR) Wakeup Interrupt Disable */ -#define CAN_IDR_TOVF (0x1u << 22) /**< \brief (CAN_IDR) Timer Overflow Interrupt */ -#define CAN_IDR_TSTP (0x1u << 23) /**< \brief (CAN_IDR) TimeStamp Interrupt Disable */ -#define CAN_IDR_CERR (0x1u << 24) /**< \brief (CAN_IDR) CRC Error Interrupt Disable */ -#define CAN_IDR_SERR (0x1u << 25) /**< \brief (CAN_IDR) Stuffing Error Interrupt Disable */ -#define CAN_IDR_AERR (0x1u << 26) /**< \brief (CAN_IDR) Acknowledgment Error Interrupt Disable */ -#define CAN_IDR_FERR (0x1u << 27) /**< \brief (CAN_IDR) Form Error Interrupt Disable */ -#define CAN_IDR_BERR (0x1u << 28) /**< \brief (CAN_IDR) Bit Error Interrupt Disable */ -/* -------- CAN_IMR : (CAN Offset: 0x000C) Interrupt Mask Register -------- */ -#define CAN_IMR_MB0 (0x1u << 0) /**< \brief (CAN_IMR) Mailbox 0 Interrupt Mask */ -#define CAN_IMR_MB1 (0x1u << 1) /**< \brief (CAN_IMR) Mailbox 1 Interrupt Mask */ -#define CAN_IMR_MB2 (0x1u << 2) /**< \brief (CAN_IMR) Mailbox 2 Interrupt Mask */ -#define CAN_IMR_MB3 (0x1u << 3) /**< \brief (CAN_IMR) Mailbox 3 Interrupt Mask */ -#define CAN_IMR_MB4 (0x1u << 4) /**< \brief (CAN_IMR) Mailbox 4 Interrupt Mask */ -#define CAN_IMR_MB5 (0x1u << 5) /**< \brief (CAN_IMR) Mailbox 5 Interrupt Mask */ -#define CAN_IMR_MB6 (0x1u << 6) /**< \brief (CAN_IMR) Mailbox 6 Interrupt Mask */ -#define CAN_IMR_MB7 (0x1u << 7) /**< \brief (CAN_IMR) Mailbox 7 Interrupt Mask */ -#define CAN_IMR_ERRA (0x1u << 16) /**< \brief (CAN_IMR) Error Active Mode Interrupt Mask */ -#define CAN_IMR_WARN (0x1u << 17) /**< \brief (CAN_IMR) Warning Limit Interrupt Mask */ -#define CAN_IMR_ERRP (0x1u << 18) /**< \brief (CAN_IMR) Error Passive Mode Interrupt Mask */ -#define CAN_IMR_BOFF (0x1u << 19) /**< \brief (CAN_IMR) Bus Off Mode Interrupt Mask */ -#define CAN_IMR_SLEEP (0x1u << 20) /**< \brief (CAN_IMR) Sleep Interrupt Mask */ -#define CAN_IMR_WAKEUP (0x1u << 21) /**< \brief (CAN_IMR) Wakeup Interrupt Mask */ -#define CAN_IMR_TOVF (0x1u << 22) /**< \brief (CAN_IMR) Timer Overflow Interrupt Mask */ -#define CAN_IMR_TSTP (0x1u << 23) /**< \brief (CAN_IMR) Timestamp Interrupt Mask */ -#define CAN_IMR_CERR (0x1u << 24) /**< \brief (CAN_IMR) CRC Error Interrupt Mask */ -#define CAN_IMR_SERR (0x1u << 25) /**< \brief (CAN_IMR) Stuffing Error Interrupt Mask */ -#define CAN_IMR_AERR (0x1u << 26) /**< \brief (CAN_IMR) Acknowledgment Error Interrupt Mask */ -#define CAN_IMR_FERR (0x1u << 27) /**< \brief (CAN_IMR) Form Error Interrupt Mask */ -#define CAN_IMR_BERR (0x1u << 28) /**< \brief (CAN_IMR) Bit Error Interrupt Mask */ -/* -------- CAN_SR : (CAN Offset: 0x0010) Status Register -------- */ -#define CAN_SR_MB0 (0x1u << 0) /**< \brief (CAN_SR) Mailbox 0 Event */ -#define CAN_SR_MB1 (0x1u << 1) /**< \brief (CAN_SR) Mailbox 1 Event */ -#define CAN_SR_MB2 (0x1u << 2) /**< \brief (CAN_SR) Mailbox 2 Event */ -#define CAN_SR_MB3 (0x1u << 3) /**< \brief (CAN_SR) Mailbox 3 Event */ -#define CAN_SR_MB4 (0x1u << 4) /**< \brief (CAN_SR) Mailbox 4 Event */ -#define CAN_SR_MB5 (0x1u << 5) /**< \brief (CAN_SR) Mailbox 5 Event */ -#define CAN_SR_MB6 (0x1u << 6) /**< \brief (CAN_SR) Mailbox 6 Event */ -#define CAN_SR_MB7 (0x1u << 7) /**< \brief (CAN_SR) Mailbox 7 Event */ -#define CAN_SR_ERRA (0x1u << 16) /**< \brief (CAN_SR) Error Active Mode */ -#define CAN_SR_WARN (0x1u << 17) /**< \brief (CAN_SR) Warning Limit */ -#define CAN_SR_ERRP (0x1u << 18) /**< \brief (CAN_SR) Error Passive Mode */ -#define CAN_SR_BOFF (0x1u << 19) /**< \brief (CAN_SR) Bus Off Mode */ -#define CAN_SR_SLEEP (0x1u << 20) /**< \brief (CAN_SR) CAN controller in Low power Mode */ -#define CAN_SR_WAKEUP (0x1u << 21) /**< \brief (CAN_SR) CAN controller is not in Low power Mode */ -#define CAN_SR_TOVF (0x1u << 22) /**< \brief (CAN_SR) Timer Overflow */ -#define CAN_SR_TSTP (0x1u << 23) /**< \brief (CAN_SR) */ -#define CAN_SR_CERR (0x1u << 24) /**< \brief (CAN_SR) Mailbox CRC Error */ -#define CAN_SR_SERR (0x1u << 25) /**< \brief (CAN_SR) Mailbox Stuffing Error */ -#define CAN_SR_AERR (0x1u << 26) /**< \brief (CAN_SR) Acknowledgment Error */ -#define CAN_SR_FERR (0x1u << 27) /**< \brief (CAN_SR) Form Error */ -#define CAN_SR_BERR (0x1u << 28) /**< \brief (CAN_SR) Bit Error */ -#define CAN_SR_RBSY (0x1u << 29) /**< \brief (CAN_SR) Receiver busy */ -#define CAN_SR_TBSY (0x1u << 30) /**< \brief (CAN_SR) Transmitter busy */ -#define CAN_SR_OVLSY (0x1u << 31) /**< \brief (CAN_SR) Overload busy */ -/* -------- CAN_BR : (CAN Offset: 0x0014) Baudrate Register -------- */ -#define CAN_BR_PHASE2_Pos 0 -#define CAN_BR_PHASE2_Msk (0x7u << CAN_BR_PHASE2_Pos) /**< \brief (CAN_BR) Phase 2 segment */ -#define CAN_BR_PHASE2(value) ((CAN_BR_PHASE2_Msk & ((value) << CAN_BR_PHASE2_Pos))) -#define CAN_BR_PHASE1_Pos 4 -#define CAN_BR_PHASE1_Msk (0x7u << CAN_BR_PHASE1_Pos) /**< \brief (CAN_BR) Phase 1 segment */ -#define CAN_BR_PHASE1(value) ((CAN_BR_PHASE1_Msk & ((value) << CAN_BR_PHASE1_Pos))) -#define CAN_BR_PROPAG_Pos 8 -#define CAN_BR_PROPAG_Msk (0x7u << CAN_BR_PROPAG_Pos) /**< \brief (CAN_BR) Programming time segment */ -#define CAN_BR_PROPAG(value) ((CAN_BR_PROPAG_Msk & ((value) << CAN_BR_PROPAG_Pos))) -#define CAN_BR_SJW_Pos 12 -#define CAN_BR_SJW_Msk (0x3u << CAN_BR_SJW_Pos) /**< \brief (CAN_BR) Re-synchronization jump width */ -#define CAN_BR_SJW(value) ((CAN_BR_SJW_Msk & ((value) << CAN_BR_SJW_Pos))) -#define CAN_BR_BRP_Pos 16 -#define CAN_BR_BRP_Msk (0x7fu << CAN_BR_BRP_Pos) /**< \brief (CAN_BR) Baudrate Prescaler. */ -#define CAN_BR_BRP(value) ((CAN_BR_BRP_Msk & ((value) << CAN_BR_BRP_Pos))) -#define CAN_BR_SMP (0x1u << 24) /**< \brief (CAN_BR) Sampling Mode */ -#define CAN_BR_SMP_ONCE (0x0u << 24) /**< \brief (CAN_BR) The incoming bit stream is sampled once at sample point. */ -#define CAN_BR_SMP_THREE (0x1u << 24) /**< \brief (CAN_BR) The incoming bit stream is sampled three times with a period of a MCK clock period, centered on sample point. */ -/* -------- CAN_TIM : (CAN Offset: 0x0018) Timer Register -------- */ -#define CAN_TIM_TIMER_Pos 0 -#define CAN_TIM_TIMER_Msk (0xffffu << CAN_TIM_TIMER_Pos) /**< \brief (CAN_TIM) Timer */ -/* -------- CAN_TIMESTP : (CAN Offset: 0x001C) Timestamp Register -------- */ -#define CAN_TIMESTP_MTIMESTAMP_Pos 0 -#define CAN_TIMESTP_MTIMESTAMP_Msk (0xffffu << CAN_TIMESTP_MTIMESTAMP_Pos) /**< \brief (CAN_TIMESTP) Timestamp */ -/* -------- CAN_ECR : (CAN Offset: 0x0020) Error Counter Register -------- */ -#define CAN_ECR_REC_Pos 0 -#define CAN_ECR_REC_Msk (0xffu << CAN_ECR_REC_Pos) /**< \brief (CAN_ECR) Receive Error Counter */ -#define CAN_ECR_TEC_Pos 16 -#define CAN_ECR_TEC_Msk (0x1ffu << CAN_ECR_TEC_Pos) /**< \brief (CAN_ECR) Transmit Error Counter */ -/* -------- CAN_TCR : (CAN Offset: 0x0024) Transfer Command Register -------- */ -#define CAN_TCR_MB0 (0x1u << 0) /**< \brief (CAN_TCR) Transfer Request for Mailbox 0 */ -#define CAN_TCR_MB1 (0x1u << 1) /**< \brief (CAN_TCR) Transfer Request for Mailbox 1 */ -#define CAN_TCR_MB2 (0x1u << 2) /**< \brief (CAN_TCR) Transfer Request for Mailbox 2 */ -#define CAN_TCR_MB3 (0x1u << 3) /**< \brief (CAN_TCR) Transfer Request for Mailbox 3 */ -#define CAN_TCR_MB4 (0x1u << 4) /**< \brief (CAN_TCR) Transfer Request for Mailbox 4 */ -#define CAN_TCR_MB5 (0x1u << 5) /**< \brief (CAN_TCR) Transfer Request for Mailbox 5 */ -#define CAN_TCR_MB6 (0x1u << 6) /**< \brief (CAN_TCR) Transfer Request for Mailbox 6 */ -#define CAN_TCR_MB7 (0x1u << 7) /**< \brief (CAN_TCR) Transfer Request for Mailbox 7 */ -#define CAN_TCR_TIMRST (0x1u << 31) /**< \brief (CAN_TCR) Timer Reset */ -/* -------- CAN_ACR : (CAN Offset: 0x0028) Abort Command Register -------- */ -#define CAN_ACR_MB0 (0x1u << 0) /**< \brief (CAN_ACR) Abort Request for Mailbox 0 */ -#define CAN_ACR_MB1 (0x1u << 1) /**< \brief (CAN_ACR) Abort Request for Mailbox 1 */ -#define CAN_ACR_MB2 (0x1u << 2) /**< \brief (CAN_ACR) Abort Request for Mailbox 2 */ -#define CAN_ACR_MB3 (0x1u << 3) /**< \brief (CAN_ACR) Abort Request for Mailbox 3 */ -#define CAN_ACR_MB4 (0x1u << 4) /**< \brief (CAN_ACR) Abort Request for Mailbox 4 */ -#define CAN_ACR_MB5 (0x1u << 5) /**< \brief (CAN_ACR) Abort Request for Mailbox 5 */ -#define CAN_ACR_MB6 (0x1u << 6) /**< \brief (CAN_ACR) Abort Request for Mailbox 6 */ -#define CAN_ACR_MB7 (0x1u << 7) /**< \brief (CAN_ACR) Abort Request for Mailbox 7 */ -/* -------- CAN_WPMR : (CAN Offset: 0x00E4) Write Protect Mode Register -------- */ -#define CAN_WPMR_WPEN (0x1u << 0) /**< \brief (CAN_WPMR) Write Protection Enable */ -#define CAN_WPMR_WPKEY_Pos 8 -#define CAN_WPMR_WPKEY_Msk (0xffffffu << CAN_WPMR_WPKEY_Pos) /**< \brief (CAN_WPMR) SPI Write Protection Key Password */ -#define CAN_WPMR_WPKEY(value) ((CAN_WPMR_WPKEY_Msk & ((value) << CAN_WPMR_WPKEY_Pos))) -/* -------- CAN_WPSR : (CAN Offset: 0x00E8) Write Protect Status Register -------- */ -#define CAN_WPSR_WPVS (0x1u << 0) /**< \brief (CAN_WPSR) Write Protection Violation Status */ -#define CAN_WPSR_WPVSRC_Pos 8 -#define CAN_WPSR_WPVSRC_Msk (0xffu << CAN_WPSR_WPVSRC_Pos) /**< \brief (CAN_WPSR) Write Protection Violation Source */ -/* -------- CAN_MMR : (CAN Offset: N/A) Mailbox Mode Register -------- */ -#define CAN_MMR_MTIMEMARK_Pos 0 -#define CAN_MMR_MTIMEMARK_Msk (0xffffu << CAN_MMR_MTIMEMARK_Pos) /**< \brief (CAN_MMR) Mailbox Timemark */ -#define CAN_MMR_MTIMEMARK(value) ((CAN_MMR_MTIMEMARK_Msk & ((value) << CAN_MMR_MTIMEMARK_Pos))) -#define CAN_MMR_PRIOR_Pos 16 -#define CAN_MMR_PRIOR_Msk (0xfu << CAN_MMR_PRIOR_Pos) /**< \brief (CAN_MMR) Mailbox Priority */ -#define CAN_MMR_PRIOR(value) ((CAN_MMR_PRIOR_Msk & ((value) << CAN_MMR_PRIOR_Pos))) -#define CAN_MMR_MOT_Pos 24 -#define CAN_MMR_MOT_Msk (0x7u << CAN_MMR_MOT_Pos) /**< \brief (CAN_MMR) Mailbox Object Type */ -#define CAN_MMR_MOT_MB_DISABLED (0x0u << 24) /**< \brief (CAN_MMR) Mailbox is disabled. This prevents receiving or transmitting any messages with this mailbox. */ -#define CAN_MMR_MOT_MB_RX (0x1u << 24) /**< \brief (CAN_MMR) Reception Mailbox. Mailbox is configured for reception. If a message is received while the mailbox data register is full, it is discarded. */ -#define CAN_MMR_MOT_MB_RX_OVERWRITE (0x2u << 24) /**< \brief (CAN_MMR) Reception mailbox with overwrite. Mailbox is configured for reception. If a message is received while the mailbox is full, it overwrites the previous message. */ -#define CAN_MMR_MOT_MB_TX (0x3u << 24) /**< \brief (CAN_MMR) Transmit mailbox. Mailbox is configured for transmission. */ -#define CAN_MMR_MOT_MB_CONSUMER (0x4u << 24) /**< \brief (CAN_MMR) Consumer Mailbox. Mailbox is configured in reception but behaves as a Transmit Mailbox, i.e., it sends a remote frame and waits for an answer. */ -#define CAN_MMR_MOT_MB_PRODUCER (0x5u << 24) /**< \brief (CAN_MMR) Producer Mailbox. Mailbox is configured in transmission but also behaves like a reception mailbox, i.e., it waits to receive a Remote Frame before sending its contents. */ -/* -------- CAN_MAM : (CAN Offset: N/A) Mailbox Acceptance Mask Register -------- */ -#define CAN_MAM_MIDvB_Pos 0 -#define CAN_MAM_MIDvB_Msk (0x3ffffu << CAN_MAM_MIDvB_Pos) /**< \brief (CAN_MAM) Complementary bits for identifier in extended frame mode */ -#define CAN_MAM_MIDvB(value) ((CAN_MAM_MIDvB_Msk & ((value) << CAN_MAM_MIDvB_Pos))) -#define CAN_MAM_MIDvA_Pos 18 -#define CAN_MAM_MIDvA_Msk (0x7ffu << CAN_MAM_MIDvA_Pos) /**< \brief (CAN_MAM) Identifier for standard frame mode */ -#define CAN_MAM_MIDvA(value) ((CAN_MAM_MIDvA_Msk & ((value) << CAN_MAM_MIDvA_Pos))) -#define CAN_MAM_MIDE (0x1u << 29) /**< \brief (CAN_MAM) Identifier Version */ -/* -------- CAN_MID : (CAN Offset: N/A) Mailbox ID Register -------- */ -#define CAN_MID_MIDvB_Pos 0 -#define CAN_MID_MIDvB_Msk (0x3ffffu << CAN_MID_MIDvB_Pos) /**< \brief (CAN_MID) Complementary bits for identifier in extended frame mode */ -#define CAN_MID_MIDvB(value) ((CAN_MID_MIDvB_Msk & ((value) << CAN_MID_MIDvB_Pos))) -#define CAN_MID_MIDvA_Pos 18 -#define CAN_MID_MIDvA_Msk (0x7ffu << CAN_MID_MIDvA_Pos) /**< \brief (CAN_MID) Identifier for standard frame mode */ -#define CAN_MID_MIDvA(value) ((CAN_MID_MIDvA_Msk & ((value) << CAN_MID_MIDvA_Pos))) -#define CAN_MID_MIDE (0x1u << 29) /**< \brief (CAN_MID) Identifier Version */ -/* -------- CAN_MFID : (CAN Offset: N/A) Mailbox Family ID Register -------- */ -#define CAN_MFID_MFID_Pos 0 -#define CAN_MFID_MFID_Msk (0x1fffffffu << CAN_MFID_MFID_Pos) /**< \brief (CAN_MFID) Family ID */ -/* -------- CAN_MSR : (CAN Offset: N/A) Mailbox Status Register -------- */ -#define CAN_MSR_MTIMESTAMP_Pos 0 -#define CAN_MSR_MTIMESTAMP_Msk (0xffffu << CAN_MSR_MTIMESTAMP_Pos) /**< \brief (CAN_MSR) Timer value */ -#define CAN_MSR_MDLC_Pos 16 -#define CAN_MSR_MDLC_Msk (0xfu << CAN_MSR_MDLC_Pos) /**< \brief (CAN_MSR) Mailbox Data Length Code */ -#define CAN_MSR_MRTR (0x1u << 20) /**< \brief (CAN_MSR) Mailbox Remote Transmission Request */ -#define CAN_MSR_MABT (0x1u << 22) /**< \brief (CAN_MSR) Mailbox Message Abort */ -#define CAN_MSR_MRDY (0x1u << 23) /**< \brief (CAN_MSR) Mailbox Ready */ -#define CAN_MSR_MMI (0x1u << 24) /**< \brief (CAN_MSR) Mailbox Message Ignored */ -/* -------- CAN_MDL : (CAN Offset: N/A) Mailbox Data Low Register -------- */ -#define CAN_MDL_MDL_Pos 0 -#define CAN_MDL_MDL_Msk (0xffffffffu << CAN_MDL_MDL_Pos) /**< \brief (CAN_MDL) Message Data Low Value */ -#define CAN_MDL_MDL(value) ((CAN_MDL_MDL_Msk & ((value) << CAN_MDL_MDL_Pos))) -/* -------- CAN_MDH : (CAN Offset: N/A) Mailbox Data High Register -------- */ -#define CAN_MDH_MDH_Pos 0 -#define CAN_MDH_MDH_Msk (0xffffffffu << CAN_MDH_MDH_Pos) /**< \brief (CAN_MDH) Message Data High Value */ -#define CAN_MDH_MDH(value) ((CAN_MDH_MDH_Msk & ((value) << CAN_MDH_MDH_Pos))) -/* -------- CAN_MCR : (CAN Offset: N/A) Mailbox Control Register -------- */ -#define CAN_MCR_MDLC_Pos 16 -#define CAN_MCR_MDLC_Msk (0xfu << CAN_MCR_MDLC_Pos) /**< \brief (CAN_MCR) Mailbox Data Length Code */ -#define CAN_MCR_MDLC(value) ((CAN_MCR_MDLC_Msk & ((value) << CAN_MCR_MDLC_Pos))) -#define CAN_MCR_MRTR (0x1u << 20) /**< \brief (CAN_MCR) Mailbox Remote Transmission Request */ -#define CAN_MCR_MACR (0x1u << 22) /**< \brief (CAN_MCR) Abort Request for Mailbox x */ -#define CAN_MCR_MTCR (0x1u << 23) /**< \brief (CAN_MCR) Mailbox Transfer Command */ - -/*@}*/ - - -#endif /* _SAM4E_CAN_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/chipid.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/chipid.h deleted file mode 100644 index 1c7897ab6..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/chipid.h +++ /dev/null @@ -1,162 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_CHIPID_COMPONENT_ -#define _SAM4E_CHIPID_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Chip Identifier */ -/* ============================================================================= */ -/** \addtogroup SAM4E_CHIPID Chip Identifier */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Chipid hardware registers */ -typedef struct { - RoReg CHIPID_CIDR; /**< \brief (Chipid Offset: 0x0) Chip ID Register */ - RoReg CHIPID_EXID; /**< \brief (Chipid Offset: 0x4) Chip ID Extension Register */ -} Chipid; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- CHIPID_CIDR : (CHIPID Offset: 0x0) Chip ID Register -------- */ -#define CHIPID_CIDR_VERSION_Pos 0 -#define CHIPID_CIDR_VERSION_Msk (0x1fu << CHIPID_CIDR_VERSION_Pos) /**< \brief (CHIPID_CIDR) Version of the Device */ -#define CHIPID_CIDR_EPROC_Pos 5 -#define CHIPID_CIDR_EPROC_Msk (0x7u << CHIPID_CIDR_EPROC_Pos) /**< \brief (CHIPID_CIDR) Embedded Processor */ -#define CHIPID_CIDR_EPROC_ARM946ES (0x1u << 5) /**< \brief (CHIPID_CIDR) ARM946ES */ -#define CHIPID_CIDR_EPROC_ARM7TDMI (0x2u << 5) /**< \brief (CHIPID_CIDR) ARM7TDMI */ -#define CHIPID_CIDR_EPROC_CM3 (0x3u << 5) /**< \brief (CHIPID_CIDR) Cortex-M3 */ -#define CHIPID_CIDR_EPROC_ARM920T (0x4u << 5) /**< \brief (CHIPID_CIDR) ARM920T */ -#define CHIPID_CIDR_EPROC_ARM926EJS (0x5u << 5) /**< \brief (CHIPID_CIDR) ARM926EJS */ -#define CHIPID_CIDR_EPROC_CA5 (0x6u << 5) /**< \brief (CHIPID_CIDR) Cortex-A5 */ -#define CHIPID_CIDR_EPROC_CM4 (0x7u << 5) /**< \brief (CHIPID_CIDR) Cortex-M4 */ -#define CHIPID_CIDR_NVPSIZ_Pos 8 -#define CHIPID_CIDR_NVPSIZ_Msk (0xfu << CHIPID_CIDR_NVPSIZ_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Size */ -#define CHIPID_CIDR_NVPSIZ_NONE (0x0u << 8) /**< \brief (CHIPID_CIDR) None */ -#define CHIPID_CIDR_NVPSIZ_8K (0x1u << 8) /**< \brief (CHIPID_CIDR) 8 Kbytes */ -#define CHIPID_CIDR_NVPSIZ_16K (0x2u << 8) /**< \brief (CHIPID_CIDR) 16 Kbytes */ -#define CHIPID_CIDR_NVPSIZ_32K (0x3u << 8) /**< \brief (CHIPID_CIDR) 32 Kbytes */ -#define CHIPID_CIDR_NVPSIZ_64K (0x5u << 8) /**< \brief (CHIPID_CIDR) 64 Kbytes */ -#define CHIPID_CIDR_NVPSIZ_128K (0x7u << 8) /**< \brief (CHIPID_CIDR) 128 Kbytes */ -#define CHIPID_CIDR_NVPSIZ_256K (0x9u << 8) /**< \brief (CHIPID_CIDR) 256 Kbytes */ -#define CHIPID_CIDR_NVPSIZ_512K (0xAu << 8) /**< \brief (CHIPID_CIDR) 512 Kbytes */ -#define CHIPID_CIDR_NVPSIZ_1024K (0xCu << 8) /**< \brief (CHIPID_CIDR) 1024 Kbytes */ -#define CHIPID_CIDR_NVPSIZ_2048K (0xEu << 8) /**< \brief (CHIPID_CIDR) 2048 Kbytes */ -#define CHIPID_CIDR_NVPSIZ2_Pos 12 -#define CHIPID_CIDR_NVPSIZ2_Msk (0xfu << CHIPID_CIDR_NVPSIZ2_Pos) /**< \brief (CHIPID_CIDR) Second Nonvolatile Program Memory Size */ -#define CHIPID_CIDR_NVPSIZ2_NONE (0x0u << 12) /**< \brief (CHIPID_CIDR) None */ -#define CHIPID_CIDR_NVPSIZ2_8K (0x1u << 12) /**< \brief (CHIPID_CIDR) 8 Kbytes */ -#define CHIPID_CIDR_NVPSIZ2_16K (0x2u << 12) /**< \brief (CHIPID_CIDR) 16 Kbytes */ -#define CHIPID_CIDR_NVPSIZ2_32K (0x3u << 12) /**< \brief (CHIPID_CIDR) 32 Kbytes */ -#define CHIPID_CIDR_NVPSIZ2_64K (0x5u << 12) /**< \brief (CHIPID_CIDR) 64 Kbytes */ -#define CHIPID_CIDR_NVPSIZ2_128K (0x7u << 12) /**< \brief (CHIPID_CIDR) 128 Kbytes */ -#define CHIPID_CIDR_NVPSIZ2_256K (0x9u << 12) /**< \brief (CHIPID_CIDR) 256 Kbytes */ -#define CHIPID_CIDR_NVPSIZ2_512K (0xAu << 12) /**< \brief (CHIPID_CIDR) 512 Kbytes */ -#define CHIPID_CIDR_NVPSIZ2_1024K (0xCu << 12) /**< \brief (CHIPID_CIDR) 1024 Kbytes */ -#define CHIPID_CIDR_NVPSIZ2_2048K (0xEu << 12) /**< \brief (CHIPID_CIDR) 2048 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_Pos 16 -#define CHIPID_CIDR_SRAMSIZ_Msk (0xfu << CHIPID_CIDR_SRAMSIZ_Pos) /**< \brief (CHIPID_CIDR) Internal SRAM Size */ -#define CHIPID_CIDR_SRAMSIZ_48K (0x0u << 16) /**< \brief (CHIPID_CIDR) 48 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_192K (0x1u << 16) /**< \brief (CHIPID_CIDR) 192 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_2K (0x2u << 16) /**< \brief (CHIPID_CIDR) 2 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_6K (0x3u << 16) /**< \brief (CHIPID_CIDR) 6 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_24K (0x4u << 16) /**< \brief (CHIPID_CIDR) 24 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_4K (0x5u << 16) /**< \brief (CHIPID_CIDR) 4 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_80K (0x6u << 16) /**< \brief (CHIPID_CIDR) 80 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_160K (0x7u << 16) /**< \brief (CHIPID_CIDR) 160 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_8K (0x8u << 16) /**< \brief (CHIPID_CIDR) 8 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_16K (0x9u << 16) /**< \brief (CHIPID_CIDR) 16 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_32K (0xAu << 16) /**< \brief (CHIPID_CIDR) 32 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_64K (0xBu << 16) /**< \brief (CHIPID_CIDR) 64 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_128K (0xCu << 16) /**< \brief (CHIPID_CIDR) 128 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_256K (0xDu << 16) /**< \brief (CHIPID_CIDR) 256 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_96K (0xEu << 16) /**< \brief (CHIPID_CIDR) 96 Kbytes */ -#define CHIPID_CIDR_SRAMSIZ_512K (0xFu << 16) /**< \brief (CHIPID_CIDR) 512 Kbytes */ -#define CHIPID_CIDR_ARCH_Pos 20 -#define CHIPID_CIDR_ARCH_Msk (0xffu << CHIPID_CIDR_ARCH_Pos) /**< \brief (CHIPID_CIDR) Architecture Identifier */ -#define CHIPID_CIDR_ARCH_AT91SAM9xx (0x19u << 20) /**< \brief (CHIPID_CIDR) AT91SAM9xx Series */ -#define CHIPID_CIDR_ARCH_AT91SAM9XExx (0x29u << 20) /**< \brief (CHIPID_CIDR) AT91SAM9XExx Series */ -#define CHIPID_CIDR_ARCH_AT91x34 (0x34u << 20) /**< \brief (CHIPID_CIDR) AT91x34 Series */ -#define CHIPID_CIDR_ARCH_CAP7 (0x37u << 20) /**< \brief (CHIPID_CIDR) CAP7 Series */ -#define CHIPID_CIDR_ARCH_CAP9 (0x39u << 20) /**< \brief (CHIPID_CIDR) CAP9 Series */ -#define CHIPID_CIDR_ARCH_CAP11 (0x3Bu << 20) /**< \brief (CHIPID_CIDR) CAP11 Series */ -#define CHIPID_CIDR_ARCH_SAM4E (0x3Cu << 20) /**< \brief (CHIPID_CIDR) SAM4E Series */ -#define CHIPID_CIDR_ARCH_AT91x40 (0x40u << 20) /**< \brief (CHIPID_CIDR) AT91x40 Series */ -#define CHIPID_CIDR_ARCH_AT91x42 (0x42u << 20) /**< \brief (CHIPID_CIDR) AT91x42 Series */ -#define CHIPID_CIDR_ARCH_AT91x55 (0x55u << 20) /**< \brief (CHIPID_CIDR) AT91x55 Series */ -#define CHIPID_CIDR_ARCH_AT91SAM7Axx (0x60u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Axx Series */ -#define CHIPID_CIDR_ARCH_AT91SAM7AQxx (0x61u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7AQxx Series */ -#define CHIPID_CIDR_ARCH_AT91x63 (0x63u << 20) /**< \brief (CHIPID_CIDR) AT91x63 Series */ -#define CHIPID_CIDR_ARCH_AT91SAM7Sxx (0x70u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Sxx Series */ -#define CHIPID_CIDR_ARCH_AT91SAM7XCxx (0x71u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7XCxx Series */ -#define CHIPID_CIDR_ARCH_AT91SAM7SExx (0x72u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7SExx Series */ -#define CHIPID_CIDR_ARCH_AT91SAM7Lxx (0x73u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Lxx Series */ -#define CHIPID_CIDR_ARCH_AT91SAM7Xxx (0x75u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Xxx Series */ -#define CHIPID_CIDR_ARCH_AT91SAM7SLxx (0x76u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7SLxx Series */ -#define CHIPID_CIDR_ARCH_SAM3UxC (0x80u << 20) /**< \brief (CHIPID_CIDR) SAM3UxC Series (100-pin version) */ -#define CHIPID_CIDR_ARCH_SAM3UxE (0x81u << 20) /**< \brief (CHIPID_CIDR) SAM3UxE Series (144-pin version) */ -#define CHIPID_CIDR_ARCH_SAM3AxC (0x83u << 20) /**< \brief (CHIPID_CIDR) SAM3AxC Series (100-pin version) */ -#define CHIPID_CIDR_ARCH_SAM3XxC (0x84u << 20) /**< \brief (CHIPID_CIDR) SAM3XxC Series (100-pin version) */ -#define CHIPID_CIDR_ARCH_SAM3XxE (0x85u << 20) /**< \brief (CHIPID_CIDR) SAM3XxE Series (144-pin version) */ -#define CHIPID_CIDR_ARCH_SAM3XxG (0x86u << 20) /**< \brief (CHIPID_CIDR) SAM3XxG Series (208/217-pin version) */ -#define CHIPID_CIDR_ARCH_AT91x92 (0x92u << 20) /**< \brief (CHIPID_CIDR) AT91x92 Series */ -#define CHIPID_CIDR_ARCH_SAM3SDxB (0x99u << 20) /**< \brief (CHIPID_CIDR) SAM3SDxB Series (64-pin version) */ -#define CHIPID_CIDR_ARCH_SAM3SDxC (0x9Au << 20) /**< \brief (CHIPID_CIDR) SAM3SDxC Series (100-pin version) */ -#define CHIPID_CIDR_ARCH_SAM5A (0xA5u << 20) /**< \brief (CHIPID_CIDR) SAM5A */ -#define CHIPID_CIDR_ARCH_SAM4LxA (0xB0u << 20) /**< \brief (CHIPID_CIDR) SAM4LxA Series (48-pin version) */ -#define CHIPID_CIDR_ARCH_SAM4LxB (0xB1u << 20) /**< \brief (CHIPID_CIDR) SAM4LxB Series (64-pin version) */ -#define CHIPID_CIDR_ARCH_SAM4LxC (0xB2u << 20) /**< \brief (CHIPID_CIDR) SAM4LxC Series (100-pin version) */ -#define CHIPID_CIDR_ARCH_AT75Cxx (0xF0u << 20) /**< \brief (CHIPID_CIDR) AT75Cxx Series */ -#define CHIPID_CIDR_NVPTYP_Pos 28 -#define CHIPID_CIDR_NVPTYP_Msk (0x7u << CHIPID_CIDR_NVPTYP_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Type */ -#define CHIPID_CIDR_NVPTYP_ROM (0x0u << 28) /**< \brief (CHIPID_CIDR) ROM */ -#define CHIPID_CIDR_NVPTYP_ROMLESS (0x1u << 28) /**< \brief (CHIPID_CIDR) ROMless or on-chip Flash */ -#define CHIPID_CIDR_NVPTYP_FLASH (0x2u << 28) /**< \brief (CHIPID_CIDR) Embedded Flash Memory */ -#define CHIPID_CIDR_NVPTYP_ROM_FLASH (0x3u << 28) /**< \brief (CHIPID_CIDR) ROM and Embedded Flash MemoryNVPSIZ is ROM size NVPSIZ2 is Flash size */ -#define CHIPID_CIDR_NVPTYP_SRAM (0x4u << 28) /**< \brief (CHIPID_CIDR) SRAM emulating ROM */ -#define CHIPID_CIDR_EXT (0x1u << 31) /**< \brief (CHIPID_CIDR) Extension Flag */ -/* -------- CHIPID_EXID : (CHIPID Offset: 0x4) Chip ID Extension Register -------- */ -#define CHIPID_EXID_EXID_Pos 0 -#define CHIPID_EXID_EXID_Msk (0xffffffffu << CHIPID_EXID_EXID_Pos) /**< \brief (CHIPID_EXID) Chip ID Extension */ - -/*@}*/ - - -#endif /* _SAM4E_CHIPID_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/cmcc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/cmcc.h deleted file mode 100644 index 2d9bc4681..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/cmcc.h +++ /dev/null @@ -1,127 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_CMCC_COMPONENT_ -#define _SAM4E_CMCC_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Cortex M Cache Controller */ -/* ============================================================================= */ -/** \addtogroup SAM4E_CMCC Cortex M Cache Controller */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Cmcc hardware registers */ -typedef struct { - RoReg CMCC_TYPE; /**< \brief (Cmcc Offset: 0x00) Cache Type Register */ - RwReg CMCC_CFG; /**< \brief (Cmcc Offset: 0x04) Cache Configuration Register */ - WoReg CMCC_CTRL; /**< \brief (Cmcc Offset: 0x08) Cache Control Register */ - RoReg CMCC_SR; /**< \brief (Cmcc Offset: 0x0C) Cache Status Register */ - RoReg Reserved1[4]; - WoReg CMCC_MAINT0; /**< \brief (Cmcc Offset: 0x20) Cache Maintenance Register 0 */ - WoReg CMCC_MAINT1; /**< \brief (Cmcc Offset: 0x24) Cache Maintenance Register 1 */ - RwReg CMCC_MCFG; /**< \brief (Cmcc Offset: 0x28) Cache Monitor Configuration Register */ - RwReg CMCC_MEN; /**< \brief (Cmcc Offset: 0x2C) Cache Monitor Enable Register */ - WoReg CMCC_MCTRL; /**< \brief (Cmcc Offset: 0x30) Cache Monitor Control Register */ - RoReg CMCC_MSR; /**< \brief (Cmcc Offset: 0x34) Cache Monitor Status Register */ -} Cmcc; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- CMCC_TYPE : (CMCC Offset: 0x00) Cache Type Register -------- */ -#define CMCC_TYPE_AP (0x1u << 0) /**< \brief (CMCC_TYPE) Access Port Access Allowed */ -#define CMCC_TYPE_GCLK (0x1u << 1) /**< \brief (CMCC_TYPE) Dynamic Clock Gating Supported */ -#define CMCC_TYPE_RANDP (0x1u << 2) /**< \brief (CMCC_TYPE) Random Selection Policy Supported */ -#define CMCC_TYPE_LRUP (0x1u << 3) /**< \brief (CMCC_TYPE) Least Recently Used Policy Supported */ -#define CMCC_TYPE_RRP (0x1u << 4) /**< \brief (CMCC_TYPE) Random Selection Policy Supported */ -#define CMCC_TYPE_WAYNUM_Pos 5 -#define CMCC_TYPE_WAYNUM_Msk (0x3u << CMCC_TYPE_WAYNUM_Pos) /**< \brief (CMCC_TYPE) Number of Way */ -#define CMCC_TYPE_WAYNUM_DMAPPED (0x0u << 5) /**< \brief (CMCC_TYPE) Direct Mapped Cache */ -#define CMCC_TYPE_WAYNUM_ARCH2WAY (0x1u << 5) /**< \brief (CMCC_TYPE) 2-WAY set associative */ -#define CMCC_TYPE_WAYNUM_ARCH4WAY (0x2u << 5) /**< \brief (CMCC_TYPE) 4-WAY set associative */ -#define CMCC_TYPE_WAYNUM_ARCH8WAY (0x3u << 5) /**< \brief (CMCC_TYPE) 8-WAY set associative */ -#define CMCC_TYPE_LCKDOWN (0x1u << 7) /**< \brief (CMCC_TYPE) Lock Down Supported */ -#define CMCC_TYPE_CSIZE_Pos 8 -#define CMCC_TYPE_CSIZE_Msk (0x7u << CMCC_TYPE_CSIZE_Pos) /**< \brief (CMCC_TYPE) Cache Size */ -#define CMCC_TYPE_CSIZE_CSIZE_1KB (0x0u << 8) /**< \brief (CMCC_TYPE) Cache Size 1 Kbytes */ -#define CMCC_TYPE_CSIZE_CSIZE_2KB (0x1u << 8) /**< \brief (CMCC_TYPE) Cache Size 2 Kbytes */ -#define CMCC_TYPE_CSIZE_CSIZE_4KB (0x2u << 8) /**< \brief (CMCC_TYPE) Cache Size 4 Kbytes */ -#define CMCC_TYPE_CSIZE_CSIZE_8KB (0x3u << 8) /**< \brief (CMCC_TYPE) Cache Size 8 Kbytes */ -#define CMCC_TYPE_CLSIZE_Pos 11 -#define CMCC_TYPE_CLSIZE_Msk (0x7u << CMCC_TYPE_CLSIZE_Pos) /**< \brief (CMCC_TYPE) Cache Size */ -#define CMCC_TYPE_CLSIZE_CLSIZE_1KB (0x0u << 11) /**< \brief (CMCC_TYPE) 4 bytes */ -#define CMCC_TYPE_CLSIZE_CLSIZE_2KB (0x1u << 11) /**< \brief (CMCC_TYPE) 8 bytes */ -#define CMCC_TYPE_CLSIZE_CLSIZE_4KB (0x2u << 11) /**< \brief (CMCC_TYPE) 16 bytes */ -#define CMCC_TYPE_CLSIZE_CLSIZE_8KB (0x3u << 11) /**< \brief (CMCC_TYPE) 32 bytes */ -/* -------- CMCC_CFG : (CMCC Offset: 0x04) Cache Configuration Register -------- */ -#define CMCC_CFG_GCLKDIS (0x1u << 0) /**< \brief (CMCC_CFG) Disable Clock Gating */ -/* -------- CMCC_CTRL : (CMCC Offset: 0x08) Cache Control Register -------- */ -#define CMCC_CTRL_CEN (0x1u << 0) /**< \brief (CMCC_CTRL) Cache Controller Enable */ -/* -------- CMCC_SR : (CMCC Offset: 0x0C) Cache Status Register -------- */ -#define CMCC_SR_CSTS (0x1u << 0) /**< \brief (CMCC_SR) Cache Controller Status */ -/* -------- CMCC_MAINT0 : (CMCC Offset: 0x20) Cache Maintenance Register 0 -------- */ -#define CMCC_MAINT0_INVALL (0x1u << 0) /**< \brief (CMCC_MAINT0) Cache Controller Invalidate All */ -/* -------- CMCC_MAINT1 : (CMCC Offset: 0x24) Cache Maintenance Register 1 -------- */ -#define CMCC_MAINT1_INDEX_Pos 4 -#define CMCC_MAINT1_INDEX_Msk (0x1fu << CMCC_MAINT1_INDEX_Pos) /**< \brief (CMCC_MAINT1) Invalidate Index */ -#define CMCC_MAINT1_INDEX(value) ((CMCC_MAINT1_INDEX_Msk & ((value) << CMCC_MAINT1_INDEX_Pos))) -#define CMCC_MAINT1_WAY_Pos 30 -#define CMCC_MAINT1_WAY_Msk (0x3u << CMCC_MAINT1_WAY_Pos) /**< \brief (CMCC_MAINT1) Invalidate Way */ -#define CMCC_MAINT1_WAY_WAY0 (0x0u << 30) /**< \brief (CMCC_MAINT1) Way 0 is selection for index invalidation */ -#define CMCC_MAINT1_WAY_WAY1 (0x1u << 30) /**< \brief (CMCC_MAINT1) Way 1 is selection for index invalidation */ -#define CMCC_MAINT1_WAY_WAY2 (0x2u << 30) /**< \brief (CMCC_MAINT1) Way 2 is selection for index invalidation */ -#define CMCC_MAINT1_WAY_WAY3 (0x3u << 30) /**< \brief (CMCC_MAINT1) Way 3 is selection for index invalidation */ -/* -------- CMCC_MCFG : (CMCC Offset: 0x28) Cache Monitor Configuration Register -------- */ -#define CMCC_MCFG_MODE_Pos 0 -#define CMCC_MCFG_MODE_Msk (0x3u << CMCC_MCFG_MODE_Pos) /**< \brief (CMCC_MCFG) Cache Controller Monitor Counter Mode */ -#define CMCC_MCFG_MODE_CYCLE_COUNT (0x0u << 0) /**< \brief (CMCC_MCFG) Cycle counter */ -#define CMCC_MCFG_MODE_IHIT_COUNT (0x1u << 0) /**< \brief (CMCC_MCFG) Instruction hit counter */ -#define CMCC_MCFG_MODE_DHIT_COUNT (0x2u << 0) /**< \brief (CMCC_MCFG) Data hit counter */ -/* -------- CMCC_MEN : (CMCC Offset: 0x2C) Cache Monitor Enable Register -------- */ -#define CMCC_MEN_MENABLE (0x1u << 0) /**< \brief (CMCC_MEN) Cache Controller Monitor Enable */ -/* -------- CMCC_MCTRL : (CMCC Offset: 0x30) Cache Monitor Control Register -------- */ -#define CMCC_MCTRL_SWRST (0x1u << 0) /**< \brief (CMCC_MCTRL) Monitor */ -/* -------- CMCC_MSR : (CMCC Offset: 0x34) Cache Monitor Status Register -------- */ -#define CMCC_MSR_EVENT_CNT_Pos 0 -#define CMCC_MSR_EVENT_CNT_Msk (0xffffffffu << CMCC_MSR_EVENT_CNT_Pos) /**< \brief (CMCC_MSR) Monitor Event Counter */ - -/*@}*/ - - -#endif /* _SAM4E_CMCC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/crccu.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/crccu.h deleted file mode 100644 index a10fff8e1..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/crccu.h +++ /dev/null @@ -1,119 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_CRCCU_COMPONENT_ -#define _SAM4E_CRCCU_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Cyclic Redundancy Check Calculation Unit */ -/* ============================================================================= */ -/** \addtogroup SAM4E_CRCCU Cyclic Redundancy Check Calculation Unit */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Crccu hardware registers */ -typedef struct { - RwReg CRCCU_DSCR; /**< \brief (Crccu Offset: 0x00000000) CRCCU Descriptor Base Register */ - RoReg Reserved1[1]; - WoReg CRCCU_DMA_EN; /**< \brief (Crccu Offset: 0x00000008) CRCCU DMA Enable Register */ - WoReg CRCCU_DMA_DIS; /**< \brief (Crccu Offset: 0x0000000C) CRCCU DMA Disable Register */ - RoReg CRCCU_DMA_SR; /**< \brief (Crccu Offset: 0x00000010) CRCCU DMA Status Register */ - WoReg CRCCU_DMA_IER; /**< \brief (Crccu Offset: 0x00000014) CRCCU DMA Interrupt Enable Register */ - WoReg CRCCU_DMA_IDR; /**< \brief (Crccu Offset: 0x00000018) CRCCU DMA Interrupt Disable Register */ - RoReg CRCCU_DMA_IMR; /**< \brief (Crccu Offset: 0x0000001C) CRCCU DMA Interrupt Mask Register */ - RoReg CRCCU_DMA_ISR; /**< \brief (Crccu Offset: 0x00000020) CRCCU DMA Interrupt Status Register */ - RoReg Reserved2[4]; - WoReg CRCCU_CR; /**< \brief (Crccu Offset: 0x00000034) CRCCU Control Register */ - RwReg CRCCU_MR; /**< \brief (Crccu Offset: 0x00000038) CRCCU Mode Register */ - RoReg CRCCU_SR; /**< \brief (Crccu Offset: 0x0000003C) CRCCU Status Register */ - WoReg CRCCU_IER; /**< \brief (Crccu Offset: 0x00000040) CRCCU Interrupt Enable Register */ - WoReg CRCCU_IDR; /**< \brief (Crccu Offset: 0x00000044) CRCCU Interrupt Disable Register */ - RoReg CRCCU_IMR; /**< \brief (Crccu Offset: 0x00000048) CRCCU Interrupt Mask Register */ - RoReg CRCCU_ISR; /**< \brief (Crccu Offset: 0x0000004C) CRCCU Interrupt Status Register */ -} Crccu; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- CRCCU_DSCR : (CRCCU Offset: 0x00000000) CRCCU Descriptor Base Register -------- */ -#define CRCCU_DSCR_DSCR_Pos 9 -#define CRCCU_DSCR_DSCR_Msk (0x7fffffu << CRCCU_DSCR_DSCR_Pos) /**< \brief (CRCCU_DSCR) Descriptor Base Address */ -#define CRCCU_DSCR_DSCR(value) ((CRCCU_DSCR_DSCR_Msk & ((value) << CRCCU_DSCR_DSCR_Pos))) -/* -------- CRCCU_DMA_EN : (CRCCU Offset: 0x00000008) CRCCU DMA Enable Register -------- */ -#define CRCCU_DMA_EN_DMAEN (0x1u << 0) /**< \brief (CRCCU_DMA_EN) DMA Enable Register */ -/* -------- CRCCU_DMA_DIS : (CRCCU Offset: 0x0000000C) CRCCU DMA Disable Register -------- */ -#define CRCCU_DMA_DIS_DMADIS (0x1u << 0) /**< \brief (CRCCU_DMA_DIS) DMA Disable Register */ -/* -------- CRCCU_DMA_SR : (CRCCU Offset: 0x00000010) CRCCU DMA Status Register -------- */ -#define CRCCU_DMA_SR_DMASR (0x1u << 0) /**< \brief (CRCCU_DMA_SR) DMA Status Register */ -/* -------- CRCCU_DMA_IER : (CRCCU Offset: 0x00000014) CRCCU DMA Interrupt Enable Register -------- */ -#define CRCCU_DMA_IER_DMAIER (0x1u << 0) /**< \brief (CRCCU_DMA_IER) Interrupt Enable register */ -/* -------- CRCCU_DMA_IDR : (CRCCU Offset: 0x00000018) CRCCU DMA Interrupt Disable Register -------- */ -#define CRCCU_DMA_IDR_DMAIDR (0x1u << 0) /**< \brief (CRCCU_DMA_IDR) Interrupt Disable register */ -/* -------- CRCCU_DMA_IMR : (CRCCU Offset: 0x0000001C) CRCCU DMA Interrupt Mask Register -------- */ -#define CRCCU_DMA_IMR_DMAIMR (0x1u << 0) /**< \brief (CRCCU_DMA_IMR) Interrupt Mask Register */ -/* -------- CRCCU_DMA_ISR : (CRCCU Offset: 0x00000020) CRCCU DMA Interrupt Status Register -------- */ -#define CRCCU_DMA_ISR_DMAISR (0x1u << 0) /**< \brief (CRCCU_DMA_ISR) Interrupt Status register */ -/* -------- CRCCU_CR : (CRCCU Offset: 0x00000034) CRCCU Control Register -------- */ -#define CRCCU_CR_RESET (0x1u << 0) /**< \brief (CRCCU_CR) CRC Computation Reset */ -/* -------- CRCCU_MR : (CRCCU Offset: 0x00000038) CRCCU Mode Register -------- */ -#define CRCCU_MR_ENABLE (0x1u << 0) /**< \brief (CRCCU_MR) CRC Enable */ -#define CRCCU_MR_COMPARE (0x1u << 1) /**< \brief (CRCCU_MR) CRC Compare */ -#define CRCCU_MR_PTYPE_Pos 2 -#define CRCCU_MR_PTYPE_Msk (0x3u << CRCCU_MR_PTYPE_Pos) /**< \brief (CRCCU_MR) Primitive Polynomial */ -#define CRCCU_MR_PTYPE_CCITT8023 (0x0u << 2) /**< \brief (CRCCU_MR) Polynom 0x04C11DB7 */ -#define CRCCU_MR_PTYPE_CASTAGNOLI (0x1u << 2) /**< \brief (CRCCU_MR) Polynom 0x1EDC6F41 */ -#define CRCCU_MR_PTYPE_CCITT16 (0x2u << 2) /**< \brief (CRCCU_MR) Polynom 0x1021 */ -#define CRCCU_MR_DIVIDER_Pos 4 -#define CRCCU_MR_DIVIDER_Msk (0xfu << CRCCU_MR_DIVIDER_Pos) /**< \brief (CRCCU_MR) Request Divider */ -#define CRCCU_MR_DIVIDER(value) ((CRCCU_MR_DIVIDER_Msk & ((value) << CRCCU_MR_DIVIDER_Pos))) -/* -------- CRCCU_SR : (CRCCU Offset: 0x0000003C) CRCCU Status Register -------- */ -#define CRCCU_SR_CRC_Pos 0 -#define CRCCU_SR_CRC_Msk (0xffffffffu << CRCCU_SR_CRC_Pos) /**< \brief (CRCCU_SR) Cyclic Redundancy Check Value */ -/* -------- CRCCU_IER : (CRCCU Offset: 0x00000040) CRCCU Interrupt Enable Register -------- */ -#define CRCCU_IER_ERRIER (0x1u << 0) /**< \brief (CRCCU_IER) CRC Error Interrupt Enable */ -/* -------- CRCCU_IDR : (CRCCU Offset: 0x00000044) CRCCU Interrupt Disable Register -------- */ -#define CRCCU_IDR_ERRIDR (0x1u << 0) /**< \brief (CRCCU_IDR) CRC Error Interrupt Disable */ -/* -------- CRCCU_IMR : (CRCCU Offset: 0x00000048) CRCCU Interrupt Mask Register -------- */ -#define CRCCU_IMR_ERRIMR (0x1u << 0) /**< \brief (CRCCU_IMR) CRC Error Interrupt Mask */ -/* -------- CRCCU_ISR : (CRCCU Offset: 0x0000004C) CRCCU Interrupt Status Register -------- */ -#define CRCCU_ISR_ERRISR (0x1u << 0) /**< \brief (CRCCU_ISR) CRC Error Interrupt Status */ - -/*@}*/ - - -#endif /* _SAM4E_CRCCU_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/dacc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/dacc.h deleted file mode 100644 index 9739b1276..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/dacc.h +++ /dev/null @@ -1,225 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_DACC_COMPONENT_ -#define _SAM4E_DACC_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Digital-to-Analog Converter Controller */ -/* ============================================================================= */ -/** \addtogroup SAM4E_DACC Digital-to-Analog Converter Controller */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Dacc hardware registers */ -typedef struct { - WoReg DACC_CR; /**< \brief (Dacc Offset: 0x00) Control Register */ - RwReg DACC_MR; /**< \brief (Dacc Offset: 0x04) Mode Register */ - RoReg Reserved1[2]; - WoReg DACC_CHER; /**< \brief (Dacc Offset: 0x10) Channel Enable Register */ - WoReg DACC_CHDR; /**< \brief (Dacc Offset: 0x14) Channel Disable Register */ - RoReg DACC_CHSR; /**< \brief (Dacc Offset: 0x18) Channel Status Register */ - RoReg Reserved2[1]; - WoReg DACC_CDR; /**< \brief (Dacc Offset: 0x20) Conversion Data Register */ - WoReg DACC_IER; /**< \brief (Dacc Offset: 0x24) Interrupt Enable Register */ - WoReg DACC_IDR; /**< \brief (Dacc Offset: 0x28) Interrupt Disable Register */ - RoReg DACC_IMR; /**< \brief (Dacc Offset: 0x2C) Interrupt Mask Register */ - RoReg DACC_ISR; /**< \brief (Dacc Offset: 0x30) Interrupt Status Register */ - RoReg Reserved3[24]; - RwReg DACC_ACR; /**< \brief (Dacc Offset: 0x94) Analog Current Register */ - RoReg Reserved4[19]; - RwReg DACC_WPMR; /**< \brief (Dacc Offset: 0xE4) Write Protect Mode register */ - RoReg DACC_WPSR; /**< \brief (Dacc Offset: 0xE8) Write Protect Status register */ - RoReg Reserved5[7]; - RwReg DACC_TPR; /**< \brief (Dacc Offset: 0x108) Transmit Pointer Register */ - RwReg DACC_TCR; /**< \brief (Dacc Offset: 0x10C) Transmit Counter Register */ - RoReg Reserved6[2]; - RwReg DACC_TNPR; /**< \brief (Dacc Offset: 0x118) Transmit Next Pointer Register */ - RwReg DACC_TNCR; /**< \brief (Dacc Offset: 0x11C) Transmit Next Counter Register */ - WoReg DACC_PTCR; /**< \brief (Dacc Offset: 0x120) Transfer Control Register */ - RoReg DACC_PTSR; /**< \brief (Dacc Offset: 0x124) Transfer Status Register */ -} Dacc; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- DACC_CR : (DACC Offset: 0x00) Control Register -------- */ -#define DACC_CR_SWRST (0x1u << 0) /**< \brief (DACC_CR) Software Reset */ -/* -------- DACC_MR : (DACC Offset: 0x04) Mode Register -------- */ -#define DACC_MR_TRGEN (0x1u << 0) /**< \brief (DACC_MR) Trigger Enable */ -#define DACC_MR_TRGEN_DIS (0x0u << 0) /**< \brief (DACC_MR) External trigger mode disabled. DACC in free running mode. */ -#define DACC_MR_TRGEN_EN (0x1u << 0) /**< \brief (DACC_MR) External trigger mode enabled. */ -#define DACC_MR_TRGSEL_Pos 1 -#define DACC_MR_TRGSEL_Msk (0x7u << DACC_MR_TRGSEL_Pos) /**< \brief (DACC_MR) Trigger Selection */ -#define DACC_MR_TRGSEL(value) ((DACC_MR_TRGSEL_Msk & ((value) << DACC_MR_TRGSEL_Pos))) -#define DACC_MR_WORD (0x1u << 4) /**< \brief (DACC_MR) Word Transfer */ -#define DACC_MR_WORD_HALF (0x0u << 4) /**< \brief (DACC_MR) Half-Word transfer */ -#define DACC_MR_WORD_WORD (0x1u << 4) /**< \brief (DACC_MR) Word Transfer */ -#define DACC_MR_SLEEP (0x1u << 5) /**< \brief (DACC_MR) Sleep Mode */ -#define DACC_MR_FASTWKUP (0x1u << 6) /**< \brief (DACC_MR) Fast Wake up Mode */ -#define DACC_MR_REFRESH_Pos 8 -#define DACC_MR_REFRESH_Msk (0xffu << DACC_MR_REFRESH_Pos) /**< \brief (DACC_MR) Refresh Period */ -#define DACC_MR_REFRESH(value) ((DACC_MR_REFRESH_Msk & ((value) << DACC_MR_REFRESH_Pos))) -#define DACC_MR_USER_SEL_Pos 16 -#define DACC_MR_USER_SEL_Msk (0x3u << DACC_MR_USER_SEL_Pos) /**< \brief (DACC_MR) User Channel Selection */ -#define DACC_MR_USER_SEL_CHANNEL0 (0x0u << 16) /**< \brief (DACC_MR) Channel 0 */ -#define DACC_MR_USER_SEL_CHANNEL1 (0x1u << 16) /**< \brief (DACC_MR) Channel 1 */ -#define DACC_MR_TAG (0x1u << 20) /**< \brief (DACC_MR) Tag Selection Mode */ -#define DACC_MR_TAG_DIS (0x0u << 20) /**< \brief (DACC_MR) Tag selection mode disabled. Using USER_SEL to select the channel for the conversion. */ -#define DACC_MR_TAG_EN (0x1u << 20) /**< \brief (DACC_MR) Tag selection mode enabled */ -#define DACC_MR_MAXS (0x1u << 21) /**< \brief (DACC_MR) Max Speed Mode */ -#define DACC_MR_MAXS_NORMAL (0x0u << 21) /**< \brief (DACC_MR) Normal Mode */ -#define DACC_MR_MAXS_MAXIMUM (0x1u << 21) /**< \brief (DACC_MR) Max Speed Mode enabled */ -#define DACC_MR_CLKDIV (0x1u << 22) /**< \brief (DACC_MR) Clock Divider */ -#define DACC_MR_CLKDIV_DIV_2 (0x0u << 22) /**< \brief (DACC_MR) The DAC clock is MCK divided by 2 */ -#define DACC_MR_CLKDIV_DIV_4 (0x1u << 22) /**< \brief (DACC_MR) The DAC clock is MCK divided by 4 (to be used when MCK frequency is above 100MHz) */ -#define DACC_MR_STARTUP_Pos 24 -#define DACC_MR_STARTUP_Msk (0x3fu << DACC_MR_STARTUP_Pos) /**< \brief (DACC_MR) Startup Time Selection */ -#define DACC_MR_STARTUP_0 (0x0u << 24) /**< \brief (DACC_MR) 0 periods of DACClock */ -#define DACC_MR_STARTUP_8 (0x1u << 24) /**< \brief (DACC_MR) 8 periods of DACClock */ -#define DACC_MR_STARTUP_16 (0x2u << 24) /**< \brief (DACC_MR) 16 periods of DACClock */ -#define DACC_MR_STARTUP_24 (0x3u << 24) /**< \brief (DACC_MR) 24 periods of DACClock */ -#define DACC_MR_STARTUP_64 (0x4u << 24) /**< \brief (DACC_MR) 64 periods of DACClock */ -#define DACC_MR_STARTUP_80 (0x5u << 24) /**< \brief (DACC_MR) 80 periods of DACClock */ -#define DACC_MR_STARTUP_96 (0x6u << 24) /**< \brief (DACC_MR) 96 periods of DACClock */ -#define DACC_MR_STARTUP_112 (0x7u << 24) /**< \brief (DACC_MR) 112 periods of DACClock */ -#define DACC_MR_STARTUP_512 (0x8u << 24) /**< \brief (DACC_MR) 512 periods of DACClock */ -#define DACC_MR_STARTUP_576 (0x9u << 24) /**< \brief (DACC_MR) 576 periods of DACClock */ -#define DACC_MR_STARTUP_640 (0xAu << 24) /**< \brief (DACC_MR) 640 periods of DACClock */ -#define DACC_MR_STARTUP_704 (0xBu << 24) /**< \brief (DACC_MR) 704 periods of DACClock */ -#define DACC_MR_STARTUP_768 (0xCu << 24) /**< \brief (DACC_MR) 768 periods of DACClock */ -#define DACC_MR_STARTUP_832 (0xDu << 24) /**< \brief (DACC_MR) 832 periods of DACClock */ -#define DACC_MR_STARTUP_896 (0xEu << 24) /**< \brief (DACC_MR) 896 periods of DACClock */ -#define DACC_MR_STARTUP_960 (0xFu << 24) /**< \brief (DACC_MR) 960 periods of DACClock */ -#define DACC_MR_STARTUP_1024 (0x10u << 24) /**< \brief (DACC_MR) 1024 periods of DACClock */ -#define DACC_MR_STARTUP_1088 (0x11u << 24) /**< \brief (DACC_MR) 1088 periods of DACClock */ -#define DACC_MR_STARTUP_1152 (0x12u << 24) /**< \brief (DACC_MR) 1152 periods of DACClock */ -#define DACC_MR_STARTUP_1216 (0x13u << 24) /**< \brief (DACC_MR) 1216 periods of DACClock */ -#define DACC_MR_STARTUP_1280 (0x14u << 24) /**< \brief (DACC_MR) 1280 periods of DACClock */ -#define DACC_MR_STARTUP_1344 (0x15u << 24) /**< \brief (DACC_MR) 1344 periods of DACClock */ -#define DACC_MR_STARTUP_1408 (0x16u << 24) /**< \brief (DACC_MR) 1408 periods of DACClock */ -#define DACC_MR_STARTUP_1472 (0x17u << 24) /**< \brief (DACC_MR) 1472 periods of DACClock */ -#define DACC_MR_STARTUP_1536 (0x18u << 24) /**< \brief (DACC_MR) 1536 periods of DACClock */ -#define DACC_MR_STARTUP_1600 (0x19u << 24) /**< \brief (DACC_MR) 1600 periods of DACClock */ -#define DACC_MR_STARTUP_1664 (0x1Au << 24) /**< \brief (DACC_MR) 1664 periods of DACClock */ -#define DACC_MR_STARTUP_1728 (0x1Bu << 24) /**< \brief (DACC_MR) 1728 periods of DACClock */ -#define DACC_MR_STARTUP_1792 (0x1Cu << 24) /**< \brief (DACC_MR) 1792 periods of DACClock */ -#define DACC_MR_STARTUP_1856 (0x1Du << 24) /**< \brief (DACC_MR) 1856 periods of DACClock */ -#define DACC_MR_STARTUP_1920 (0x1Eu << 24) /**< \brief (DACC_MR) 1920 periods of DACClock */ -#define DACC_MR_STARTUP_1984 (0x1Fu << 24) /**< \brief (DACC_MR) 1984 periods of DACClock */ -/* -------- DACC_CHER : (DACC Offset: 0x10) Channel Enable Register -------- */ -#define DACC_CHER_CH0 (0x1u << 0) /**< \brief (DACC_CHER) Channel 0 Enable */ -#define DACC_CHER_CH1 (0x1u << 1) /**< \brief (DACC_CHER) Channel 1 Enable */ -/* -------- DACC_CHDR : (DACC Offset: 0x14) Channel Disable Register -------- */ -#define DACC_CHDR_CH0 (0x1u << 0) /**< \brief (DACC_CHDR) Channel 0 Disable */ -#define DACC_CHDR_CH1 (0x1u << 1) /**< \brief (DACC_CHDR) Channel 1 Disable */ -/* -------- DACC_CHSR : (DACC Offset: 0x18) Channel Status Register -------- */ -#define DACC_CHSR_CH0 (0x1u << 0) /**< \brief (DACC_CHSR) Channel 0 Status */ -#define DACC_CHSR_CH1 (0x1u << 1) /**< \brief (DACC_CHSR) Channel 1 Status */ -/* -------- DACC_CDR : (DACC Offset: 0x20) Conversion Data Register -------- */ -#define DACC_CDR_DATA_Pos 0 -#define DACC_CDR_DATA_Msk (0xffffffffu << DACC_CDR_DATA_Pos) /**< \brief (DACC_CDR) Data to Convert */ -#define DACC_CDR_DATA(value) ((DACC_CDR_DATA_Msk & ((value) << DACC_CDR_DATA_Pos))) -/* -------- DACC_IER : (DACC Offset: 0x24) Interrupt Enable Register -------- */ -#define DACC_IER_TXRDY (0x1u << 0) /**< \brief (DACC_IER) Transmit Ready Interrupt Enable */ -#define DACC_IER_EOC (0x1u << 1) /**< \brief (DACC_IER) End of Conversion Interrupt Enable */ -#define DACC_IER_ENDTX (0x1u << 2) /**< \brief (DACC_IER) End of Transmit Buffer Interrupt Enable */ -#define DACC_IER_TXBUFE (0x1u << 3) /**< \brief (DACC_IER) Transmit Buffer Empty Interrupt Enable */ -/* -------- DACC_IDR : (DACC Offset: 0x28) Interrupt Disable Register -------- */ -#define DACC_IDR_TXRDY (0x1u << 0) /**< \brief (DACC_IDR) Transmit Ready Interrupt Disable. */ -#define DACC_IDR_EOC (0x1u << 1) /**< \brief (DACC_IDR) End of Conversion Interrupt Disable */ -#define DACC_IDR_ENDTX (0x1u << 2) /**< \brief (DACC_IDR) End of Transmit Buffer Interrupt Disable */ -#define DACC_IDR_TXBUFE (0x1u << 3) /**< \brief (DACC_IDR) Transmit Buffer Empty Interrupt Disable */ -/* -------- DACC_IMR : (DACC Offset: 0x2C) Interrupt Mask Register -------- */ -#define DACC_IMR_TXRDY (0x1u << 0) /**< \brief (DACC_IMR) Transmit Ready Interrupt Mask */ -#define DACC_IMR_EOC (0x1u << 1) /**< \brief (DACC_IMR) End of Conversion Interrupt Mask */ -#define DACC_IMR_ENDTX (0x1u << 2) /**< \brief (DACC_IMR) End of Transmit Buffer Interrupt Mask */ -#define DACC_IMR_TXBUFE (0x1u << 3) /**< \brief (DACC_IMR) Transmit Buffer Empty Interrupt Mask */ -/* -------- DACC_ISR : (DACC Offset: 0x30) Interrupt Status Register -------- */ -#define DACC_ISR_TXRDY (0x1u << 0) /**< \brief (DACC_ISR) Transmit Ready Interrupt Flag */ -#define DACC_ISR_EOC (0x1u << 1) /**< \brief (DACC_ISR) End of Conversion Interrupt Flag */ -#define DACC_ISR_ENDTX (0x1u << 2) /**< \brief (DACC_ISR) End of DMA Interrupt Flag */ -#define DACC_ISR_TXBUFE (0x1u << 3) /**< \brief (DACC_ISR) Transmit Buffer Empty */ -/* -------- DACC_ACR : (DACC Offset: 0x94) Analog Current Register -------- */ -#define DACC_ACR_IBCTLCH0_Pos 0 -#define DACC_ACR_IBCTLCH0_Msk (0x3u << DACC_ACR_IBCTLCH0_Pos) /**< \brief (DACC_ACR) Analog Output Current Control */ -#define DACC_ACR_IBCTLCH0(value) ((DACC_ACR_IBCTLCH0_Msk & ((value) << DACC_ACR_IBCTLCH0_Pos))) -#define DACC_ACR_IBCTLCH1_Pos 2 -#define DACC_ACR_IBCTLCH1_Msk (0x3u << DACC_ACR_IBCTLCH1_Pos) /**< \brief (DACC_ACR) Analog Output Current Control */ -#define DACC_ACR_IBCTLCH1(value) ((DACC_ACR_IBCTLCH1_Msk & ((value) << DACC_ACR_IBCTLCH1_Pos))) -#define DACC_ACR_IBCTLDACCORE_Pos 8 -#define DACC_ACR_IBCTLDACCORE_Msk (0x3u << DACC_ACR_IBCTLDACCORE_Pos) /**< \brief (DACC_ACR) Bias Current Control for DAC Core */ -#define DACC_ACR_IBCTLDACCORE(value) ((DACC_ACR_IBCTLDACCORE_Msk & ((value) << DACC_ACR_IBCTLDACCORE_Pos))) -/* -------- DACC_WPMR : (DACC Offset: 0xE4) Write Protect Mode register -------- */ -#define DACC_WPMR_WPEN (0x1u << 0) /**< \brief (DACC_WPMR) Write Protect Enable */ -#define DACC_WPMR_WPKEY_Pos 8 -#define DACC_WPMR_WPKEY_Msk (0xffffffu << DACC_WPMR_WPKEY_Pos) /**< \brief (DACC_WPMR) Write Protect KEY */ -#define DACC_WPMR_WPKEY(value) ((DACC_WPMR_WPKEY_Msk & ((value) << DACC_WPMR_WPKEY_Pos))) -/* -------- DACC_WPSR : (DACC Offset: 0xE8) Write Protect Status register -------- */ -#define DACC_WPSR_WPROTERR (0x1u << 0) /**< \brief (DACC_WPSR) Write protection error */ -#define DACC_WPSR_WPROTADDR_Pos 8 -#define DACC_WPSR_WPROTADDR_Msk (0xffu << DACC_WPSR_WPROTADDR_Pos) /**< \brief (DACC_WPSR) Write protection error address */ -/* -------- DACC_TPR : (DACC Offset: 0x108) Transmit Pointer Register -------- */ -#define DACC_TPR_TXPTR_Pos 0 -#define DACC_TPR_TXPTR_Msk (0xffffffffu << DACC_TPR_TXPTR_Pos) /**< \brief (DACC_TPR) Transmit Counter Register */ -#define DACC_TPR_TXPTR(value) ((DACC_TPR_TXPTR_Msk & ((value) << DACC_TPR_TXPTR_Pos))) -/* -------- DACC_TCR : (DACC Offset: 0x10C) Transmit Counter Register -------- */ -#define DACC_TCR_TXCTR_Pos 0 -#define DACC_TCR_TXCTR_Msk (0xffffu << DACC_TCR_TXCTR_Pos) /**< \brief (DACC_TCR) Transmit Counter Register */ -#define DACC_TCR_TXCTR(value) ((DACC_TCR_TXCTR_Msk & ((value) << DACC_TCR_TXCTR_Pos))) -/* -------- DACC_TNPR : (DACC Offset: 0x118) Transmit Next Pointer Register -------- */ -#define DACC_TNPR_TXNPTR_Pos 0 -#define DACC_TNPR_TXNPTR_Msk (0xffffffffu << DACC_TNPR_TXNPTR_Pos) /**< \brief (DACC_TNPR) Transmit Next Pointer */ -#define DACC_TNPR_TXNPTR(value) ((DACC_TNPR_TXNPTR_Msk & ((value) << DACC_TNPR_TXNPTR_Pos))) -/* -------- DACC_TNCR : (DACC Offset: 0x11C) Transmit Next Counter Register -------- */ -#define DACC_TNCR_TXNCTR_Pos 0 -#define DACC_TNCR_TXNCTR_Msk (0xffffu << DACC_TNCR_TXNCTR_Pos) /**< \brief (DACC_TNCR) Transmit Counter Next */ -#define DACC_TNCR_TXNCTR(value) ((DACC_TNCR_TXNCTR_Msk & ((value) << DACC_TNCR_TXNCTR_Pos))) -/* -------- DACC_PTCR : (DACC Offset: 0x120) Transfer Control Register -------- */ -#define DACC_PTCR_RXTEN (0x1u << 0) /**< \brief (DACC_PTCR) Receiver Transfer Enable */ -#define DACC_PTCR_RXTDIS (0x1u << 1) /**< \brief (DACC_PTCR) Receiver Transfer Disable */ -#define DACC_PTCR_TXTEN (0x1u << 8) /**< \brief (DACC_PTCR) Transmitter Transfer Enable */ -#define DACC_PTCR_TXTDIS (0x1u << 9) /**< \brief (DACC_PTCR) Transmitter Transfer Disable */ -/* -------- DACC_PTSR : (DACC Offset: 0x124) Transfer Status Register -------- */ -#define DACC_PTSR_RXTEN (0x1u << 0) /**< \brief (DACC_PTSR) Receiver Transfer Enable */ -#define DACC_PTSR_TXTEN (0x1u << 8) /**< \brief (DACC_PTSR) Transmitter Transfer Enable */ - -/*@}*/ - - -#endif /* _SAM4E_DACC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/dmac.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/dmac.h deleted file mode 100644 index e507ce609..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/dmac.h +++ /dev/null @@ -1,305 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_DMAC_COMPONENT_ -#define _SAM4E_DMAC_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR DMA Controller */ -/* ============================================================================= */ -/** \addtogroup SAM4E_DMAC DMA Controller */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief DmacCh_num hardware registers */ -typedef struct { - RwReg DMAC_SADDR; /**< \brief (DmacCh_num Offset: 0x0) DMAC Channel Source Address Register */ - RwReg DMAC_DADDR; /**< \brief (DmacCh_num Offset: 0x4) DMAC Channel Destination Address Register */ - RwReg DMAC_DSCR; /**< \brief (DmacCh_num Offset: 0x8) DMAC Channel Descriptor Address Register */ - RwReg DMAC_CTRLA; /**< \brief (DmacCh_num Offset: 0xC) DMAC Channel Control A Register */ - RwReg DMAC_CTRLB; /**< \brief (DmacCh_num Offset: 0x10) DMAC Channel Control B Register */ - RwReg DMAC_CFG; /**< \brief (DmacCh_num Offset: 0x14) DMAC Channel Configuration Register */ - RoReg Reserved1[4]; -} DmacCh_num; -/** \brief Dmac hardware registers */ -#define DMACCH_NUM_NUMBER 4 -typedef struct { - RwReg DMAC_GCFG; /**< \brief (Dmac Offset: 0x000) DMAC Global Configuration Register */ - RwReg DMAC_EN; /**< \brief (Dmac Offset: 0x004) DMAC Enable Register */ - RwReg DMAC_SREQ; /**< \brief (Dmac Offset: 0x008) DMAC Software Single Request Register */ - RwReg DMAC_CREQ; /**< \brief (Dmac Offset: 0x00C) DMAC Software Chunk Transfer Request Register */ - RwReg DMAC_LAST; /**< \brief (Dmac Offset: 0x010) DMAC Software Last Transfer Flag Register */ - RoReg Reserved1[1]; - WoReg DMAC_EBCIER; /**< \brief (Dmac Offset: 0x018) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Enable register. */ - WoReg DMAC_EBCIDR; /**< \brief (Dmac Offset: 0x01C) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Disable register. */ - RoReg DMAC_EBCIMR; /**< \brief (Dmac Offset: 0x020) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Mask Register. */ - RoReg DMAC_EBCISR; /**< \brief (Dmac Offset: 0x024) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Status Register. */ - WoReg DMAC_CHER; /**< \brief (Dmac Offset: 0x028) DMAC Channel Handler Enable Register */ - WoReg DMAC_CHDR; /**< \brief (Dmac Offset: 0x02C) DMAC Channel Handler Disable Register */ - RoReg DMAC_CHSR; /**< \brief (Dmac Offset: 0x030) DMAC Channel Handler Status Register */ - RoReg Reserved2[2]; - DmacCh_num DMAC_CH_NUM[DMACCH_NUM_NUMBER]; /**< \brief (Dmac Offset: 0x3C) ch_num = 0 .. 3 */ - RoReg Reserved3[66]; - RwReg DMAC_WPMR; /**< \brief (Dmac Offset: 0x1E4) DMAC Write Protect Mode Register */ - RoReg DMAC_WPSR; /**< \brief (Dmac Offset: 0x1E8) DMAC Write Protect Status Register */ -} Dmac; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- DMAC_GCFG : (DMAC Offset: 0x000) DMAC Global Configuration Register -------- */ -#define DMAC_GCFG_ARB_CFG (0x1u << 4) /**< \brief (DMAC_GCFG) Arbiter Configuration */ -#define DMAC_GCFG_ARB_CFG_FIXED (0x0u << 4) /**< \brief (DMAC_GCFG) Fixed priority arbiter. */ -#define DMAC_GCFG_ARB_CFG_ROUND_ROBIN (0x1u << 4) /**< \brief (DMAC_GCFG) Modified round robin arbiter. */ -/* -------- DMAC_EN : (DMAC Offset: 0x004) DMAC Enable Register -------- */ -#define DMAC_EN_ENABLE (0x1u << 0) /**< \brief (DMAC_EN) General Enable of DMA */ -/* -------- DMAC_SREQ : (DMAC Offset: 0x008) DMAC Software Single Request Register -------- */ -#define DMAC_SREQ_SSREQ0 (0x1u << 0) /**< \brief (DMAC_SREQ) Source Request */ -#define DMAC_SREQ_DSREQ0 (0x1u << 1) /**< \brief (DMAC_SREQ) Destination Request */ -#define DMAC_SREQ_SSREQ1 (0x1u << 2) /**< \brief (DMAC_SREQ) Source Request */ -#define DMAC_SREQ_DSREQ1 (0x1u << 3) /**< \brief (DMAC_SREQ) Destination Request */ -#define DMAC_SREQ_SSREQ2 (0x1u << 4) /**< \brief (DMAC_SREQ) Source Request */ -#define DMAC_SREQ_DSREQ2 (0x1u << 5) /**< \brief (DMAC_SREQ) Destination Request */ -#define DMAC_SREQ_SSREQ3 (0x1u << 6) /**< \brief (DMAC_SREQ) Source Request */ -#define DMAC_SREQ_DSREQ3 (0x1u << 7) /**< \brief (DMAC_SREQ) Destination Request */ -/* -------- DMAC_CREQ : (DMAC Offset: 0x00C) DMAC Software Chunk Transfer Request Register -------- */ -#define DMAC_CREQ_SCREQ0 (0x1u << 0) /**< \brief (DMAC_CREQ) Source Chunk Request */ -#define DMAC_CREQ_DCREQ0 (0x1u << 1) /**< \brief (DMAC_CREQ) Destination Chunk Request */ -#define DMAC_CREQ_SCREQ1 (0x1u << 2) /**< \brief (DMAC_CREQ) Source Chunk Request */ -#define DMAC_CREQ_DCREQ1 (0x1u << 3) /**< \brief (DMAC_CREQ) Destination Chunk Request */ -#define DMAC_CREQ_SCREQ2 (0x1u << 4) /**< \brief (DMAC_CREQ) Source Chunk Request */ -#define DMAC_CREQ_DCREQ2 (0x1u << 5) /**< \brief (DMAC_CREQ) Destination Chunk Request */ -#define DMAC_CREQ_SCREQ3 (0x1u << 6) /**< \brief (DMAC_CREQ) Source Chunk Request */ -#define DMAC_CREQ_DCREQ3 (0x1u << 7) /**< \brief (DMAC_CREQ) Destination Chunk Request */ -/* -------- DMAC_LAST : (DMAC Offset: 0x010) DMAC Software Last Transfer Flag Register -------- */ -#define DMAC_LAST_SLAST0 (0x1u << 0) /**< \brief (DMAC_LAST) Source Last */ -#define DMAC_LAST_DLAST0 (0x1u << 1) /**< \brief (DMAC_LAST) Destination Last */ -#define DMAC_LAST_SLAST1 (0x1u << 2) /**< \brief (DMAC_LAST) Source Last */ -#define DMAC_LAST_DLAST1 (0x1u << 3) /**< \brief (DMAC_LAST) Destination Last */ -#define DMAC_LAST_SLAST2 (0x1u << 4) /**< \brief (DMAC_LAST) Source Last */ -#define DMAC_LAST_DLAST2 (0x1u << 5) /**< \brief (DMAC_LAST) Destination Last */ -#define DMAC_LAST_SLAST3 (0x1u << 6) /**< \brief (DMAC_LAST) Source Last */ -#define DMAC_LAST_DLAST3 (0x1u << 7) /**< \brief (DMAC_LAST) Destination Last */ -/* -------- DMAC_EBCIER : (DMAC Offset: 0x018) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Enable register. -------- */ -#define DMAC_EBCIER_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCIER) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIER_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCIER) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIER_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCIER) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIER_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCIER) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIER_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCIER) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIER_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCIER) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIER_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCIER) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIER_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCIER) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIER_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCIER) Access Error [3:0] */ -#define DMAC_EBCIER_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCIER) Access Error [3:0] */ -#define DMAC_EBCIER_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCIER) Access Error [3:0] */ -#define DMAC_EBCIER_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCIER) Access Error [3:0] */ -/* -------- DMAC_EBCIDR : (DMAC Offset: 0x01C) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Disable register. -------- */ -#define DMAC_EBCIDR_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCIDR) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIDR_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCIDR) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIDR_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCIDR) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIDR_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCIDR) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIDR_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCIDR) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIDR_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCIDR) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIDR_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCIDR) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIDR_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCIDR) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIDR_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCIDR) Access Error [3:0] */ -#define DMAC_EBCIDR_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCIDR) Access Error [3:0] */ -#define DMAC_EBCIDR_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCIDR) Access Error [3:0] */ -#define DMAC_EBCIDR_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCIDR) Access Error [3:0] */ -/* -------- DMAC_EBCIMR : (DMAC Offset: 0x020) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Mask Register. -------- */ -#define DMAC_EBCIMR_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCIMR) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIMR_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCIMR) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIMR_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCIMR) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIMR_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCIMR) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIMR_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCIMR) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIMR_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCIMR) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIMR_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCIMR) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIMR_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCIMR) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCIMR_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCIMR) Access Error [3:0] */ -#define DMAC_EBCIMR_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCIMR) Access Error [3:0] */ -#define DMAC_EBCIMR_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCIMR) Access Error [3:0] */ -#define DMAC_EBCIMR_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCIMR) Access Error [3:0] */ -/* -------- DMAC_EBCISR : (DMAC Offset: 0x024) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Status Register. -------- */ -#define DMAC_EBCISR_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCISR) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCISR_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCISR) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCISR_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCISR) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCISR_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCISR) Buffer Transfer Completed [3:0] */ -#define DMAC_EBCISR_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCISR) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCISR_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCISR) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCISR_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCISR) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCISR_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCISR) Chained Buffer Transfer Completed [3:0] */ -#define DMAC_EBCISR_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCISR) Access Error [3:0] */ -#define DMAC_EBCISR_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCISR) Access Error [3:0] */ -#define DMAC_EBCISR_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCISR) Access Error [3:0] */ -#define DMAC_EBCISR_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCISR) Access Error [3:0] */ -/* -------- DMAC_CHER : (DMAC Offset: 0x028) DMAC Channel Handler Enable Register -------- */ -#define DMAC_CHER_ENA0 (0x1u << 0) /**< \brief (DMAC_CHER) Enable [3:0] */ -#define DMAC_CHER_ENA1 (0x1u << 1) /**< \brief (DMAC_CHER) Enable [3:0] */ -#define DMAC_CHER_ENA2 (0x1u << 2) /**< \brief (DMAC_CHER) Enable [3:0] */ -#define DMAC_CHER_ENA3 (0x1u << 3) /**< \brief (DMAC_CHER) Enable [3:0] */ -#define DMAC_CHER_SUSP0 (0x1u << 8) /**< \brief (DMAC_CHER) Suspend [3:0] */ -#define DMAC_CHER_SUSP1 (0x1u << 9) /**< \brief (DMAC_CHER) Suspend [3:0] */ -#define DMAC_CHER_SUSP2 (0x1u << 10) /**< \brief (DMAC_CHER) Suspend [3:0] */ -#define DMAC_CHER_SUSP3 (0x1u << 11) /**< \brief (DMAC_CHER) Suspend [3:0] */ -#define DMAC_CHER_KEEP0 (0x1u << 24) /**< \brief (DMAC_CHER) Keep on [3:0] */ -#define DMAC_CHER_KEEP1 (0x1u << 25) /**< \brief (DMAC_CHER) Keep on [3:0] */ -#define DMAC_CHER_KEEP2 (0x1u << 26) /**< \brief (DMAC_CHER) Keep on [3:0] */ -#define DMAC_CHER_KEEP3 (0x1u << 27) /**< \brief (DMAC_CHER) Keep on [3:0] */ -/* -------- DMAC_CHDR : (DMAC Offset: 0x02C) DMAC Channel Handler Disable Register -------- */ -#define DMAC_CHDR_DIS0 (0x1u << 0) /**< \brief (DMAC_CHDR) Disable [3:0] */ -#define DMAC_CHDR_DIS1 (0x1u << 1) /**< \brief (DMAC_CHDR) Disable [3:0] */ -#define DMAC_CHDR_DIS2 (0x1u << 2) /**< \brief (DMAC_CHDR) Disable [3:0] */ -#define DMAC_CHDR_DIS3 (0x1u << 3) /**< \brief (DMAC_CHDR) Disable [3:0] */ -#define DMAC_CHDR_RES0 (0x1u << 8) /**< \brief (DMAC_CHDR) Resume [3:0] */ -#define DMAC_CHDR_RES1 (0x1u << 9) /**< \brief (DMAC_CHDR) Resume [3:0] */ -#define DMAC_CHDR_RES2 (0x1u << 10) /**< \brief (DMAC_CHDR) Resume [3:0] */ -#define DMAC_CHDR_RES3 (0x1u << 11) /**< \brief (DMAC_CHDR) Resume [3:0] */ -/* -------- DMAC_CHSR : (DMAC Offset: 0x030) DMAC Channel Handler Status Register -------- */ -#define DMAC_CHSR_ENA0 (0x1u << 0) /**< \brief (DMAC_CHSR) Enable [3:0] */ -#define DMAC_CHSR_ENA1 (0x1u << 1) /**< \brief (DMAC_CHSR) Enable [3:0] */ -#define DMAC_CHSR_ENA2 (0x1u << 2) /**< \brief (DMAC_CHSR) Enable [3:0] */ -#define DMAC_CHSR_ENA3 (0x1u << 3) /**< \brief (DMAC_CHSR) Enable [3:0] */ -#define DMAC_CHSR_SUSP0 (0x1u << 8) /**< \brief (DMAC_CHSR) Suspend [3:0] */ -#define DMAC_CHSR_SUSP1 (0x1u << 9) /**< \brief (DMAC_CHSR) Suspend [3:0] */ -#define DMAC_CHSR_SUSP2 (0x1u << 10) /**< \brief (DMAC_CHSR) Suspend [3:0] */ -#define DMAC_CHSR_SUSP3 (0x1u << 11) /**< \brief (DMAC_CHSR) Suspend [3:0] */ -#define DMAC_CHSR_EMPT0 (0x1u << 16) /**< \brief (DMAC_CHSR) Empty [3:0] */ -#define DMAC_CHSR_EMPT1 (0x1u << 17) /**< \brief (DMAC_CHSR) Empty [3:0] */ -#define DMAC_CHSR_EMPT2 (0x1u << 18) /**< \brief (DMAC_CHSR) Empty [3:0] */ -#define DMAC_CHSR_EMPT3 (0x1u << 19) /**< \brief (DMAC_CHSR) Empty [3:0] */ -#define DMAC_CHSR_STAL0 (0x1u << 24) /**< \brief (DMAC_CHSR) Stalled [3:0] */ -#define DMAC_CHSR_STAL1 (0x1u << 25) /**< \brief (DMAC_CHSR) Stalled [3:0] */ -#define DMAC_CHSR_STAL2 (0x1u << 26) /**< \brief (DMAC_CHSR) Stalled [3:0] */ -#define DMAC_CHSR_STAL3 (0x1u << 27) /**< \brief (DMAC_CHSR) Stalled [3:0] */ -/* -------- DMAC_SADDR : (DMAC Offset: N/A) DMAC Channel Source Address Register -------- */ -#define DMAC_SADDR_SADDR_Pos 0 -#define DMAC_SADDR_SADDR_Msk (0xffffffffu << DMAC_SADDR_SADDR_Pos) /**< \brief (DMAC_SADDR) Channel x Source Address */ -#define DMAC_SADDR_SADDR(value) ((DMAC_SADDR_SADDR_Msk & ((value) << DMAC_SADDR_SADDR_Pos))) -/* -------- DMAC_DADDR : (DMAC Offset: N/A) DMAC Channel Destination Address Register -------- */ -#define DMAC_DADDR_DADDR_Pos 0 -#define DMAC_DADDR_DADDR_Msk (0xffffffffu << DMAC_DADDR_DADDR_Pos) /**< \brief (DMAC_DADDR) Channel x Destination Address */ -#define DMAC_DADDR_DADDR(value) ((DMAC_DADDR_DADDR_Msk & ((value) << DMAC_DADDR_DADDR_Pos))) -/* -------- DMAC_DSCR : (DMAC Offset: N/A) DMAC Channel Descriptor Address Register -------- */ -#define DMAC_DSCR_DSCR_Pos 2 -#define DMAC_DSCR_DSCR_Msk (0x3fffffffu << DMAC_DSCR_DSCR_Pos) /**< \brief (DMAC_DSCR) Buffer Transfer Descriptor Address */ -#define DMAC_DSCR_DSCR(value) ((DMAC_DSCR_DSCR_Msk & ((value) << DMAC_DSCR_DSCR_Pos))) -/* -------- DMAC_CTRLA : (DMAC Offset: N/A) DMAC Channel Control A Register -------- */ -#define DMAC_CTRLA_BTSIZE_Pos 0 -#define DMAC_CTRLA_BTSIZE_Msk (0xffffu << DMAC_CTRLA_BTSIZE_Pos) /**< \brief (DMAC_CTRLA) Buffer Transfer Size */ -#define DMAC_CTRLA_BTSIZE(value) ((DMAC_CTRLA_BTSIZE_Msk & ((value) << DMAC_CTRLA_BTSIZE_Pos))) -#define DMAC_CTRLA_SRC_WIDTH_Pos 24 -#define DMAC_CTRLA_SRC_WIDTH_Msk (0x3u << DMAC_CTRLA_SRC_WIDTH_Pos) /**< \brief (DMAC_CTRLA) Transfer Width for the Source */ -#define DMAC_CTRLA_SRC_WIDTH_BYTE (0x0u << 24) /**< \brief (DMAC_CTRLA) the transfer size is set to 8-bit width */ -#define DMAC_CTRLA_SRC_WIDTH_HALF_WORD (0x1u << 24) /**< \brief (DMAC_CTRLA) the transfer size is set to 16-bit width */ -#define DMAC_CTRLA_SRC_WIDTH_WORD (0x2u << 24) /**< \brief (DMAC_CTRLA) the transfer size is set to 32-bit width */ -#define DMAC_CTRLA_DST_WIDTH_Pos 28 -#define DMAC_CTRLA_DST_WIDTH_Msk (0x3u << DMAC_CTRLA_DST_WIDTH_Pos) /**< \brief (DMAC_CTRLA) Transfer Width for the Destination */ -#define DMAC_CTRLA_DST_WIDTH_BYTE (0x0u << 28) /**< \brief (DMAC_CTRLA) the transfer size is set to 8-bit width */ -#define DMAC_CTRLA_DST_WIDTH_HALF_WORD (0x1u << 28) /**< \brief (DMAC_CTRLA) the transfer size is set to 16-bit width */ -#define DMAC_CTRLA_DST_WIDTH_WORD (0x2u << 28) /**< \brief (DMAC_CTRLA) the transfer size is set to 32-bit width */ -#define DMAC_CTRLA_DONE (0x1u << 31) /**< \brief (DMAC_CTRLA) Current Descriptor Stop Command and Transfer Completed Memory Indicator */ -/* -------- DMAC_CTRLB : (DMAC Offset: N/A) DMAC Channel Control B Register -------- */ -#define DMAC_CTRLB_SRC_DSCR (0x1u << 16) /**< \brief (DMAC_CTRLB) Source Address Descriptor */ -#define DMAC_CTRLB_SRC_DSCR_FETCH_FROM_MEM (0x0u << 16) /**< \brief (DMAC_CTRLB) Source address is updated when the descriptor is fetched from the memory. */ -#define DMAC_CTRLB_SRC_DSCR_FETCH_DISABLE (0x1u << 16) /**< \brief (DMAC_CTRLB) Buffer Descriptor Fetch operation is disabled for the source. */ -#define DMAC_CTRLB_DST_DSCR (0x1u << 20) /**< \brief (DMAC_CTRLB) Destination Address Descriptor */ -#define DMAC_CTRLB_DST_DSCR_FETCH_FROM_MEM (0x0u << 20) /**< \brief (DMAC_CTRLB) Destination address is updated when the descriptor is fetched from the memory. */ -#define DMAC_CTRLB_DST_DSCR_FETCH_DISABLE (0x1u << 20) /**< \brief (DMAC_CTRLB) Buffer Descriptor Fetch operation is disabled for the destination. */ -#define DMAC_CTRLB_FC_Pos 21 -#define DMAC_CTRLB_FC_Msk (0x3u << DMAC_CTRLB_FC_Pos) /**< \brief (DMAC_CTRLB) Flow Control */ -#define DMAC_CTRLB_FC_MEM2MEM_DMA_FC (0x0u << 21) /**< \brief (DMAC_CTRLB) Memory-to-Memory Transfer DMAC is flow controller */ -#define DMAC_CTRLB_FC_MEM2PER_DMA_FC (0x1u << 21) /**< \brief (DMAC_CTRLB) Memory-to-Peripheral Transfer DMAC is flow controller */ -#define DMAC_CTRLB_FC_PER2MEM_DMA_FC (0x2u << 21) /**< \brief (DMAC_CTRLB) Peripheral-to-Memory Transfer DMAC is flow controller */ -#define DMAC_CTRLB_FC_PER2PER_DMA_FC (0x3u << 21) /**< \brief (DMAC_CTRLB) Peripheral-to-Peripheral Transfer DMAC is flow controller */ -#define DMAC_CTRLB_SRC_INCR_Pos 24 -#define DMAC_CTRLB_SRC_INCR_Msk (0x3u << DMAC_CTRLB_SRC_INCR_Pos) /**< \brief (DMAC_CTRLB) Incrementing, Decrementing or Fixed Address for the Source */ -#define DMAC_CTRLB_SRC_INCR_INCREMENTING (0x0u << 24) /**< \brief (DMAC_CTRLB) The source address is incremented */ -#define DMAC_CTRLB_SRC_INCR_DECREMENTING (0x1u << 24) /**< \brief (DMAC_CTRLB) The source address is decremented */ -#define DMAC_CTRLB_SRC_INCR_FIXED (0x2u << 24) /**< \brief (DMAC_CTRLB) The source address remains unchanged */ -#define DMAC_CTRLB_DST_INCR_Pos 28 -#define DMAC_CTRLB_DST_INCR_Msk (0x3u << DMAC_CTRLB_DST_INCR_Pos) /**< \brief (DMAC_CTRLB) Incrementing, Decrementing or Fixed Address for the Destination */ -#define DMAC_CTRLB_DST_INCR_INCREMENTING (0x0u << 28) /**< \brief (DMAC_CTRLB) The destination address is incremented */ -#define DMAC_CTRLB_DST_INCR_DECREMENTING (0x1u << 28) /**< \brief (DMAC_CTRLB) The destination address is decremented */ -#define DMAC_CTRLB_DST_INCR_FIXED (0x2u << 28) /**< \brief (DMAC_CTRLB) The destination address remains unchanged */ -#define DMAC_CTRLB_IEN (0x1u << 30) /**< \brief (DMAC_CTRLB) Interrupt Enable Not */ -/* -------- DMAC_CFG : (DMAC Offset: N/A) DMAC Channel Configuration Register -------- */ -#define DMAC_CFG_SRC_PER_Pos 0 -#define DMAC_CFG_SRC_PER_Msk (0xfu << DMAC_CFG_SRC_PER_Pos) /**< \brief (DMAC_CFG) Source with Peripheral identifier */ -#define DMAC_CFG_SRC_PER(value) ((DMAC_CFG_SRC_PER_Msk & ((value) << DMAC_CFG_SRC_PER_Pos))) -#define DMAC_CFG_DST_PER_Pos 4 -#define DMAC_CFG_DST_PER_Msk (0xfu << DMAC_CFG_DST_PER_Pos) /**< \brief (DMAC_CFG) Destination with Peripheral identifier */ -#define DMAC_CFG_DST_PER(value) ((DMAC_CFG_DST_PER_Msk & ((value) << DMAC_CFG_DST_PER_Pos))) -#define DMAC_CFG_SRC_H2SEL (0x1u << 9) /**< \brief (DMAC_CFG) Software or Hardware Selection for the Source */ -#define DMAC_CFG_SRC_H2SEL_SW (0x0u << 9) /**< \brief (DMAC_CFG) Software handshaking interface is used to trigger a transfer request. */ -#define DMAC_CFG_SRC_H2SEL_HW (0x1u << 9) /**< \brief (DMAC_CFG) Hardware handshaking interface is used to trigger a transfer request. */ -#define DMAC_CFG_DST_H2SEL (0x1u << 13) /**< \brief (DMAC_CFG) Software or Hardware Selection for the Destination */ -#define DMAC_CFG_DST_H2SEL_SW (0x0u << 13) /**< \brief (DMAC_CFG) Software handshaking interface is used to trigger a transfer request. */ -#define DMAC_CFG_DST_H2SEL_HW (0x1u << 13) /**< \brief (DMAC_CFG) Hardware handshaking interface is used to trigger a transfer request. */ -#define DMAC_CFG_SOD (0x1u << 16) /**< \brief (DMAC_CFG) Stop On Done */ -#define DMAC_CFG_SOD_DISABLE (0x0u << 16) /**< \brief (DMAC_CFG) STOP ON DONE disabled, the descriptor fetch operation ignores DONE Field of CTRLA register. */ -#define DMAC_CFG_SOD_ENABLE (0x1u << 16) /**< \brief (DMAC_CFG) STOP ON DONE activated, the DMAC module is automatically disabled if DONE FIELD is set to 1. */ -#define DMAC_CFG_LOCK_IF (0x1u << 20) /**< \brief (DMAC_CFG) Interface Lock */ -#define DMAC_CFG_LOCK_IF_DISABLE (0x0u << 20) /**< \brief (DMAC_CFG) Interface Lock capability is disabled */ -#define DMAC_CFG_LOCK_IF_ENABLE (0x1u << 20) /**< \brief (DMAC_CFG) Interface Lock capability is enabled */ -#define DMAC_CFG_LOCK_B (0x1u << 21) /**< \brief (DMAC_CFG) Bus Lock */ -#define DMAC_CFG_LOCK_B_DISABLE (0x0u << 21) /**< \brief (DMAC_CFG) AHB Bus Locking capability is disabled. */ -#define DMAC_CFG_LOCK_IF_L (0x1u << 22) /**< \brief (DMAC_CFG) Master Interface Arbiter Lock */ -#define DMAC_CFG_LOCK_IF_L_CHUNK (0x0u << 22) /**< \brief (DMAC_CFG) The Master Interface Arbiter is locked by the channel x for a chunk transfer. */ -#define DMAC_CFG_LOCK_IF_L_BUFFER (0x1u << 22) /**< \brief (DMAC_CFG) The Master Interface Arbiter is locked by the channel x for a buffer transfer. */ -#define DMAC_CFG_AHB_PROT_Pos 24 -#define DMAC_CFG_AHB_PROT_Msk (0x7u << DMAC_CFG_AHB_PROT_Pos) /**< \brief (DMAC_CFG) AHB Protection */ -#define DMAC_CFG_AHB_PROT(value) ((DMAC_CFG_AHB_PROT_Msk & ((value) << DMAC_CFG_AHB_PROT_Pos))) -#define DMAC_CFG_FIFOCFG_Pos 28 -#define DMAC_CFG_FIFOCFG_Msk (0x3u << DMAC_CFG_FIFOCFG_Pos) /**< \brief (DMAC_CFG) FIFO Configuration */ -#define DMAC_CFG_FIFOCFG_ALAP_CFG (0x0u << 28) /**< \brief (DMAC_CFG) The largest defined length AHB burst is performed on the destination AHB interface. */ -#define DMAC_CFG_FIFOCFG_HALF_CFG (0x1u << 28) /**< \brief (DMAC_CFG) When half FIFO size is available/filled, a source/destination request is serviced. */ -#define DMAC_CFG_FIFOCFG_ASAP_CFG (0x2u << 28) /**< \brief (DMAC_CFG) When there is enough space/data available to perform a single AHB access, then the request is serviced. */ -/* -------- DMAC_WPMR : (DMAC Offset: 0x1E4) DMAC Write Protect Mode Register -------- */ -#define DMAC_WPMR_WPEN (0x1u << 0) /**< \brief (DMAC_WPMR) Write Protect Enable */ -#define DMAC_WPMR_WPKEY_Pos 8 -#define DMAC_WPMR_WPKEY_Msk (0xffffffu << DMAC_WPMR_WPKEY_Pos) /**< \brief (DMAC_WPMR) Write Protect KEY */ -#define DMAC_WPMR_WPKEY(value) ((DMAC_WPMR_WPKEY_Msk & ((value) << DMAC_WPMR_WPKEY_Pos))) -/* -------- DMAC_WPSR : (DMAC Offset: 0x1E8) DMAC Write Protect Status Register -------- */ -#define DMAC_WPSR_WPVS (0x1u << 0) /**< \brief (DMAC_WPSR) Write Protect Violation Status */ -#define DMAC_WPSR_WPVSRC_Pos 8 -#define DMAC_WPSR_WPVSRC_Msk (0xffffu << DMAC_WPSR_WPVSRC_Pos) /**< \brief (DMAC_WPSR) Write Protect Violation Source */ - -/*@}*/ - - -#endif /* _SAM4E_DMAC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/efc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/efc.h deleted file mode 100644 index d5d039100..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/efc.h +++ /dev/null @@ -1,110 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_EFC_COMPONENT_ -#define _SAM4E_EFC_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Embedded Flash Controller */ -/* ============================================================================= */ -/** \addtogroup SAM4E_EFC Embedded Flash Controller */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Efc hardware registers */ -typedef struct { - RwReg EEFC_FMR; /**< \brief (Efc Offset: 0x00) EEFC Flash Mode Register */ - WoReg EEFC_FCR; /**< \brief (Efc Offset: 0x04) EEFC Flash Command Register */ - RoReg EEFC_FSR; /**< \brief (Efc Offset: 0x08) EEFC Flash Status Register */ - RoReg EEFC_FRR; /**< \brief (Efc Offset: 0x0C) EEFC Flash Result Register */ -} Efc; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- EEFC_FMR : (EFC Offset: 0x00) EEFC Flash Mode Register -------- */ -#define EEFC_FMR_FRDY (0x1u << 0) /**< \brief (EEFC_FMR) Ready Interrupt Enable */ -#define EEFC_FMR_FWS_Pos 8 -#define EEFC_FMR_FWS_Msk (0xfu << EEFC_FMR_FWS_Pos) /**< \brief (EEFC_FMR) Flash Wait State */ -#define EEFC_FMR_FWS(value) ((EEFC_FMR_FWS_Msk & ((value) << EEFC_FMR_FWS_Pos))) -#define EEFC_FMR_SCOD (0x1u << 16) /**< \brief (EEFC_FMR) Sequential Code Optimization Disable */ -#define EEFC_FMR_FAM (0x1u << 24) /**< \brief (EEFC_FMR) Flash Access Mode */ -#define EEFC_FMR_CLOE (0x1u << 26) /**< \brief (EEFC_FMR) Code Loops Optimization Enable */ -/* -------- EEFC_FCR : (EFC Offset: 0x04) EEFC Flash Command Register -------- */ -#define EEFC_FCR_FCMD_Pos 0 -#define EEFC_FCR_FCMD_Msk (0xffu << EEFC_FCR_FCMD_Pos) /**< \brief (EEFC_FCR) Flash Command */ -#define EEFC_FCR_FCMD_GETD (0x0u << 0) /**< \brief (EEFC_FCR) Get Flash Descriptor */ -#define EEFC_FCR_FCMD_WP (0x1u << 0) /**< \brief (EEFC_FCR) Write page */ -#define EEFC_FCR_FCMD_WPL (0x2u << 0) /**< \brief (EEFC_FCR) Write page and lock */ -#define EEFC_FCR_FCMD_EWP (0x3u << 0) /**< \brief (EEFC_FCR) Erase page and write page */ -#define EEFC_FCR_FCMD_EWPL (0x4u << 0) /**< \brief (EEFC_FCR) Erase page and write page then lock */ -#define EEFC_FCR_FCMD_EA (0x5u << 0) /**< \brief (EEFC_FCR) Erase all */ -#define EEFC_FCR_FCMD_EPA (0x7u << 0) /**< \brief (EEFC_FCR) Erase Pages */ -#define EEFC_FCR_FCMD_SLB (0x8u << 0) /**< \brief (EEFC_FCR) Set Lock Bit */ -#define EEFC_FCR_FCMD_CLB (0x9u << 0) /**< \brief (EEFC_FCR) Clear Lock Bit */ -#define EEFC_FCR_FCMD_GLB (0xAu << 0) /**< \brief (EEFC_FCR) Get Lock Bit */ -#define EEFC_FCR_FCMD_SGPB (0xBu << 0) /**< \brief (EEFC_FCR) Set GPNVM Bit */ -#define EEFC_FCR_FCMD_CGPB (0xCu << 0) /**< \brief (EEFC_FCR) Clear GPNVM Bit */ -#define EEFC_FCR_FCMD_GGPB (0xDu << 0) /**< \brief (EEFC_FCR) Get GPNVM Bit */ -#define EEFC_FCR_FCMD_STUI (0xEu << 0) /**< \brief (EEFC_FCR) Start Read Unique Identifier */ -#define EEFC_FCR_FCMD_SPUI (0xFu << 0) /**< \brief (EEFC_FCR) Stop Read Unique Identifier */ -#define EEFC_FCR_FCMD_GCALB (0x10u << 0) /**< \brief (EEFC_FCR) Get CALIB Bit */ -#define EEFC_FCR_FCMD_ES (0x11u << 0) /**< \brief (EEFC_FCR) Erase Sector */ -#define EEFC_FCR_FCMD_WUS (0x12u << 0) /**< \brief (EEFC_FCR) Write User Signature */ -#define EEFC_FCR_FCMD_EUS (0x13u << 0) /**< \brief (EEFC_FCR) Erase User Signature */ -#define EEFC_FCR_FCMD_STUS (0x14u << 0) /**< \brief (EEFC_FCR) Start Read User Signature */ -#define EEFC_FCR_FCMD_SPUS (0x15u << 0) /**< \brief (EEFC_FCR) Stop Read User Signature */ -#define EEFC_FCR_FARG_Pos 8 -#define EEFC_FCR_FARG_Msk (0xffffu << EEFC_FCR_FARG_Pos) /**< \brief (EEFC_FCR) Flash Command Argument */ -#define EEFC_FCR_FARG(value) ((EEFC_FCR_FARG_Msk & ((value) << EEFC_FCR_FARG_Pos))) -#define EEFC_FCR_FKEY_Pos 24 -#define EEFC_FCR_FKEY_Msk (0xffu << EEFC_FCR_FKEY_Pos) /**< \brief (EEFC_FCR) Flash Writing Protection Key */ -#define EEFC_FCR_FKEY_PASSWD (0x5Au << 24) /**< \brief (EEFC_FCR) The 0x5A value enables the command defined by the bits of the register. If the field is written with a different value, the write is not performed and no action is started. */ -/* -------- EEFC_FSR : (EFC Offset: 0x08) EEFC Flash Status Register -------- */ -#define EEFC_FSR_FRDY (0x1u << 0) /**< \brief (EEFC_FSR) Flash Ready Status */ -#define EEFC_FSR_FCMDE (0x1u << 1) /**< \brief (EEFC_FSR) Flash Command Error Status */ -#define EEFC_FSR_FLOCKE (0x1u << 2) /**< \brief (EEFC_FSR) Flash Lock Error Status */ -#define EEFC_FSR_FLERR (0x1u << 3) /**< \brief (EEFC_FSR) Flash Error Status */ -/* -------- EEFC_FRR : (EFC Offset: 0x0C) EEFC Flash Result Register -------- */ -#define EEFC_FRR_FVALUE_Pos 0 -#define EEFC_FRR_FVALUE_Msk (0xffffffffu << EEFC_FRR_FVALUE_Pos) /**< \brief (EEFC_FRR) Flash Result Value */ - -/*@}*/ - - -#endif /* _SAM4E_EFC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/gmac.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/gmac.h deleted file mode 100644 index 164b397ca..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/gmac.h +++ /dev/null @@ -1,627 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_GMAC_COMPONENT_ -#define _SAM4E_GMAC_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Gigabit Ethernet MAC */ -/* ============================================================================= */ -/** \addtogroup SAM4E_GMAC Gigabit Ethernet MAC */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief GmacSa hardware registers */ -typedef struct { - RwReg GMAC_SAB; /**< \brief (GmacSa Offset: 0x0) Specific Address 1 Bottom [31:0] Register */ - RwReg GMAC_SAT; /**< \brief (GmacSa Offset: 0x4) Specific Address 1 Top [47:32] Register */ -} GmacSa; -/** \brief Gmac hardware registers */ -#define GMACSA_NUMBER 4 -typedef struct { - RwReg GMAC_NCR; /**< \brief (Gmac Offset: 0x000) Network Control Register */ - RwReg GMAC_NCFGR; /**< \brief (Gmac Offset: 0x004) Network Configuration Register */ - RoReg GMAC_NSR; /**< \brief (Gmac Offset: 0x008) Network Status Register */ - RwReg GMAC_UR; /**< \brief (Gmac Offset: 0x00C) User Register */ - RwReg GMAC_DCFGR; /**< \brief (Gmac Offset: 0x010) DMA Configuration Register */ - RwReg GMAC_TSR; /**< \brief (Gmac Offset: 0x014) Transmit Status Register */ - RwReg GMAC_RBQB; /**< \brief (Gmac Offset: 0x018) Receive Buffer Queue Base Address */ - RwReg GMAC_TBQB; /**< \brief (Gmac Offset: 0x01C) Transmit Buffer Queue Base Address */ - RwReg GMAC_RSR; /**< \brief (Gmac Offset: 0x020) Receive Status Register */ - RoReg GMAC_ISR; /**< \brief (Gmac Offset: 0x024) Interrupt Status Register */ - WoReg GMAC_IER; /**< \brief (Gmac Offset: 0x028) Interrupt Enable Register */ - WoReg GMAC_IDR; /**< \brief (Gmac Offset: 0x02C) Interrupt Disable Register */ - RoReg GMAC_IMR; /**< \brief (Gmac Offset: 0x030) Interrupt Mask Register */ - RwReg GMAC_MAN; /**< \brief (Gmac Offset: 0x034) PHY Maintenance Register */ - RoReg GMAC_RPQ; /**< \brief (Gmac Offset: 0x038) Received Pause Quantum Register */ - RwReg GMAC_TPQ; /**< \brief (Gmac Offset: 0x03C) Transmit Pause Quantum Register */ - RoReg Reserved1[16]; - RwReg GMAC_HRB; /**< \brief (Gmac Offset: 0x080) Hash Register Bottom [31:0] */ - RwReg GMAC_HRT; /**< \brief (Gmac Offset: 0x084) Hash Register Top [63:32] */ - GmacSa GMAC_SA[GMACSA_NUMBER]; /**< \brief (Gmac Offset: 0x088) 1 .. 4 */ - RwReg GMAC_TIDM[4]; /**< \brief (Gmac Offset: 0x0A8) Type ID Match 1 Register */ - RoReg Reserved2[1]; - RwReg GMAC_IPGS; /**< \brief (Gmac Offset: 0x0BC) IPG Stretch Register */ - RwReg GMAC_SVLAN; /**< \brief (Gmac Offset: 0x0C0) Stacked VLAN Register */ - RwReg GMAC_TPFCP; /**< \brief (Gmac Offset: 0x0C4) Transmit PFC Pause Register */ - RwReg GMAC_SAMB1; /**< \brief (Gmac Offset: 0x0C8) Specific Address 1 Mask Bottom [31:0] Register */ - RwReg GMAC_SAMT1; /**< \brief (Gmac Offset: 0x0CC) Specific Address 1 Mask Top [47:32] Register */ - RoReg Reserved3[12]; - RoReg GMAC_OTLO; /**< \brief (Gmac Offset: 0x100) Octets Transmitted [31:0] Register */ - RoReg GMAC_OTHI; /**< \brief (Gmac Offset: 0x104) Octets Transmitted [47:32] Register */ - RoReg GMAC_FT; /**< \brief (Gmac Offset: 0x108) Frames Transmitted Register */ - RoReg GMAC_BCFT; /**< \brief (Gmac Offset: 0x10C) Broadcast Frames Transmitted Register */ - RoReg GMAC_MFT; /**< \brief (Gmac Offset: 0x110) Multicast Frames Transmitted Register */ - RoReg GMAC_PFT; /**< \brief (Gmac Offset: 0x114) Pause Frames Transmitted Register */ - RoReg GMAC_BFT64; /**< \brief (Gmac Offset: 0x118) 64 Byte Frames Transmitted Register */ - RoReg GMAC_TBFT127; /**< \brief (Gmac Offset: 0x11C) 65 to 127 Byte Frames Transmitted Register */ - RoReg GMAC_TBFT255; /**< \brief (Gmac Offset: 0x120) 128 to 255 Byte Frames Transmitted Register */ - RoReg GMAC_TBFT511; /**< \brief (Gmac Offset: 0x124) 256 to 511 Byte Frames Transmitted Register */ - RoReg GMAC_TBFT1023; /**< \brief (Gmac Offset: 0x128) 512 to 1023 Byte Frames Transmitted Register */ - RoReg GMAC_TBFT1518; /**< \brief (Gmac Offset: 0x12C) 1024 to 1518 Byte Frames Transmitted Register */ - RoReg GMAC_GTBFT1518; /**< \brief (Gmac Offset: 0x130) Greater Than 1518 Byte Frames Transmitted Register */ - RoReg GMAC_TUR; /**< \brief (Gmac Offset: 0x134) Transmit Under Runs Register */ - RoReg GMAC_SCF; /**< \brief (Gmac Offset: 0x138) Single Collision Frames Register */ - RoReg GMAC_MCF; /**< \brief (Gmac Offset: 0x13C) Multiple Collision Frames Register */ - RoReg GMAC_EC; /**< \brief (Gmac Offset: 0x140) Excessive Collisions Register */ - RoReg GMAC_LC; /**< \brief (Gmac Offset: 0x144) Late Collisions Register */ - RoReg GMAC_DTF; /**< \brief (Gmac Offset: 0x148) Deferred Transmission Frames Register */ - RoReg GMAC_CSE; /**< \brief (Gmac Offset: 0x14C) Carrier Sense Errors Register */ - RoReg GMAC_ORLO; /**< \brief (Gmac Offset: 0x150) Octets Received [31:0] Received */ - RoReg GMAC_ORHI; /**< \brief (Gmac Offset: 0x154) Octets Received [47:32] Received */ - RoReg GMAC_FR; /**< \brief (Gmac Offset: 0x158) Frames Received Register */ - RoReg GMAC_BCFR; /**< \brief (Gmac Offset: 0x15C) Broadcast Frames Received Register */ - RoReg GMAC_MFR; /**< \brief (Gmac Offset: 0x160) Multicast Frames Received Register */ - RoReg GMAC_PFR; /**< \brief (Gmac Offset: 0x164) Pause Frames Received Register */ - RoReg GMAC_BFR64; /**< \brief (Gmac Offset: 0x168) 64 Byte Frames Received Register */ - RoReg GMAC_TBFR127; /**< \brief (Gmac Offset: 0x16C) 65 to 127 Byte Frames Received Register */ - RoReg GMAC_TBFR255; /**< \brief (Gmac Offset: 0x170) 128 to 255 Byte Frames Received Register */ - RoReg GMAC_TBFR511; /**< \brief (Gmac Offset: 0x174) 256 to 511Byte Frames Received Register */ - RoReg GMAC_TBFR1023; /**< \brief (Gmac Offset: 0x178) 512 to 1023 Byte Frames Received Register */ - RoReg GMAC_TBFR1518; /**< \brief (Gmac Offset: 0x17C) 1024 to 1518 Byte Frames Received Register */ - RoReg GMAC_TMXBFR; /**< \brief (Gmac Offset: 0x180) 1519 to Maximum Byte Frames Received Register */ - RoReg GMAC_UFR; /**< \brief (Gmac Offset: 0x184) Undersize Frames Received Register */ - RoReg GMAC_OFR; /**< \brief (Gmac Offset: 0x188) Oversize Frames Received Register */ - RoReg GMAC_JR; /**< \brief (Gmac Offset: 0x18C) Jabbers Received Register */ - RoReg GMAC_FCSE; /**< \brief (Gmac Offset: 0x190) Frame Check Sequence Errors Register */ - RoReg GMAC_LFFE; /**< \brief (Gmac Offset: 0x194) Length Field Frame Errors Register */ - RoReg GMAC_RSE; /**< \brief (Gmac Offset: 0x198) Receive Symbol Errors Register */ - RoReg GMAC_AE; /**< \brief (Gmac Offset: 0x19C) Alignment Errors Register */ - RoReg GMAC_RRE; /**< \brief (Gmac Offset: 0x1A0) Receive Resource Errors Register */ - RoReg GMAC_ROE; /**< \brief (Gmac Offset: 0x1A4) Receive Overrun Register */ - RoReg GMAC_IHCE; /**< \brief (Gmac Offset: 0x1A8) IP Header Checksum Errors Register */ - RoReg GMAC_TCE; /**< \brief (Gmac Offset: 0x1AC) TCP Checksum Errors Register */ - RoReg GMAC_UCE; /**< \brief (Gmac Offset: 0x1B0) UDP Checksum Errors Register */ - RoReg Reserved4[5]; - RwReg GMAC_TSSS; /**< \brief (Gmac Offset: 0x1C8) 1588 Timer Sync Strobe Seconds Register */ - RwReg GMAC_TSSN; /**< \brief (Gmac Offset: 0x1CC) 1588 Timer Sync Strobe Nanoseconds Register */ - RwReg GMAC_TS; /**< \brief (Gmac Offset: 0x1D0) 1588 Timer Seconds Register */ - RwReg GMAC_TN; /**< \brief (Gmac Offset: 0x1D4) 1588 Timer Nanoseconds Register */ - WoReg GMAC_TA; /**< \brief (Gmac Offset: 0x1D8) 1588 Timer Adjust Register */ - RwReg GMAC_TI; /**< \brief (Gmac Offset: 0x1DC) 1588 Timer Increment Register */ - RoReg GMAC_EFTS; /**< \brief (Gmac Offset: 0x1E0) PTP Event Frame Transmitted Seconds */ - RoReg GMAC_EFTN; /**< \brief (Gmac Offset: 0x1E4) PTP Event Frame Transmitted Nanoseconds */ - RoReg GMAC_EFRS; /**< \brief (Gmac Offset: 0x1E8) PTP Event Frame Received Seconds */ - RoReg GMAC_EFRN; /**< \brief (Gmac Offset: 0x1EC) PTP Event Frame Received Nanoseconds */ - RoReg GMAC_PEFTS; /**< \brief (Gmac Offset: 0x1F0) PTP Peer Event Frame Transmitted Seconds */ - RoReg GMAC_PEFTN; /**< \brief (Gmac Offset: 0x1F4) PTP Peer Event Frame Transmitted Nanoseconds */ - RoReg GMAC_PEFRS; /**< \brief (Gmac Offset: 0x1F8) PTP Peer Event Frame Received Seconds */ - RoReg GMAC_PEFRN; /**< \brief (Gmac Offset: 0x1FC) PTP Peer Event Frame Received Nanoseconds */ -} Gmac; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- GMAC_NCR : (GMAC Offset: 0x000) Network Control Register -------- */ -#define GMAC_NCR_LBL (0x1u << 1) /**< \brief (GMAC_NCR) Loop Back Local */ -#define GMAC_NCR_RXEN (0x1u << 2) /**< \brief (GMAC_NCR) Receive Enable */ -#define GMAC_NCR_TXEN (0x1u << 3) /**< \brief (GMAC_NCR) Transmit Enable */ -#define GMAC_NCR_MPE (0x1u << 4) /**< \brief (GMAC_NCR) Management Port Enable */ -#define GMAC_NCR_CLRSTAT (0x1u << 5) /**< \brief (GMAC_NCR) Clear Statistics Registers */ -#define GMAC_NCR_INCSTAT (0x1u << 6) /**< \brief (GMAC_NCR) Increment Statistics Registers */ -#define GMAC_NCR_WESTAT (0x1u << 7) /**< \brief (GMAC_NCR) Write Enable for Statistics Registers */ -#define GMAC_NCR_BP (0x1u << 8) /**< \brief (GMAC_NCR) Back pressure */ -#define GMAC_NCR_TSTART (0x1u << 9) /**< \brief (GMAC_NCR) Start Transmission */ -#define GMAC_NCR_THALT (0x1u << 10) /**< \brief (GMAC_NCR) Transmit Halt */ -#define GMAC_NCR_TXPF (0x1u << 11) /**< \brief (GMAC_NCR) Transmit Pause Frame */ -#define GMAC_NCR_TXZQPF (0x1u << 12) /**< \brief (GMAC_NCR) Transmit Zero Quantum Pause Frame */ -#define GMAC_NCR_RDS (0x1u << 14) /**< \brief (GMAC_NCR) Read Snapshot */ -#define GMAC_NCR_SRTSM (0x1u << 15) /**< \brief (GMAC_NCR) Store Receive Time Stamp to Memory */ -#define GMAC_NCR_ENPBPR (0x1u << 16) /**< \brief (GMAC_NCR) Enable PFC Priority-based Pause Reception */ -#define GMAC_NCR_TXPBPF (0x1u << 17) /**< \brief (GMAC_NCR) Transmit PFC Priority-based Pause Frame */ -#define GMAC_NCR_FNP (0x1u << 18) /**< \brief (GMAC_NCR) Flush Next Packet */ -/* -------- GMAC_NCFGR : (GMAC Offset: 0x004) Network Configuration Register -------- */ -#define GMAC_NCFGR_SPD (0x1u << 0) /**< \brief (GMAC_NCFGR) Speed */ -#define GMAC_NCFGR_FD (0x1u << 1) /**< \brief (GMAC_NCFGR) Full Duplex */ -#define GMAC_NCFGR_DNVLAN (0x1u << 2) /**< \brief (GMAC_NCFGR) Discard Non-VLAN FRAMES */ -#define GMAC_NCFGR_JFRAME (0x1u << 3) /**< \brief (GMAC_NCFGR) Jumbo Frame Size */ -#define GMAC_NCFGR_CAF (0x1u << 4) /**< \brief (GMAC_NCFGR) Copy All Frames */ -#define GMAC_NCFGR_NBC (0x1u << 5) /**< \brief (GMAC_NCFGR) No Broadcast */ -#define GMAC_NCFGR_MTIHEN (0x1u << 6) /**< \brief (GMAC_NCFGR) Multicast Hash Enable */ -#define GMAC_NCFGR_UNIHEN (0x1u << 7) /**< \brief (GMAC_NCFGR) Unicast Hash Enable */ -#define GMAC_NCFGR_MAXFS (0x1u << 8) /**< \brief (GMAC_NCFGR) 1536 Maximum Frame Size */ -#define GMAC_NCFGR_RTY (0x1u << 12) /**< \brief (GMAC_NCFGR) Retry Test */ -#define GMAC_NCFGR_PEN (0x1u << 13) /**< \brief (GMAC_NCFGR) Pause Enable */ -#define GMAC_NCFGR_RXBUFO_Pos 14 -#define GMAC_NCFGR_RXBUFO_Msk (0x3u << GMAC_NCFGR_RXBUFO_Pos) /**< \brief (GMAC_NCFGR) Receive Buffer Offset */ -#define GMAC_NCFGR_RXBUFO(value) ((GMAC_NCFGR_RXBUFO_Msk & ((value) << GMAC_NCFGR_RXBUFO_Pos))) -#define GMAC_NCFGR_LFERD (0x1u << 16) /**< \brief (GMAC_NCFGR) Length Field Error Frame Discard */ -#define GMAC_NCFGR_RFCS (0x1u << 17) /**< \brief (GMAC_NCFGR) Remove FCS */ -#define GMAC_NCFGR_CLK_Pos 18 -#define GMAC_NCFGR_CLK_Msk (0x7u << GMAC_NCFGR_CLK_Pos) /**< \brief (GMAC_NCFGR) MDC CLock Division */ -#define GMAC_NCFGR_CLK_MCK_8 (0x0u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 8 (MCK up to 20 MHz) */ -#define GMAC_NCFGR_CLK_MCK_16 (0x1u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 16 (MCK up to 40 MHz) */ -#define GMAC_NCFGR_CLK_MCK_32 (0x2u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 32 (MCK up to 80 MHz) */ -#define GMAC_NCFGR_CLK_MCK_48 (0x3u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 48 (MCK up to 120MHz) */ -#define GMAC_NCFGR_CLK_MCK_64 (0x4u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 64 (MCK up to 160 MHz) */ -#define GMAC_NCFGR_CLK_MCK_96 (0x5u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 96 (MCK up to 240 MHz) */ -#define GMAC_NCFGR_DBW_Pos 21 -#define GMAC_NCFGR_DBW_Msk (0x3u << GMAC_NCFGR_DBW_Pos) /**< \brief (GMAC_NCFGR) Data Bus Width */ -#define GMAC_NCFGR_DBW(value) ((GMAC_NCFGR_DBW_Msk & ((value) << GMAC_NCFGR_DBW_Pos))) -#define GMAC_NCFGR_DCPF (0x1u << 23) /**< \brief (GMAC_NCFGR) Disable Copy of Pause Frames */ -#define GMAC_NCFGR_RXCOEN (0x1u << 24) /**< \brief (GMAC_NCFGR) Receive Checksum Offload Enable */ -#define GMAC_NCFGR_EFRHD (0x1u << 25) /**< \brief (GMAC_NCFGR) Enable Frames Received in Half Duplex */ -#define GMAC_NCFGR_IRXFCS (0x1u << 26) /**< \brief (GMAC_NCFGR) Ignore RX FCS */ -#define GMAC_NCFGR_IPGSEN (0x1u << 28) /**< \brief (GMAC_NCFGR) IP Stretch Enable */ -#define GMAC_NCFGR_RXBP (0x1u << 29) /**< \brief (GMAC_NCFGR) Receive Bad Preamble */ -#define GMAC_NCFGR_IRXER (0x1u << 30) /**< \brief (GMAC_NCFGR) Ignore IPG GRXER */ -/* -------- GMAC_NSR : (GMAC Offset: 0x008) Network Status Register -------- */ -#define GMAC_NSR_MDIO (0x1u << 1) /**< \brief (GMAC_NSR) MDIO Input Status */ -#define GMAC_NSR_IDLE (0x1u << 2) /**< \brief (GMAC_NSR) PHY Management Logic Idle */ -/* -------- GMAC_UR : (GMAC Offset: 0x00C) User Register -------- */ -#define GMAC_UR_RMIIMII (0x1u << 0) /**< \brief (GMAC_UR) */ -/* -------- GMAC_DCFGR : (GMAC Offset: 0x010) DMA Configuration Register -------- */ -#define GMAC_DCFGR_FBLDO_Pos 0 -#define GMAC_DCFGR_FBLDO_Msk (0x1fu << GMAC_DCFGR_FBLDO_Pos) /**< \brief (GMAC_DCFGR) Fixed Burst Length for DMA Data Operations: */ -#define GMAC_DCFGR_FBLDO_SINGLE (0x1u << 0) /**< \brief (GMAC_DCFGR) 00001: Always use SINGLE AHB bursts */ -#define GMAC_DCFGR_FBLDO_INCR4 (0x4u << 0) /**< \brief (GMAC_DCFGR) 001xx: Attempt to use INCR4 AHB bursts (Default) */ -#define GMAC_DCFGR_FBLDO_INCR8 (0x8u << 0) /**< \brief (GMAC_DCFGR) 01xxx: Attempt to use INCR8 AHB bursts */ -#define GMAC_DCFGR_FBLDO_INCR16 (0x10u << 0) /**< \brief (GMAC_DCFGR) 1xxxx: Attempt to use INCR16 AHB bursts */ -#define GMAC_DCFGR_ESMA (0x1u << 6) /**< \brief (GMAC_DCFGR) Endian Swap Mode Enable for Management Descriptor Accesses */ -#define GMAC_DCFGR_ESPA (0x1u << 7) /**< \brief (GMAC_DCFGR) Endian Swap Mode Enable for Packet Data Accesses */ -#define GMAC_DCFGR_TXCOEN (0x1u << 11) /**< \brief (GMAC_DCFGR) Transmitter Checksum Generation Offload Enable */ -#define GMAC_DCFGR_DRBS_Pos 16 -#define GMAC_DCFGR_DRBS_Msk (0xffu << GMAC_DCFGR_DRBS_Pos) /**< \brief (GMAC_DCFGR) DMA Receive Buffer Size */ -#define GMAC_DCFGR_DRBS(value) ((GMAC_DCFGR_DRBS_Msk & ((value) << GMAC_DCFGR_DRBS_Pos))) -/* -------- GMAC_TSR : (GMAC Offset: 0x014) Transmit Status Register -------- */ -#define GMAC_TSR_UBR (0x1u << 0) /**< \brief (GMAC_TSR) Used Bit Read */ -#define GMAC_TSR_COL (0x1u << 1) /**< \brief (GMAC_TSR) Collision Occurred */ -#define GMAC_TSR_RLE (0x1u << 2) /**< \brief (GMAC_TSR) Retry Limit Exceeded */ -#define GMAC_TSR_TXGO (0x1u << 3) /**< \brief (GMAC_TSR) Transmit Go */ -#define GMAC_TSR_TFC (0x1u << 4) /**< \brief (GMAC_TSR) Transmit Frame Corruption due to AHB error */ -#define GMAC_TSR_TXCOMP (0x1u << 5) /**< \brief (GMAC_TSR) Transmit Complete */ -#define GMAC_TSR_UND (0x1u << 6) /**< \brief (GMAC_TSR) Transmit Under Run */ -#define GMAC_TSR_HRESP (0x1u << 8) /**< \brief (GMAC_TSR) HRESP Not OK */ -/* -------- GMAC_RBQB : (GMAC Offset: 0x018) Receive Buffer Queue Base Address -------- */ -#define GMAC_RBQB_ADDR_Pos 2 -#define GMAC_RBQB_ADDR_Msk (0x3fffffffu << GMAC_RBQB_ADDR_Pos) /**< \brief (GMAC_RBQB) Receive buffer queue base address */ -#define GMAC_RBQB_ADDR(value) ((GMAC_RBQB_ADDR_Msk & ((value) << GMAC_RBQB_ADDR_Pos))) -/* -------- GMAC_TBQB : (GMAC Offset: 0x01C) Transmit Buffer Queue Base Address -------- */ -#define GMAC_TBQB_ADDR_Pos 2 -#define GMAC_TBQB_ADDR_Msk (0x3fffffffu << GMAC_TBQB_ADDR_Pos) /**< \brief (GMAC_TBQB) Transmit Buffer Queue Base Address */ -#define GMAC_TBQB_ADDR(value) ((GMAC_TBQB_ADDR_Msk & ((value) << GMAC_TBQB_ADDR_Pos))) -/* -------- GMAC_RSR : (GMAC Offset: 0x020) Receive Status Register -------- */ -#define GMAC_RSR_BNA (0x1u << 0) /**< \brief (GMAC_RSR) Buffer Not Available */ -#define GMAC_RSR_REC (0x1u << 1) /**< \brief (GMAC_RSR) Frame Received */ -#define GMAC_RSR_RXOVR (0x1u << 2) /**< \brief (GMAC_RSR) Receive Overrun */ -#define GMAC_RSR_HNO (0x1u << 3) /**< \brief (GMAC_RSR) HRESP Not OK */ -/* -------- GMAC_ISR : (GMAC Offset: 0x024) Interrupt Status Register -------- */ -#define GMAC_ISR_MFS (0x1u << 0) /**< \brief (GMAC_ISR) Management Frame Sent */ -#define GMAC_ISR_RCOMP (0x1u << 1) /**< \brief (GMAC_ISR) Receive Complete */ -#define GMAC_ISR_RXUBR (0x1u << 2) /**< \brief (GMAC_ISR) RX Used Bit Read */ -#define GMAC_ISR_TXUBR (0x1u << 3) /**< \brief (GMAC_ISR) TX Used Bit Read */ -#define GMAC_ISR_TUR (0x1u << 4) /**< \brief (GMAC_ISR) Transmit Under Run */ -#define GMAC_ISR_RLEX (0x1u << 5) /**< \brief (GMAC_ISR) Retry Limit Exceeded */ -#define GMAC_ISR_TFC (0x1u << 6) /**< \brief (GMAC_ISR) Transmit Frame Corruption due to AHB error */ -#define GMAC_ISR_TCOMP (0x1u << 7) /**< \brief (GMAC_ISR) Transmit Complete */ -#define GMAC_ISR_ROVR (0x1u << 10) /**< \brief (GMAC_ISR) Receive Overrun */ -#define GMAC_ISR_HRESP (0x1u << 11) /**< \brief (GMAC_ISR) HRESP Not OK */ -#define GMAC_ISR_PFNZ (0x1u << 12) /**< \brief (GMAC_ISR) Pause Frame with Non-zero Pause Quantum Received */ -#define GMAC_ISR_PTZ (0x1u << 13) /**< \brief (GMAC_ISR) Pause Time Zero */ -#define GMAC_ISR_PFTR (0x1u << 14) /**< \brief (GMAC_ISR) Pause Frame Transmitted */ -#define GMAC_ISR_DRQFR (0x1u << 18) /**< \brief (GMAC_ISR) PTP Delay Request Frame Received */ -#define GMAC_ISR_SFR (0x1u << 19) /**< \brief (GMAC_ISR) PTP Sync Frame Received */ -#define GMAC_ISR_DRQFT (0x1u << 20) /**< \brief (GMAC_ISR) PTP Delay Request Frame Transmitted */ -#define GMAC_ISR_SFT (0x1u << 21) /**< \brief (GMAC_ISR) PTP Sync Frame Transmitted */ -#define GMAC_ISR_PDRQFR (0x1u << 22) /**< \brief (GMAC_ISR) PDelay Request Frame Received */ -#define GMAC_ISR_PDRSFR (0x1u << 23) /**< \brief (GMAC_ISR) PDelay Response Frame Received */ -#define GMAC_ISR_PDRQFT (0x1u << 24) /**< \brief (GMAC_ISR) PDelay Request Frame Transmitted */ -#define GMAC_ISR_PDRSFT (0x1u << 25) /**< \brief (GMAC_ISR) PDelay Response Frame Transmitted */ -#define GMAC_ISR_SRI (0x1u << 26) /**< \brief (GMAC_ISR) TSU Seconds Register Increment */ -#define GMAC_ISR_WOL (0x1u << 28) /**< \brief (GMAC_ISR) Wake On LAN */ -/* -------- GMAC_IER : (GMAC Offset: 0x028) Interrupt Enable Register -------- */ -#define GMAC_IER_MFS (0x1u << 0) /**< \brief (GMAC_IER) Management Frame Sent */ -#define GMAC_IER_RCOMP (0x1u << 1) /**< \brief (GMAC_IER) Receive Complete */ -#define GMAC_IER_RXUBR (0x1u << 2) /**< \brief (GMAC_IER) RX Used Bit Read */ -#define GMAC_IER_TXUBR (0x1u << 3) /**< \brief (GMAC_IER) TX Used Bit Read */ -#define GMAC_IER_TUR (0x1u << 4) /**< \brief (GMAC_IER) Transmit Under Run */ -#define GMAC_IER_RLEX (0x1u << 5) /**< \brief (GMAC_IER) Retry Limit Exceeded or Late Collision */ -#define GMAC_IER_TFC (0x1u << 6) /**< \brief (GMAC_IER) Transmit Frame Corruption due to AHB error */ -#define GMAC_IER_TCOMP (0x1u << 7) /**< \brief (GMAC_IER) Transmit Complete */ -#define GMAC_IER_ROVR (0x1u << 10) /**< \brief (GMAC_IER) Receive Overrun */ -#define GMAC_IER_HRESP (0x1u << 11) /**< \brief (GMAC_IER) HRESP Not OK */ -#define GMAC_IER_PFNZ (0x1u << 12) /**< \brief (GMAC_IER) Pause Frame with Non-zero Pause Quantum Received */ -#define GMAC_IER_PTZ (0x1u << 13) /**< \brief (GMAC_IER) Pause Time Zero */ -#define GMAC_IER_PFTR (0x1u << 14) /**< \brief (GMAC_IER) Pause Frame Transmitted */ -#define GMAC_IER_EXINT (0x1u << 15) /**< \brief (GMAC_IER) External Interrupt */ -#define GMAC_IER_DRQFR (0x1u << 18) /**< \brief (GMAC_IER) PTP Delay Request Frame Received */ -#define GMAC_IER_SFR (0x1u << 19) /**< \brief (GMAC_IER) PTP Sync Frame Received */ -#define GMAC_IER_DRQFT (0x1u << 20) /**< \brief (GMAC_IER) PTP Delay Request Frame Transmitted */ -#define GMAC_IER_SFT (0x1u << 21) /**< \brief (GMAC_IER) PTP Sync Frame Transmitted */ -#define GMAC_IER_PDRQFR (0x1u << 22) /**< \brief (GMAC_IER) PDelay Request Frame Received */ -#define GMAC_IER_PDRSFR (0x1u << 23) /**< \brief (GMAC_IER) PDelay Response Frame Received */ -#define GMAC_IER_PDRQFT (0x1u << 24) /**< \brief (GMAC_IER) PDelay Request Frame Transmitted */ -#define GMAC_IER_PDRSFT (0x1u << 25) /**< \brief (GMAC_IER) PDelay Response Frame Transmitted */ -#define GMAC_IER_SRI (0x1u << 26) /**< \brief (GMAC_IER) TSU Seconds Register Increment */ -#define GMAC_IER_WOL (0x1u << 28) /**< \brief (GMAC_IER) Wake On LAN */ -/* -------- GMAC_IDR : (GMAC Offset: 0x02C) Interrupt Disable Register -------- */ -#define GMAC_IDR_MFS (0x1u << 0) /**< \brief (GMAC_IDR) Management Frame Sent */ -#define GMAC_IDR_RCOMP (0x1u << 1) /**< \brief (GMAC_IDR) Receive Complete */ -#define GMAC_IDR_RXUBR (0x1u << 2) /**< \brief (GMAC_IDR) RX Used Bit Read */ -#define GMAC_IDR_TXUBR (0x1u << 3) /**< \brief (GMAC_IDR) TX Used Bit Read */ -#define GMAC_IDR_TUR (0x1u << 4) /**< \brief (GMAC_IDR) Transmit Under Run */ -#define GMAC_IDR_RLEX (0x1u << 5) /**< \brief (GMAC_IDR) Retry Limit Exceeded or Late Collision */ -#define GMAC_IDR_TFC (0x1u << 6) /**< \brief (GMAC_IDR) Transmit Frame Corruption due to AHB error */ -#define GMAC_IDR_TCOMP (0x1u << 7) /**< \brief (GMAC_IDR) Transmit Complete */ -#define GMAC_IDR_ROVR (0x1u << 10) /**< \brief (GMAC_IDR) Receive Overrun */ -#define GMAC_IDR_HRESP (0x1u << 11) /**< \brief (GMAC_IDR) HRESP Not OK */ -#define GMAC_IDR_PFNZ (0x1u << 12) /**< \brief (GMAC_IDR) Pause Frame with Non-zero Pause Quantum Received */ -#define GMAC_IDR_PTZ (0x1u << 13) /**< \brief (GMAC_IDR) Pause Time Zero */ -#define GMAC_IDR_PFTR (0x1u << 14) /**< \brief (GMAC_IDR) Pause Frame Transmitted */ -#define GMAC_IDR_EXINT (0x1u << 15) /**< \brief (GMAC_IDR) External Interrupt */ -#define GMAC_IDR_DRQFR (0x1u << 18) /**< \brief (GMAC_IDR) PTP Delay Request Frame Received */ -#define GMAC_IDR_SFR (0x1u << 19) /**< \brief (GMAC_IDR) PTP Sync Frame Received */ -#define GMAC_IDR_DRQFT (0x1u << 20) /**< \brief (GMAC_IDR) PTP Delay Request Frame Transmitted */ -#define GMAC_IDR_SFT (0x1u << 21) /**< \brief (GMAC_IDR) PTP Sync Frame Transmitted */ -#define GMAC_IDR_PDRQFR (0x1u << 22) /**< \brief (GMAC_IDR) PDelay Request Frame Received */ -#define GMAC_IDR_PDRSFR (0x1u << 23) /**< \brief (GMAC_IDR) PDelay Response Frame Received */ -#define GMAC_IDR_PDRQFT (0x1u << 24) /**< \brief (GMAC_IDR) PDelay Request Frame Transmitted */ -#define GMAC_IDR_PDRSFT (0x1u << 25) /**< \brief (GMAC_IDR) PDelay Response Frame Transmitted */ -#define GMAC_IDR_SRI (0x1u << 26) /**< \brief (GMAC_IDR) TSU Seconds Register Increment */ -#define GMAC_IDR_WOL (0x1u << 28) /**< \brief (GMAC_IDR) Wake On LAN */ -/* -------- GMAC_IMR : (GMAC Offset: 0x030) Interrupt Mask Register -------- */ -#define GMAC_IMR_MFS (0x1u << 0) /**< \brief (GMAC_IMR) Management Frame Sent */ -#define GMAC_IMR_RCOMP (0x1u << 1) /**< \brief (GMAC_IMR) Receive Complete */ -#define GMAC_IMR_RXUBR (0x1u << 2) /**< \brief (GMAC_IMR) RX Used Bit Read */ -#define GMAC_IMR_TXUBR (0x1u << 3) /**< \brief (GMAC_IMR) TX Used Bit Read */ -#define GMAC_IMR_TUR (0x1u << 4) /**< \brief (GMAC_IMR) Transmit Under Run */ -#define GMAC_IMR_RLEX (0x1u << 5) /**< \brief (GMAC_IMR) Retry Limit Exceeded */ -#define GMAC_IMR_TFC (0x1u << 6) /**< \brief (GMAC_IMR) Transmit Frame Corruption due to AHB error */ -#define GMAC_IMR_TCOMP (0x1u << 7) /**< \brief (GMAC_IMR) Transmit Complete */ -#define GMAC_IMR_ROVR (0x1u << 10) /**< \brief (GMAC_IMR) Receive Overrun */ -#define GMAC_IMR_HRESP (0x1u << 11) /**< \brief (GMAC_IMR) HRESP Not OK */ -#define GMAC_IMR_PFNZ (0x1u << 12) /**< \brief (GMAC_IMR) Pause Frame with Non-zero Pause Quantum Received */ -#define GMAC_IMR_PTZ (0x1u << 13) /**< \brief (GMAC_IMR) Pause Time Zero */ -#define GMAC_IMR_PFTR (0x1u << 14) /**< \brief (GMAC_IMR) Pause Frame Transmitted */ -#define GMAC_IMR_EXINT (0x1u << 15) /**< \brief (GMAC_IMR) External Interrupt */ -#define GMAC_IMR_DRQFR (0x1u << 18) /**< \brief (GMAC_IMR) PTP Delay Request Frame Received */ -#define GMAC_IMR_SFR (0x1u << 19) /**< \brief (GMAC_IMR) PTP Sync Frame Received */ -#define GMAC_IMR_DRQFT (0x1u << 20) /**< \brief (GMAC_IMR) PTP Delay Request Frame Transmitted */ -#define GMAC_IMR_SFT (0x1u << 21) /**< \brief (GMAC_IMR) PTP Sync Frame Transmitted */ -#define GMAC_IMR_PDRQFR (0x1u << 22) /**< \brief (GMAC_IMR) PDelay Request Frame Received */ -#define GMAC_IMR_PDRSFR (0x1u << 23) /**< \brief (GMAC_IMR) PDelay Response Frame Received */ -#define GMAC_IMR_PDRQFT (0x1u << 24) /**< \brief (GMAC_IMR) PDelay Request Frame Transmitted */ -#define GMAC_IMR_PDRSFT (0x1u << 25) /**< \brief (GMAC_IMR) PDelay Response Frame Transmitted */ -/* -------- GMAC_MAN : (GMAC Offset: 0x034) PHY Maintenance Register -------- */ -#define GMAC_MAN_DATA_Pos 0 -#define GMAC_MAN_DATA_Msk (0xffffu << GMAC_MAN_DATA_Pos) /**< \brief (GMAC_MAN) PHY Data */ -#define GMAC_MAN_DATA(value) ((GMAC_MAN_DATA_Msk & ((value) << GMAC_MAN_DATA_Pos))) -#define GMAC_MAN_WTN_Pos 16 -#define GMAC_MAN_WTN_Msk (0x3u << GMAC_MAN_WTN_Pos) /**< \brief (GMAC_MAN) Write Ten */ -#define GMAC_MAN_WTN(value) ((GMAC_MAN_WTN_Msk & ((value) << GMAC_MAN_WTN_Pos))) -#define GMAC_MAN_REGA_Pos 18 -#define GMAC_MAN_REGA_Msk (0x1fu << GMAC_MAN_REGA_Pos) /**< \brief (GMAC_MAN) Register Address */ -#define GMAC_MAN_REGA(value) ((GMAC_MAN_REGA_Msk & ((value) << GMAC_MAN_REGA_Pos))) -#define GMAC_MAN_PHYA_Pos 23 -#define GMAC_MAN_PHYA_Msk (0x1fu << GMAC_MAN_PHYA_Pos) /**< \brief (GMAC_MAN) PHY Address */ -#define GMAC_MAN_PHYA(value) ((GMAC_MAN_PHYA_Msk & ((value) << GMAC_MAN_PHYA_Pos))) -#define GMAC_MAN_OP_Pos 28 -#define GMAC_MAN_OP_Msk (0x3u << GMAC_MAN_OP_Pos) /**< \brief (GMAC_MAN) Operation */ -#define GMAC_MAN_OP(value) ((GMAC_MAN_OP_Msk & ((value) << GMAC_MAN_OP_Pos))) -#define GMAC_MAN_CLTTO (0x1u << 30) /**< \brief (GMAC_MAN) Clause 22 Operation */ -#define GMAC_MAN_WZO (0x1u << 31) /**< \brief (GMAC_MAN) Write ZERO */ -/* -------- GMAC_RPQ : (GMAC Offset: 0x038) Received Pause Quantum Register -------- */ -#define GMAC_RPQ_RPQ_Pos 0 -#define GMAC_RPQ_RPQ_Msk (0xffffu << GMAC_RPQ_RPQ_Pos) /**< \brief (GMAC_RPQ) Received Pause Quantum */ -/* -------- GMAC_TPQ : (GMAC Offset: 0x03C) Transmit Pause Quantum Register -------- */ -#define GMAC_TPQ_TPQ_Pos 0 -#define GMAC_TPQ_TPQ_Msk (0xffffu << GMAC_TPQ_TPQ_Pos) /**< \brief (GMAC_TPQ) Transmit Pause Quantum */ -#define GMAC_TPQ_TPQ(value) ((GMAC_TPQ_TPQ_Msk & ((value) << GMAC_TPQ_TPQ_Pos))) -/* -------- GMAC_HRB : (GMAC Offset: 0x080) Hash Register Bottom [31:0] -------- */ -#define GMAC_HRB_ADDR_Pos 0 -#define GMAC_HRB_ADDR_Msk (0xffffffffu << GMAC_HRB_ADDR_Pos) /**< \brief (GMAC_HRB) Hash Address */ -#define GMAC_HRB_ADDR(value) ((GMAC_HRB_ADDR_Msk & ((value) << GMAC_HRB_ADDR_Pos))) -/* -------- GMAC_HRT : (GMAC Offset: 0x084) Hash Register Top [63:32] -------- */ -#define GMAC_HRT_ADDR_Pos 0 -#define GMAC_HRT_ADDR_Msk (0xffffffffu << GMAC_HRT_ADDR_Pos) /**< \brief (GMAC_HRT) Hash Address */ -#define GMAC_HRT_ADDR(value) ((GMAC_HRT_ADDR_Msk & ((value) << GMAC_HRT_ADDR_Pos))) -/* -------- GMAC_SAB1 : (GMAC Offset: 0x088) Specific Address 1 Bottom [31:0] Register -------- */ -#define GMAC_SAB1_ADDR_Pos 0 -#define GMAC_SAB1_ADDR_Msk (0xffffffffu << GMAC_SAB1_ADDR_Pos) /**< \brief (GMAC_SAB1) Specific Address 1 */ -#define GMAC_SAB1_ADDR(value) ((GMAC_SAB1_ADDR_Msk & ((value) << GMAC_SAB1_ADDR_Pos))) -/* -------- GMAC_SAT1 : (GMAC Offset: 0x08C) Specific Address 1 Top [47:32] Register -------- */ -#define GMAC_SAT1_ADDR_Pos 0 -#define GMAC_SAT1_ADDR_Msk (0xffffu << GMAC_SAT1_ADDR_Pos) /**< \brief (GMAC_SAT1) Specific Address 1 */ -#define GMAC_SAT1_ADDR(value) ((GMAC_SAT1_ADDR_Msk & ((value) << GMAC_SAT1_ADDR_Pos))) -/* -------- GMAC_SAB2 : (GMAC Offset: 0x090) Specific Address 2 Bottom [31:0] Register -------- */ -#define GMAC_SAB2_ADDR_Pos 0 -#define GMAC_SAB2_ADDR_Msk (0xffffffffu << GMAC_SAB2_ADDR_Pos) /**< \brief (GMAC_SAB2) Specific Address 2 */ -#define GMAC_SAB2_ADDR(value) ((GMAC_SAB2_ADDR_Msk & ((value) << GMAC_SAB2_ADDR_Pos))) -/* -------- GMAC_SAT2 : (GMAC Offset: 0x094) Specific Address 2 Top [47:32] Register -------- */ -#define GMAC_SAT2_ADDR_Pos 0 -#define GMAC_SAT2_ADDR_Msk (0xffffu << GMAC_SAT2_ADDR_Pos) /**< \brief (GMAC_SAT2) Specific Address 2 */ -#define GMAC_SAT2_ADDR(value) ((GMAC_SAT2_ADDR_Msk & ((value) << GMAC_SAT2_ADDR_Pos))) -/* -------- GMAC_SAB3 : (GMAC Offset: 0x098) Specific Address 3 Bottom [31:0] Register -------- */ -#define GMAC_SAB3_ADDR_Pos 0 -#define GMAC_SAB3_ADDR_Msk (0xffffffffu << GMAC_SAB3_ADDR_Pos) /**< \brief (GMAC_SAB3) Specific Address 3 */ -#define GMAC_SAB3_ADDR(value) ((GMAC_SAB3_ADDR_Msk & ((value) << GMAC_SAB3_ADDR_Pos))) -/* -------- GMAC_SAT3 : (GMAC Offset: 0x09C) Specific Address 3 Top [47:32] Register -------- */ -#define GMAC_SAT3_ADDR_Pos 0 -#define GMAC_SAT3_ADDR_Msk (0xffffu << GMAC_SAT3_ADDR_Pos) /**< \brief (GMAC_SAT3) Specific Address 3 */ -#define GMAC_SAT3_ADDR(value) ((GMAC_SAT3_ADDR_Msk & ((value) << GMAC_SAT3_ADDR_Pos))) -/* -------- GMAC_SAB4 : (GMAC Offset: 0x0A0) Specific Address 4 Bottom [31:0] Register -------- */ -#define GMAC_SAB4_ADDR_Pos 0 -#define GMAC_SAB4_ADDR_Msk (0xffffffffu << GMAC_SAB4_ADDR_Pos) /**< \brief (GMAC_SAB4) Specific Address 4 */ -#define GMAC_SAB4_ADDR(value) ((GMAC_SAB4_ADDR_Msk & ((value) << GMAC_SAB4_ADDR_Pos))) -/* -------- GMAC_SAT4 : (GMAC Offset: 0x0A4) Specific Address 4 Top [47:32] Register -------- */ -#define GMAC_SAT4_ADDR_Pos 0 -#define GMAC_SAT4_ADDR_Msk (0xffffu << GMAC_SAT4_ADDR_Pos) /**< \brief (GMAC_SAT4) Specific Address 4 */ -#define GMAC_SAT4_ADDR(value) ((GMAC_SAT4_ADDR_Msk & ((value) << GMAC_SAT4_ADDR_Pos))) -/* -------- GMAC_TIDM[4] : (GMAC Offset: 0x0A8) Type ID Match 1 Register -------- */ -#define GMAC_TIDM_TID_Pos 0 -#define GMAC_TIDM_TID_Msk (0xffffu << GMAC_TIDM_TID_Pos) /**< \brief (GMAC_TIDM[4]) Type ID Match 1 */ -#define GMAC_TIDM_TID(value) ((GMAC_TIDM_TID_Msk & ((value) << GMAC_TIDM_TID_Pos))) -/* -------- GMAC_IPGS : (GMAC Offset: 0x0BC) IPG Stretch Register -------- */ -#define GMAC_IPGS_FL_Pos 0 -#define GMAC_IPGS_FL_Msk (0xffffu << GMAC_IPGS_FL_Pos) /**< \brief (GMAC_IPGS) Frame Length */ -#define GMAC_IPGS_FL(value) ((GMAC_IPGS_FL_Msk & ((value) << GMAC_IPGS_FL_Pos))) -/* -------- GMAC_SVLAN : (GMAC Offset: 0x0C0) Stacked VLAN Register -------- */ -#define GMAC_SVLAN_VLAN_TYPE_Pos 0 -#define GMAC_SVLAN_VLAN_TYPE_Msk (0xffffu << GMAC_SVLAN_VLAN_TYPE_Pos) /**< \brief (GMAC_SVLAN) User Defined VLAN_TYPE Field */ -#define GMAC_SVLAN_VLAN_TYPE(value) ((GMAC_SVLAN_VLAN_TYPE_Msk & ((value) << GMAC_SVLAN_VLAN_TYPE_Pos))) -#define GMAC_SVLAN_ESVLAN (0x1u << 31) /**< \brief (GMAC_SVLAN) Enable Stacked VLAN Processing Mode */ -/* -------- GMAC_TPFCP : (GMAC Offset: 0x0C4) Transmit PFC Pause Register -------- */ -#define GMAC_TPFCP_PEV_Pos 0 -#define GMAC_TPFCP_PEV_Msk (0xffu << GMAC_TPFCP_PEV_Pos) /**< \brief (GMAC_TPFCP) Priority Enable Vector */ -#define GMAC_TPFCP_PEV(value) ((GMAC_TPFCP_PEV_Msk & ((value) << GMAC_TPFCP_PEV_Pos))) -#define GMAC_TPFCP_PQ_Pos 8 -#define GMAC_TPFCP_PQ_Msk (0xffu << GMAC_TPFCP_PQ_Pos) /**< \brief (GMAC_TPFCP) Pause Quantum */ -#define GMAC_TPFCP_PQ(value) ((GMAC_TPFCP_PQ_Msk & ((value) << GMAC_TPFCP_PQ_Pos))) -/* -------- GMAC_SAMB1 : (GMAC Offset: 0x0C8) Specific Address 1 Mask Bottom [31:0] Register -------- */ -#define GMAC_SAMB1_ADDR_Pos 0 -#define GMAC_SAMB1_ADDR_Msk (0xffffffffu << GMAC_SAMB1_ADDR_Pos) /**< \brief (GMAC_SAMB1) Specific Address 1 Mask */ -#define GMAC_SAMB1_ADDR(value) ((GMAC_SAMB1_ADDR_Msk & ((value) << GMAC_SAMB1_ADDR_Pos))) -/* -------- GMAC_SAMT1 : (GMAC Offset: 0x0CC) Specific Address 1 Mask Top [47:32] Register -------- */ -#define GMAC_SAMT1_ADDR_Pos 0 -#define GMAC_SAMT1_ADDR_Msk (0xffffu << GMAC_SAMT1_ADDR_Pos) /**< \brief (GMAC_SAMT1) Specific Address 1 Mask */ -#define GMAC_SAMT1_ADDR(value) ((GMAC_SAMT1_ADDR_Msk & ((value) << GMAC_SAMT1_ADDR_Pos))) -/* -------- GMAC_OTLO : (GMAC Offset: 0x100) Octets Transmitted [31:0] Register -------- */ -#define GMAC_OTLO_TXO_Pos 0 -#define GMAC_OTLO_TXO_Msk (0xffffffffu << GMAC_OTLO_TXO_Pos) /**< \brief (GMAC_OTLO) Transmitted Octets */ -/* -------- GMAC_OTHI : (GMAC Offset: 0x104) Octets Transmitted [47:32] Register -------- */ -#define GMAC_OTHI_TXO_Pos 0 -#define GMAC_OTHI_TXO_Msk (0xffffu << GMAC_OTHI_TXO_Pos) /**< \brief (GMAC_OTHI) Transmitted Octets */ -/* -------- GMAC_FT : (GMAC Offset: 0x108) Frames Transmitted Register -------- */ -#define GMAC_FT_FTX_Pos 0 -#define GMAC_FT_FTX_Msk (0xffffffffu << GMAC_FT_FTX_Pos) /**< \brief (GMAC_FT) Frames Transmitted without Error */ -/* -------- GMAC_BCFT : (GMAC Offset: 0x10C) Broadcast Frames Transmitted Register -------- */ -#define GMAC_BCFT_BFTX_Pos 0 -#define GMAC_BCFT_BFTX_Msk (0xffffffffu << GMAC_BCFT_BFTX_Pos) /**< \brief (GMAC_BCFT) Broadcast Frames Transmitted without Error */ -/* -------- GMAC_MFT : (GMAC Offset: 0x110) Multicast Frames Transmitted Register -------- */ -#define GMAC_MFT_MFTX_Pos 0 -#define GMAC_MFT_MFTX_Msk (0xffffffffu << GMAC_MFT_MFTX_Pos) /**< \brief (GMAC_MFT) Multicast Frames Transmitted without Error */ -/* -------- GMAC_PFT : (GMAC Offset: 0x114) Pause Frames Transmitted Register -------- */ -#define GMAC_PFT_PFTX_Pos 0 -#define GMAC_PFT_PFTX_Msk (0xffffu << GMAC_PFT_PFTX_Pos) /**< \brief (GMAC_PFT) Pause Frames Transmitted Register */ -/* -------- GMAC_BFT64 : (GMAC Offset: 0x118) 64 Byte Frames Transmitted Register -------- */ -#define GMAC_BFT64_NFTX_Pos 0 -#define GMAC_BFT64_NFTX_Msk (0xffffffffu << GMAC_BFT64_NFTX_Pos) /**< \brief (GMAC_BFT64) 64 Byte Frames Transmitted without Error */ -/* -------- GMAC_TBFT127 : (GMAC Offset: 0x11C) 65 to 127 Byte Frames Transmitted Register -------- */ -#define GMAC_TBFT127_NFTX_Pos 0 -#define GMAC_TBFT127_NFTX_Msk (0xffffffffu << GMAC_TBFT127_NFTX_Pos) /**< \brief (GMAC_TBFT127) 65 to 127 Byte Frames Transmitted without Error */ -/* -------- GMAC_TBFT255 : (GMAC Offset: 0x120) 128 to 255 Byte Frames Transmitted Register -------- */ -#define GMAC_TBFT255_NFTX_Pos 0 -#define GMAC_TBFT255_NFTX_Msk (0xffffffffu << GMAC_TBFT255_NFTX_Pos) /**< \brief (GMAC_TBFT255) 128 to 255 Byte Frames Transmitted without Error */ -/* -------- GMAC_TBFT511 : (GMAC Offset: 0x124) 256 to 511 Byte Frames Transmitted Register -------- */ -#define GMAC_TBFT511_NFTX_Pos 0 -#define GMAC_TBFT511_NFTX_Msk (0xffffffffu << GMAC_TBFT511_NFTX_Pos) /**< \brief (GMAC_TBFT511) 256 to 511 Byte Frames Transmitted without Error */ -/* -------- GMAC_TBFT1023 : (GMAC Offset: 0x128) 512 to 1023 Byte Frames Transmitted Register -------- */ -#define GMAC_TBFT1023_NFTX_Pos 0 -#define GMAC_TBFT1023_NFTX_Msk (0xffffffffu << GMAC_TBFT1023_NFTX_Pos) /**< \brief (GMAC_TBFT1023) 512 to 1023 Byte Frames Transmitted without Error */ -/* -------- GMAC_TBFT1518 : (GMAC Offset: 0x12C) 1024 to 1518 Byte Frames Transmitted Register -------- */ -#define GMAC_TBFT1518_NFTX_Pos 0 -#define GMAC_TBFT1518_NFTX_Msk (0xffffffffu << GMAC_TBFT1518_NFTX_Pos) /**< \brief (GMAC_TBFT1518) 1024 to 1518 Byte Frames Transmitted without Error */ -/* -------- GMAC_GTBFT1518 : (GMAC Offset: 0x130) Greater Than 1518 Byte Frames Transmitted Register -------- */ -#define GMAC_GTBFT1518_NFTX_Pos 0 -#define GMAC_GTBFT1518_NFTX_Msk (0xffffffffu << GMAC_GTBFT1518_NFTX_Pos) /**< \brief (GMAC_GTBFT1518) Greater than 1518 Byte Frames Transmitted without Error */ -/* -------- GMAC_TUR : (GMAC Offset: 0x134) Transmit Under Runs Register -------- */ -#define GMAC_TUR_TXUNR_Pos 0 -#define GMAC_TUR_TXUNR_Msk (0x3ffu << GMAC_TUR_TXUNR_Pos) /**< \brief (GMAC_TUR) Transmit Under Runs */ -/* -------- GMAC_SCF : (GMAC Offset: 0x138) Single Collision Frames Register -------- */ -#define GMAC_SCF_SCOL_Pos 0 -#define GMAC_SCF_SCOL_Msk (0x3ffffu << GMAC_SCF_SCOL_Pos) /**< \brief (GMAC_SCF) Single Collision */ -/* -------- GMAC_MCF : (GMAC Offset: 0x13C) Multiple Collision Frames Register -------- */ -#define GMAC_MCF_MCOL_Pos 0 -#define GMAC_MCF_MCOL_Msk (0x3ffffu << GMAC_MCF_MCOL_Pos) /**< \brief (GMAC_MCF) Multiple Collision */ -/* -------- GMAC_EC : (GMAC Offset: 0x140) Excessive Collisions Register -------- */ -#define GMAC_EC_XCOL_Pos 0 -#define GMAC_EC_XCOL_Msk (0x3ffu << GMAC_EC_XCOL_Pos) /**< \brief (GMAC_EC) Excessive Collisions */ -/* -------- GMAC_LC : (GMAC Offset: 0x144) Late Collisions Register -------- */ -#define GMAC_LC_LCOL_Pos 0 -#define GMAC_LC_LCOL_Msk (0x3ffu << GMAC_LC_LCOL_Pos) /**< \brief (GMAC_LC) Late Collisions */ -/* -------- GMAC_DTF : (GMAC Offset: 0x148) Deferred Transmission Frames Register -------- */ -#define GMAC_DTF_DEFT_Pos 0 -#define GMAC_DTF_DEFT_Msk (0x3ffffu << GMAC_DTF_DEFT_Pos) /**< \brief (GMAC_DTF) Deferred Transmission */ -/* -------- GMAC_CSE : (GMAC Offset: 0x14C) Carrier Sense Errors Register -------- */ -#define GMAC_CSE_CSR_Pos 0 -#define GMAC_CSE_CSR_Msk (0x3ffu << GMAC_CSE_CSR_Pos) /**< \brief (GMAC_CSE) Carrier Sense Error */ -/* -------- GMAC_ORLO : (GMAC Offset: 0x150) Octets Received [31:0] Received -------- */ -#define GMAC_ORLO_RXO_Pos 0 -#define GMAC_ORLO_RXO_Msk (0xffffffffu << GMAC_ORLO_RXO_Pos) /**< \brief (GMAC_ORLO) Received Octets */ -/* -------- GMAC_ORHI : (GMAC Offset: 0x154) Octets Received [47:32] Received -------- */ -#define GMAC_ORHI_RXO_Pos 0 -#define GMAC_ORHI_RXO_Msk (0xffffu << GMAC_ORHI_RXO_Pos) /**< \brief (GMAC_ORHI) Received Octets */ -/* -------- GMAC_FR : (GMAC Offset: 0x158) Frames Received Register -------- */ -#define GMAC_FR_FRX_Pos 0 -#define GMAC_FR_FRX_Msk (0xffffffffu << GMAC_FR_FRX_Pos) /**< \brief (GMAC_FR) Frames Received without Error */ -/* -------- GMAC_BCFR : (GMAC Offset: 0x15C) Broadcast Frames Received Register -------- */ -#define GMAC_BCFR_BFRX_Pos 0 -#define GMAC_BCFR_BFRX_Msk (0xffffffffu << GMAC_BCFR_BFRX_Pos) /**< \brief (GMAC_BCFR) Broadcast Frames Received without Error */ -/* -------- GMAC_MFR : (GMAC Offset: 0x160) Multicast Frames Received Register -------- */ -#define GMAC_MFR_MFRX_Pos 0 -#define GMAC_MFR_MFRX_Msk (0xffffffffu << GMAC_MFR_MFRX_Pos) /**< \brief (GMAC_MFR) Multicast Frames Received without Error */ -/* -------- GMAC_PFR : (GMAC Offset: 0x164) Pause Frames Received Register -------- */ -#define GMAC_PFR_PFRX_Pos 0 -#define GMAC_PFR_PFRX_Msk (0xffffu << GMAC_PFR_PFRX_Pos) /**< \brief (GMAC_PFR) Pause Frames Received Register */ -/* -------- GMAC_BFR64 : (GMAC Offset: 0x168) 64 Byte Frames Received Register -------- */ -#define GMAC_BFR64_NFRX_Pos 0 -#define GMAC_BFR64_NFRX_Msk (0xffffffffu << GMAC_BFR64_NFRX_Pos) /**< \brief (GMAC_BFR64) 64 Byte Frames Received without Error */ -/* -------- GMAC_TBFR127 : (GMAC Offset: 0x16C) 65 to 127 Byte Frames Received Register -------- */ -#define GMAC_TBFR127_NFRX_Pos 0 -#define GMAC_TBFR127_NFRX_Msk (0xffffffffu << GMAC_TBFR127_NFRX_Pos) /**< \brief (GMAC_TBFR127) 65 to 127 Byte Frames Received without Error */ -/* -------- GMAC_TBFR255 : (GMAC Offset: 0x170) 128 to 255 Byte Frames Received Register -------- */ -#define GMAC_TBFR255_NFRX_Pos 0 -#define GMAC_TBFR255_NFRX_Msk (0xffffffffu << GMAC_TBFR255_NFRX_Pos) /**< \brief (GMAC_TBFR255) 128 to 255 Byte Frames Received without Error */ -/* -------- GMAC_TBFR511 : (GMAC Offset: 0x174) 256 to 511Byte Frames Received Register -------- */ -#define GMAC_TBFR511_NFRX_Pos 0 -#define GMAC_TBFR511_NFRX_Msk (0xffffffffu << GMAC_TBFR511_NFRX_Pos) /**< \brief (GMAC_TBFR511) 256 to 511 Byte Frames Received without Error */ -/* -------- GMAC_TBFR1023 : (GMAC Offset: 0x178) 512 to 1023 Byte Frames Received Register -------- */ -#define GMAC_TBFR1023_NFRX_Pos 0 -#define GMAC_TBFR1023_NFRX_Msk (0xffffffffu << GMAC_TBFR1023_NFRX_Pos) /**< \brief (GMAC_TBFR1023) 512 to 1023 Byte Frames Received without Error */ -/* -------- GMAC_TBFR1518 : (GMAC Offset: 0x17C) 1024 to 1518 Byte Frames Received Register -------- */ -#define GMAC_TBFR1518_NFRX_Pos 0 -#define GMAC_TBFR1518_NFRX_Msk (0xffffffffu << GMAC_TBFR1518_NFRX_Pos) /**< \brief (GMAC_TBFR1518) 1024 to 1518 Byte Frames Received without Error */ -/* -------- GMAC_TMXBFR : (GMAC Offset: 0x180) 1519 to Maximum Byte Frames Received Register -------- */ -#define GMAC_TMXBFR_NFRX_Pos 0 -#define GMAC_TMXBFR_NFRX_Msk (0xffffffffu << GMAC_TMXBFR_NFRX_Pos) /**< \brief (GMAC_TMXBFR) 1519 to Maximum Byte Frames Received without Error */ -/* -------- GMAC_UFR : (GMAC Offset: 0x184) Undersize Frames Received Register -------- */ -#define GMAC_UFR_UFRX_Pos 0 -#define GMAC_UFR_UFRX_Msk (0x3ffu << GMAC_UFR_UFRX_Pos) /**< \brief (GMAC_UFR) Undersize Frames Received */ -/* -------- GMAC_OFR : (GMAC Offset: 0x188) Oversize Frames Received Register -------- */ -#define GMAC_OFR_OFRX_Pos 0 -#define GMAC_OFR_OFRX_Msk (0x3ffu << GMAC_OFR_OFRX_Pos) /**< \brief (GMAC_OFR) Oversized Frames Received */ -/* -------- GMAC_JR : (GMAC Offset: 0x18C) Jabbers Received Register -------- */ -#define GMAC_JR_JRX_Pos 0 -#define GMAC_JR_JRX_Msk (0x3ffu << GMAC_JR_JRX_Pos) /**< \brief (GMAC_JR) Jabbers Received */ -/* -------- GMAC_FCSE : (GMAC Offset: 0x190) Frame Check Sequence Errors Register -------- */ -#define GMAC_FCSE_FCKR_Pos 0 -#define GMAC_FCSE_FCKR_Msk (0x3ffu << GMAC_FCSE_FCKR_Pos) /**< \brief (GMAC_FCSE) Frame Check Sequence Errors */ -/* -------- GMAC_LFFE : (GMAC Offset: 0x194) Length Field Frame Errors Register -------- */ -#define GMAC_LFFE_LFER_Pos 0 -#define GMAC_LFFE_LFER_Msk (0x3ffu << GMAC_LFFE_LFER_Pos) /**< \brief (GMAC_LFFE) Length Field Frame Errors */ -/* -------- GMAC_RSE : (GMAC Offset: 0x198) Receive Symbol Errors Register -------- */ -#define GMAC_RSE_RXSE_Pos 0 -#define GMAC_RSE_RXSE_Msk (0x3ffu << GMAC_RSE_RXSE_Pos) /**< \brief (GMAC_RSE) Receive Symbol Errors */ -/* -------- GMAC_AE : (GMAC Offset: 0x19C) Alignment Errors Register -------- */ -#define GMAC_AE_AER_Pos 0 -#define GMAC_AE_AER_Msk (0x3ffu << GMAC_AE_AER_Pos) /**< \brief (GMAC_AE) Alignment Errors */ -/* -------- GMAC_RRE : (GMAC Offset: 0x1A0) Receive Resource Errors Register -------- */ -#define GMAC_RRE_RXRER_Pos 0 -#define GMAC_RRE_RXRER_Msk (0x3ffffu << GMAC_RRE_RXRER_Pos) /**< \brief (GMAC_RRE) Receive Resource Errors */ -/* -------- GMAC_ROE : (GMAC Offset: 0x1A4) Receive Overrun Register -------- */ -#define GMAC_ROE_RXOVR_Pos 0 -#define GMAC_ROE_RXOVR_Msk (0x3ffu << GMAC_ROE_RXOVR_Pos) /**< \brief (GMAC_ROE) Receive Overruns */ -/* -------- GMAC_IHCE : (GMAC Offset: 0x1A8) IP Header Checksum Errors Register -------- */ -#define GMAC_IHCE_HCKER_Pos 0 -#define GMAC_IHCE_HCKER_Msk (0xffu << GMAC_IHCE_HCKER_Pos) /**< \brief (GMAC_IHCE) IP Header Checksum Errors */ -/* -------- GMAC_TCE : (GMAC Offset: 0x1AC) TCP Checksum Errors Register -------- */ -#define GMAC_TCE_TCKER_Pos 0 -#define GMAC_TCE_TCKER_Msk (0xffu << GMAC_TCE_TCKER_Pos) /**< \brief (GMAC_TCE) TCP Checksum Errors */ -/* -------- GMAC_UCE : (GMAC Offset: 0x1B0) UDP Checksum Errors Register -------- */ -#define GMAC_UCE_UCKER_Pos 0 -#define GMAC_UCE_UCKER_Msk (0xffu << GMAC_UCE_UCKER_Pos) /**< \brief (GMAC_UCE) UDP Checksum Errors */ -/* -------- GMAC_TSSS : (GMAC Offset: 0x1C8) 1588 Timer Sync Strobe Seconds Register -------- */ -#define GMAC_TSSS_VTS_Pos 0 -#define GMAC_TSSS_VTS_Msk (0xffffffffu << GMAC_TSSS_VTS_Pos) /**< \brief (GMAC_TSSS) Value of Timer Seconds Register Capture */ -#define GMAC_TSSS_VTS(value) ((GMAC_TSSS_VTS_Msk & ((value) << GMAC_TSSS_VTS_Pos))) -/* -------- GMAC_TSSN : (GMAC Offset: 0x1CC) 1588 Timer Sync Strobe Nanoseconds Register -------- */ -#define GMAC_TSSN_VTN_Pos 0 -#define GMAC_TSSN_VTN_Msk (0x3fffffffu << GMAC_TSSN_VTN_Pos) /**< \brief (GMAC_TSSN) Value Timer Nanoseconds Register Capture */ -#define GMAC_TSSN_VTN(value) ((GMAC_TSSN_VTN_Msk & ((value) << GMAC_TSSN_VTN_Pos))) -/* -------- GMAC_TS : (GMAC Offset: 0x1D0) 1588 Timer Seconds Register -------- */ -#define GMAC_TS_TCS_Pos 0 -#define GMAC_TS_TCS_Msk (0xffffffffu << GMAC_TS_TCS_Pos) /**< \brief (GMAC_TS) Timer Count in Seconds */ -#define GMAC_TS_TCS(value) ((GMAC_TS_TCS_Msk & ((value) << GMAC_TS_TCS_Pos))) -/* -------- GMAC_TN : (GMAC Offset: 0x1D4) 1588 Timer Nanoseconds Register -------- */ -#define GMAC_TN_TNS_Pos 0 -#define GMAC_TN_TNS_Msk (0x3fffffffu << GMAC_TN_TNS_Pos) /**< \brief (GMAC_TN) Timer Count in Nanoseconds */ -#define GMAC_TN_TNS(value) ((GMAC_TN_TNS_Msk & ((value) << GMAC_TN_TNS_Pos))) -/* -------- GMAC_TA : (GMAC Offset: 0x1D8) 1588 Timer Adjust Register -------- */ -#define GMAC_TA_ITDT_Pos 0 -#define GMAC_TA_ITDT_Msk (0x3fffffffu << GMAC_TA_ITDT_Pos) /**< \brief (GMAC_TA) Increment/Decrement */ -#define GMAC_TA_ITDT(value) ((GMAC_TA_ITDT_Msk & ((value) << GMAC_TA_ITDT_Pos))) -#define GMAC_TA_ADJ (0x1u << 31) /**< \brief (GMAC_TA) Adjust 1588 Timer */ -/* -------- GMAC_TI : (GMAC Offset: 0x1DC) 1588 Timer Increment Register -------- */ -#define GMAC_TI_CNS_Pos 0 -#define GMAC_TI_CNS_Msk (0xffu << GMAC_TI_CNS_Pos) /**< \brief (GMAC_TI) Count Nanoseconds */ -#define GMAC_TI_CNS(value) ((GMAC_TI_CNS_Msk & ((value) << GMAC_TI_CNS_Pos))) -#define GMAC_TI_ACNS_Pos 8 -#define GMAC_TI_ACNS_Msk (0xffu << GMAC_TI_ACNS_Pos) /**< \brief (GMAC_TI) Alternative Count Nanoseconds */ -#define GMAC_TI_ACNS(value) ((GMAC_TI_ACNS_Msk & ((value) << GMAC_TI_ACNS_Pos))) -#define GMAC_TI_NIT_Pos 16 -#define GMAC_TI_NIT_Msk (0xffu << GMAC_TI_NIT_Pos) /**< \brief (GMAC_TI) Number of Increments */ -#define GMAC_TI_NIT(value) ((GMAC_TI_NIT_Msk & ((value) << GMAC_TI_NIT_Pos))) -/* -------- GMAC_EFTS : (GMAC Offset: 0x1E0) PTP Event Frame Transmitted Seconds -------- */ -#define GMAC_EFTS_RUD_Pos 0 -#define GMAC_EFTS_RUD_Msk (0xffffffffu << GMAC_EFTS_RUD_Pos) /**< \brief (GMAC_EFTS) Register Update */ -/* -------- GMAC_EFTN : (GMAC Offset: 0x1E4) PTP Event Frame Transmitted Nanoseconds -------- */ -#define GMAC_EFTN_RUD_Pos 0 -#define GMAC_EFTN_RUD_Msk (0x3fffffffu << GMAC_EFTN_RUD_Pos) /**< \brief (GMAC_EFTN) Register Update */ -/* -------- GMAC_EFRS : (GMAC Offset: 0x1E8) PTP Event Frame Received Seconds -------- */ -#define GMAC_EFRS_RUD_Pos 0 -#define GMAC_EFRS_RUD_Msk (0xffffffffu << GMAC_EFRS_RUD_Pos) /**< \brief (GMAC_EFRS) Register Update */ -/* -------- GMAC_EFRN : (GMAC Offset: 0x1EC) PTP Event Frame Received Nanoseconds -------- */ -#define GMAC_EFRN_RUD_Pos 0 -#define GMAC_EFRN_RUD_Msk (0x3fffffffu << GMAC_EFRN_RUD_Pos) /**< \brief (GMAC_EFRN) Register Update */ -/* -------- GMAC_PEFTS : (GMAC Offset: 0x1F0) PTP Peer Event Frame Transmitted Seconds -------- */ -#define GMAC_PEFTS_RUD_Pos 0 -#define GMAC_PEFTS_RUD_Msk (0xffffffffu << GMAC_PEFTS_RUD_Pos) /**< \brief (GMAC_PEFTS) Register Update */ -/* -------- GMAC_PEFTN : (GMAC Offset: 0x1F4) PTP Peer Event Frame Transmitted Nanoseconds -------- */ -#define GMAC_PEFTN_RUD_Pos 0 -#define GMAC_PEFTN_RUD_Msk (0x3fffffffu << GMAC_PEFTN_RUD_Pos) /**< \brief (GMAC_PEFTN) Register Update */ -/* -------- GMAC_PEFRS : (GMAC Offset: 0x1F8) PTP Peer Event Frame Received Seconds -------- */ -#define GMAC_PEFRS_RUD_Pos 0 -#define GMAC_PEFRS_RUD_Msk (0xffffffffu << GMAC_PEFRS_RUD_Pos) /**< \brief (GMAC_PEFRS) Register Update */ -/* -------- GMAC_PEFRN : (GMAC Offset: 0x1FC) PTP Peer Event Frame Received Nanoseconds -------- */ -#define GMAC_PEFRN_RUD_Pos 0 -#define GMAC_PEFRN_RUD_Msk (0x3fffffffu << GMAC_PEFRN_RUD_Pos) /**< \brief (GMAC_PEFRN) Register Update */ - -/*@}*/ - - -#endif /* _SAM4E_GMAC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/gpbr.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/gpbr.h deleted file mode 100644 index c379442bf..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/gpbr.h +++ /dev/null @@ -1,65 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_GPBR_COMPONENT_ -#define _SAM4E_GPBR_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR General Purpose Backup Register */ -/* ============================================================================= */ -/** \addtogroup SAM4E_GPBR General Purpose Backup Register */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Gpbr hardware registers */ -typedef struct { - RwReg SYS_GPBR[20]; /**< \brief (Gpbr Offset: 0x0) General Purpose Backup Register */ -} Gpbr; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- SYS_GPBR[20] : (GPBR Offset: 0x0) General Purpose Backup Register -------- */ -#define SYS_GPBR_GPBR_VALUE_Pos 0 -#define SYS_GPBR_GPBR_VALUE_Msk (0xffffffffu << SYS_GPBR_GPBR_VALUE_Pos) /**< \brief (SYS_GPBR[20]) Value of GPBR x */ -#define SYS_GPBR_GPBR_VALUE(value) ((SYS_GPBR_GPBR_VALUE_Msk & ((value) << SYS_GPBR_GPBR_VALUE_Pos))) - -/*@}*/ - - -#endif /* _SAM4E_GPBR_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/hsmci.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/hsmci.h deleted file mode 100644 index a5b95d7b2..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/hsmci.h +++ /dev/null @@ -1,395 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_HSMCI_COMPONENT_ -#define _SAM4E_HSMCI_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR High Speed MultiMedia Card Interface */ -/* ============================================================================= */ -/** \addtogroup SAM4E_HSMCI High Speed MultiMedia Card Interface */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Hsmci hardware registers */ -typedef struct { - WoReg HSMCI_CR; /**< \brief (Hsmci Offset: 0x00) Control Register */ - RwReg HSMCI_MR; /**< \brief (Hsmci Offset: 0x04) Mode Register */ - RwReg HSMCI_DTOR; /**< \brief (Hsmci Offset: 0x08) Data Timeout Register */ - RwReg HSMCI_SDCR; /**< \brief (Hsmci Offset: 0x0C) SD/SDIO Card Register */ - RwReg HSMCI_ARGR; /**< \brief (Hsmci Offset: 0x10) Argument Register */ - WoReg HSMCI_CMDR; /**< \brief (Hsmci Offset: 0x14) Command Register */ - RwReg HSMCI_BLKR; /**< \brief (Hsmci Offset: 0x18) Block Register */ - RwReg HSMCI_CSTOR; /**< \brief (Hsmci Offset: 0x1C) Completion Signal Timeout Register */ - RoReg HSMCI_RSPR[4]; /**< \brief (Hsmci Offset: 0x20) Response Register */ - RoReg HSMCI_RDR; /**< \brief (Hsmci Offset: 0x30) Receive Data Register */ - WoReg HSMCI_TDR; /**< \brief (Hsmci Offset: 0x34) Transmit Data Register */ - RoReg Reserved1[2]; - RoReg HSMCI_SR; /**< \brief (Hsmci Offset: 0x40) Status Register */ - WoReg HSMCI_IER; /**< \brief (Hsmci Offset: 0x44) Interrupt Enable Register */ - WoReg HSMCI_IDR; /**< \brief (Hsmci Offset: 0x48) Interrupt Disable Register */ - RoReg HSMCI_IMR; /**< \brief (Hsmci Offset: 0x4C) Interrupt Mask Register */ - RoReg Reserved2[1]; - RwReg HSMCI_CFG; /**< \brief (Hsmci Offset: 0x54) Configuration Register */ - RoReg Reserved3[35]; - RwReg HSMCI_WPMR; /**< \brief (Hsmci Offset: 0xE4) Write Protection Mode Register */ - RoReg HSMCI_WPSR; /**< \brief (Hsmci Offset: 0xE8) Write Protection Status Register */ - RoReg Reserved4[5]; - RwReg HSMCI_RPR; /**< \brief (Hsmci Offset: 0x100) Receive Pointer Register */ - RwReg HSMCI_RCR; /**< \brief (Hsmci Offset: 0x104) Receive Counter Register */ - RwReg HSMCI_TPR; /**< \brief (Hsmci Offset: 0x108) Transmit Pointer Register */ - RwReg HSMCI_TCR; /**< \brief (Hsmci Offset: 0x10C) Transmit Counter Register */ - RwReg HSMCI_RNPR; /**< \brief (Hsmci Offset: 0x110) Receive Next Pointer Register */ - RwReg HSMCI_RNCR; /**< \brief (Hsmci Offset: 0x114) Receive Next Counter Register */ - RwReg HSMCI_TNPR; /**< \brief (Hsmci Offset: 0x118) Transmit Next Pointer Register */ - RwReg HSMCI_TNCR; /**< \brief (Hsmci Offset: 0x11C) Transmit Next Counter Register */ - WoReg HSMCI_PTCR; /**< \brief (Hsmci Offset: 0x120) Transfer Control Register */ - RoReg HSMCI_PTSR; /**< \brief (Hsmci Offset: 0x124) Transfer Status Register */ - RoReg Reserved5[54]; - RwReg HSMCI_FIFO[256]; /**< \brief (Hsmci Offset: 0x200) FIFO Memory Aperture0 */ -} Hsmci; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- HSMCI_CR : (HSMCI Offset: 0x00) Control Register -------- */ -#define HSMCI_CR_MCIEN (0x1u << 0) /**< \brief (HSMCI_CR) Multi-Media Interface Enable */ -#define HSMCI_CR_MCIDIS (0x1u << 1) /**< \brief (HSMCI_CR) Multi-Media Interface Disable */ -#define HSMCI_CR_PWSEN (0x1u << 2) /**< \brief (HSMCI_CR) Power Save Mode Enable */ -#define HSMCI_CR_PWSDIS (0x1u << 3) /**< \brief (HSMCI_CR) Power Save Mode Disable */ -#define HSMCI_CR_SWRST (0x1u << 7) /**< \brief (HSMCI_CR) Software Reset */ -/* -------- HSMCI_MR : (HSMCI Offset: 0x04) Mode Register -------- */ -#define HSMCI_MR_CLKDIV_Pos 0 -#define HSMCI_MR_CLKDIV_Msk (0xffu << HSMCI_MR_CLKDIV_Pos) /**< \brief (HSMCI_MR) Clock Divider */ -#define HSMCI_MR_CLKDIV(value) ((HSMCI_MR_CLKDIV_Msk & ((value) << HSMCI_MR_CLKDIV_Pos))) -#define HSMCI_MR_PWSDIV_Pos 8 -#define HSMCI_MR_PWSDIV_Msk (0x7u << HSMCI_MR_PWSDIV_Pos) /**< \brief (HSMCI_MR) Power Saving Divider */ -#define HSMCI_MR_PWSDIV(value) ((HSMCI_MR_PWSDIV_Msk & ((value) << HSMCI_MR_PWSDIV_Pos))) -#define HSMCI_MR_RDPROOF (0x1u << 11) /**< \brief (HSMCI_MR) Read Proof Enable */ -#define HSMCI_MR_WRPROOF (0x1u << 12) /**< \brief (HSMCI_MR) Write Proof Enable */ -#define HSMCI_MR_FBYTE (0x1u << 13) /**< \brief (HSMCI_MR) Force Byte Transfer */ -#define HSMCI_MR_PADV (0x1u << 14) /**< \brief (HSMCI_MR) Padding Value */ -#define HSMCI_MR_PDCMODE (0x1u << 15) /**< \brief (HSMCI_MR) PDC-oriented Mode */ -#define HSMCI_MR_CLKODD (0x1u << 16) /**< \brief (HSMCI_MR) Clock divider is odd */ -/* -------- HSMCI_DTOR : (HSMCI Offset: 0x08) Data Timeout Register -------- */ -#define HSMCI_DTOR_DTOCYC_Pos 0 -#define HSMCI_DTOR_DTOCYC_Msk (0xfu << HSMCI_DTOR_DTOCYC_Pos) /**< \brief (HSMCI_DTOR) Data Timeout Cycle Number */ -#define HSMCI_DTOR_DTOCYC(value) ((HSMCI_DTOR_DTOCYC_Msk & ((value) << HSMCI_DTOR_DTOCYC_Pos))) -#define HSMCI_DTOR_DTOMUL_Pos 4 -#define HSMCI_DTOR_DTOMUL_Msk (0x7u << HSMCI_DTOR_DTOMUL_Pos) /**< \brief (HSMCI_DTOR) Data Timeout Multiplier */ -#define HSMCI_DTOR_DTOMUL_1 (0x0u << 4) /**< \brief (HSMCI_DTOR) DTOCYC */ -#define HSMCI_DTOR_DTOMUL_16 (0x1u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 16 */ -#define HSMCI_DTOR_DTOMUL_128 (0x2u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 128 */ -#define HSMCI_DTOR_DTOMUL_256 (0x3u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 256 */ -#define HSMCI_DTOR_DTOMUL_1024 (0x4u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 1024 */ -#define HSMCI_DTOR_DTOMUL_4096 (0x5u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 4096 */ -#define HSMCI_DTOR_DTOMUL_65536 (0x6u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 65536 */ -#define HSMCI_DTOR_DTOMUL_1048576 (0x7u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 1048576 */ -/* -------- HSMCI_SDCR : (HSMCI Offset: 0x0C) SD/SDIO Card Register -------- */ -#define HSMCI_SDCR_SDCSEL_Pos 0 -#define HSMCI_SDCR_SDCSEL_Msk (0x3u << HSMCI_SDCR_SDCSEL_Pos) /**< \brief (HSMCI_SDCR) SDCard/SDIO Slot */ -#define HSMCI_SDCR_SDCSEL_SLOTA (0x0u << 0) /**< \brief (HSMCI_SDCR) Slot A is selected. */ -#define HSMCI_SDCR_SDCSEL_SLOTB (0x1u << 0) /**< \brief (HSMCI_SDCR) - */ -#define HSMCI_SDCR_SDCSEL_SLOTC (0x2u << 0) /**< \brief (HSMCI_SDCR) - */ -#define HSMCI_SDCR_SDCSEL_SLOTD (0x3u << 0) /**< \brief (HSMCI_SDCR) - */ -#define HSMCI_SDCR_SDCBUS_Pos 6 -#define HSMCI_SDCR_SDCBUS_Msk (0x3u << HSMCI_SDCR_SDCBUS_Pos) /**< \brief (HSMCI_SDCR) SDCard/SDIO Bus Width */ -#define HSMCI_SDCR_SDCBUS_1 (0x0u << 6) /**< \brief (HSMCI_SDCR) 1 bit */ -#define HSMCI_SDCR_SDCBUS_4 (0x2u << 6) /**< \brief (HSMCI_SDCR) 4 bit */ -#define HSMCI_SDCR_SDCBUS_8 (0x3u << 6) /**< \brief (HSMCI_SDCR) 8 bit */ -/* -------- HSMCI_ARGR : (HSMCI Offset: 0x10) Argument Register -------- */ -#define HSMCI_ARGR_ARG_Pos 0 -#define HSMCI_ARGR_ARG_Msk (0xffffffffu << HSMCI_ARGR_ARG_Pos) /**< \brief (HSMCI_ARGR) Command Argument */ -#define HSMCI_ARGR_ARG(value) ((HSMCI_ARGR_ARG_Msk & ((value) << HSMCI_ARGR_ARG_Pos))) -/* -------- HSMCI_CMDR : (HSMCI Offset: 0x14) Command Register -------- */ -#define HSMCI_CMDR_CMDNB_Pos 0 -#define HSMCI_CMDR_CMDNB_Msk (0x3fu << HSMCI_CMDR_CMDNB_Pos) /**< \brief (HSMCI_CMDR) Command Number */ -#define HSMCI_CMDR_CMDNB(value) ((HSMCI_CMDR_CMDNB_Msk & ((value) << HSMCI_CMDR_CMDNB_Pos))) -#define HSMCI_CMDR_RSPTYP_Pos 6 -#define HSMCI_CMDR_RSPTYP_Msk (0x3u << HSMCI_CMDR_RSPTYP_Pos) /**< \brief (HSMCI_CMDR) Response Type */ -#define HSMCI_CMDR_RSPTYP_NORESP (0x0u << 6) /**< \brief (HSMCI_CMDR) No response. */ -#define HSMCI_CMDR_RSPTYP_48_BIT (0x1u << 6) /**< \brief (HSMCI_CMDR) 48-bit response. */ -#define HSMCI_CMDR_RSPTYP_136_BIT (0x2u << 6) /**< \brief (HSMCI_CMDR) 136-bit response. */ -#define HSMCI_CMDR_RSPTYP_R1B (0x3u << 6) /**< \brief (HSMCI_CMDR) R1b response type */ -#define HSMCI_CMDR_SPCMD_Pos 8 -#define HSMCI_CMDR_SPCMD_Msk (0x7u << HSMCI_CMDR_SPCMD_Pos) /**< \brief (HSMCI_CMDR) Special Command */ -#define HSMCI_CMDR_SPCMD_STD (0x0u << 8) /**< \brief (HSMCI_CMDR) Not a special CMD. */ -#define HSMCI_CMDR_SPCMD_INIT (0x1u << 8) /**< \brief (HSMCI_CMDR) Initialization CMD: 74 clock cycles for initialization sequence. */ -#define HSMCI_CMDR_SPCMD_SYNC (0x2u << 8) /**< \brief (HSMCI_CMDR) Synchronized CMD: Wait for the end of the current data block transfer before sending the pending command. */ -#define HSMCI_CMDR_SPCMD_CE_ATA (0x3u << 8) /**< \brief (HSMCI_CMDR) CE-ATA Completion Signal disable Command. The host cancels the ability for the device to return a command completion signal on the command line. */ -#define HSMCI_CMDR_SPCMD_IT_CMD (0x4u << 8) /**< \brief (HSMCI_CMDR) Interrupt command: Corresponds to the Interrupt Mode (CMD40). */ -#define HSMCI_CMDR_SPCMD_IT_RESP (0x5u << 8) /**< \brief (HSMCI_CMDR) Interrupt response: Corresponds to the Interrupt Mode (CMD40). */ -#define HSMCI_CMDR_SPCMD_BOR (0x6u << 8) /**< \brief (HSMCI_CMDR) Boot Operation Request. Start a boot operation mode, the host processor can read boot data from the MMC device directly. */ -#define HSMCI_CMDR_SPCMD_EBO (0x7u << 8) /**< \brief (HSMCI_CMDR) End Boot Operation. This command allows the host processor to terminate the boot operation mode. */ -#define HSMCI_CMDR_OPDCMD (0x1u << 11) /**< \brief (HSMCI_CMDR) Open Drain Command */ -#define HSMCI_CMDR_OPDCMD_PUSHPULL (0x0u << 11) /**< \brief (HSMCI_CMDR) Push pull command. */ -#define HSMCI_CMDR_OPDCMD_OPENDRAIN (0x1u << 11) /**< \brief (HSMCI_CMDR) Open drain command. */ -#define HSMCI_CMDR_MAXLAT (0x1u << 12) /**< \brief (HSMCI_CMDR) Max Latency for Command to Response */ -#define HSMCI_CMDR_MAXLAT_5 (0x0u << 12) /**< \brief (HSMCI_CMDR) 5-cycle max latency. */ -#define HSMCI_CMDR_MAXLAT_64 (0x1u << 12) /**< \brief (HSMCI_CMDR) 64-cycle max latency. */ -#define HSMCI_CMDR_TRCMD_Pos 16 -#define HSMCI_CMDR_TRCMD_Msk (0x3u << HSMCI_CMDR_TRCMD_Pos) /**< \brief (HSMCI_CMDR) Transfer Command */ -#define HSMCI_CMDR_TRCMD_NO_DATA (0x0u << 16) /**< \brief (HSMCI_CMDR) No data transfer */ -#define HSMCI_CMDR_TRCMD_START_DATA (0x1u << 16) /**< \brief (HSMCI_CMDR) Start data transfer */ -#define HSMCI_CMDR_TRCMD_STOP_DATA (0x2u << 16) /**< \brief (HSMCI_CMDR) Stop data transfer */ -#define HSMCI_CMDR_TRDIR (0x1u << 18) /**< \brief (HSMCI_CMDR) Transfer Direction */ -#define HSMCI_CMDR_TRDIR_WRITE (0x0u << 18) /**< \brief (HSMCI_CMDR) Write. */ -#define HSMCI_CMDR_TRDIR_READ (0x1u << 18) /**< \brief (HSMCI_CMDR) Read. */ -#define HSMCI_CMDR_TRTYP_Pos 19 -#define HSMCI_CMDR_TRTYP_Msk (0x7u << HSMCI_CMDR_TRTYP_Pos) /**< \brief (HSMCI_CMDR) Transfer Type */ -#define HSMCI_CMDR_TRTYP_SINGLE (0x0u << 19) /**< \brief (HSMCI_CMDR) MMC/SD Card Single Block */ -#define HSMCI_CMDR_TRTYP_MULTIPLE (0x1u << 19) /**< \brief (HSMCI_CMDR) MMC/SD Card Multiple Block */ -#define HSMCI_CMDR_TRTYP_STREAM (0x2u << 19) /**< \brief (HSMCI_CMDR) MMC Stream */ -#define HSMCI_CMDR_TRTYP_BYTE (0x4u << 19) /**< \brief (HSMCI_CMDR) SDIO Byte */ -#define HSMCI_CMDR_TRTYP_BLOCK (0x5u << 19) /**< \brief (HSMCI_CMDR) SDIO Block */ -#define HSMCI_CMDR_IOSPCMD_Pos 24 -#define HSMCI_CMDR_IOSPCMD_Msk (0x3u << HSMCI_CMDR_IOSPCMD_Pos) /**< \brief (HSMCI_CMDR) SDIO Special Command */ -#define HSMCI_CMDR_IOSPCMD_STD (0x0u << 24) /**< \brief (HSMCI_CMDR) Not an SDIO Special Command */ -#define HSMCI_CMDR_IOSPCMD_SUSPEND (0x1u << 24) /**< \brief (HSMCI_CMDR) SDIO Suspend Command */ -#define HSMCI_CMDR_IOSPCMD_RESUME (0x2u << 24) /**< \brief (HSMCI_CMDR) SDIO Resume Command */ -#define HSMCI_CMDR_ATACS (0x1u << 26) /**< \brief (HSMCI_CMDR) ATA with Command Completion Signal */ -#define HSMCI_CMDR_ATACS_NORMAL (0x0u << 26) /**< \brief (HSMCI_CMDR) Normal operation mode. */ -#define HSMCI_CMDR_ATACS_COMPLETION (0x1u << 26) /**< \brief (HSMCI_CMDR) This bit indicates that a completion signal is expected within a programmed amount of time (HSMCI_CSTOR). */ -#define HSMCI_CMDR_BOOT_ACK (0x1u << 27) /**< \brief (HSMCI_CMDR) Boot Operation Acknowledge. */ -/* -------- HSMCI_BLKR : (HSMCI Offset: 0x18) Block Register -------- */ -#define HSMCI_BLKR_BCNT_Pos 0 -#define HSMCI_BLKR_BCNT_Msk (0xffffu << HSMCI_BLKR_BCNT_Pos) /**< \brief (HSMCI_BLKR) MMC/SDIO Block Count - SDIO Byte Count */ -#define HSMCI_BLKR_BCNT(value) ((HSMCI_BLKR_BCNT_Msk & ((value) << HSMCI_BLKR_BCNT_Pos))) -#define HSMCI_BLKR_BLKLEN_Pos 16 -#define HSMCI_BLKR_BLKLEN_Msk (0xffffu << HSMCI_BLKR_BLKLEN_Pos) /**< \brief (HSMCI_BLKR) Data Block Length */ -#define HSMCI_BLKR_BLKLEN(value) ((HSMCI_BLKR_BLKLEN_Msk & ((value) << HSMCI_BLKR_BLKLEN_Pos))) -/* -------- HSMCI_CSTOR : (HSMCI Offset: 0x1C) Completion Signal Timeout Register -------- */ -#define HSMCI_CSTOR_CSTOCYC_Pos 0 -#define HSMCI_CSTOR_CSTOCYC_Msk (0xfu << HSMCI_CSTOR_CSTOCYC_Pos) /**< \brief (HSMCI_CSTOR) Completion Signal Timeout Cycle Number */ -#define HSMCI_CSTOR_CSTOCYC(value) ((HSMCI_CSTOR_CSTOCYC_Msk & ((value) << HSMCI_CSTOR_CSTOCYC_Pos))) -#define HSMCI_CSTOR_CSTOMUL_Pos 4 -#define HSMCI_CSTOR_CSTOMUL_Msk (0x7u << HSMCI_CSTOR_CSTOMUL_Pos) /**< \brief (HSMCI_CSTOR) Completion Signal Timeout Multiplier */ -#define HSMCI_CSTOR_CSTOMUL_1 (0x0u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1 */ -#define HSMCI_CSTOR_CSTOMUL_16 (0x1u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 16 */ -#define HSMCI_CSTOR_CSTOMUL_128 (0x2u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 128 */ -#define HSMCI_CSTOR_CSTOMUL_256 (0x3u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 256 */ -#define HSMCI_CSTOR_CSTOMUL_1024 (0x4u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1024 */ -#define HSMCI_CSTOR_CSTOMUL_4096 (0x5u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 4096 */ -#define HSMCI_CSTOR_CSTOMUL_65536 (0x6u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 65536 */ -#define HSMCI_CSTOR_CSTOMUL_1048576 (0x7u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1048576 */ -/* -------- HSMCI_RSPR[4] : (HSMCI Offset: 0x20) Response Register -------- */ -#define HSMCI_RSPR_RSP_Pos 0 -#define HSMCI_RSPR_RSP_Msk (0xffffffffu << HSMCI_RSPR_RSP_Pos) /**< \brief (HSMCI_RSPR[4]) Response */ -/* -------- HSMCI_RDR : (HSMCI Offset: 0x30) Receive Data Register -------- */ -#define HSMCI_RDR_DATA_Pos 0 -#define HSMCI_RDR_DATA_Msk (0xffffffffu << HSMCI_RDR_DATA_Pos) /**< \brief (HSMCI_RDR) Data to Read */ -/* -------- HSMCI_TDR : (HSMCI Offset: 0x34) Transmit Data Register -------- */ -#define HSMCI_TDR_DATA_Pos 0 -#define HSMCI_TDR_DATA_Msk (0xffffffffu << HSMCI_TDR_DATA_Pos) /**< \brief (HSMCI_TDR) Data to Write */ -#define HSMCI_TDR_DATA(value) ((HSMCI_TDR_DATA_Msk & ((value) << HSMCI_TDR_DATA_Pos))) -/* -------- HSMCI_SR : (HSMCI Offset: 0x40) Status Register -------- */ -#define HSMCI_SR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_SR) Command Ready */ -#define HSMCI_SR_RXRDY (0x1u << 1) /**< \brief (HSMCI_SR) Receiver Ready */ -#define HSMCI_SR_TXRDY (0x1u << 2) /**< \brief (HSMCI_SR) Transmit Ready */ -#define HSMCI_SR_BLKE (0x1u << 3) /**< \brief (HSMCI_SR) Data Block Ended */ -#define HSMCI_SR_DTIP (0x1u << 4) /**< \brief (HSMCI_SR) Data Transfer in Progress */ -#define HSMCI_SR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_SR) HSMCI Not Busy */ -#define HSMCI_SR_ENDRX (0x1u << 6) /**< \brief (HSMCI_SR) End of RX Buffer */ -#define HSMCI_SR_ENDTX (0x1u << 7) /**< \brief (HSMCI_SR) End of TX Buffer */ -#define HSMCI_SR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_SR) SDIO Interrupt for Slot A */ -#define HSMCI_SR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_SR) SDIO Read Wait Operation Status */ -#define HSMCI_SR_CSRCV (0x1u << 13) /**< \brief (HSMCI_SR) CE-ATA Completion Signal Received */ -#define HSMCI_SR_RXBUFF (0x1u << 14) /**< \brief (HSMCI_SR) RX Buffer Full */ -#define HSMCI_SR_TXBUFE (0x1u << 15) /**< \brief (HSMCI_SR) TX Buffer Empty */ -#define HSMCI_SR_RINDE (0x1u << 16) /**< \brief (HSMCI_SR) Response Index Error */ -#define HSMCI_SR_RDIRE (0x1u << 17) /**< \brief (HSMCI_SR) Response Direction Error */ -#define HSMCI_SR_RCRCE (0x1u << 18) /**< \brief (HSMCI_SR) Response CRC Error */ -#define HSMCI_SR_RENDE (0x1u << 19) /**< \brief (HSMCI_SR) Response End Bit Error */ -#define HSMCI_SR_RTOE (0x1u << 20) /**< \brief (HSMCI_SR) Response Time-out Error */ -#define HSMCI_SR_DCRCE (0x1u << 21) /**< \brief (HSMCI_SR) Data CRC Error */ -#define HSMCI_SR_DTOE (0x1u << 22) /**< \brief (HSMCI_SR) Data Time-out Error */ -#define HSMCI_SR_CSTOE (0x1u << 23) /**< \brief (HSMCI_SR) Completion Signal Time-out Error */ -#define HSMCI_SR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_SR) FIFO empty flag */ -#define HSMCI_SR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_SR) Transfer Done flag */ -#define HSMCI_SR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_SR) Boot Operation Acknowledge Received */ -#define HSMCI_SR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_SR) Boot Operation Acknowledge Error */ -#define HSMCI_SR_OVRE (0x1u << 30) /**< \brief (HSMCI_SR) Overrun */ -#define HSMCI_SR_UNRE (0x1u << 31) /**< \brief (HSMCI_SR) Underrun */ -/* -------- HSMCI_IER : (HSMCI Offset: 0x44) Interrupt Enable Register -------- */ -#define HSMCI_IER_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IER) Command Ready Interrupt Enable */ -#define HSMCI_IER_RXRDY (0x1u << 1) /**< \brief (HSMCI_IER) Receiver Ready Interrupt Enable */ -#define HSMCI_IER_TXRDY (0x1u << 2) /**< \brief (HSMCI_IER) Transmit Ready Interrupt Enable */ -#define HSMCI_IER_BLKE (0x1u << 3) /**< \brief (HSMCI_IER) Data Block Ended Interrupt Enable */ -#define HSMCI_IER_DTIP (0x1u << 4) /**< \brief (HSMCI_IER) Data Transfer in Progress Interrupt Enable */ -#define HSMCI_IER_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IER) Data Not Busy Interrupt Enable */ -#define HSMCI_IER_ENDRX (0x1u << 6) /**< \brief (HSMCI_IER) End of Receive Buffer Interrupt Enable */ -#define HSMCI_IER_ENDTX (0x1u << 7) /**< \brief (HSMCI_IER) End of Transmit Buffer Interrupt Enable */ -#define HSMCI_IER_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IER) SDIO Interrupt for Slot A Interrupt Enable */ -#define HSMCI_IER_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IER) SDIO Read Wait Operation Status Interrupt Enable */ -#define HSMCI_IER_CSRCV (0x1u << 13) /**< \brief (HSMCI_IER) Completion Signal Received Interrupt Enable */ -#define HSMCI_IER_RXBUFF (0x1u << 14) /**< \brief (HSMCI_IER) Receive Buffer Full Interrupt Enable */ -#define HSMCI_IER_TXBUFE (0x1u << 15) /**< \brief (HSMCI_IER) Transmit Buffer Empty Interrupt Enable */ -#define HSMCI_IER_RINDE (0x1u << 16) /**< \brief (HSMCI_IER) Response Index Error Interrupt Enable */ -#define HSMCI_IER_RDIRE (0x1u << 17) /**< \brief (HSMCI_IER) Response Direction Error Interrupt Enable */ -#define HSMCI_IER_RCRCE (0x1u << 18) /**< \brief (HSMCI_IER) Response CRC Error Interrupt Enable */ -#define HSMCI_IER_RENDE (0x1u << 19) /**< \brief (HSMCI_IER) Response End Bit Error Interrupt Enable */ -#define HSMCI_IER_RTOE (0x1u << 20) /**< \brief (HSMCI_IER) Response Time-out Error Interrupt Enable */ -#define HSMCI_IER_DCRCE (0x1u << 21) /**< \brief (HSMCI_IER) Data CRC Error Interrupt Enable */ -#define HSMCI_IER_DTOE (0x1u << 22) /**< \brief (HSMCI_IER) Data Time-out Error Interrupt Enable */ -#define HSMCI_IER_CSTOE (0x1u << 23) /**< \brief (HSMCI_IER) Completion Signal Timeout Error Interrupt Enable */ -#define HSMCI_IER_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IER) FIFO empty Interrupt enable */ -#define HSMCI_IER_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IER) Transfer Done Interrupt enable */ -#define HSMCI_IER_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IER) Boot Acknowledge Interrupt Enable */ -#define HSMCI_IER_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IER) Boot Acknowledge Error Interrupt Enable */ -#define HSMCI_IER_OVRE (0x1u << 30) /**< \brief (HSMCI_IER) Overrun Interrupt Enable */ -#define HSMCI_IER_UNRE (0x1u << 31) /**< \brief (HSMCI_IER) Underrun Interrupt Enable */ -/* -------- HSMCI_IDR : (HSMCI Offset: 0x48) Interrupt Disable Register -------- */ -#define HSMCI_IDR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IDR) Command Ready Interrupt Disable */ -#define HSMCI_IDR_RXRDY (0x1u << 1) /**< \brief (HSMCI_IDR) Receiver Ready Interrupt Disable */ -#define HSMCI_IDR_TXRDY (0x1u << 2) /**< \brief (HSMCI_IDR) Transmit Ready Interrupt Disable */ -#define HSMCI_IDR_BLKE (0x1u << 3) /**< \brief (HSMCI_IDR) Data Block Ended Interrupt Disable */ -#define HSMCI_IDR_DTIP (0x1u << 4) /**< \brief (HSMCI_IDR) Data Transfer in Progress Interrupt Disable */ -#define HSMCI_IDR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IDR) Data Not Busy Interrupt Disable */ -#define HSMCI_IDR_ENDRX (0x1u << 6) /**< \brief (HSMCI_IDR) End of Receive Buffer Interrupt Disable */ -#define HSMCI_IDR_ENDTX (0x1u << 7) /**< \brief (HSMCI_IDR) End of Transmit Buffer Interrupt Disable */ -#define HSMCI_IDR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IDR) SDIO Interrupt for Slot A Interrupt Disable */ -#define HSMCI_IDR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IDR) SDIO Read Wait Operation Status Interrupt Disable */ -#define HSMCI_IDR_CSRCV (0x1u << 13) /**< \brief (HSMCI_IDR) Completion Signal received interrupt Disable */ -#define HSMCI_IDR_RXBUFF (0x1u << 14) /**< \brief (HSMCI_IDR) Receive Buffer Full Interrupt Disable */ -#define HSMCI_IDR_TXBUFE (0x1u << 15) /**< \brief (HSMCI_IDR) Transmit Buffer Empty Interrupt Disable */ -#define HSMCI_IDR_RINDE (0x1u << 16) /**< \brief (HSMCI_IDR) Response Index Error Interrupt Disable */ -#define HSMCI_IDR_RDIRE (0x1u << 17) /**< \brief (HSMCI_IDR) Response Direction Error Interrupt Disable */ -#define HSMCI_IDR_RCRCE (0x1u << 18) /**< \brief (HSMCI_IDR) Response CRC Error Interrupt Disable */ -#define HSMCI_IDR_RENDE (0x1u << 19) /**< \brief (HSMCI_IDR) Response End Bit Error Interrupt Disable */ -#define HSMCI_IDR_RTOE (0x1u << 20) /**< \brief (HSMCI_IDR) Response Time-out Error Interrupt Disable */ -#define HSMCI_IDR_DCRCE (0x1u << 21) /**< \brief (HSMCI_IDR) Data CRC Error Interrupt Disable */ -#define HSMCI_IDR_DTOE (0x1u << 22) /**< \brief (HSMCI_IDR) Data Time-out Error Interrupt Disable */ -#define HSMCI_IDR_CSTOE (0x1u << 23) /**< \brief (HSMCI_IDR) Completion Signal Time out Error Interrupt Disable */ -#define HSMCI_IDR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IDR) FIFO empty Interrupt Disable */ -#define HSMCI_IDR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IDR) Transfer Done Interrupt Disable */ -#define HSMCI_IDR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IDR) Boot Acknowledge Interrupt Disable */ -#define HSMCI_IDR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IDR) Boot Acknowledge Error Interrupt Disable */ -#define HSMCI_IDR_OVRE (0x1u << 30) /**< \brief (HSMCI_IDR) Overrun Interrupt Disable */ -#define HSMCI_IDR_UNRE (0x1u << 31) /**< \brief (HSMCI_IDR) Underrun Interrupt Disable */ -/* -------- HSMCI_IMR : (HSMCI Offset: 0x4C) Interrupt Mask Register -------- */ -#define HSMCI_IMR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IMR) Command Ready Interrupt Mask */ -#define HSMCI_IMR_RXRDY (0x1u << 1) /**< \brief (HSMCI_IMR) Receiver Ready Interrupt Mask */ -#define HSMCI_IMR_TXRDY (0x1u << 2) /**< \brief (HSMCI_IMR) Transmit Ready Interrupt Mask */ -#define HSMCI_IMR_BLKE (0x1u << 3) /**< \brief (HSMCI_IMR) Data Block Ended Interrupt Mask */ -#define HSMCI_IMR_DTIP (0x1u << 4) /**< \brief (HSMCI_IMR) Data Transfer in Progress Interrupt Mask */ -#define HSMCI_IMR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IMR) Data Not Busy Interrupt Mask */ -#define HSMCI_IMR_ENDRX (0x1u << 6) /**< \brief (HSMCI_IMR) End of Receive Buffer Interrupt Mask */ -#define HSMCI_IMR_ENDTX (0x1u << 7) /**< \brief (HSMCI_IMR) End of Transmit Buffer Interrupt Mask */ -#define HSMCI_IMR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IMR) SDIO Interrupt for Slot A Interrupt Mask */ -#define HSMCI_IMR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IMR) SDIO Read Wait Operation Status Interrupt Mask */ -#define HSMCI_IMR_CSRCV (0x1u << 13) /**< \brief (HSMCI_IMR) Completion Signal Received Interrupt Mask */ -#define HSMCI_IMR_RXBUFF (0x1u << 14) /**< \brief (HSMCI_IMR) Receive Buffer Full Interrupt Mask */ -#define HSMCI_IMR_TXBUFE (0x1u << 15) /**< \brief (HSMCI_IMR) Transmit Buffer Empty Interrupt Mask */ -#define HSMCI_IMR_RINDE (0x1u << 16) /**< \brief (HSMCI_IMR) Response Index Error Interrupt Mask */ -#define HSMCI_IMR_RDIRE (0x1u << 17) /**< \brief (HSMCI_IMR) Response Direction Error Interrupt Mask */ -#define HSMCI_IMR_RCRCE (0x1u << 18) /**< \brief (HSMCI_IMR) Response CRC Error Interrupt Mask */ -#define HSMCI_IMR_RENDE (0x1u << 19) /**< \brief (HSMCI_IMR) Response End Bit Error Interrupt Mask */ -#define HSMCI_IMR_RTOE (0x1u << 20) /**< \brief (HSMCI_IMR) Response Time-out Error Interrupt Mask */ -#define HSMCI_IMR_DCRCE (0x1u << 21) /**< \brief (HSMCI_IMR) Data CRC Error Interrupt Mask */ -#define HSMCI_IMR_DTOE (0x1u << 22) /**< \brief (HSMCI_IMR) Data Time-out Error Interrupt Mask */ -#define HSMCI_IMR_CSTOE (0x1u << 23) /**< \brief (HSMCI_IMR) Completion Signal Time-out Error Interrupt Mask */ -#define HSMCI_IMR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IMR) FIFO Empty Interrupt Mask */ -#define HSMCI_IMR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IMR) Transfer Done Interrupt Mask */ -#define HSMCI_IMR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IMR) Boot Operation Acknowledge Received Interrupt Mask */ -#define HSMCI_IMR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IMR) Boot Operation Acknowledge Error Interrupt Mask */ -#define HSMCI_IMR_OVRE (0x1u << 30) /**< \brief (HSMCI_IMR) Overrun Interrupt Mask */ -#define HSMCI_IMR_UNRE (0x1u << 31) /**< \brief (HSMCI_IMR) Underrun Interrupt Mask */ -/* -------- HSMCI_CFG : (HSMCI Offset: 0x54) Configuration Register -------- */ -#define HSMCI_CFG_FIFOMODE (0x1u << 0) /**< \brief (HSMCI_CFG) HSMCI Internal FIFO control mode */ -#define HSMCI_CFG_FERRCTRL (0x1u << 4) /**< \brief (HSMCI_CFG) Flow Error flag reset control mode */ -#define HSMCI_CFG_HSMODE (0x1u << 8) /**< \brief (HSMCI_CFG) High Speed Mode */ -#define HSMCI_CFG_LSYNC (0x1u << 12) /**< \brief (HSMCI_CFG) Synchronize on the last block */ -/* -------- HSMCI_WPMR : (HSMCI Offset: 0xE4) Write Protection Mode Register -------- */ -#define HSMCI_WPMR_WP_EN (0x1u << 0) /**< \brief (HSMCI_WPMR) Write Protection Enable */ -#define HSMCI_WPMR_WP_KEY_Pos 8 -#define HSMCI_WPMR_WP_KEY_Msk (0xffffffu << HSMCI_WPMR_WP_KEY_Pos) /**< \brief (HSMCI_WPMR) Write Protection Key password */ -#define HSMCI_WPMR_WP_KEY(value) ((HSMCI_WPMR_WP_KEY_Msk & ((value) << HSMCI_WPMR_WP_KEY_Pos))) -/* -------- HSMCI_WPSR : (HSMCI Offset: 0xE8) Write Protection Status Register -------- */ -#define HSMCI_WPSR_WP_VS_Pos 0 -#define HSMCI_WPSR_WP_VS_Msk (0xfu << HSMCI_WPSR_WP_VS_Pos) /**< \brief (HSMCI_WPSR) Write Protection Violation Status */ -#define HSMCI_WPSR_WP_VS_NONE (0x0u << 0) /**< \brief (HSMCI_WPSR) No Write Protection Violation occurred since the last read of this register (WP_SR) */ -#define HSMCI_WPSR_WP_VS_WRITE (0x1u << 0) /**< \brief (HSMCI_WPSR) Write Protection detected unauthorized attempt to write a control register had occurred (since the last read.) */ -#define HSMCI_WPSR_WP_VS_RESET (0x2u << 0) /**< \brief (HSMCI_WPSR) Software reset had been performed while Write Protection was enabled (since the last read). */ -#define HSMCI_WPSR_WP_VS_BOTH (0x3u << 0) /**< \brief (HSMCI_WPSR) Both Write Protection violation and software reset with Write Protection enabled have occurred since the last read. */ -#define HSMCI_WPSR_WP_VSRC_Pos 8 -#define HSMCI_WPSR_WP_VSRC_Msk (0xffffu << HSMCI_WPSR_WP_VSRC_Pos) /**< \brief (HSMCI_WPSR) Write Protection Violation SouRCe */ -/* -------- HSMCI_RPR : (HSMCI Offset: 0x100) Receive Pointer Register -------- */ -#define HSMCI_RPR_RXPTR_Pos 0 -#define HSMCI_RPR_RXPTR_Msk (0xffffffffu << HSMCI_RPR_RXPTR_Pos) /**< \brief (HSMCI_RPR) Receive Pointer Register */ -#define HSMCI_RPR_RXPTR(value) ((HSMCI_RPR_RXPTR_Msk & ((value) << HSMCI_RPR_RXPTR_Pos))) -/* -------- HSMCI_RCR : (HSMCI Offset: 0x104) Receive Counter Register -------- */ -#define HSMCI_RCR_RXCTR_Pos 0 -#define HSMCI_RCR_RXCTR_Msk (0xffffu << HSMCI_RCR_RXCTR_Pos) /**< \brief (HSMCI_RCR) Receive Counter Register */ -#define HSMCI_RCR_RXCTR(value) ((HSMCI_RCR_RXCTR_Msk & ((value) << HSMCI_RCR_RXCTR_Pos))) -/* -------- HSMCI_TPR : (HSMCI Offset: 0x108) Transmit Pointer Register -------- */ -#define HSMCI_TPR_TXPTR_Pos 0 -#define HSMCI_TPR_TXPTR_Msk (0xffffffffu << HSMCI_TPR_TXPTR_Pos) /**< \brief (HSMCI_TPR) Transmit Counter Register */ -#define HSMCI_TPR_TXPTR(value) ((HSMCI_TPR_TXPTR_Msk & ((value) << HSMCI_TPR_TXPTR_Pos))) -/* -------- HSMCI_TCR : (HSMCI Offset: 0x10C) Transmit Counter Register -------- */ -#define HSMCI_TCR_TXCTR_Pos 0 -#define HSMCI_TCR_TXCTR_Msk (0xffffu << HSMCI_TCR_TXCTR_Pos) /**< \brief (HSMCI_TCR) Transmit Counter Register */ -#define HSMCI_TCR_TXCTR(value) ((HSMCI_TCR_TXCTR_Msk & ((value) << HSMCI_TCR_TXCTR_Pos))) -/* -------- HSMCI_RNPR : (HSMCI Offset: 0x110) Receive Next Pointer Register -------- */ -#define HSMCI_RNPR_RXNPTR_Pos 0 -#define HSMCI_RNPR_RXNPTR_Msk (0xffffffffu << HSMCI_RNPR_RXNPTR_Pos) /**< \brief (HSMCI_RNPR) Receive Next Pointer */ -#define HSMCI_RNPR_RXNPTR(value) ((HSMCI_RNPR_RXNPTR_Msk & ((value) << HSMCI_RNPR_RXNPTR_Pos))) -/* -------- HSMCI_RNCR : (HSMCI Offset: 0x114) Receive Next Counter Register -------- */ -#define HSMCI_RNCR_RXNCTR_Pos 0 -#define HSMCI_RNCR_RXNCTR_Msk (0xffffu << HSMCI_RNCR_RXNCTR_Pos) /**< \brief (HSMCI_RNCR) Receive Next Counter */ -#define HSMCI_RNCR_RXNCTR(value) ((HSMCI_RNCR_RXNCTR_Msk & ((value) << HSMCI_RNCR_RXNCTR_Pos))) -/* -------- HSMCI_TNPR : (HSMCI Offset: 0x118) Transmit Next Pointer Register -------- */ -#define HSMCI_TNPR_TXNPTR_Pos 0 -#define HSMCI_TNPR_TXNPTR_Msk (0xffffffffu << HSMCI_TNPR_TXNPTR_Pos) /**< \brief (HSMCI_TNPR) Transmit Next Pointer */ -#define HSMCI_TNPR_TXNPTR(value) ((HSMCI_TNPR_TXNPTR_Msk & ((value) << HSMCI_TNPR_TXNPTR_Pos))) -/* -------- HSMCI_TNCR : (HSMCI Offset: 0x11C) Transmit Next Counter Register -------- */ -#define HSMCI_TNCR_TXNCTR_Pos 0 -#define HSMCI_TNCR_TXNCTR_Msk (0xffffu << HSMCI_TNCR_TXNCTR_Pos) /**< \brief (HSMCI_TNCR) Transmit Counter Next */ -#define HSMCI_TNCR_TXNCTR(value) ((HSMCI_TNCR_TXNCTR_Msk & ((value) << HSMCI_TNCR_TXNCTR_Pos))) -/* -------- HSMCI_PTCR : (HSMCI Offset: 0x120) Transfer Control Register -------- */ -#define HSMCI_PTCR_RXTEN (0x1u << 0) /**< \brief (HSMCI_PTCR) Receiver Transfer Enable */ -#define HSMCI_PTCR_RXTDIS (0x1u << 1) /**< \brief (HSMCI_PTCR) Receiver Transfer Disable */ -#define HSMCI_PTCR_TXTEN (0x1u << 8) /**< \brief (HSMCI_PTCR) Transmitter Transfer Enable */ -#define HSMCI_PTCR_TXTDIS (0x1u << 9) /**< \brief (HSMCI_PTCR) Transmitter Transfer Disable */ -/* -------- HSMCI_PTSR : (HSMCI Offset: 0x124) Transfer Status Register -------- */ -#define HSMCI_PTSR_RXTEN (0x1u << 0) /**< \brief (HSMCI_PTSR) Receiver Transfer Enable */ -#define HSMCI_PTSR_TXTEN (0x1u << 8) /**< \brief (HSMCI_PTSR) Transmitter Transfer Enable */ - -/*@}*/ - - -#endif /* _SAM4E_HSMCI_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/matrix.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/matrix.h deleted file mode 100644 index f14688aa4..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/matrix.h +++ /dev/null @@ -1,261 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_MATRIX_COMPONENT_ -#define _SAM4E_MATRIX_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Bus Matrix */ -/* ============================================================================= */ -/** \addtogroup SAM4E_MATRIX Bus Matrix */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Matrix hardware registers */ -typedef struct { - RwReg MATRIX_MCFG[7]; /**< \brief (Matrix Offset: 0x0000) Master Configuration Register */ - RoReg Reserved1[9]; - RwReg MATRIX_SCFG[6]; /**< \brief (Matrix Offset: 0x0040) Slave Configuration Register */ - RoReg Reserved2[10]; - RwReg MATRIX_PRAS0; /**< \brief (Matrix Offset: 0x0080) Priority Register A for Slave 0 */ - RoReg Reserved3[1]; - RwReg MATRIX_PRAS1; /**< \brief (Matrix Offset: 0x0088) Priority Register A for Slave 1 */ - RoReg Reserved4[1]; - RwReg MATRIX_PRAS2; /**< \brief (Matrix Offset: 0x0090) Priority Register A for Slave 2 */ - RoReg Reserved5[1]; - RwReg MATRIX_PRAS3; /**< \brief (Matrix Offset: 0x0098) Priority Register A for Slave 3 */ - RoReg Reserved6[1]; - RwReg MATRIX_PRAS4; /**< \brief (Matrix Offset: 0x00A0) Priority Register A for Slave 4 */ - RoReg Reserved7[1]; - RwReg MATRIX_PRAS5; /**< \brief (Matrix Offset: 0x00A8) Priority Register A for Slave 5 */ - RoReg Reserved8[1]; - RoReg Reserved9[20]; - RwReg MATRIX_MRCR; /**< \brief (Matrix Offset: 0x0100) Master Remap Control Register */ - RoReg Reserved10[4]; - RwReg CCFG_SYSIO; /**< \brief (Matrix Offset: 0x0114) System I/O Configuration Register */ - RoReg Reserved11[3]; - RwReg CCFG_SMCNFCS; /**< \brief (Matrix Offset: 0x0124) SMC NAND Flash Chip Select Configuration Register */ - RoReg Reserved12[47]; - RwReg MATRIX_WPMR; /**< \brief (Matrix Offset: 0x01E4) Write Protect Mode Register */ - RoReg MATRIX_WPSR; /**< \brief (Matrix Offset: 0x01E8) Write Protect Status Register */ -} Matrix; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- MATRIX_MCFG[7] : (MATRIX Offset: 0x0000) Master Configuration Register -------- */ -#define MATRIX_MCFG_ULBT_Pos 0 -#define MATRIX_MCFG_ULBT_Msk (0x7u << MATRIX_MCFG_ULBT_Pos) /**< \brief (MATRIX_MCFG[7]) Undefined Length Burst Type */ -#define MATRIX_MCFG_ULBT(value) ((MATRIX_MCFG_ULBT_Msk & ((value) << MATRIX_MCFG_ULBT_Pos))) -/* -------- MATRIX_SCFG[6] : (MATRIX Offset: 0x0040) Slave Configuration Register -------- */ -#define MATRIX_SCFG_SLOT_CYCLE_Pos 0 -#define MATRIX_SCFG_SLOT_CYCLE_Msk (0x1ffu << MATRIX_SCFG_SLOT_CYCLE_Pos) /**< \brief (MATRIX_SCFG[6]) Maximum Bus Grant Duration for Masters */ -#define MATRIX_SCFG_SLOT_CYCLE(value) ((MATRIX_SCFG_SLOT_CYCLE_Msk & ((value) << MATRIX_SCFG_SLOT_CYCLE_Pos))) -#define MATRIX_SCFG_DEFMSTR_TYPE_Pos 16 -#define MATRIX_SCFG_DEFMSTR_TYPE_Msk (0x3u << MATRIX_SCFG_DEFMSTR_TYPE_Pos) /**< \brief (MATRIX_SCFG[6]) Default Master Type */ -#define MATRIX_SCFG_DEFMSTR_TYPE(value) ((MATRIX_SCFG_DEFMSTR_TYPE_Msk & ((value) << MATRIX_SCFG_DEFMSTR_TYPE_Pos))) -#define MATRIX_SCFG_FIXED_DEFMSTR_Pos 18 -#define MATRIX_SCFG_FIXED_DEFMSTR_Msk (0xfu << MATRIX_SCFG_FIXED_DEFMSTR_Pos) /**< \brief (MATRIX_SCFG[6]) Fixed Default Master */ -#define MATRIX_SCFG_FIXED_DEFMSTR(value) ((MATRIX_SCFG_FIXED_DEFMSTR_Msk & ((value) << MATRIX_SCFG_FIXED_DEFMSTR_Pos))) -/* -------- MATRIX_PRAS0 : (MATRIX Offset: 0x0080) Priority Register A for Slave 0 -------- */ -#define MATRIX_PRAS0_M0PR_Pos 0 -#define MATRIX_PRAS0_M0PR_Msk (0x3u << MATRIX_PRAS0_M0PR_Pos) /**< \brief (MATRIX_PRAS0) Master 0 Priority */ -#define MATRIX_PRAS0_M0PR(value) ((MATRIX_PRAS0_M0PR_Msk & ((value) << MATRIX_PRAS0_M0PR_Pos))) -#define MATRIX_PRAS0_M1PR_Pos 4 -#define MATRIX_PRAS0_M1PR_Msk (0x3u << MATRIX_PRAS0_M1PR_Pos) /**< \brief (MATRIX_PRAS0) Master 1 Priority */ -#define MATRIX_PRAS0_M1PR(value) ((MATRIX_PRAS0_M1PR_Msk & ((value) << MATRIX_PRAS0_M1PR_Pos))) -#define MATRIX_PRAS0_M2PR_Pos 8 -#define MATRIX_PRAS0_M2PR_Msk (0x3u << MATRIX_PRAS0_M2PR_Pos) /**< \brief (MATRIX_PRAS0) Master 2 Priority */ -#define MATRIX_PRAS0_M2PR(value) ((MATRIX_PRAS0_M2PR_Msk & ((value) << MATRIX_PRAS0_M2PR_Pos))) -#define MATRIX_PRAS0_M3PR_Pos 12 -#define MATRIX_PRAS0_M3PR_Msk (0x3u << MATRIX_PRAS0_M3PR_Pos) /**< \brief (MATRIX_PRAS0) Master 3 Priority */ -#define MATRIX_PRAS0_M3PR(value) ((MATRIX_PRAS0_M3PR_Msk & ((value) << MATRIX_PRAS0_M3PR_Pos))) -#define MATRIX_PRAS0_M4PR_Pos 16 -#define MATRIX_PRAS0_M4PR_Msk (0x3u << MATRIX_PRAS0_M4PR_Pos) /**< \brief (MATRIX_PRAS0) Master 4 Priority */ -#define MATRIX_PRAS0_M4PR(value) ((MATRIX_PRAS0_M4PR_Msk & ((value) << MATRIX_PRAS0_M4PR_Pos))) -#define MATRIX_PRAS0_M5PR_Pos 20 -#define MATRIX_PRAS0_M5PR_Msk (0x3u << MATRIX_PRAS0_M5PR_Pos) /**< \brief (MATRIX_PRAS0) Master 5 Priority */ -#define MATRIX_PRAS0_M5PR(value) ((MATRIX_PRAS0_M5PR_Msk & ((value) << MATRIX_PRAS0_M5PR_Pos))) -#define MATRIX_PRAS0_M6PR_Pos 24 -#define MATRIX_PRAS0_M6PR_Msk (0x3u << MATRIX_PRAS0_M6PR_Pos) /**< \brief (MATRIX_PRAS0) Master 6 Priority */ -#define MATRIX_PRAS0_M6PR(value) ((MATRIX_PRAS0_M6PR_Msk & ((value) << MATRIX_PRAS0_M6PR_Pos))) -/* -------- MATRIX_PRAS1 : (MATRIX Offset: 0x0088) Priority Register A for Slave 1 -------- */ -#define MATRIX_PRAS1_M0PR_Pos 0 -#define MATRIX_PRAS1_M0PR_Msk (0x3u << MATRIX_PRAS1_M0PR_Pos) /**< \brief (MATRIX_PRAS1) Master 0 Priority */ -#define MATRIX_PRAS1_M0PR(value) ((MATRIX_PRAS1_M0PR_Msk & ((value) << MATRIX_PRAS1_M0PR_Pos))) -#define MATRIX_PRAS1_M1PR_Pos 4 -#define MATRIX_PRAS1_M1PR_Msk (0x3u << MATRIX_PRAS1_M1PR_Pos) /**< \brief (MATRIX_PRAS1) Master 1 Priority */ -#define MATRIX_PRAS1_M1PR(value) ((MATRIX_PRAS1_M1PR_Msk & ((value) << MATRIX_PRAS1_M1PR_Pos))) -#define MATRIX_PRAS1_M2PR_Pos 8 -#define MATRIX_PRAS1_M2PR_Msk (0x3u << MATRIX_PRAS1_M2PR_Pos) /**< \brief (MATRIX_PRAS1) Master 2 Priority */ -#define MATRIX_PRAS1_M2PR(value) ((MATRIX_PRAS1_M2PR_Msk & ((value) << MATRIX_PRAS1_M2PR_Pos))) -#define MATRIX_PRAS1_M3PR_Pos 12 -#define MATRIX_PRAS1_M3PR_Msk (0x3u << MATRIX_PRAS1_M3PR_Pos) /**< \brief (MATRIX_PRAS1) Master 3 Priority */ -#define MATRIX_PRAS1_M3PR(value) ((MATRIX_PRAS1_M3PR_Msk & ((value) << MATRIX_PRAS1_M3PR_Pos))) -#define MATRIX_PRAS1_M4PR_Pos 16 -#define MATRIX_PRAS1_M4PR_Msk (0x3u << MATRIX_PRAS1_M4PR_Pos) /**< \brief (MATRIX_PRAS1) Master 4 Priority */ -#define MATRIX_PRAS1_M4PR(value) ((MATRIX_PRAS1_M4PR_Msk & ((value) << MATRIX_PRAS1_M4PR_Pos))) -#define MATRIX_PRAS1_M5PR_Pos 20 -#define MATRIX_PRAS1_M5PR_Msk (0x3u << MATRIX_PRAS1_M5PR_Pos) /**< \brief (MATRIX_PRAS1) Master 5 Priority */ -#define MATRIX_PRAS1_M5PR(value) ((MATRIX_PRAS1_M5PR_Msk & ((value) << MATRIX_PRAS1_M5PR_Pos))) -#define MATRIX_PRAS1_M6PR_Pos 24 -#define MATRIX_PRAS1_M6PR_Msk (0x3u << MATRIX_PRAS1_M6PR_Pos) /**< \brief (MATRIX_PRAS1) Master 6 Priority */ -#define MATRIX_PRAS1_M6PR(value) ((MATRIX_PRAS1_M6PR_Msk & ((value) << MATRIX_PRAS1_M6PR_Pos))) -/* -------- MATRIX_PRAS2 : (MATRIX Offset: 0x0090) Priority Register A for Slave 2 -------- */ -#define MATRIX_PRAS2_M0PR_Pos 0 -#define MATRIX_PRAS2_M0PR_Msk (0x3u << MATRIX_PRAS2_M0PR_Pos) /**< \brief (MATRIX_PRAS2) Master 0 Priority */ -#define MATRIX_PRAS2_M0PR(value) ((MATRIX_PRAS2_M0PR_Msk & ((value) << MATRIX_PRAS2_M0PR_Pos))) -#define MATRIX_PRAS2_M1PR_Pos 4 -#define MATRIX_PRAS2_M1PR_Msk (0x3u << MATRIX_PRAS2_M1PR_Pos) /**< \brief (MATRIX_PRAS2) Master 1 Priority */ -#define MATRIX_PRAS2_M1PR(value) ((MATRIX_PRAS2_M1PR_Msk & ((value) << MATRIX_PRAS2_M1PR_Pos))) -#define MATRIX_PRAS2_M2PR_Pos 8 -#define MATRIX_PRAS2_M2PR_Msk (0x3u << MATRIX_PRAS2_M2PR_Pos) /**< \brief (MATRIX_PRAS2) Master 2 Priority */ -#define MATRIX_PRAS2_M2PR(value) ((MATRIX_PRAS2_M2PR_Msk & ((value) << MATRIX_PRAS2_M2PR_Pos))) -#define MATRIX_PRAS2_M3PR_Pos 12 -#define MATRIX_PRAS2_M3PR_Msk (0x3u << MATRIX_PRAS2_M3PR_Pos) /**< \brief (MATRIX_PRAS2) Master 3 Priority */ -#define MATRIX_PRAS2_M3PR(value) ((MATRIX_PRAS2_M3PR_Msk & ((value) << MATRIX_PRAS2_M3PR_Pos))) -#define MATRIX_PRAS2_M4PR_Pos 16 -#define MATRIX_PRAS2_M4PR_Msk (0x3u << MATRIX_PRAS2_M4PR_Pos) /**< \brief (MATRIX_PRAS2) Master 4 Priority */ -#define MATRIX_PRAS2_M4PR(value) ((MATRIX_PRAS2_M4PR_Msk & ((value) << MATRIX_PRAS2_M4PR_Pos))) -#define MATRIX_PRAS2_M5PR_Pos 20 -#define MATRIX_PRAS2_M5PR_Msk (0x3u << MATRIX_PRAS2_M5PR_Pos) /**< \brief (MATRIX_PRAS2) Master 5 Priority */ -#define MATRIX_PRAS2_M5PR(value) ((MATRIX_PRAS2_M5PR_Msk & ((value) << MATRIX_PRAS2_M5PR_Pos))) -#define MATRIX_PRAS2_M6PR_Pos 24 -#define MATRIX_PRAS2_M6PR_Msk (0x3u << MATRIX_PRAS2_M6PR_Pos) /**< \brief (MATRIX_PRAS2) Master 6 Priority */ -#define MATRIX_PRAS2_M6PR(value) ((MATRIX_PRAS2_M6PR_Msk & ((value) << MATRIX_PRAS2_M6PR_Pos))) -/* -------- MATRIX_PRAS3 : (MATRIX Offset: 0x0098) Priority Register A for Slave 3 -------- */ -#define MATRIX_PRAS3_M0PR_Pos 0 -#define MATRIX_PRAS3_M0PR_Msk (0x3u << MATRIX_PRAS3_M0PR_Pos) /**< \brief (MATRIX_PRAS3) Master 0 Priority */ -#define MATRIX_PRAS3_M0PR(value) ((MATRIX_PRAS3_M0PR_Msk & ((value) << MATRIX_PRAS3_M0PR_Pos))) -#define MATRIX_PRAS3_M1PR_Pos 4 -#define MATRIX_PRAS3_M1PR_Msk (0x3u << MATRIX_PRAS3_M1PR_Pos) /**< \brief (MATRIX_PRAS3) Master 1 Priority */ -#define MATRIX_PRAS3_M1PR(value) ((MATRIX_PRAS3_M1PR_Msk & ((value) << MATRIX_PRAS3_M1PR_Pos))) -#define MATRIX_PRAS3_M2PR_Pos 8 -#define MATRIX_PRAS3_M2PR_Msk (0x3u << MATRIX_PRAS3_M2PR_Pos) /**< \brief (MATRIX_PRAS3) Master 2 Priority */ -#define MATRIX_PRAS3_M2PR(value) ((MATRIX_PRAS3_M2PR_Msk & ((value) << MATRIX_PRAS3_M2PR_Pos))) -#define MATRIX_PRAS3_M3PR_Pos 12 -#define MATRIX_PRAS3_M3PR_Msk (0x3u << MATRIX_PRAS3_M3PR_Pos) /**< \brief (MATRIX_PRAS3) Master 3 Priority */ -#define MATRIX_PRAS3_M3PR(value) ((MATRIX_PRAS3_M3PR_Msk & ((value) << MATRIX_PRAS3_M3PR_Pos))) -#define MATRIX_PRAS3_M4PR_Pos 16 -#define MATRIX_PRAS3_M4PR_Msk (0x3u << MATRIX_PRAS3_M4PR_Pos) /**< \brief (MATRIX_PRAS3) Master 4 Priority */ -#define MATRIX_PRAS3_M4PR(value) ((MATRIX_PRAS3_M4PR_Msk & ((value) << MATRIX_PRAS3_M4PR_Pos))) -#define MATRIX_PRAS3_M5PR_Pos 20 -#define MATRIX_PRAS3_M5PR_Msk (0x3u << MATRIX_PRAS3_M5PR_Pos) /**< \brief (MATRIX_PRAS3) Master 5 Priority */ -#define MATRIX_PRAS3_M5PR(value) ((MATRIX_PRAS3_M5PR_Msk & ((value) << MATRIX_PRAS3_M5PR_Pos))) -#define MATRIX_PRAS3_M6PR_Pos 24 -#define MATRIX_PRAS3_M6PR_Msk (0x3u << MATRIX_PRAS3_M6PR_Pos) /**< \brief (MATRIX_PRAS3) Master 6 Priority */ -#define MATRIX_PRAS3_M6PR(value) ((MATRIX_PRAS3_M6PR_Msk & ((value) << MATRIX_PRAS3_M6PR_Pos))) -/* -------- MATRIX_PRAS4 : (MATRIX Offset: 0x00A0) Priority Register A for Slave 4 -------- */ -#define MATRIX_PRAS4_M0PR_Pos 0 -#define MATRIX_PRAS4_M0PR_Msk (0x3u << MATRIX_PRAS4_M0PR_Pos) /**< \brief (MATRIX_PRAS4) Master 0 Priority */ -#define MATRIX_PRAS4_M0PR(value) ((MATRIX_PRAS4_M0PR_Msk & ((value) << MATRIX_PRAS4_M0PR_Pos))) -#define MATRIX_PRAS4_M1PR_Pos 4 -#define MATRIX_PRAS4_M1PR_Msk (0x3u << MATRIX_PRAS4_M1PR_Pos) /**< \brief (MATRIX_PRAS4) Master 1 Priority */ -#define MATRIX_PRAS4_M1PR(value) ((MATRIX_PRAS4_M1PR_Msk & ((value) << MATRIX_PRAS4_M1PR_Pos))) -#define MATRIX_PRAS4_M2PR_Pos 8 -#define MATRIX_PRAS4_M2PR_Msk (0x3u << MATRIX_PRAS4_M2PR_Pos) /**< \brief (MATRIX_PRAS4) Master 2 Priority */ -#define MATRIX_PRAS4_M2PR(value) ((MATRIX_PRAS4_M2PR_Msk & ((value) << MATRIX_PRAS4_M2PR_Pos))) -#define MATRIX_PRAS4_M3PR_Pos 12 -#define MATRIX_PRAS4_M3PR_Msk (0x3u << MATRIX_PRAS4_M3PR_Pos) /**< \brief (MATRIX_PRAS4) Master 3 Priority */ -#define MATRIX_PRAS4_M3PR(value) ((MATRIX_PRAS4_M3PR_Msk & ((value) << MATRIX_PRAS4_M3PR_Pos))) -#define MATRIX_PRAS4_M4PR_Pos 16 -#define MATRIX_PRAS4_M4PR_Msk (0x3u << MATRIX_PRAS4_M4PR_Pos) /**< \brief (MATRIX_PRAS4) Master 4 Priority */ -#define MATRIX_PRAS4_M4PR(value) ((MATRIX_PRAS4_M4PR_Msk & ((value) << MATRIX_PRAS4_M4PR_Pos))) -#define MATRIX_PRAS4_M5PR_Pos 20 -#define MATRIX_PRAS4_M5PR_Msk (0x3u << MATRIX_PRAS4_M5PR_Pos) /**< \brief (MATRIX_PRAS4) Master 5 Priority */ -#define MATRIX_PRAS4_M5PR(value) ((MATRIX_PRAS4_M5PR_Msk & ((value) << MATRIX_PRAS4_M5PR_Pos))) -#define MATRIX_PRAS4_M6PR_Pos 24 -#define MATRIX_PRAS4_M6PR_Msk (0x3u << MATRIX_PRAS4_M6PR_Pos) /**< \brief (MATRIX_PRAS4) Master 6 Priority */ -#define MATRIX_PRAS4_M6PR(value) ((MATRIX_PRAS4_M6PR_Msk & ((value) << MATRIX_PRAS4_M6PR_Pos))) -/* -------- MATRIX_PRAS5 : (MATRIX Offset: 0x00A8) Priority Register A for Slave 5 -------- */ -#define MATRIX_PRAS5_M0PR_Pos 0 -#define MATRIX_PRAS5_M0PR_Msk (0x3u << MATRIX_PRAS5_M0PR_Pos) /**< \brief (MATRIX_PRAS5) Master 0 Priority */ -#define MATRIX_PRAS5_M0PR(value) ((MATRIX_PRAS5_M0PR_Msk & ((value) << MATRIX_PRAS5_M0PR_Pos))) -#define MATRIX_PRAS5_M1PR_Pos 4 -#define MATRIX_PRAS5_M1PR_Msk (0x3u << MATRIX_PRAS5_M1PR_Pos) /**< \brief (MATRIX_PRAS5) Master 1 Priority */ -#define MATRIX_PRAS5_M1PR(value) ((MATRIX_PRAS5_M1PR_Msk & ((value) << MATRIX_PRAS5_M1PR_Pos))) -#define MATRIX_PRAS5_M2PR_Pos 8 -#define MATRIX_PRAS5_M2PR_Msk (0x3u << MATRIX_PRAS5_M2PR_Pos) /**< \brief (MATRIX_PRAS5) Master 2 Priority */ -#define MATRIX_PRAS5_M2PR(value) ((MATRIX_PRAS5_M2PR_Msk & ((value) << MATRIX_PRAS5_M2PR_Pos))) -#define MATRIX_PRAS5_M3PR_Pos 12 -#define MATRIX_PRAS5_M3PR_Msk (0x3u << MATRIX_PRAS5_M3PR_Pos) /**< \brief (MATRIX_PRAS5) Master 3 Priority */ -#define MATRIX_PRAS5_M3PR(value) ((MATRIX_PRAS5_M3PR_Msk & ((value) << MATRIX_PRAS5_M3PR_Pos))) -#define MATRIX_PRAS5_M4PR_Pos 16 -#define MATRIX_PRAS5_M4PR_Msk (0x3u << MATRIX_PRAS5_M4PR_Pos) /**< \brief (MATRIX_PRAS5) Master 4 Priority */ -#define MATRIX_PRAS5_M4PR(value) ((MATRIX_PRAS5_M4PR_Msk & ((value) << MATRIX_PRAS5_M4PR_Pos))) -#define MATRIX_PRAS5_M5PR_Pos 20 -#define MATRIX_PRAS5_M5PR_Msk (0x3u << MATRIX_PRAS5_M5PR_Pos) /**< \brief (MATRIX_PRAS5) Master 5 Priority */ -#define MATRIX_PRAS5_M5PR(value) ((MATRIX_PRAS5_M5PR_Msk & ((value) << MATRIX_PRAS5_M5PR_Pos))) -#define MATRIX_PRAS5_M6PR_Pos 24 -#define MATRIX_PRAS5_M6PR_Msk (0x3u << MATRIX_PRAS5_M6PR_Pos) /**< \brief (MATRIX_PRAS5) Master 6 Priority */ -#define MATRIX_PRAS5_M6PR(value) ((MATRIX_PRAS5_M6PR_Msk & ((value) << MATRIX_PRAS5_M6PR_Pos))) -/* -------- MATRIX_MRCR : (MATRIX Offset: 0x0100) Master Remap Control Register -------- */ -#define MATRIX_MRCR_RCB0 (0x1u << 0) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 0 */ -#define MATRIX_MRCR_RCB1 (0x1u << 1) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 1 */ -#define MATRIX_MRCR_RCB2 (0x1u << 2) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 2 */ -#define MATRIX_MRCR_RCB3 (0x1u << 3) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 3 */ -#define MATRIX_MRCR_RCB4 (0x1u << 4) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 4 */ -#define MATRIX_MRCR_RCB5 (0x1u << 5) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 5 */ -#define MATRIX_MRCR_RCB6 (0x1u << 6) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 6 */ -/* -------- CCFG_SYSIO : (MATRIX Offset: 0x0114) System I/O Configuration Register -------- */ -#define CCFG_SYSIO_SYSIO4 (0x1u << 4) /**< \brief (CCFG_SYSIO) PB4 or TDI Assignment */ -#define CCFG_SYSIO_SYSIO5 (0x1u << 5) /**< \brief (CCFG_SYSIO) PB5 or TDO/TRACESWO Assignment */ -#define CCFG_SYSIO_SYSIO6 (0x1u << 6) /**< \brief (CCFG_SYSIO) PB6 or TMS/SWDIO Assignment */ -#define CCFG_SYSIO_SYSIO7 (0x1u << 7) /**< \brief (CCFG_SYSIO) PB7 or TCK/SWCLK Assignment */ -#define CCFG_SYSIO_SYSIO10 (0x1u << 10) /**< \brief (CCFG_SYSIO) PB10 or DDM Assignment */ -#define CCFG_SYSIO_SYSIO11 (0x1u << 11) /**< \brief (CCFG_SYSIO) PB11 or DDP Assignment */ -#define CCFG_SYSIO_SYSIO12 (0x1u << 12) /**< \brief (CCFG_SYSIO) PB12 or ERASE Assignment */ -/* -------- CCFG_SMCNFCS : (MATRIX Offset: 0x0124) SMC NAND Flash Chip Select Configuration Register -------- */ -#define CCFG_SMCNFCS_SMC_NFCS0 (0x1u << 0) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 0 Assignment */ -#define CCFG_SMCNFCS_SMC_NFCS1 (0x1u << 1) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 1 Assignment */ -#define CCFG_SMCNFCS_SMC_NFCS2 (0x1u << 2) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 2 Assignment */ -#define CCFG_SMCNFCS_SMC_NFCS3 (0x1u << 3) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 3 Assignment */ -/* -------- MATRIX_WPMR : (MATRIX Offset: 0x01E4) Write Protect Mode Register -------- */ -#define MATRIX_WPMR_WPEN (0x1u << 0) /**< \brief (MATRIX_WPMR) Write Protect Enable */ -#define MATRIX_WPMR_WPKEY_Pos 8 -#define MATRIX_WPMR_WPKEY_Msk (0xffffffu << MATRIX_WPMR_WPKEY_Pos) /**< \brief (MATRIX_WPMR) Write Protect KEY (Write-only) */ -#define MATRIX_WPMR_WPKEY(value) ((MATRIX_WPMR_WPKEY_Msk & ((value) << MATRIX_WPMR_WPKEY_Pos))) -/* -------- MATRIX_WPSR : (MATRIX Offset: 0x01E8) Write Protect Status Register -------- */ -#define MATRIX_WPSR_WPVS (0x1u << 0) /**< \brief (MATRIX_WPSR) Write Protect Violation Status */ -#define MATRIX_WPSR_WPVSRC_Pos 8 -#define MATRIX_WPSR_WPVSRC_Msk (0xffffu << MATRIX_WPSR_WPVSRC_Pos) /**< \brief (MATRIX_WPSR) Write Protect Violation Source */ - -/*@}*/ - - -#endif /* _SAM4E_MATRIX_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pdc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pdc.h deleted file mode 100644 index e2db44e7a..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pdc.h +++ /dev/null @@ -1,110 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_PDC_COMPONENT_ -#define _SAM4E_PDC_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Peripheral DMA Controller */ -/* ============================================================================= */ -/** \addtogroup SAM4E_PDC Peripheral DMA Controller */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Pdc hardware registers */ -typedef struct { - RwReg PERIPH_RPR; /**< \brief (Pdc Offset: 0x00) Receive Pointer Register */ - RwReg PERIPH_RCR; /**< \brief (Pdc Offset: 0x04) Receive Counter Register */ - RwReg PERIPH_TPR; /**< \brief (Pdc Offset: 0x08) Transmit Pointer Register */ - RwReg PERIPH_TCR; /**< \brief (Pdc Offset: 0x0C) Transmit Counter Register */ - RwReg PERIPH_RNPR; /**< \brief (Pdc Offset: 0x10) Receive Next Pointer Register */ - RwReg PERIPH_RNCR; /**< \brief (Pdc Offset: 0x14) Receive Next Counter Register */ - RwReg PERIPH_TNPR; /**< \brief (Pdc Offset: 0x18) Transmit Next Pointer Register */ - RwReg PERIPH_TNCR; /**< \brief (Pdc Offset: 0x1C) Transmit Next Counter Register */ - WoReg PERIPH_PTCR; /**< \brief (Pdc Offset: 0x20) Transfer Control Register */ - RoReg PERIPH_PTSR; /**< \brief (Pdc Offset: 0x24) Transfer Status Register */ -} Pdc; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- PERIPH_RPR : (PDC Offset: 0x00) Receive Pointer Register -------- */ -#define PERIPH_RPR_RXPTR_Pos 0 -#define PERIPH_RPR_RXPTR_Msk (0xffffffffu << PERIPH_RPR_RXPTR_Pos) /**< \brief (PERIPH_RPR) Receive Pointer Register */ -#define PERIPH_RPR_RXPTR(value) ((PERIPH_RPR_RXPTR_Msk & ((value) << PERIPH_RPR_RXPTR_Pos))) -/* -------- PERIPH_RCR : (PDC Offset: 0x04) Receive Counter Register -------- */ -#define PERIPH_RCR_RXCTR_Pos 0 -#define PERIPH_RCR_RXCTR_Msk (0xffffu << PERIPH_RCR_RXCTR_Pos) /**< \brief (PERIPH_RCR) Receive Counter Register */ -#define PERIPH_RCR_RXCTR(value) ((PERIPH_RCR_RXCTR_Msk & ((value) << PERIPH_RCR_RXCTR_Pos))) -/* -------- PERIPH_TPR : (PDC Offset: 0x08) Transmit Pointer Register -------- */ -#define PERIPH_TPR_TXPTR_Pos 0 -#define PERIPH_TPR_TXPTR_Msk (0xffffffffu << PERIPH_TPR_TXPTR_Pos) /**< \brief (PERIPH_TPR) Transmit Counter Register */ -#define PERIPH_TPR_TXPTR(value) ((PERIPH_TPR_TXPTR_Msk & ((value) << PERIPH_TPR_TXPTR_Pos))) -/* -------- PERIPH_TCR : (PDC Offset: 0x0C) Transmit Counter Register -------- */ -#define PERIPH_TCR_TXCTR_Pos 0 -#define PERIPH_TCR_TXCTR_Msk (0xffffu << PERIPH_TCR_TXCTR_Pos) /**< \brief (PERIPH_TCR) Transmit Counter Register */ -#define PERIPH_TCR_TXCTR(value) ((PERIPH_TCR_TXCTR_Msk & ((value) << PERIPH_TCR_TXCTR_Pos))) -/* -------- PERIPH_RNPR : (PDC Offset: 0x10) Receive Next Pointer Register -------- */ -#define PERIPH_RNPR_RXNPTR_Pos 0 -#define PERIPH_RNPR_RXNPTR_Msk (0xffffffffu << PERIPH_RNPR_RXNPTR_Pos) /**< \brief (PERIPH_RNPR) Receive Next Pointer */ -#define PERIPH_RNPR_RXNPTR(value) ((PERIPH_RNPR_RXNPTR_Msk & ((value) << PERIPH_RNPR_RXNPTR_Pos))) -/* -------- PERIPH_RNCR : (PDC Offset: 0x14) Receive Next Counter Register -------- */ -#define PERIPH_RNCR_RXNCTR_Pos 0 -#define PERIPH_RNCR_RXNCTR_Msk (0xffffu << PERIPH_RNCR_RXNCTR_Pos) /**< \brief (PERIPH_RNCR) Receive Next Counter */ -#define PERIPH_RNCR_RXNCTR(value) ((PERIPH_RNCR_RXNCTR_Msk & ((value) << PERIPH_RNCR_RXNCTR_Pos))) -/* -------- PERIPH_TNPR : (PDC Offset: 0x18) Transmit Next Pointer Register -------- */ -#define PERIPH_TNPR_TXNPTR_Pos 0 -#define PERIPH_TNPR_TXNPTR_Msk (0xffffffffu << PERIPH_TNPR_TXNPTR_Pos) /**< \brief (PERIPH_TNPR) Transmit Next Pointer */ -#define PERIPH_TNPR_TXNPTR(value) ((PERIPH_TNPR_TXNPTR_Msk & ((value) << PERIPH_TNPR_TXNPTR_Pos))) -/* -------- PERIPH_TNCR : (PDC Offset: 0x1C) Transmit Next Counter Register -------- */ -#define PERIPH_TNCR_TXNCTR_Pos 0 -#define PERIPH_TNCR_TXNCTR_Msk (0xffffu << PERIPH_TNCR_TXNCTR_Pos) /**< \brief (PERIPH_TNCR) Transmit Counter Next */ -#define PERIPH_TNCR_TXNCTR(value) ((PERIPH_TNCR_TXNCTR_Msk & ((value) << PERIPH_TNCR_TXNCTR_Pos))) -/* -------- PERIPH_PTCR : (PDC Offset: 0x20) Transfer Control Register -------- */ -#define PERIPH_PTCR_RXTEN (0x1u << 0) /**< \brief (PERIPH_PTCR) Receiver Transfer Enable */ -#define PERIPH_PTCR_RXTDIS (0x1u << 1) /**< \brief (PERIPH_PTCR) Receiver Transfer Disable */ -#define PERIPH_PTCR_TXTEN (0x1u << 8) /**< \brief (PERIPH_PTCR) Transmitter Transfer Enable */ -#define PERIPH_PTCR_TXTDIS (0x1u << 9) /**< \brief (PERIPH_PTCR) Transmitter Transfer Disable */ -/* -------- PERIPH_PTSR : (PDC Offset: 0x24) Transfer Status Register -------- */ -#define PERIPH_PTSR_RXTEN (0x1u << 0) /**< \brief (PERIPH_PTSR) Receiver Transfer Enable */ -#define PERIPH_PTSR_TXTEN (0x1u << 8) /**< \brief (PERIPH_PTSR) Transmitter Transfer Enable */ - -/*@}*/ - - -#endif /* _SAM4E_PDC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pio.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pio.h deleted file mode 100644 index f60d41906..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pio.h +++ /dev/null @@ -1,1683 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_PIO_COMPONENT_ -#define _SAM4E_PIO_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Parallel Input/Output Controller */ -/* ============================================================================= */ -/** \addtogroup SAM4E_PIO Parallel Input/Output Controller */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Pio hardware registers */ -typedef struct { - WoReg PIO_PER; /**< \brief (Pio Offset: 0x0000) PIO Enable Register */ - WoReg PIO_PDR; /**< \brief (Pio Offset: 0x0004) PIO Disable Register */ - RoReg PIO_PSR; /**< \brief (Pio Offset: 0x0008) PIO Status Register */ - RoReg Reserved1[1]; - WoReg PIO_OER; /**< \brief (Pio Offset: 0x0010) Output Enable Register */ - WoReg PIO_ODR; /**< \brief (Pio Offset: 0x0014) Output Disable Register */ - RoReg PIO_OSR; /**< \brief (Pio Offset: 0x0018) Output Status Register */ - RoReg Reserved2[1]; - WoReg PIO_IFER; /**< \brief (Pio Offset: 0x0020) Glitch Input Filter Enable Register */ - WoReg PIO_IFDR; /**< \brief (Pio Offset: 0x0024) Glitch Input Filter Disable Register */ - RoReg PIO_IFSR; /**< \brief (Pio Offset: 0x0028) Glitch Input Filter Status Register */ - RoReg Reserved3[1]; - WoReg PIO_SODR; /**< \brief (Pio Offset: 0x0030) Set Output Data Register */ - WoReg PIO_CODR; /**< \brief (Pio Offset: 0x0034) Clear Output Data Register */ - RwReg PIO_ODSR; /**< \brief (Pio Offset: 0x0038) Output Data Status Register */ - RoReg PIO_PDSR; /**< \brief (Pio Offset: 0x003C) Pin Data Status Register */ - WoReg PIO_IER; /**< \brief (Pio Offset: 0x0040) Interrupt Enable Register */ - WoReg PIO_IDR; /**< \brief (Pio Offset: 0x0044) Interrupt Disable Register */ - RoReg PIO_IMR; /**< \brief (Pio Offset: 0x0048) Interrupt Mask Register */ - RoReg PIO_ISR; /**< \brief (Pio Offset: 0x004C) Interrupt Status Register */ - WoReg PIO_MDER; /**< \brief (Pio Offset: 0x0050) Multi-driver Enable Register */ - WoReg PIO_MDDR; /**< \brief (Pio Offset: 0x0054) Multi-driver Disable Register */ - RoReg PIO_MDSR; /**< \brief (Pio Offset: 0x0058) Multi-driver Status Register */ - RoReg Reserved4[1]; - WoReg PIO_PUDR; /**< \brief (Pio Offset: 0x0060) Pull-up Disable Register */ - WoReg PIO_PUER; /**< \brief (Pio Offset: 0x0064) Pull-up Enable Register */ - RoReg PIO_PUSR; /**< \brief (Pio Offset: 0x0068) Pad Pull-up Status Register */ - RoReg Reserved5[1]; - RwReg PIO_ABCDSR[2]; /**< \brief (Pio Offset: 0x0070) Peripheral Select Register */ - RoReg Reserved6[2]; - WoReg PIO_IFSCDR; /**< \brief (Pio Offset: 0x0080) Input Filter Slow Clock Disable Register */ - WoReg PIO_IFSCER; /**< \brief (Pio Offset: 0x0084) Input Filter Slow Clock Enable Register */ - RoReg PIO_IFSCSR; /**< \brief (Pio Offset: 0x0088) Input Filter Slow Clock Status Register */ - RwReg PIO_SCDR; /**< \brief (Pio Offset: 0x008C) Slow Clock Divider Debouncing Register */ - WoReg PIO_PPDDR; /**< \brief (Pio Offset: 0x0090) Pad Pull-down Disable Register */ - WoReg PIO_PPDER; /**< \brief (Pio Offset: 0x0094) Pad Pull-down Enable Register */ - RoReg PIO_PPDSR; /**< \brief (Pio Offset: 0x0098) Pad Pull-down Status Register */ - RoReg Reserved7[1]; - WoReg PIO_OWER; /**< \brief (Pio Offset: 0x00A0) Output Write Enable */ - WoReg PIO_OWDR; /**< \brief (Pio Offset: 0x00A4) Output Write Disable */ - RoReg PIO_OWSR; /**< \brief (Pio Offset: 0x00A8) Output Write Status Register */ - RoReg Reserved8[1]; - WoReg PIO_AIMER; /**< \brief (Pio Offset: 0x00B0) Additional Interrupt Modes Enable Register */ - WoReg PIO_AIMDR; /**< \brief (Pio Offset: 0x00B4) Additional Interrupt Modes Disables Register */ - RoReg PIO_AIMMR; /**< \brief (Pio Offset: 0x00B8) Additional Interrupt Modes Mask Register */ - RoReg Reserved9[1]; - WoReg PIO_ESR; /**< \brief (Pio Offset: 0x00C0) Edge Select Register */ - WoReg PIO_LSR; /**< \brief (Pio Offset: 0x00C4) Level Select Register */ - RoReg PIO_ELSR; /**< \brief (Pio Offset: 0x00C8) Edge/Level Status Register */ - RoReg Reserved10[1]; - WoReg PIO_FELLSR; /**< \brief (Pio Offset: 0x00D0) Falling Edge/Low Level Select Register */ - WoReg PIO_REHLSR; /**< \brief (Pio Offset: 0x00D4) Rising Edge/ High Level Select Register */ - RoReg PIO_FRLHSR; /**< \brief (Pio Offset: 0x00D8) Fall/Rise - Low/High Status Register */ - RoReg Reserved11[1]; - RoReg PIO_LOCKSR; /**< \brief (Pio Offset: 0x00E0) Lock Status */ - RwReg PIO_WPMR; /**< \brief (Pio Offset: 0x00E4) Write Protect Mode Register */ - RoReg PIO_WPSR; /**< \brief (Pio Offset: 0x00E8) Write Protect Status Register */ - RoReg Reserved12[5]; - RwReg PIO_SCHMITT; /**< \brief (Pio Offset: 0x0100) Schmitt Trigger Register */ - RoReg Reserved13[3]; - RwReg PIO_DELAYR; /**< \brief (Pio Offset: 0x0110) IO Delay Register */ - RoReg Reserved14[15]; - RwReg PIO_PCMR; /**< \brief (Pio Offset: 0x150) Parallel Capture Mode Register */ - WoReg PIO_PCIER; /**< \brief (Pio Offset: 0x154) Parallel Capture Interrupt Enable Register */ - WoReg PIO_PCIDR; /**< \brief (Pio Offset: 0x158) Parallel Capture Interrupt Disable Register */ - RoReg PIO_PCIMR; /**< \brief (Pio Offset: 0x15C) Parallel Capture Interrupt Mask Register */ - RoReg PIO_PCISR; /**< \brief (Pio Offset: 0x160) Parallel Capture Interrupt Status Register */ - RoReg PIO_PCRHR; /**< \brief (Pio Offset: 0x164) Parallel Capture Reception Holding Register */ - RwReg PIO_RPR; /**< \brief (Pio Offset: 0x168) Receive Pointer Register */ - RwReg PIO_RCR; /**< \brief (Pio Offset: 0x16C) Receive Counter Register */ - RoReg Reserved15[2]; - RwReg PIO_RNPR; /**< \brief (Pio Offset: 0x178) Receive Next Pointer Register */ - RwReg PIO_RNCR; /**< \brief (Pio Offset: 0x17C) Receive Next Counter Register */ - RoReg Reserved16[2]; - WoReg PIO_PTCR; /**< \brief (Pio Offset: 0x188) Transfer Control Register */ - RoReg PIO_PTSR; /**< \brief (Pio Offset: 0x18C) Transfer Status Register */ -} Pio; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- PIO_PER : (PIO Offset: 0x0000) PIO Enable Register -------- */ -#define PIO_PER_P0 (0x1u << 0) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P1 (0x1u << 1) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P2 (0x1u << 2) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P3 (0x1u << 3) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P4 (0x1u << 4) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P5 (0x1u << 5) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P6 (0x1u << 6) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P7 (0x1u << 7) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P8 (0x1u << 8) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P9 (0x1u << 9) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P10 (0x1u << 10) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P11 (0x1u << 11) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P12 (0x1u << 12) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P13 (0x1u << 13) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P14 (0x1u << 14) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P15 (0x1u << 15) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P16 (0x1u << 16) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P17 (0x1u << 17) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P18 (0x1u << 18) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P19 (0x1u << 19) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P20 (0x1u << 20) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P21 (0x1u << 21) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P22 (0x1u << 22) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P23 (0x1u << 23) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P24 (0x1u << 24) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P25 (0x1u << 25) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P26 (0x1u << 26) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P27 (0x1u << 27) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P28 (0x1u << 28) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P29 (0x1u << 29) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P30 (0x1u << 30) /**< \brief (PIO_PER) PIO Enable */ -#define PIO_PER_P31 (0x1u << 31) /**< \brief (PIO_PER) PIO Enable */ -/* -------- PIO_PDR : (PIO Offset: 0x0004) PIO Disable Register -------- */ -#define PIO_PDR_P0 (0x1u << 0) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P1 (0x1u << 1) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P2 (0x1u << 2) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P3 (0x1u << 3) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P4 (0x1u << 4) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P5 (0x1u << 5) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P6 (0x1u << 6) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P7 (0x1u << 7) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P8 (0x1u << 8) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P9 (0x1u << 9) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P10 (0x1u << 10) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P11 (0x1u << 11) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P12 (0x1u << 12) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P13 (0x1u << 13) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P14 (0x1u << 14) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P15 (0x1u << 15) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P16 (0x1u << 16) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P17 (0x1u << 17) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P18 (0x1u << 18) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P19 (0x1u << 19) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P20 (0x1u << 20) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P21 (0x1u << 21) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P22 (0x1u << 22) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P23 (0x1u << 23) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P24 (0x1u << 24) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P25 (0x1u << 25) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P26 (0x1u << 26) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P27 (0x1u << 27) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P28 (0x1u << 28) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P29 (0x1u << 29) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P30 (0x1u << 30) /**< \brief (PIO_PDR) PIO Disable */ -#define PIO_PDR_P31 (0x1u << 31) /**< \brief (PIO_PDR) PIO Disable */ -/* -------- PIO_PSR : (PIO Offset: 0x0008) PIO Status Register -------- */ -#define PIO_PSR_P0 (0x1u << 0) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P1 (0x1u << 1) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P2 (0x1u << 2) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P3 (0x1u << 3) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P4 (0x1u << 4) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P5 (0x1u << 5) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P6 (0x1u << 6) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P7 (0x1u << 7) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P8 (0x1u << 8) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P9 (0x1u << 9) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P10 (0x1u << 10) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P11 (0x1u << 11) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P12 (0x1u << 12) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P13 (0x1u << 13) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P14 (0x1u << 14) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P15 (0x1u << 15) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P16 (0x1u << 16) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P17 (0x1u << 17) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P18 (0x1u << 18) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P19 (0x1u << 19) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P20 (0x1u << 20) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P21 (0x1u << 21) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P22 (0x1u << 22) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P23 (0x1u << 23) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P24 (0x1u << 24) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P25 (0x1u << 25) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P26 (0x1u << 26) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P27 (0x1u << 27) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P28 (0x1u << 28) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P29 (0x1u << 29) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P30 (0x1u << 30) /**< \brief (PIO_PSR) PIO Status */ -#define PIO_PSR_P31 (0x1u << 31) /**< \brief (PIO_PSR) PIO Status */ -/* -------- PIO_OER : (PIO Offset: 0x0010) Output Enable Register -------- */ -#define PIO_OER_P0 (0x1u << 0) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P1 (0x1u << 1) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P2 (0x1u << 2) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P3 (0x1u << 3) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P4 (0x1u << 4) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P5 (0x1u << 5) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P6 (0x1u << 6) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P7 (0x1u << 7) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P8 (0x1u << 8) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P9 (0x1u << 9) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P10 (0x1u << 10) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P11 (0x1u << 11) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P12 (0x1u << 12) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P13 (0x1u << 13) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P14 (0x1u << 14) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P15 (0x1u << 15) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P16 (0x1u << 16) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P17 (0x1u << 17) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P18 (0x1u << 18) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P19 (0x1u << 19) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P20 (0x1u << 20) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P21 (0x1u << 21) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P22 (0x1u << 22) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P23 (0x1u << 23) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P24 (0x1u << 24) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P25 (0x1u << 25) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P26 (0x1u << 26) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P27 (0x1u << 27) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P28 (0x1u << 28) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P29 (0x1u << 29) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P30 (0x1u << 30) /**< \brief (PIO_OER) Output Enable */ -#define PIO_OER_P31 (0x1u << 31) /**< \brief (PIO_OER) Output Enable */ -/* -------- PIO_ODR : (PIO Offset: 0x0014) Output Disable Register -------- */ -#define PIO_ODR_P0 (0x1u << 0) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P1 (0x1u << 1) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P2 (0x1u << 2) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P3 (0x1u << 3) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P4 (0x1u << 4) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P5 (0x1u << 5) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P6 (0x1u << 6) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P7 (0x1u << 7) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P8 (0x1u << 8) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P9 (0x1u << 9) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P10 (0x1u << 10) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P11 (0x1u << 11) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P12 (0x1u << 12) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P13 (0x1u << 13) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P14 (0x1u << 14) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P15 (0x1u << 15) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P16 (0x1u << 16) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P17 (0x1u << 17) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P18 (0x1u << 18) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P19 (0x1u << 19) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P20 (0x1u << 20) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P21 (0x1u << 21) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P22 (0x1u << 22) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P23 (0x1u << 23) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P24 (0x1u << 24) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P25 (0x1u << 25) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P26 (0x1u << 26) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P27 (0x1u << 27) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P28 (0x1u << 28) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P29 (0x1u << 29) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P30 (0x1u << 30) /**< \brief (PIO_ODR) Output Disable */ -#define PIO_ODR_P31 (0x1u << 31) /**< \brief (PIO_ODR) Output Disable */ -/* -------- PIO_OSR : (PIO Offset: 0x0018) Output Status Register -------- */ -#define PIO_OSR_P0 (0x1u << 0) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P1 (0x1u << 1) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P2 (0x1u << 2) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P3 (0x1u << 3) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P4 (0x1u << 4) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P5 (0x1u << 5) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P6 (0x1u << 6) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P7 (0x1u << 7) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P8 (0x1u << 8) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P9 (0x1u << 9) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P10 (0x1u << 10) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P11 (0x1u << 11) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P12 (0x1u << 12) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P13 (0x1u << 13) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P14 (0x1u << 14) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P15 (0x1u << 15) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P16 (0x1u << 16) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P17 (0x1u << 17) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P18 (0x1u << 18) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P19 (0x1u << 19) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P20 (0x1u << 20) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P21 (0x1u << 21) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P22 (0x1u << 22) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P23 (0x1u << 23) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P24 (0x1u << 24) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P25 (0x1u << 25) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P26 (0x1u << 26) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P27 (0x1u << 27) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P28 (0x1u << 28) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P29 (0x1u << 29) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P30 (0x1u << 30) /**< \brief (PIO_OSR) Output Status */ -#define PIO_OSR_P31 (0x1u << 31) /**< \brief (PIO_OSR) Output Status */ -/* -------- PIO_IFER : (PIO Offset: 0x0020) Glitch Input Filter Enable Register -------- */ -#define PIO_IFER_P0 (0x1u << 0) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P1 (0x1u << 1) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P2 (0x1u << 2) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P3 (0x1u << 3) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P4 (0x1u << 4) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P5 (0x1u << 5) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P6 (0x1u << 6) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P7 (0x1u << 7) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P8 (0x1u << 8) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P9 (0x1u << 9) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P10 (0x1u << 10) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P11 (0x1u << 11) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P12 (0x1u << 12) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P13 (0x1u << 13) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P14 (0x1u << 14) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P15 (0x1u << 15) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P16 (0x1u << 16) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P17 (0x1u << 17) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P18 (0x1u << 18) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P19 (0x1u << 19) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P20 (0x1u << 20) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P21 (0x1u << 21) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P22 (0x1u << 22) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P23 (0x1u << 23) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P24 (0x1u << 24) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P25 (0x1u << 25) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P26 (0x1u << 26) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P27 (0x1u << 27) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P28 (0x1u << 28) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P29 (0x1u << 29) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P30 (0x1u << 30) /**< \brief (PIO_IFER) Input Filter Enable */ -#define PIO_IFER_P31 (0x1u << 31) /**< \brief (PIO_IFER) Input Filter Enable */ -/* -------- PIO_IFDR : (PIO Offset: 0x0024) Glitch Input Filter Disable Register -------- */ -#define PIO_IFDR_P0 (0x1u << 0) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P1 (0x1u << 1) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P2 (0x1u << 2) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P3 (0x1u << 3) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P4 (0x1u << 4) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P5 (0x1u << 5) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P6 (0x1u << 6) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P7 (0x1u << 7) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P8 (0x1u << 8) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P9 (0x1u << 9) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P10 (0x1u << 10) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P11 (0x1u << 11) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P12 (0x1u << 12) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P13 (0x1u << 13) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P14 (0x1u << 14) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P15 (0x1u << 15) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P16 (0x1u << 16) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P17 (0x1u << 17) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P18 (0x1u << 18) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P19 (0x1u << 19) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P20 (0x1u << 20) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P21 (0x1u << 21) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P22 (0x1u << 22) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P23 (0x1u << 23) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P24 (0x1u << 24) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P25 (0x1u << 25) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P26 (0x1u << 26) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P27 (0x1u << 27) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P28 (0x1u << 28) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P29 (0x1u << 29) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P30 (0x1u << 30) /**< \brief (PIO_IFDR) Input Filter Disable */ -#define PIO_IFDR_P31 (0x1u << 31) /**< \brief (PIO_IFDR) Input Filter Disable */ -/* -------- PIO_IFSR : (PIO Offset: 0x0028) Glitch Input Filter Status Register -------- */ -#define PIO_IFSR_P0 (0x1u << 0) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P1 (0x1u << 1) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P2 (0x1u << 2) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P3 (0x1u << 3) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P4 (0x1u << 4) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P5 (0x1u << 5) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P6 (0x1u << 6) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P7 (0x1u << 7) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P8 (0x1u << 8) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P9 (0x1u << 9) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P10 (0x1u << 10) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P11 (0x1u << 11) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P12 (0x1u << 12) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P13 (0x1u << 13) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P14 (0x1u << 14) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P15 (0x1u << 15) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P16 (0x1u << 16) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P17 (0x1u << 17) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P18 (0x1u << 18) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P19 (0x1u << 19) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P20 (0x1u << 20) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P21 (0x1u << 21) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P22 (0x1u << 22) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P23 (0x1u << 23) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P24 (0x1u << 24) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P25 (0x1u << 25) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P26 (0x1u << 26) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P27 (0x1u << 27) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P28 (0x1u << 28) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P29 (0x1u << 29) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P30 (0x1u << 30) /**< \brief (PIO_IFSR) Input Filer Status */ -#define PIO_IFSR_P31 (0x1u << 31) /**< \brief (PIO_IFSR) Input Filer Status */ -/* -------- PIO_SODR : (PIO Offset: 0x0030) Set Output Data Register -------- */ -#define PIO_SODR_P0 (0x1u << 0) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P1 (0x1u << 1) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P2 (0x1u << 2) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P3 (0x1u << 3) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P4 (0x1u << 4) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P5 (0x1u << 5) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P6 (0x1u << 6) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P7 (0x1u << 7) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P8 (0x1u << 8) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P9 (0x1u << 9) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P10 (0x1u << 10) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P11 (0x1u << 11) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P12 (0x1u << 12) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P13 (0x1u << 13) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P14 (0x1u << 14) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P15 (0x1u << 15) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P16 (0x1u << 16) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P17 (0x1u << 17) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P18 (0x1u << 18) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P19 (0x1u << 19) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P20 (0x1u << 20) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P21 (0x1u << 21) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P22 (0x1u << 22) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P23 (0x1u << 23) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P24 (0x1u << 24) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P25 (0x1u << 25) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P26 (0x1u << 26) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P27 (0x1u << 27) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P28 (0x1u << 28) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P29 (0x1u << 29) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P30 (0x1u << 30) /**< \brief (PIO_SODR) Set Output Data */ -#define PIO_SODR_P31 (0x1u << 31) /**< \brief (PIO_SODR) Set Output Data */ -/* -------- PIO_CODR : (PIO Offset: 0x0034) Clear Output Data Register -------- */ -#define PIO_CODR_P0 (0x1u << 0) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P1 (0x1u << 1) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P2 (0x1u << 2) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P3 (0x1u << 3) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P4 (0x1u << 4) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P5 (0x1u << 5) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P6 (0x1u << 6) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P7 (0x1u << 7) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P8 (0x1u << 8) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P9 (0x1u << 9) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P10 (0x1u << 10) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P11 (0x1u << 11) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P12 (0x1u << 12) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P13 (0x1u << 13) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P14 (0x1u << 14) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P15 (0x1u << 15) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P16 (0x1u << 16) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P17 (0x1u << 17) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P18 (0x1u << 18) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P19 (0x1u << 19) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P20 (0x1u << 20) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P21 (0x1u << 21) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P22 (0x1u << 22) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P23 (0x1u << 23) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P24 (0x1u << 24) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P25 (0x1u << 25) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P26 (0x1u << 26) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P27 (0x1u << 27) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P28 (0x1u << 28) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P29 (0x1u << 29) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P30 (0x1u << 30) /**< \brief (PIO_CODR) Clear Output Data */ -#define PIO_CODR_P31 (0x1u << 31) /**< \brief (PIO_CODR) Clear Output Data */ -/* -------- PIO_ODSR : (PIO Offset: 0x0038) Output Data Status Register -------- */ -#define PIO_ODSR_P0 (0x1u << 0) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P1 (0x1u << 1) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P2 (0x1u << 2) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P3 (0x1u << 3) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P4 (0x1u << 4) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P5 (0x1u << 5) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P6 (0x1u << 6) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P7 (0x1u << 7) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P8 (0x1u << 8) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P9 (0x1u << 9) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P10 (0x1u << 10) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P11 (0x1u << 11) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P12 (0x1u << 12) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P13 (0x1u << 13) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P14 (0x1u << 14) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P15 (0x1u << 15) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P16 (0x1u << 16) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P17 (0x1u << 17) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P18 (0x1u << 18) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P19 (0x1u << 19) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P20 (0x1u << 20) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P21 (0x1u << 21) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P22 (0x1u << 22) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P23 (0x1u << 23) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P24 (0x1u << 24) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P25 (0x1u << 25) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P26 (0x1u << 26) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P27 (0x1u << 27) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P28 (0x1u << 28) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P29 (0x1u << 29) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P30 (0x1u << 30) /**< \brief (PIO_ODSR) Output Data Status */ -#define PIO_ODSR_P31 (0x1u << 31) /**< \brief (PIO_ODSR) Output Data Status */ -/* -------- PIO_PDSR : (PIO Offset: 0x003C) Pin Data Status Register -------- */ -#define PIO_PDSR_P0 (0x1u << 0) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P1 (0x1u << 1) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P2 (0x1u << 2) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P3 (0x1u << 3) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P4 (0x1u << 4) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P5 (0x1u << 5) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P6 (0x1u << 6) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P7 (0x1u << 7) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P8 (0x1u << 8) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P9 (0x1u << 9) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P10 (0x1u << 10) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P11 (0x1u << 11) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P12 (0x1u << 12) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P13 (0x1u << 13) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P14 (0x1u << 14) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P15 (0x1u << 15) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P16 (0x1u << 16) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P17 (0x1u << 17) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P18 (0x1u << 18) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P19 (0x1u << 19) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P20 (0x1u << 20) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P21 (0x1u << 21) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P22 (0x1u << 22) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P23 (0x1u << 23) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P24 (0x1u << 24) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P25 (0x1u << 25) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P26 (0x1u << 26) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P27 (0x1u << 27) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P28 (0x1u << 28) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P29 (0x1u << 29) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P30 (0x1u << 30) /**< \brief (PIO_PDSR) Output Data Status */ -#define PIO_PDSR_P31 (0x1u << 31) /**< \brief (PIO_PDSR) Output Data Status */ -/* -------- PIO_IER : (PIO Offset: 0x0040) Interrupt Enable Register -------- */ -#define PIO_IER_P0 (0x1u << 0) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P1 (0x1u << 1) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P2 (0x1u << 2) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P3 (0x1u << 3) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P4 (0x1u << 4) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P5 (0x1u << 5) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P6 (0x1u << 6) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P7 (0x1u << 7) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P8 (0x1u << 8) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P9 (0x1u << 9) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P10 (0x1u << 10) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P11 (0x1u << 11) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P12 (0x1u << 12) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P13 (0x1u << 13) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P14 (0x1u << 14) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P15 (0x1u << 15) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P16 (0x1u << 16) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P17 (0x1u << 17) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P18 (0x1u << 18) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P19 (0x1u << 19) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P20 (0x1u << 20) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P21 (0x1u << 21) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P22 (0x1u << 22) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P23 (0x1u << 23) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P24 (0x1u << 24) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P25 (0x1u << 25) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P26 (0x1u << 26) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P27 (0x1u << 27) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P28 (0x1u << 28) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P29 (0x1u << 29) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P30 (0x1u << 30) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -#define PIO_IER_P31 (0x1u << 31) /**< \brief (PIO_IER) Input Change Interrupt Enable */ -/* -------- PIO_IDR : (PIO Offset: 0x0044) Interrupt Disable Register -------- */ -#define PIO_IDR_P0 (0x1u << 0) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P1 (0x1u << 1) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P2 (0x1u << 2) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P3 (0x1u << 3) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P4 (0x1u << 4) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P5 (0x1u << 5) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P6 (0x1u << 6) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P7 (0x1u << 7) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P8 (0x1u << 8) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P9 (0x1u << 9) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P10 (0x1u << 10) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P11 (0x1u << 11) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P12 (0x1u << 12) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P13 (0x1u << 13) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P14 (0x1u << 14) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P15 (0x1u << 15) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P16 (0x1u << 16) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P17 (0x1u << 17) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P18 (0x1u << 18) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P19 (0x1u << 19) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P20 (0x1u << 20) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P21 (0x1u << 21) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P22 (0x1u << 22) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P23 (0x1u << 23) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P24 (0x1u << 24) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P25 (0x1u << 25) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P26 (0x1u << 26) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P27 (0x1u << 27) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P28 (0x1u << 28) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P29 (0x1u << 29) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P30 (0x1u << 30) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -#define PIO_IDR_P31 (0x1u << 31) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ -/* -------- PIO_IMR : (PIO Offset: 0x0048) Interrupt Mask Register -------- */ -#define PIO_IMR_P0 (0x1u << 0) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P1 (0x1u << 1) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P2 (0x1u << 2) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P3 (0x1u << 3) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P4 (0x1u << 4) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P5 (0x1u << 5) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P6 (0x1u << 6) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P7 (0x1u << 7) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P8 (0x1u << 8) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P9 (0x1u << 9) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P10 (0x1u << 10) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P11 (0x1u << 11) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P12 (0x1u << 12) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P13 (0x1u << 13) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P14 (0x1u << 14) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P15 (0x1u << 15) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P16 (0x1u << 16) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P17 (0x1u << 17) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P18 (0x1u << 18) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P19 (0x1u << 19) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P20 (0x1u << 20) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P21 (0x1u << 21) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P22 (0x1u << 22) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P23 (0x1u << 23) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P24 (0x1u << 24) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P25 (0x1u << 25) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P26 (0x1u << 26) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P27 (0x1u << 27) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P28 (0x1u << 28) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P29 (0x1u << 29) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P30 (0x1u << 30) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -#define PIO_IMR_P31 (0x1u << 31) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ -/* -------- PIO_ISR : (PIO Offset: 0x004C) Interrupt Status Register -------- */ -#define PIO_ISR_P0 (0x1u << 0) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P1 (0x1u << 1) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P2 (0x1u << 2) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P3 (0x1u << 3) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P4 (0x1u << 4) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P5 (0x1u << 5) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P6 (0x1u << 6) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P7 (0x1u << 7) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P8 (0x1u << 8) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P9 (0x1u << 9) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P10 (0x1u << 10) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P11 (0x1u << 11) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P12 (0x1u << 12) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P13 (0x1u << 13) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P14 (0x1u << 14) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P15 (0x1u << 15) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P16 (0x1u << 16) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P17 (0x1u << 17) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P18 (0x1u << 18) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P19 (0x1u << 19) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P20 (0x1u << 20) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P21 (0x1u << 21) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P22 (0x1u << 22) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P23 (0x1u << 23) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P24 (0x1u << 24) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P25 (0x1u << 25) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P26 (0x1u << 26) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P27 (0x1u << 27) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P28 (0x1u << 28) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P29 (0x1u << 29) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P30 (0x1u << 30) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -#define PIO_ISR_P31 (0x1u << 31) /**< \brief (PIO_ISR) Input Change Interrupt Status */ -/* -------- PIO_MDER : (PIO Offset: 0x0050) Multi-driver Enable Register -------- */ -#define PIO_MDER_P0 (0x1u << 0) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P1 (0x1u << 1) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P2 (0x1u << 2) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P3 (0x1u << 3) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P4 (0x1u << 4) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P5 (0x1u << 5) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P6 (0x1u << 6) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P7 (0x1u << 7) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P8 (0x1u << 8) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P9 (0x1u << 9) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P10 (0x1u << 10) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P11 (0x1u << 11) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P12 (0x1u << 12) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P13 (0x1u << 13) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P14 (0x1u << 14) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P15 (0x1u << 15) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P16 (0x1u << 16) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P17 (0x1u << 17) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P18 (0x1u << 18) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P19 (0x1u << 19) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P20 (0x1u << 20) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P21 (0x1u << 21) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P22 (0x1u << 22) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P23 (0x1u << 23) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P24 (0x1u << 24) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P25 (0x1u << 25) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P26 (0x1u << 26) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P27 (0x1u << 27) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P28 (0x1u << 28) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P29 (0x1u << 29) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P30 (0x1u << 30) /**< \brief (PIO_MDER) Multi Drive Enable. */ -#define PIO_MDER_P31 (0x1u << 31) /**< \brief (PIO_MDER) Multi Drive Enable. */ -/* -------- PIO_MDDR : (PIO Offset: 0x0054) Multi-driver Disable Register -------- */ -#define PIO_MDDR_P0 (0x1u << 0) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P1 (0x1u << 1) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P2 (0x1u << 2) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P3 (0x1u << 3) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P4 (0x1u << 4) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P5 (0x1u << 5) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P6 (0x1u << 6) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P7 (0x1u << 7) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P8 (0x1u << 8) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P9 (0x1u << 9) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P10 (0x1u << 10) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P11 (0x1u << 11) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P12 (0x1u << 12) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P13 (0x1u << 13) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P14 (0x1u << 14) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P15 (0x1u << 15) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P16 (0x1u << 16) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P17 (0x1u << 17) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P18 (0x1u << 18) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P19 (0x1u << 19) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P20 (0x1u << 20) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P21 (0x1u << 21) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P22 (0x1u << 22) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P23 (0x1u << 23) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P24 (0x1u << 24) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P25 (0x1u << 25) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P26 (0x1u << 26) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P27 (0x1u << 27) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P28 (0x1u << 28) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P29 (0x1u << 29) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P30 (0x1u << 30) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -#define PIO_MDDR_P31 (0x1u << 31) /**< \brief (PIO_MDDR) Multi Drive Disable. */ -/* -------- PIO_MDSR : (PIO Offset: 0x0058) Multi-driver Status Register -------- */ -#define PIO_MDSR_P0 (0x1u << 0) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P1 (0x1u << 1) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P2 (0x1u << 2) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P3 (0x1u << 3) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P4 (0x1u << 4) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P5 (0x1u << 5) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P6 (0x1u << 6) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P7 (0x1u << 7) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P8 (0x1u << 8) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P9 (0x1u << 9) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P10 (0x1u << 10) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P11 (0x1u << 11) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P12 (0x1u << 12) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P13 (0x1u << 13) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P14 (0x1u << 14) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P15 (0x1u << 15) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P16 (0x1u << 16) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P17 (0x1u << 17) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P18 (0x1u << 18) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P19 (0x1u << 19) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P20 (0x1u << 20) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P21 (0x1u << 21) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P22 (0x1u << 22) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P23 (0x1u << 23) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P24 (0x1u << 24) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P25 (0x1u << 25) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P26 (0x1u << 26) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P27 (0x1u << 27) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P28 (0x1u << 28) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P29 (0x1u << 29) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P30 (0x1u << 30) /**< \brief (PIO_MDSR) Multi Drive Status. */ -#define PIO_MDSR_P31 (0x1u << 31) /**< \brief (PIO_MDSR) Multi Drive Status. */ -/* -------- PIO_PUDR : (PIO Offset: 0x0060) Pull-up Disable Register -------- */ -#define PIO_PUDR_P0 (0x1u << 0) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P1 (0x1u << 1) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P2 (0x1u << 2) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P3 (0x1u << 3) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P4 (0x1u << 4) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P5 (0x1u << 5) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P6 (0x1u << 6) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P7 (0x1u << 7) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P8 (0x1u << 8) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P9 (0x1u << 9) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P10 (0x1u << 10) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P11 (0x1u << 11) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P12 (0x1u << 12) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P13 (0x1u << 13) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P14 (0x1u << 14) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P15 (0x1u << 15) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P16 (0x1u << 16) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P17 (0x1u << 17) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P18 (0x1u << 18) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P19 (0x1u << 19) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P20 (0x1u << 20) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P21 (0x1u << 21) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P22 (0x1u << 22) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P23 (0x1u << 23) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P24 (0x1u << 24) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P25 (0x1u << 25) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P26 (0x1u << 26) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P27 (0x1u << 27) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P28 (0x1u << 28) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P29 (0x1u << 29) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P30 (0x1u << 30) /**< \brief (PIO_PUDR) Pull Up Disable. */ -#define PIO_PUDR_P31 (0x1u << 31) /**< \brief (PIO_PUDR) Pull Up Disable. */ -/* -------- PIO_PUER : (PIO Offset: 0x0064) Pull-up Enable Register -------- */ -#define PIO_PUER_P0 (0x1u << 0) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P1 (0x1u << 1) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P2 (0x1u << 2) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P3 (0x1u << 3) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P4 (0x1u << 4) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P5 (0x1u << 5) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P6 (0x1u << 6) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P7 (0x1u << 7) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P8 (0x1u << 8) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P9 (0x1u << 9) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P10 (0x1u << 10) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P11 (0x1u << 11) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P12 (0x1u << 12) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P13 (0x1u << 13) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P14 (0x1u << 14) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P15 (0x1u << 15) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P16 (0x1u << 16) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P17 (0x1u << 17) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P18 (0x1u << 18) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P19 (0x1u << 19) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P20 (0x1u << 20) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P21 (0x1u << 21) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P22 (0x1u << 22) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P23 (0x1u << 23) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P24 (0x1u << 24) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P25 (0x1u << 25) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P26 (0x1u << 26) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P27 (0x1u << 27) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P28 (0x1u << 28) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P29 (0x1u << 29) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P30 (0x1u << 30) /**< \brief (PIO_PUER) Pull Up Enable. */ -#define PIO_PUER_P31 (0x1u << 31) /**< \brief (PIO_PUER) Pull Up Enable. */ -/* -------- PIO_PUSR : (PIO Offset: 0x0068) Pad Pull-up Status Register -------- */ -#define PIO_PUSR_P0 (0x1u << 0) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P1 (0x1u << 1) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P2 (0x1u << 2) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P3 (0x1u << 3) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P4 (0x1u << 4) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P5 (0x1u << 5) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P6 (0x1u << 6) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P7 (0x1u << 7) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P8 (0x1u << 8) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P9 (0x1u << 9) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P10 (0x1u << 10) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P11 (0x1u << 11) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P12 (0x1u << 12) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P13 (0x1u << 13) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P14 (0x1u << 14) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P15 (0x1u << 15) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P16 (0x1u << 16) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P17 (0x1u << 17) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P18 (0x1u << 18) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P19 (0x1u << 19) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P20 (0x1u << 20) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P21 (0x1u << 21) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P22 (0x1u << 22) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P23 (0x1u << 23) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P24 (0x1u << 24) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P25 (0x1u << 25) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P26 (0x1u << 26) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P27 (0x1u << 27) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P28 (0x1u << 28) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P29 (0x1u << 29) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P30 (0x1u << 30) /**< \brief (PIO_PUSR) Pull Up Status. */ -#define PIO_PUSR_P31 (0x1u << 31) /**< \brief (PIO_PUSR) Pull Up Status. */ -/* -------- PIO_ABCDSR[2] : (PIO Offset: 0x0070) Peripheral Select Register -------- */ -#define PIO_ABCDSR_P0 (0x1u << 0) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P1 (0x1u << 1) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P2 (0x1u << 2) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P3 (0x1u << 3) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P4 (0x1u << 4) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P5 (0x1u << 5) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P6 (0x1u << 6) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P7 (0x1u << 7) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P8 (0x1u << 8) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P9 (0x1u << 9) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P10 (0x1u << 10) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P11 (0x1u << 11) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P12 (0x1u << 12) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P13 (0x1u << 13) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P14 (0x1u << 14) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P15 (0x1u << 15) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P16 (0x1u << 16) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P17 (0x1u << 17) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P18 (0x1u << 18) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P19 (0x1u << 19) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P20 (0x1u << 20) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P21 (0x1u << 21) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P22 (0x1u << 22) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P23 (0x1u << 23) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P24 (0x1u << 24) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P25 (0x1u << 25) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P26 (0x1u << 26) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P27 (0x1u << 27) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P28 (0x1u << 28) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P29 (0x1u << 29) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P30 (0x1u << 30) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -#define PIO_ABCDSR_P31 (0x1u << 31) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ -/* -------- PIO_IFSCDR : (PIO Offset: 0x0080) Input Filter Slow Clock Disable Register -------- */ -#define PIO_IFSCDR_P0 (0x1u << 0) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P1 (0x1u << 1) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P2 (0x1u << 2) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P3 (0x1u << 3) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P4 (0x1u << 4) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P5 (0x1u << 5) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P6 (0x1u << 6) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P7 (0x1u << 7) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P8 (0x1u << 8) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P9 (0x1u << 9) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P10 (0x1u << 10) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P11 (0x1u << 11) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P12 (0x1u << 12) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P13 (0x1u << 13) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P14 (0x1u << 14) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P15 (0x1u << 15) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P16 (0x1u << 16) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P17 (0x1u << 17) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P18 (0x1u << 18) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P19 (0x1u << 19) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P20 (0x1u << 20) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P21 (0x1u << 21) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P22 (0x1u << 22) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P23 (0x1u << 23) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P24 (0x1u << 24) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P25 (0x1u << 25) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P26 (0x1u << 26) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P27 (0x1u << 27) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P28 (0x1u << 28) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P29 (0x1u << 29) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P30 (0x1u << 30) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -#define PIO_IFSCDR_P31 (0x1u << 31) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ -/* -------- PIO_IFSCER : (PIO Offset: 0x0084) Input Filter Slow Clock Enable Register -------- */ -#define PIO_IFSCER_P0 (0x1u << 0) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P1 (0x1u << 1) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P2 (0x1u << 2) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P3 (0x1u << 3) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P4 (0x1u << 4) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P5 (0x1u << 5) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P6 (0x1u << 6) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P7 (0x1u << 7) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P8 (0x1u << 8) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P9 (0x1u << 9) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P10 (0x1u << 10) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P11 (0x1u << 11) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P12 (0x1u << 12) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P13 (0x1u << 13) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P14 (0x1u << 14) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P15 (0x1u << 15) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P16 (0x1u << 16) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P17 (0x1u << 17) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P18 (0x1u << 18) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P19 (0x1u << 19) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P20 (0x1u << 20) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P21 (0x1u << 21) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P22 (0x1u << 22) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P23 (0x1u << 23) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P24 (0x1u << 24) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P25 (0x1u << 25) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P26 (0x1u << 26) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P27 (0x1u << 27) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P28 (0x1u << 28) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P29 (0x1u << 29) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P30 (0x1u << 30) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -#define PIO_IFSCER_P31 (0x1u << 31) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ -/* -------- PIO_IFSCSR : (PIO Offset: 0x0088) Input Filter Slow Clock Status Register -------- */ -#define PIO_IFSCSR_P0 (0x1u << 0) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P1 (0x1u << 1) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P2 (0x1u << 2) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P3 (0x1u << 3) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P4 (0x1u << 4) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P5 (0x1u << 5) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P6 (0x1u << 6) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P7 (0x1u << 7) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P8 (0x1u << 8) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P9 (0x1u << 9) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P10 (0x1u << 10) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P11 (0x1u << 11) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P12 (0x1u << 12) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P13 (0x1u << 13) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P14 (0x1u << 14) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P15 (0x1u << 15) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P16 (0x1u << 16) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P17 (0x1u << 17) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P18 (0x1u << 18) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P19 (0x1u << 19) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P20 (0x1u << 20) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P21 (0x1u << 21) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P22 (0x1u << 22) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P23 (0x1u << 23) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P24 (0x1u << 24) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P25 (0x1u << 25) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P26 (0x1u << 26) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P27 (0x1u << 27) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P28 (0x1u << 28) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P29 (0x1u << 29) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P30 (0x1u << 30) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -#define PIO_IFSCSR_P31 (0x1u << 31) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ -/* -------- PIO_SCDR : (PIO Offset: 0x008C) Slow Clock Divider Debouncing Register -------- */ -#define PIO_SCDR_DIV_Pos 0 -#define PIO_SCDR_DIV_Msk (0x3fffu << PIO_SCDR_DIV_Pos) /**< \brief (PIO_SCDR) */ -#define PIO_SCDR_DIV(value) ((PIO_SCDR_DIV_Msk & ((value) << PIO_SCDR_DIV_Pos))) -/* -------- PIO_PPDDR : (PIO Offset: 0x0090) Pad Pull-down Disable Register -------- */ -#define PIO_PPDDR_P0 (0x1u << 0) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P1 (0x1u << 1) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P2 (0x1u << 2) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P3 (0x1u << 3) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P4 (0x1u << 4) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P5 (0x1u << 5) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P6 (0x1u << 6) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P7 (0x1u << 7) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P8 (0x1u << 8) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P9 (0x1u << 9) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P10 (0x1u << 10) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P11 (0x1u << 11) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P12 (0x1u << 12) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P13 (0x1u << 13) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P14 (0x1u << 14) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P15 (0x1u << 15) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P16 (0x1u << 16) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P17 (0x1u << 17) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P18 (0x1u << 18) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P19 (0x1u << 19) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P20 (0x1u << 20) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P21 (0x1u << 21) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P22 (0x1u << 22) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P23 (0x1u << 23) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P24 (0x1u << 24) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P25 (0x1u << 25) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P26 (0x1u << 26) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P27 (0x1u << 27) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P28 (0x1u << 28) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P29 (0x1u << 29) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P30 (0x1u << 30) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -#define PIO_PPDDR_P31 (0x1u << 31) /**< \brief (PIO_PPDDR) Pull Down Disable. */ -/* -------- PIO_PPDER : (PIO Offset: 0x0094) Pad Pull-down Enable Register -------- */ -#define PIO_PPDER_P0 (0x1u << 0) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P1 (0x1u << 1) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P2 (0x1u << 2) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P3 (0x1u << 3) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P4 (0x1u << 4) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P5 (0x1u << 5) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P6 (0x1u << 6) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P7 (0x1u << 7) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P8 (0x1u << 8) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P9 (0x1u << 9) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P10 (0x1u << 10) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P11 (0x1u << 11) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P12 (0x1u << 12) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P13 (0x1u << 13) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P14 (0x1u << 14) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P15 (0x1u << 15) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P16 (0x1u << 16) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P17 (0x1u << 17) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P18 (0x1u << 18) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P19 (0x1u << 19) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P20 (0x1u << 20) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P21 (0x1u << 21) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P22 (0x1u << 22) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P23 (0x1u << 23) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P24 (0x1u << 24) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P25 (0x1u << 25) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P26 (0x1u << 26) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P27 (0x1u << 27) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P28 (0x1u << 28) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P29 (0x1u << 29) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P30 (0x1u << 30) /**< \brief (PIO_PPDER) Pull Down Enable. */ -#define PIO_PPDER_P31 (0x1u << 31) /**< \brief (PIO_PPDER) Pull Down Enable. */ -/* -------- PIO_PPDSR : (PIO Offset: 0x0098) Pad Pull-down Status Register -------- */ -#define PIO_PPDSR_P0 (0x1u << 0) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P1 (0x1u << 1) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P2 (0x1u << 2) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P3 (0x1u << 3) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P4 (0x1u << 4) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P5 (0x1u << 5) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P6 (0x1u << 6) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P7 (0x1u << 7) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P8 (0x1u << 8) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P9 (0x1u << 9) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P10 (0x1u << 10) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P11 (0x1u << 11) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P12 (0x1u << 12) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P13 (0x1u << 13) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P14 (0x1u << 14) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P15 (0x1u << 15) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P16 (0x1u << 16) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P17 (0x1u << 17) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P18 (0x1u << 18) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P19 (0x1u << 19) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P20 (0x1u << 20) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P21 (0x1u << 21) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P22 (0x1u << 22) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P23 (0x1u << 23) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P24 (0x1u << 24) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P25 (0x1u << 25) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P26 (0x1u << 26) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P27 (0x1u << 27) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P28 (0x1u << 28) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P29 (0x1u << 29) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P30 (0x1u << 30) /**< \brief (PIO_PPDSR) Pull Down Status. */ -#define PIO_PPDSR_P31 (0x1u << 31) /**< \brief (PIO_PPDSR) Pull Down Status. */ -/* -------- PIO_OWER : (PIO Offset: 0x00A0) Output Write Enable -------- */ -#define PIO_OWER_P0 (0x1u << 0) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P1 (0x1u << 1) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P2 (0x1u << 2) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P3 (0x1u << 3) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P4 (0x1u << 4) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P5 (0x1u << 5) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P6 (0x1u << 6) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P7 (0x1u << 7) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P8 (0x1u << 8) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P9 (0x1u << 9) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P10 (0x1u << 10) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P11 (0x1u << 11) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P12 (0x1u << 12) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P13 (0x1u << 13) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P14 (0x1u << 14) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P15 (0x1u << 15) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P16 (0x1u << 16) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P17 (0x1u << 17) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P18 (0x1u << 18) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P19 (0x1u << 19) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P20 (0x1u << 20) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P21 (0x1u << 21) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P22 (0x1u << 22) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P23 (0x1u << 23) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P24 (0x1u << 24) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P25 (0x1u << 25) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P26 (0x1u << 26) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P27 (0x1u << 27) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P28 (0x1u << 28) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P29 (0x1u << 29) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P30 (0x1u << 30) /**< \brief (PIO_OWER) Output Write Enable. */ -#define PIO_OWER_P31 (0x1u << 31) /**< \brief (PIO_OWER) Output Write Enable. */ -/* -------- PIO_OWDR : (PIO Offset: 0x00A4) Output Write Disable -------- */ -#define PIO_OWDR_P0 (0x1u << 0) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P1 (0x1u << 1) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P2 (0x1u << 2) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P3 (0x1u << 3) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P4 (0x1u << 4) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P5 (0x1u << 5) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P6 (0x1u << 6) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P7 (0x1u << 7) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P8 (0x1u << 8) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P9 (0x1u << 9) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P10 (0x1u << 10) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P11 (0x1u << 11) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P12 (0x1u << 12) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P13 (0x1u << 13) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P14 (0x1u << 14) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P15 (0x1u << 15) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P16 (0x1u << 16) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P17 (0x1u << 17) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P18 (0x1u << 18) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P19 (0x1u << 19) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P20 (0x1u << 20) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P21 (0x1u << 21) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P22 (0x1u << 22) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P23 (0x1u << 23) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P24 (0x1u << 24) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P25 (0x1u << 25) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P26 (0x1u << 26) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P27 (0x1u << 27) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P28 (0x1u << 28) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P29 (0x1u << 29) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P30 (0x1u << 30) /**< \brief (PIO_OWDR) Output Write Disable. */ -#define PIO_OWDR_P31 (0x1u << 31) /**< \brief (PIO_OWDR) Output Write Disable. */ -/* -------- PIO_OWSR : (PIO Offset: 0x00A8) Output Write Status Register -------- */ -#define PIO_OWSR_P0 (0x1u << 0) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P1 (0x1u << 1) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P2 (0x1u << 2) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P3 (0x1u << 3) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P4 (0x1u << 4) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P5 (0x1u << 5) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P6 (0x1u << 6) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P7 (0x1u << 7) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P8 (0x1u << 8) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P9 (0x1u << 9) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P10 (0x1u << 10) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P11 (0x1u << 11) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P12 (0x1u << 12) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P13 (0x1u << 13) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P14 (0x1u << 14) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P15 (0x1u << 15) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P16 (0x1u << 16) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P17 (0x1u << 17) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P18 (0x1u << 18) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P19 (0x1u << 19) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P20 (0x1u << 20) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P21 (0x1u << 21) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P22 (0x1u << 22) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P23 (0x1u << 23) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P24 (0x1u << 24) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P25 (0x1u << 25) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P26 (0x1u << 26) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P27 (0x1u << 27) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P28 (0x1u << 28) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P29 (0x1u << 29) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P30 (0x1u << 30) /**< \brief (PIO_OWSR) Output Write Status. */ -#define PIO_OWSR_P31 (0x1u << 31) /**< \brief (PIO_OWSR) Output Write Status. */ -/* -------- PIO_AIMER : (PIO Offset: 0x00B0) Additional Interrupt Modes Enable Register -------- */ -#define PIO_AIMER_P0 (0x1u << 0) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P1 (0x1u << 1) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P2 (0x1u << 2) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P3 (0x1u << 3) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P4 (0x1u << 4) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P5 (0x1u << 5) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P6 (0x1u << 6) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P7 (0x1u << 7) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P8 (0x1u << 8) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P9 (0x1u << 9) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P10 (0x1u << 10) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P11 (0x1u << 11) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P12 (0x1u << 12) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P13 (0x1u << 13) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P14 (0x1u << 14) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P15 (0x1u << 15) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P16 (0x1u << 16) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P17 (0x1u << 17) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P18 (0x1u << 18) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P19 (0x1u << 19) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P20 (0x1u << 20) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P21 (0x1u << 21) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P22 (0x1u << 22) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P23 (0x1u << 23) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P24 (0x1u << 24) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P25 (0x1u << 25) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P26 (0x1u << 26) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P27 (0x1u << 27) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P28 (0x1u << 28) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P29 (0x1u << 29) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P30 (0x1u << 30) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -#define PIO_AIMER_P31 (0x1u << 31) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ -/* -------- PIO_AIMDR : (PIO Offset: 0x00B4) Additional Interrupt Modes Disables Register -------- */ -#define PIO_AIMDR_P0 (0x1u << 0) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P1 (0x1u << 1) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P2 (0x1u << 2) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P3 (0x1u << 3) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P4 (0x1u << 4) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P5 (0x1u << 5) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P6 (0x1u << 6) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P7 (0x1u << 7) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P8 (0x1u << 8) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P9 (0x1u << 9) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P10 (0x1u << 10) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P11 (0x1u << 11) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P12 (0x1u << 12) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P13 (0x1u << 13) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P14 (0x1u << 14) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P15 (0x1u << 15) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P16 (0x1u << 16) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P17 (0x1u << 17) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P18 (0x1u << 18) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P19 (0x1u << 19) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P20 (0x1u << 20) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P21 (0x1u << 21) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P22 (0x1u << 22) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P23 (0x1u << 23) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P24 (0x1u << 24) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P25 (0x1u << 25) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P26 (0x1u << 26) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P27 (0x1u << 27) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P28 (0x1u << 28) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P29 (0x1u << 29) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P30 (0x1u << 30) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -#define PIO_AIMDR_P31 (0x1u << 31) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ -/* -------- PIO_AIMMR : (PIO Offset: 0x00B8) Additional Interrupt Modes Mask Register -------- */ -#define PIO_AIMMR_P0 (0x1u << 0) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P1 (0x1u << 1) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P2 (0x1u << 2) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P3 (0x1u << 3) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P4 (0x1u << 4) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P5 (0x1u << 5) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P6 (0x1u << 6) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P7 (0x1u << 7) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P8 (0x1u << 8) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P9 (0x1u << 9) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P10 (0x1u << 10) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P11 (0x1u << 11) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P12 (0x1u << 12) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P13 (0x1u << 13) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P14 (0x1u << 14) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P15 (0x1u << 15) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P16 (0x1u << 16) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P17 (0x1u << 17) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P18 (0x1u << 18) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P19 (0x1u << 19) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P20 (0x1u << 20) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P21 (0x1u << 21) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P22 (0x1u << 22) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P23 (0x1u << 23) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P24 (0x1u << 24) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P25 (0x1u << 25) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P26 (0x1u << 26) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P27 (0x1u << 27) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P28 (0x1u << 28) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P29 (0x1u << 29) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P30 (0x1u << 30) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -#define PIO_AIMMR_P31 (0x1u << 31) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ -/* -------- PIO_ESR : (PIO Offset: 0x00C0) Edge Select Register -------- */ -#define PIO_ESR_P0 (0x1u << 0) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P1 (0x1u << 1) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P2 (0x1u << 2) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P3 (0x1u << 3) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P4 (0x1u << 4) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P5 (0x1u << 5) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P6 (0x1u << 6) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P7 (0x1u << 7) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P8 (0x1u << 8) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P9 (0x1u << 9) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P10 (0x1u << 10) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P11 (0x1u << 11) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P12 (0x1u << 12) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P13 (0x1u << 13) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P14 (0x1u << 14) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P15 (0x1u << 15) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P16 (0x1u << 16) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P17 (0x1u << 17) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P18 (0x1u << 18) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P19 (0x1u << 19) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P20 (0x1u << 20) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P21 (0x1u << 21) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P22 (0x1u << 22) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P23 (0x1u << 23) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P24 (0x1u << 24) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P25 (0x1u << 25) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P26 (0x1u << 26) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P27 (0x1u << 27) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P28 (0x1u << 28) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P29 (0x1u << 29) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P30 (0x1u << 30) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -#define PIO_ESR_P31 (0x1u << 31) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ -/* -------- PIO_LSR : (PIO Offset: 0x00C4) Level Select Register -------- */ -#define PIO_LSR_P0 (0x1u << 0) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P1 (0x1u << 1) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P2 (0x1u << 2) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P3 (0x1u << 3) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P4 (0x1u << 4) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P5 (0x1u << 5) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P6 (0x1u << 6) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P7 (0x1u << 7) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P8 (0x1u << 8) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P9 (0x1u << 9) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P10 (0x1u << 10) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P11 (0x1u << 11) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P12 (0x1u << 12) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P13 (0x1u << 13) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P14 (0x1u << 14) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P15 (0x1u << 15) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P16 (0x1u << 16) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P17 (0x1u << 17) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P18 (0x1u << 18) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P19 (0x1u << 19) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P20 (0x1u << 20) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P21 (0x1u << 21) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P22 (0x1u << 22) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P23 (0x1u << 23) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P24 (0x1u << 24) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P25 (0x1u << 25) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P26 (0x1u << 26) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P27 (0x1u << 27) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P28 (0x1u << 28) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P29 (0x1u << 29) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P30 (0x1u << 30) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -#define PIO_LSR_P31 (0x1u << 31) /**< \brief (PIO_LSR) Level Interrupt Selection. */ -/* -------- PIO_ELSR : (PIO Offset: 0x00C8) Edge/Level Status Register -------- */ -#define PIO_ELSR_P0 (0x1u << 0) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P1 (0x1u << 1) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P2 (0x1u << 2) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P3 (0x1u << 3) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P4 (0x1u << 4) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P5 (0x1u << 5) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P6 (0x1u << 6) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P7 (0x1u << 7) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P8 (0x1u << 8) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P9 (0x1u << 9) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P10 (0x1u << 10) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P11 (0x1u << 11) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P12 (0x1u << 12) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P13 (0x1u << 13) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P14 (0x1u << 14) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P15 (0x1u << 15) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P16 (0x1u << 16) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P17 (0x1u << 17) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P18 (0x1u << 18) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P19 (0x1u << 19) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P20 (0x1u << 20) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P21 (0x1u << 21) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P22 (0x1u << 22) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P23 (0x1u << 23) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P24 (0x1u << 24) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P25 (0x1u << 25) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P26 (0x1u << 26) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P27 (0x1u << 27) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P28 (0x1u << 28) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P29 (0x1u << 29) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P30 (0x1u << 30) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -#define PIO_ELSR_P31 (0x1u << 31) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ -/* -------- PIO_FELLSR : (PIO Offset: 0x00D0) Falling Edge/Low Level Select Register -------- */ -#define PIO_FELLSR_P0 (0x1u << 0) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P1 (0x1u << 1) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P2 (0x1u << 2) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P3 (0x1u << 3) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P4 (0x1u << 4) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P5 (0x1u << 5) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P6 (0x1u << 6) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P7 (0x1u << 7) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P8 (0x1u << 8) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P9 (0x1u << 9) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P10 (0x1u << 10) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P11 (0x1u << 11) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P12 (0x1u << 12) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P13 (0x1u << 13) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P14 (0x1u << 14) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P15 (0x1u << 15) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P16 (0x1u << 16) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P17 (0x1u << 17) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P18 (0x1u << 18) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P19 (0x1u << 19) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P20 (0x1u << 20) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P21 (0x1u << 21) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P22 (0x1u << 22) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P23 (0x1u << 23) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P24 (0x1u << 24) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P25 (0x1u << 25) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P26 (0x1u << 26) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P27 (0x1u << 27) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P28 (0x1u << 28) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P29 (0x1u << 29) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P30 (0x1u << 30) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -#define PIO_FELLSR_P31 (0x1u << 31) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ -/* -------- PIO_REHLSR : (PIO Offset: 0x00D4) Rising Edge/ High Level Select Register -------- */ -#define PIO_REHLSR_P0 (0x1u << 0) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P1 (0x1u << 1) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P2 (0x1u << 2) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P3 (0x1u << 3) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P4 (0x1u << 4) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P5 (0x1u << 5) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P6 (0x1u << 6) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P7 (0x1u << 7) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P8 (0x1u << 8) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P9 (0x1u << 9) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P10 (0x1u << 10) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P11 (0x1u << 11) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P12 (0x1u << 12) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P13 (0x1u << 13) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P14 (0x1u << 14) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P15 (0x1u << 15) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P16 (0x1u << 16) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P17 (0x1u << 17) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P18 (0x1u << 18) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P19 (0x1u << 19) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P20 (0x1u << 20) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P21 (0x1u << 21) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P22 (0x1u << 22) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P23 (0x1u << 23) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P24 (0x1u << 24) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P25 (0x1u << 25) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P26 (0x1u << 26) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P27 (0x1u << 27) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P28 (0x1u << 28) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P29 (0x1u << 29) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P30 (0x1u << 30) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -#define PIO_REHLSR_P31 (0x1u << 31) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ -/* -------- PIO_FRLHSR : (PIO Offset: 0x00D8) Fall/Rise - Low/High Status Register -------- */ -#define PIO_FRLHSR_P0 (0x1u << 0) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P1 (0x1u << 1) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P2 (0x1u << 2) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P3 (0x1u << 3) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P4 (0x1u << 4) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P5 (0x1u << 5) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P6 (0x1u << 6) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P7 (0x1u << 7) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P8 (0x1u << 8) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P9 (0x1u << 9) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P10 (0x1u << 10) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P11 (0x1u << 11) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P12 (0x1u << 12) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P13 (0x1u << 13) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P14 (0x1u << 14) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P15 (0x1u << 15) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P16 (0x1u << 16) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P17 (0x1u << 17) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P18 (0x1u << 18) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P19 (0x1u << 19) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P20 (0x1u << 20) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P21 (0x1u << 21) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P22 (0x1u << 22) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P23 (0x1u << 23) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P24 (0x1u << 24) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P25 (0x1u << 25) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P26 (0x1u << 26) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P27 (0x1u << 27) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P28 (0x1u << 28) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P29 (0x1u << 29) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P30 (0x1u << 30) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -#define PIO_FRLHSR_P31 (0x1u << 31) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ -/* -------- PIO_LOCKSR : (PIO Offset: 0x00E0) Lock Status -------- */ -#define PIO_LOCKSR_P0 (0x1u << 0) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P1 (0x1u << 1) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P2 (0x1u << 2) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P3 (0x1u << 3) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P4 (0x1u << 4) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P5 (0x1u << 5) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P6 (0x1u << 6) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P7 (0x1u << 7) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P8 (0x1u << 8) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P9 (0x1u << 9) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P10 (0x1u << 10) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P11 (0x1u << 11) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P12 (0x1u << 12) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P13 (0x1u << 13) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P14 (0x1u << 14) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P15 (0x1u << 15) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P16 (0x1u << 16) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P17 (0x1u << 17) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P18 (0x1u << 18) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P19 (0x1u << 19) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P20 (0x1u << 20) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P21 (0x1u << 21) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P22 (0x1u << 22) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P23 (0x1u << 23) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P24 (0x1u << 24) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P25 (0x1u << 25) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P26 (0x1u << 26) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P27 (0x1u << 27) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P28 (0x1u << 28) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P29 (0x1u << 29) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P30 (0x1u << 30) /**< \brief (PIO_LOCKSR) Lock Status. */ -#define PIO_LOCKSR_P31 (0x1u << 31) /**< \brief (PIO_LOCKSR) Lock Status. */ -/* -------- PIO_WPMR : (PIO Offset: 0x00E4) Write Protect Mode Register -------- */ -#define PIO_WPMR_WPEN (0x1u << 0) /**< \brief (PIO_WPMR) Write Protect Enable */ -#define PIO_WPMR_WPKEY_Pos 8 -#define PIO_WPMR_WPKEY_Msk (0xffffffu << PIO_WPMR_WPKEY_Pos) /**< \brief (PIO_WPMR) Write Protect KEY */ -#define PIO_WPMR_WPKEY(value) ((PIO_WPMR_WPKEY_Msk & ((value) << PIO_WPMR_WPKEY_Pos))) -/* -------- PIO_WPSR : (PIO Offset: 0x00E8) Write Protect Status Register -------- */ -#define PIO_WPSR_WPVS (0x1u << 0) /**< \brief (PIO_WPSR) Write Protect Violation Status */ -#define PIO_WPSR_WPVSRC_Pos 8 -#define PIO_WPSR_WPVSRC_Msk (0xffffu << PIO_WPSR_WPVSRC_Pos) /**< \brief (PIO_WPSR) Write Protect Violation Source */ -/* -------- PIO_SCHMITT : (PIO Offset: 0x0100) Schmitt Trigger Register -------- */ -#define PIO_SCHMITT_SCHMITT0 (0x1u << 0) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT1 (0x1u << 1) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT2 (0x1u << 2) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT3 (0x1u << 3) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT4 (0x1u << 4) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT5 (0x1u << 5) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT6 (0x1u << 6) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT7 (0x1u << 7) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT8 (0x1u << 8) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT9 (0x1u << 9) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT10 (0x1u << 10) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT11 (0x1u << 11) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT12 (0x1u << 12) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT13 (0x1u << 13) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT14 (0x1u << 14) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT15 (0x1u << 15) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT16 (0x1u << 16) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT17 (0x1u << 17) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT18 (0x1u << 18) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT19 (0x1u << 19) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT20 (0x1u << 20) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT21 (0x1u << 21) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT22 (0x1u << 22) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT23 (0x1u << 23) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT24 (0x1u << 24) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT25 (0x1u << 25) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT26 (0x1u << 26) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT27 (0x1u << 27) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT28 (0x1u << 28) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT29 (0x1u << 29) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT30 (0x1u << 30) /**< \brief (PIO_SCHMITT) */ -#define PIO_SCHMITT_SCHMITT31 (0x1u << 31) /**< \brief (PIO_SCHMITT) */ -/* -------- PIO_DELAYR : (PIO Offset: 0x0110) IO Delay Register -------- */ -#define PIO_DELAYR_Delay0_Pos 0 -#define PIO_DELAYR_Delay0_Msk (0xfu << PIO_DELAYR_Delay0_Pos) /**< \brief (PIO_DELAYR) */ -#define PIO_DELAYR_Delay0(value) ((PIO_DELAYR_Delay0_Msk & ((value) << PIO_DELAYR_Delay0_Pos))) -#define PIO_DELAYR_Delay1_Pos 4 -#define PIO_DELAYR_Delay1_Msk (0xfu << PIO_DELAYR_Delay1_Pos) /**< \brief (PIO_DELAYR) */ -#define PIO_DELAYR_Delay1(value) ((PIO_DELAYR_Delay1_Msk & ((value) << PIO_DELAYR_Delay1_Pos))) -#define PIO_DELAYR_Delay2_Pos 8 -#define PIO_DELAYR_Delay2_Msk (0xfu << PIO_DELAYR_Delay2_Pos) /**< \brief (PIO_DELAYR) */ -#define PIO_DELAYR_Delay2(value) ((PIO_DELAYR_Delay2_Msk & ((value) << PIO_DELAYR_Delay2_Pos))) -#define PIO_DELAYR_Delay3_Pos 12 -#define PIO_DELAYR_Delay3_Msk (0xfu << PIO_DELAYR_Delay3_Pos) /**< \brief (PIO_DELAYR) */ -#define PIO_DELAYR_Delay3(value) ((PIO_DELAYR_Delay3_Msk & ((value) << PIO_DELAYR_Delay3_Pos))) -#define PIO_DELAYR_Delay4_Pos 16 -#define PIO_DELAYR_Delay4_Msk (0xfu << PIO_DELAYR_Delay4_Pos) /**< \brief (PIO_DELAYR) */ -#define PIO_DELAYR_Delay4(value) ((PIO_DELAYR_Delay4_Msk & ((value) << PIO_DELAYR_Delay4_Pos))) -#define PIO_DELAYR_Delay5_Pos 20 -#define PIO_DELAYR_Delay5_Msk (0xfu << PIO_DELAYR_Delay5_Pos) /**< \brief (PIO_DELAYR) */ -#define PIO_DELAYR_Delay5(value) ((PIO_DELAYR_Delay5_Msk & ((value) << PIO_DELAYR_Delay5_Pos))) -#define PIO_DELAYR_Delay6_Pos 24 -#define PIO_DELAYR_Delay6_Msk (0xfu << PIO_DELAYR_Delay6_Pos) /**< \brief (PIO_DELAYR) */ -#define PIO_DELAYR_Delay6(value) ((PIO_DELAYR_Delay6_Msk & ((value) << PIO_DELAYR_Delay6_Pos))) -#define PIO_DELAYR_Delay7_Pos 28 -#define PIO_DELAYR_Delay7_Msk (0xfu << PIO_DELAYR_Delay7_Pos) /**< \brief (PIO_DELAYR) */ -#define PIO_DELAYR_Delay7(value) ((PIO_DELAYR_Delay7_Msk & ((value) << PIO_DELAYR_Delay7_Pos))) -/* -------- PIO_PCMR : (PIO Offset: 0x150) Parallel Capture Mode Register -------- */ -#define PIO_PCMR_PCEN (0x1u << 0) /**< \brief (PIO_PCMR) Parallel Capture Mode Enable */ -#define PIO_PCMR_DSIZE_Pos 4 -#define PIO_PCMR_DSIZE_Msk (0x3u << PIO_PCMR_DSIZE_Pos) /**< \brief (PIO_PCMR) Parallel Capture Mode Data Size */ -#define PIO_PCMR_DSIZE_BYTE (0x0u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR register is a BYTE (8-bit) */ -#define PIO_PCMR_DSIZE_HALFWORD (0x1u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR register is a HALF-WORD (16-bit) */ -#define PIO_PCMR_DSIZE_WORD (0x2u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR register is a WORD (32-bit) */ -#define PIO_PCMR_ALWYS (0x1u << 9) /**< \brief (PIO_PCMR) Parallel Capture Mode Always Sampling */ -#define PIO_PCMR_HALFS (0x1u << 10) /**< \brief (PIO_PCMR) Parallel Capture Mode Half Sampling */ -#define PIO_PCMR_FRSTS (0x1u << 11) /**< \brief (PIO_PCMR) Parallel Capture Mode First Sample */ -/* -------- PIO_PCIER : (PIO Offset: 0x154) Parallel Capture Interrupt Enable Register -------- */ -#define PIO_PCIER_DRDY (0x1u << 0) /**< \brief (PIO_PCIER) Parallel Capture Mode Data Ready Interrupt Enable */ -#define PIO_PCIER_OVRE (0x1u << 1) /**< \brief (PIO_PCIER) Parallel Capture Mode Overrun Error Interrupt Enable */ -#define PIO_PCIER_ENDRX (0x1u << 2) /**< \brief (PIO_PCIER) End of Reception Transfer Interrupt Enable */ -#define PIO_PCIER_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIER) Reception Buffer Full Interrupt Enable */ -/* -------- PIO_PCIDR : (PIO Offset: 0x158) Parallel Capture Interrupt Disable Register -------- */ -#define PIO_PCIDR_DRDY (0x1u << 0) /**< \brief (PIO_PCIDR) Parallel Capture Mode Data Ready Interrupt Disable */ -#define PIO_PCIDR_OVRE (0x1u << 1) /**< \brief (PIO_PCIDR) Parallel Capture Mode Overrun Error Interrupt Disable */ -#define PIO_PCIDR_ENDRX (0x1u << 2) /**< \brief (PIO_PCIDR) End of Reception Transfer Interrupt Disable */ -#define PIO_PCIDR_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIDR) Reception Buffer Full Interrupt Disable */ -/* -------- PIO_PCIMR : (PIO Offset: 0x15C) Parallel Capture Interrupt Mask Register -------- */ -#define PIO_PCIMR_DRDY (0x1u << 0) /**< \brief (PIO_PCIMR) Parallel Capture Mode Data Ready Interrupt Mask */ -#define PIO_PCIMR_OVRE (0x1u << 1) /**< \brief (PIO_PCIMR) Parallel Capture Mode Overrun Error Interrupt Mask */ -#define PIO_PCIMR_ENDRX (0x1u << 2) /**< \brief (PIO_PCIMR) End of Reception Transfer Interrupt Mask */ -#define PIO_PCIMR_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIMR) Reception Buffer Full Interrupt Mask */ -/* -------- PIO_PCISR : (PIO Offset: 0x160) Parallel Capture Interrupt Status Register -------- */ -#define PIO_PCISR_DRDY (0x1u << 0) /**< \brief (PIO_PCISR) Parallel Capture Mode Data Ready */ -#define PIO_PCISR_OVRE (0x1u << 1) /**< \brief (PIO_PCISR) Parallel Capture Mode Overrun Error. */ -#define PIO_PCISR_ENDRX (0x1u << 2) /**< \brief (PIO_PCISR) End of Reception Transfer. */ -#define PIO_PCISR_RXBUFF (0x1u << 3) /**< \brief (PIO_PCISR) Reception Buffer Full */ -/* -------- PIO_PCRHR : (PIO Offset: 0x164) Parallel Capture Reception Holding Register -------- */ -#define PIO_PCRHR_RDATA_Pos 0 -#define PIO_PCRHR_RDATA_Msk (0xffffffffu << PIO_PCRHR_RDATA_Pos) /**< \brief (PIO_PCRHR) Parallel Capture Mode Reception Data. */ -/* -------- PIO_RPR : (PIO Offset: 0x168) Receive Pointer Register -------- */ -#define PIO_RPR_RXPTR_Pos 0 -#define PIO_RPR_RXPTR_Msk (0xffffffffu << PIO_RPR_RXPTR_Pos) /**< \brief (PIO_RPR) Receive Pointer Register */ -#define PIO_RPR_RXPTR(value) ((PIO_RPR_RXPTR_Msk & ((value) << PIO_RPR_RXPTR_Pos))) -/* -------- PIO_RCR : (PIO Offset: 0x16C) Receive Counter Register -------- */ -#define PIO_RCR_RXCTR_Pos 0 -#define PIO_RCR_RXCTR_Msk (0xffffu << PIO_RCR_RXCTR_Pos) /**< \brief (PIO_RCR) Receive Counter Register */ -#define PIO_RCR_RXCTR(value) ((PIO_RCR_RXCTR_Msk & ((value) << PIO_RCR_RXCTR_Pos))) -/* -------- PIO_RNPR : (PIO Offset: 0x178) Receive Next Pointer Register -------- */ -#define PIO_RNPR_RXNPTR_Pos 0 -#define PIO_RNPR_RXNPTR_Msk (0xffffffffu << PIO_RNPR_RXNPTR_Pos) /**< \brief (PIO_RNPR) Receive Next Pointer */ -#define PIO_RNPR_RXNPTR(value) ((PIO_RNPR_RXNPTR_Msk & ((value) << PIO_RNPR_RXNPTR_Pos))) -/* -------- PIO_RNCR : (PIO Offset: 0x17C) Receive Next Counter Register -------- */ -#define PIO_RNCR_RXNCTR_Pos 0 -#define PIO_RNCR_RXNCTR_Msk (0xffffu << PIO_RNCR_RXNCTR_Pos) /**< \brief (PIO_RNCR) Receive Next Counter */ -#define PIO_RNCR_RXNCTR(value) ((PIO_RNCR_RXNCTR_Msk & ((value) << PIO_RNCR_RXNCTR_Pos))) -/* -------- PIO_PTCR : (PIO Offset: 0x188) Transfer Control Register -------- */ -#define PIO_PTCR_RXTEN (0x1u << 0) /**< \brief (PIO_PTCR) Receiver Transfer Enable */ -#define PIO_PTCR_RXTDIS (0x1u << 1) /**< \brief (PIO_PTCR) Receiver Transfer Disable */ -#define PIO_PTCR_TXTEN (0x1u << 8) /**< \brief (PIO_PTCR) Transmitter Transfer Enable */ -#define PIO_PTCR_TXTDIS (0x1u << 9) /**< \brief (PIO_PTCR) Transmitter Transfer Disable */ -/* -------- PIO_PTSR : (PIO Offset: 0x18C) Transfer Status Register -------- */ -#define PIO_PTSR_RXTEN (0x1u << 0) /**< \brief (PIO_PTSR) Receiver Transfer Enable */ -#define PIO_PTSR_TXTEN (0x1u << 8) /**< \brief (PIO_PTSR) Transmitter Transfer Enable */ - -/*@}*/ - - -#endif /* _SAM4E_PIO_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pmc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pmc.h deleted file mode 100644 index 10a2a10fa..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pmc.h +++ /dev/null @@ -1,413 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_PMC_COMPONENT_ -#define _SAM4E_PMC_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Power Management Controller */ -/* ============================================================================= */ -/** \addtogroup SAM4E_PMC Power Management Controller */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Pmc hardware registers */ -typedef struct { - WoReg PMC_SCER; /**< \brief (Pmc Offset: 0x0000) System Clock Enable Register */ - WoReg PMC_SCDR; /**< \brief (Pmc Offset: 0x0004) System Clock Disable Register */ - RoReg PMC_SCSR; /**< \brief (Pmc Offset: 0x0008) System Clock Status Register */ - RoReg Reserved1[1]; - WoReg PMC_PCER0; /**< \brief (Pmc Offset: 0x0010) Peripheral Clock Enable Register 0 */ - WoReg PMC_PCDR0; /**< \brief (Pmc Offset: 0x0014) Peripheral Clock Disable Register 0 */ - RoReg PMC_PCSR0; /**< \brief (Pmc Offset: 0x0018) Peripheral Clock Status Register 0 */ - RoReg Reserved2[1]; - RwReg CKGR_MOR; /**< \brief (Pmc Offset: 0x0020) Main Oscillator Register */ - RwReg CKGR_MCFR; /**< \brief (Pmc Offset: 0x0024) Main Clock Frequency Register */ - RwReg CKGR_PLLAR; /**< \brief (Pmc Offset: 0x0028) PLLA Register */ - RoReg Reserved3[1]; - RwReg PMC_MCKR; /**< \brief (Pmc Offset: 0x0030) Master Clock Register */ - RoReg Reserved4[1]; - RwReg PMC_USB; /**< \brief (Pmc Offset: 0x0038) USB Clock Register */ - RoReg Reserved5[1]; - RwReg PMC_PCK[3]; /**< \brief (Pmc Offset: 0x0040) Programmable Clock 0 Register */ - RoReg Reserved6[5]; - WoReg PMC_IER; /**< \brief (Pmc Offset: 0x0060) Interrupt Enable Register */ - WoReg PMC_IDR; /**< \brief (Pmc Offset: 0x0064) Interrupt Disable Register */ - RoReg PMC_SR; /**< \brief (Pmc Offset: 0x0068) Status Register */ - RoReg PMC_IMR; /**< \brief (Pmc Offset: 0x006C) Interrupt Mask Register */ - RwReg PMC_FSMR; /**< \brief (Pmc Offset: 0x0070) Fast Start-up Mode Register */ - RwReg PMC_FSPR; /**< \brief (Pmc Offset: 0x0074) Fast Start-up Polarity Register */ - WoReg PMC_FOCR; /**< \brief (Pmc Offset: 0x0078) Fault Output Clear Register */ - RoReg Reserved7[26]; - RwReg PMC_WPMR; /**< \brief (Pmc Offset: 0x00E4) Write Protect Mode Register */ - RoReg PMC_WPSR; /**< \brief (Pmc Offset: 0x00E8) Write Protect Status Register */ - RoReg Reserved8[5]; - WoReg PMC_PCER1; /**< \brief (Pmc Offset: 0x0100) Peripheral Clock Enable Register 1 */ - WoReg PMC_PCDR1; /**< \brief (Pmc Offset: 0x0104) Peripheral Clock Disable Register 1 */ - RoReg PMC_PCSR1; /**< \brief (Pmc Offset: 0x0108) Peripheral Clock Status Register 1 */ - RoReg Reserved9[1]; - RwReg PMC_OCR; /**< \brief (Pmc Offset: 0x0110) Oscillator Calibration Register */ -} Pmc; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- PMC_SCER : (PMC Offset: 0x0000) System Clock Enable Register -------- */ -#define PMC_SCER_UDP (0x1u << 7) /**< \brief (PMC_SCER) USB Device Port Clock Enable */ -#define PMC_SCER_PCK0 (0x1u << 8) /**< \brief (PMC_SCER) Programmable Clock 0 Output Enable */ -#define PMC_SCER_PCK1 (0x1u << 9) /**< \brief (PMC_SCER) Programmable Clock 1 Output Enable */ -#define PMC_SCER_PCK2 (0x1u << 10) /**< \brief (PMC_SCER) Programmable Clock 2 Output Enable */ -/* -------- PMC_SCDR : (PMC Offset: 0x0004) System Clock Disable Register -------- */ -#define PMC_SCDR_UDP (0x1u << 7) /**< \brief (PMC_SCDR) USB Device Port Clock Disable */ -#define PMC_SCDR_PCK0 (0x1u << 8) /**< \brief (PMC_SCDR) Programmable Clock 0 Output Disable */ -#define PMC_SCDR_PCK1 (0x1u << 9) /**< \brief (PMC_SCDR) Programmable Clock 1 Output Disable */ -#define PMC_SCDR_PCK2 (0x1u << 10) /**< \brief (PMC_SCDR) Programmable Clock 2 Output Disable */ -/* -------- PMC_SCSR : (PMC Offset: 0x0008) System Clock Status Register -------- */ -#define PMC_SCSR_UDP (0x1u << 7) /**< \brief (PMC_SCSR) USB Device Port Clock Status */ -#define PMC_SCSR_PCK0 (0x1u << 8) /**< \brief (PMC_SCSR) Programmable Clock 0 Output Status */ -#define PMC_SCSR_PCK1 (0x1u << 9) /**< \brief (PMC_SCSR) Programmable Clock 1 Output Status */ -#define PMC_SCSR_PCK2 (0x1u << 10) /**< \brief (PMC_SCSR) Programmable Clock 2 Output Status */ -/* -------- PMC_PCER0 : (PMC Offset: 0x0010) Peripheral Clock Enable Register 0 -------- */ -#define PMC_PCER0_PID9 (0x1u << 9) /**< \brief (PMC_PCER0) Peripheral Clock 9 Enable */ -#define PMC_PCER0_PID10 (0x1u << 10) /**< \brief (PMC_PCER0) Peripheral Clock 10 Enable */ -#define PMC_PCER0_PID11 (0x1u << 11) /**< \brief (PMC_PCER0) Peripheral Clock 11 Enable */ -#define PMC_PCER0_PID12 (0x1u << 12) /**< \brief (PMC_PCER0) Peripheral Clock 12 Enable */ -#define PMC_PCER0_PID13 (0x1u << 13) /**< \brief (PMC_PCER0) Peripheral Clock 13 Enable */ -#define PMC_PCER0_PID14 (0x1u << 14) /**< \brief (PMC_PCER0) Peripheral Clock 14 Enable */ -#define PMC_PCER0_PID15 (0x1u << 15) /**< \brief (PMC_PCER0) Peripheral Clock 15 Enable */ -#define PMC_PCER0_PID16 (0x1u << 16) /**< \brief (PMC_PCER0) Peripheral Clock 16 Enable */ -#define PMC_PCER0_PID17 (0x1u << 17) /**< \brief (PMC_PCER0) Peripheral Clock 17 Enable */ -#define PMC_PCER0_PID18 (0x1u << 18) /**< \brief (PMC_PCER0) Peripheral Clock 18 Enable */ -#define PMC_PCER0_PID19 (0x1u << 19) /**< \brief (PMC_PCER0) Peripheral Clock 19 Enable */ -#define PMC_PCER0_PID20 (0x1u << 20) /**< \brief (PMC_PCER0) Peripheral Clock 20 Enable */ -#define PMC_PCER0_PID21 (0x1u << 21) /**< \brief (PMC_PCER0) Peripheral Clock 21 Enable */ -#define PMC_PCER0_PID22 (0x1u << 22) /**< \brief (PMC_PCER0) Peripheral Clock 22 Enable */ -#define PMC_PCER0_PID23 (0x1u << 23) /**< \brief (PMC_PCER0) Peripheral Clock 23 Enable */ -#define PMC_PCER0_PID24 (0x1u << 24) /**< \brief (PMC_PCER0) Peripheral Clock 24 Enable */ -#define PMC_PCER0_PID25 (0x1u << 25) /**< \brief (PMC_PCER0) Peripheral Clock 25 Enable */ -#define PMC_PCER0_PID26 (0x1u << 26) /**< \brief (PMC_PCER0) Peripheral Clock 26 Enable */ -#define PMC_PCER0_PID27 (0x1u << 27) /**< \brief (PMC_PCER0) Peripheral Clock 27 Enable */ -#define PMC_PCER0_PID28 (0x1u << 28) /**< \brief (PMC_PCER0) Peripheral Clock 28 Enable */ -#define PMC_PCER0_PID29 (0x1u << 29) /**< \brief (PMC_PCER0) Peripheral Clock 29 Enable */ -#define PMC_PCER0_PID30 (0x1u << 30) /**< \brief (PMC_PCER0) Peripheral Clock 30 Enable */ -#define PMC_PCER0_PID31 (0x1u << 31) /**< \brief (PMC_PCER0) Peripheral Clock 31 Enable */ -/* -------- PMC_PCDR0 : (PMC Offset: 0x0014) Peripheral Clock Disable Register 0 -------- */ -#define PMC_PCDR0_PID9 (0x1u << 9) /**< \brief (PMC_PCDR0) Peripheral Clock 9 Disable */ -#define PMC_PCDR0_PID10 (0x1u << 10) /**< \brief (PMC_PCDR0) Peripheral Clock 10 Disable */ -#define PMC_PCDR0_PID11 (0x1u << 11) /**< \brief (PMC_PCDR0) Peripheral Clock 11 Disable */ -#define PMC_PCDR0_PID12 (0x1u << 12) /**< \brief (PMC_PCDR0) Peripheral Clock 12 Disable */ -#define PMC_PCDR0_PID13 (0x1u << 13) /**< \brief (PMC_PCDR0) Peripheral Clock 13 Disable */ -#define PMC_PCDR0_PID14 (0x1u << 14) /**< \brief (PMC_PCDR0) Peripheral Clock 14 Disable */ -#define PMC_PCDR0_PID15 (0x1u << 15) /**< \brief (PMC_PCDR0) Peripheral Clock 15 Disable */ -#define PMC_PCDR0_PID16 (0x1u << 16) /**< \brief (PMC_PCDR0) Peripheral Clock 16 Disable */ -#define PMC_PCDR0_PID17 (0x1u << 17) /**< \brief (PMC_PCDR0) Peripheral Clock 17 Disable */ -#define PMC_PCDR0_PID18 (0x1u << 18) /**< \brief (PMC_PCDR0) Peripheral Clock 18 Disable */ -#define PMC_PCDR0_PID19 (0x1u << 19) /**< \brief (PMC_PCDR0) Peripheral Clock 19 Disable */ -#define PMC_PCDR0_PID20 (0x1u << 20) /**< \brief (PMC_PCDR0) Peripheral Clock 20 Disable */ -#define PMC_PCDR0_PID21 (0x1u << 21) /**< \brief (PMC_PCDR0) Peripheral Clock 21 Disable */ -#define PMC_PCDR0_PID22 (0x1u << 22) /**< \brief (PMC_PCDR0) Peripheral Clock 22 Disable */ -#define PMC_PCDR0_PID23 (0x1u << 23) /**< \brief (PMC_PCDR0) Peripheral Clock 23 Disable */ -#define PMC_PCDR0_PID24 (0x1u << 24) /**< \brief (PMC_PCDR0) Peripheral Clock 24 Disable */ -#define PMC_PCDR0_PID25 (0x1u << 25) /**< \brief (PMC_PCDR0) Peripheral Clock 25 Disable */ -#define PMC_PCDR0_PID26 (0x1u << 26) /**< \brief (PMC_PCDR0) Peripheral Clock 26 Disable */ -#define PMC_PCDR0_PID27 (0x1u << 27) /**< \brief (PMC_PCDR0) Peripheral Clock 27 Disable */ -#define PMC_PCDR0_PID28 (0x1u << 28) /**< \brief (PMC_PCDR0) Peripheral Clock 28 Disable */ -#define PMC_PCDR0_PID29 (0x1u << 29) /**< \brief (PMC_PCDR0) Peripheral Clock 29 Disable */ -#define PMC_PCDR0_PID30 (0x1u << 30) /**< \brief (PMC_PCDR0) Peripheral Clock 30 Disable */ -#define PMC_PCDR0_PID31 (0x1u << 31) /**< \brief (PMC_PCDR0) Peripheral Clock 31 Disable */ -/* -------- PMC_PCSR0 : (PMC Offset: 0x0018) Peripheral Clock Status Register 0 -------- */ -#define PMC_PCSR0_PID9 (0x1u << 9) /**< \brief (PMC_PCSR0) Peripheral Clock 9 Status */ -#define PMC_PCSR0_PID10 (0x1u << 10) /**< \brief (PMC_PCSR0) Peripheral Clock 10 Status */ -#define PMC_PCSR0_PID11 (0x1u << 11) /**< \brief (PMC_PCSR0) Peripheral Clock 11 Status */ -#define PMC_PCSR0_PID12 (0x1u << 12) /**< \brief (PMC_PCSR0) Peripheral Clock 12 Status */ -#define PMC_PCSR0_PID13 (0x1u << 13) /**< \brief (PMC_PCSR0) Peripheral Clock 13 Status */ -#define PMC_PCSR0_PID14 (0x1u << 14) /**< \brief (PMC_PCSR0) Peripheral Clock 14 Status */ -#define PMC_PCSR0_PID15 (0x1u << 15) /**< \brief (PMC_PCSR0) Peripheral Clock 15 Status */ -#define PMC_PCSR0_PID16 (0x1u << 16) /**< \brief (PMC_PCSR0) Peripheral Clock 16 Status */ -#define PMC_PCSR0_PID17 (0x1u << 17) /**< \brief (PMC_PCSR0) Peripheral Clock 17 Status */ -#define PMC_PCSR0_PID18 (0x1u << 18) /**< \brief (PMC_PCSR0) Peripheral Clock 18 Status */ -#define PMC_PCSR0_PID19 (0x1u << 19) /**< \brief (PMC_PCSR0) Peripheral Clock 19 Status */ -#define PMC_PCSR0_PID20 (0x1u << 20) /**< \brief (PMC_PCSR0) Peripheral Clock 20 Status */ -#define PMC_PCSR0_PID21 (0x1u << 21) /**< \brief (PMC_PCSR0) Peripheral Clock 21 Status */ -#define PMC_PCSR0_PID22 (0x1u << 22) /**< \brief (PMC_PCSR0) Peripheral Clock 22 Status */ -#define PMC_PCSR0_PID23 (0x1u << 23) /**< \brief (PMC_PCSR0) Peripheral Clock 23 Status */ -#define PMC_PCSR0_PID24 (0x1u << 24) /**< \brief (PMC_PCSR0) Peripheral Clock 24 Status */ -#define PMC_PCSR0_PID25 (0x1u << 25) /**< \brief (PMC_PCSR0) Peripheral Clock 25 Status */ -#define PMC_PCSR0_PID26 (0x1u << 26) /**< \brief (PMC_PCSR0) Peripheral Clock 26 Status */ -#define PMC_PCSR0_PID27 (0x1u << 27) /**< \brief (PMC_PCSR0) Peripheral Clock 27 Status */ -#define PMC_PCSR0_PID28 (0x1u << 28) /**< \brief (PMC_PCSR0) Peripheral Clock 28 Status */ -#define PMC_PCSR0_PID29 (0x1u << 29) /**< \brief (PMC_PCSR0) Peripheral Clock 29 Status */ -#define PMC_PCSR0_PID30 (0x1u << 30) /**< \brief (PMC_PCSR0) Peripheral Clock 30 Status */ -#define PMC_PCSR0_PID31 (0x1u << 31) /**< \brief (PMC_PCSR0) Peripheral Clock 31 Status */ -/* -------- CKGR_MOR : (PMC Offset: 0x0020) Main Oscillator Register -------- */ -#define CKGR_MOR_MOSCXTEN (0x1u << 0) /**< \brief (CKGR_MOR) Main Crystal Oscillator Enable */ -#define CKGR_MOR_MOSCXTBY (0x1u << 1) /**< \brief (CKGR_MOR) Main Crystal Oscillator Bypass */ -#define CKGR_MOR_WAITMODE (0x1u << 2) /**< \brief (CKGR_MOR) Wait Mode Command */ -#define CKGR_MOR_MOSCRCEN (0x1u << 3) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Enable */ -#define CKGR_MOR_MOSCRCF_Pos 4 -#define CKGR_MOR_MOSCRCF_Msk (0x7u << CKGR_MOR_MOSCRCF_Pos) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Frequency Selection */ -#define CKGR_MOR_MOSCRCF_4_MHz (0x0u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 4 MHz (default) */ -#define CKGR_MOR_MOSCRCF_8_MHz (0x1u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 8 MHz */ -#define CKGR_MOR_MOSCRCF_12_MHz (0x2u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 12 MHz */ -#define CKGR_MOR_MOSCXTST_Pos 8 -#define CKGR_MOR_MOSCXTST_Msk (0xffu << CKGR_MOR_MOSCXTST_Pos) /**< \brief (CKGR_MOR) Main Crystal Oscillator Start-up Time */ -#define CKGR_MOR_MOSCXTST(value) ((CKGR_MOR_MOSCXTST_Msk & ((value) << CKGR_MOR_MOSCXTST_Pos))) -#define CKGR_MOR_KEY_Pos 16 -#define CKGR_MOR_KEY_Msk (0xffu << CKGR_MOR_KEY_Pos) /**< \brief (CKGR_MOR) Password */ -#define CKGR_MOR_KEY(value) ((CKGR_MOR_KEY_Msk & ((value) << CKGR_MOR_KEY_Pos))) -#define CKGR_MOR_MOSCSEL (0x1u << 24) /**< \brief (CKGR_MOR) Main Oscillator Selection */ -#define CKGR_MOR_CFDEN (0x1u << 25) /**< \brief (CKGR_MOR) Clock Failure Detector Enable */ -/* -------- CKGR_MCFR : (PMC Offset: 0x0024) Main Clock Frequency Register -------- */ -#define CKGR_MCFR_MAINF_Pos 0 -#define CKGR_MCFR_MAINF_Msk (0xffffu << CKGR_MCFR_MAINF_Pos) /**< \brief (CKGR_MCFR) Main Clock Frequency */ -#define CKGR_MCFR_MAINF(value) ((CKGR_MCFR_MAINF_Msk & ((value) << CKGR_MCFR_MAINF_Pos))) -#define CKGR_MCFR_MAINFRDY (0x1u << 16) /**< \brief (CKGR_MCFR) Main Clock Ready */ -#define CKGR_MCFR_RCMEAS (0x1u << 20) /**< \brief (CKGR_MCFR) RC Oscillator Frequency Measure (write-only) */ -/* -------- CKGR_PLLAR : (PMC Offset: 0x0028) PLLA Register -------- */ -#define CKGR_PLLAR_DIVA_Pos 0 -#define CKGR_PLLAR_DIVA_Msk (0xffu << CKGR_PLLAR_DIVA_Pos) /**< \brief (CKGR_PLLAR) Divider */ -#define CKGR_PLLAR_DIVA(value) ((CKGR_PLLAR_DIVA_Msk & ((value) << CKGR_PLLAR_DIVA_Pos))) -#define CKGR_PLLAR_PLLACOUNT_Pos 8 -#define CKGR_PLLAR_PLLACOUNT_Msk (0x3fu << CKGR_PLLAR_PLLACOUNT_Pos) /**< \brief (CKGR_PLLAR) PLLA Counter */ -#define CKGR_PLLAR_PLLACOUNT(value) ((CKGR_PLLAR_PLLACOUNT_Msk & ((value) << CKGR_PLLAR_PLLACOUNT_Pos))) -#define CKGR_PLLAR_MULA_Pos 16 -#define CKGR_PLLAR_MULA_Msk (0x7ffu << CKGR_PLLAR_MULA_Pos) /**< \brief (CKGR_PLLAR) PLLA Multiplier */ -#define CKGR_PLLAR_MULA(value) ((CKGR_PLLAR_MULA_Msk & ((value) << CKGR_PLLAR_MULA_Pos))) -#define CKGR_PLLAR_ONE (0x1u << 29) /**< \brief (CKGR_PLLAR) Must Be Set to 1 */ -/* -------- PMC_MCKR : (PMC Offset: 0x0030) Master Clock Register -------- */ -#define PMC_MCKR_CSS_Pos 0 -#define PMC_MCKR_CSS_Msk (0x3u << PMC_MCKR_CSS_Pos) /**< \brief (PMC_MCKR) Master Clock Source Selection */ -#define PMC_MCKR_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_MCKR) Slow Clock is selected */ -#define PMC_MCKR_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_MCKR) Main Clock is selected */ -#define PMC_MCKR_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_MCKR) PLLA Clock is selected */ -#define PMC_MCKR_PRES_Pos 4 -#define PMC_MCKR_PRES_Msk (0x7u << PMC_MCKR_PRES_Pos) /**< \brief (PMC_MCKR) Processor Clock Prescaler */ -#define PMC_MCKR_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_MCKR) Selected clock */ -#define PMC_MCKR_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 2 */ -#define PMC_MCKR_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 4 */ -#define PMC_MCKR_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 8 */ -#define PMC_MCKR_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 16 */ -#define PMC_MCKR_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 32 */ -#define PMC_MCKR_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 64 */ -#define PMC_MCKR_PRES_CLK_3 (0x7u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 3 */ -#define PMC_MCKR_PLLADIV2 (0x1u << 12) /**< \brief (PMC_MCKR) PLLA Divisor by 2 */ -/* -------- PMC_USB : (PMC Offset: 0x0038) USB Clock Register -------- */ -#define PMC_USB_USBDIV_Pos 8 -#define PMC_USB_USBDIV_Msk (0xfu << PMC_USB_USBDIV_Pos) /**< \brief (PMC_USB) Divider for USB Clock. */ -#define PMC_USB_USBDIV(value) ((PMC_USB_USBDIV_Msk & ((value) << PMC_USB_USBDIV_Pos))) -/* -------- PMC_PCK[3] : (PMC Offset: 0x0040) Programmable Clock 0 Register -------- */ -#define PMC_PCK_CSS_Pos 0 -#define PMC_PCK_CSS_Msk (0x7u << PMC_PCK_CSS_Pos) /**< \brief (PMC_PCK[3]) Master Clock Source Selection */ -#define PMC_PCK_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_PCK[3]) Slow Clock is selected */ -#define PMC_PCK_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_PCK[3]) Main Clock is selected */ -#define PMC_PCK_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_PCK[3]) PLLA Clock is selected */ -#define PMC_PCK_CSS_MCK (0x4u << 0) /**< \brief (PMC_PCK[3]) Master Clock is selected */ -#define PMC_PCK_PRES_Pos 4 -#define PMC_PCK_PRES_Msk (0x7u << PMC_PCK_PRES_Pos) /**< \brief (PMC_PCK[3]) Programmable Clock Prescaler */ -#define PMC_PCK_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_PCK[3]) Selected clock */ -#define PMC_PCK_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 2 */ -#define PMC_PCK_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 4 */ -#define PMC_PCK_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 8 */ -#define PMC_PCK_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 16 */ -#define PMC_PCK_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 32 */ -#define PMC_PCK_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 64 */ -/* -------- PMC_IER : (PMC Offset: 0x0060) Interrupt Enable Register -------- */ -#define PMC_IER_MOSCXTS (0x1u << 0) /**< \brief (PMC_IER) Main Crystal Oscillator Status Interrupt Enable */ -#define PMC_IER_LOCKA (0x1u << 1) /**< \brief (PMC_IER) PLLA Lock Interrupt Enable */ -#define PMC_IER_MCKRDY (0x1u << 3) /**< \brief (PMC_IER) Master Clock Ready Interrupt Enable */ -#define PMC_IER_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IER) Programmable Clock Ready 0 Interrupt Enable */ -#define PMC_IER_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IER) Programmable Clock Ready 1 Interrupt Enable */ -#define PMC_IER_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IER) Programmable Clock Ready 2 Interrupt Enable */ -#define PMC_IER_MOSCSELS (0x1u << 16) /**< \brief (PMC_IER) Main Oscillator Selection Status Interrupt Enable */ -#define PMC_IER_MOSCRCS (0x1u << 17) /**< \brief (PMC_IER) Main On-Chip RC Status Interrupt Enable */ -#define PMC_IER_CFDEV (0x1u << 18) /**< \brief (PMC_IER) Clock Failure Detector Event Interrupt Enable */ -/* -------- PMC_IDR : (PMC Offset: 0x0064) Interrupt Disable Register -------- */ -#define PMC_IDR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IDR) Main Crystal Oscillator Status Interrupt Disable */ -#define PMC_IDR_LOCKA (0x1u << 1) /**< \brief (PMC_IDR) PLLA Lock Interrupt Disable */ -#define PMC_IDR_MCKRDY (0x1u << 3) /**< \brief (PMC_IDR) Master Clock Ready Interrupt Disable */ -#define PMC_IDR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IDR) Programmable Clock Ready 0 Interrupt Disable */ -#define PMC_IDR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IDR) Programmable Clock Ready 1 Interrupt Disable */ -#define PMC_IDR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IDR) Programmable Clock Ready 2 Interrupt Disable */ -#define PMC_IDR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IDR) Main Oscillator Selection Status Interrupt Disable */ -#define PMC_IDR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IDR) Main On-Chip RC Status Interrupt Disable */ -#define PMC_IDR_CFDEV (0x1u << 18) /**< \brief (PMC_IDR) Clock Failure Detector Event Interrupt Disable */ -/* -------- PMC_SR : (PMC Offset: 0x0068) Status Register -------- */ -#define PMC_SR_MOSCXTS (0x1u << 0) /**< \brief (PMC_SR) Main XTAL Oscillator Status */ -#define PMC_SR_LOCKA (0x1u << 1) /**< \brief (PMC_SR) PLLA Lock Status */ -#define PMC_SR_MCKRDY (0x1u << 3) /**< \brief (PMC_SR) Master Clock Status */ -#define PMC_SR_OSCSELS (0x1u << 7) /**< \brief (PMC_SR) Slow Clock Oscillator Selection */ -#define PMC_SR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_SR) Programmable Clock Ready Status */ -#define PMC_SR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_SR) Programmable Clock Ready Status */ -#define PMC_SR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_SR) Programmable Clock Ready Status */ -#define PMC_SR_MOSCSELS (0x1u << 16) /**< \brief (PMC_SR) Main Oscillator Selection Status */ -#define PMC_SR_MOSCRCS (0x1u << 17) /**< \brief (PMC_SR) Main On-Chip RC Oscillator Status */ -#define PMC_SR_CFDEV (0x1u << 18) /**< \brief (PMC_SR) Clock Failure Detector Event */ -#define PMC_SR_CFDS (0x1u << 19) /**< \brief (PMC_SR) Clock Failure Detector Status */ -#define PMC_SR_FOS (0x1u << 20) /**< \brief (PMC_SR) Clock Failure Detector Fault Output Status */ -/* -------- PMC_IMR : (PMC Offset: 0x006C) Interrupt Mask Register -------- */ -#define PMC_IMR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IMR) Main Crystal Oscillator Status Interrupt Mask */ -#define PMC_IMR_LOCKA (0x1u << 1) /**< \brief (PMC_IMR) PLLA Lock Interrupt Mask */ -#define PMC_IMR_MCKRDY (0x1u << 3) /**< \brief (PMC_IMR) Master Clock Ready Interrupt Mask */ -#define PMC_IMR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IMR) Programmable Clock Ready 0 Interrupt Mask */ -#define PMC_IMR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IMR) Programmable Clock Ready 1 Interrupt Mask */ -#define PMC_IMR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IMR) Programmable Clock Ready 2 Interrupt Mask */ -#define PMC_IMR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IMR) Main Oscillator Selection Status Interrupt Mask */ -#define PMC_IMR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IMR) Main On-Chip RC Status Interrupt Mask */ -#define PMC_IMR_CFDEV (0x1u << 18) /**< \brief (PMC_IMR) Clock Failure Detector Event Interrupt Mask */ -/* -------- PMC_FSMR : (PMC Offset: 0x0070) Fast Start-up Mode Register -------- */ -#define PMC_FSMR_FSTT0 (0x1u << 0) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 0 */ -#define PMC_FSMR_FSTT1 (0x1u << 1) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 1 */ -#define PMC_FSMR_FSTT2 (0x1u << 2) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 2 */ -#define PMC_FSMR_FSTT3 (0x1u << 3) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 3 */ -#define PMC_FSMR_FSTT4 (0x1u << 4) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 4 */ -#define PMC_FSMR_FSTT5 (0x1u << 5) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 5 */ -#define PMC_FSMR_FSTT6 (0x1u << 6) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 6 */ -#define PMC_FSMR_FSTT7 (0x1u << 7) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 7 */ -#define PMC_FSMR_FSTT8 (0x1u << 8) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 8 */ -#define PMC_FSMR_FSTT9 (0x1u << 9) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 9 */ -#define PMC_FSMR_FSTT10 (0x1u << 10) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 10 */ -#define PMC_FSMR_FSTT11 (0x1u << 11) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 11 */ -#define PMC_FSMR_FSTT12 (0x1u << 12) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 12 */ -#define PMC_FSMR_FSTT13 (0x1u << 13) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 13 */ -#define PMC_FSMR_FSTT14 (0x1u << 14) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 14 */ -#define PMC_FSMR_FSTT15 (0x1u << 15) /**< \brief (PMC_FSMR) Fast Start-up Input Enable 15 */ -#define PMC_FSMR_RTTAL (0x1u << 16) /**< \brief (PMC_FSMR) RTT Alarm Enable */ -#define PMC_FSMR_RTCAL (0x1u << 17) /**< \brief (PMC_FSMR) RTC Alarm Enable */ -#define PMC_FSMR_USBAL (0x1u << 18) /**< \brief (PMC_FSMR) USB Alarm Enable */ -#define PMC_FSMR_FLPM_Pos 21 -#define PMC_FSMR_FLPM_Msk (0x3u << PMC_FSMR_FLPM_Pos) /**< \brief (PMC_FSMR) Flash Low Power Mode */ -#define PMC_FSMR_FLPM_FLASH_STANDBY (0x0u << 21) /**< \brief (PMC_FSMR) Flash is in Standby Mode when system enters Wait Mode */ -#define PMC_FSMR_FLPM_FLASH_DEEP_POWERDOWN (0x1u << 21) /**< \brief (PMC_FSMR) Flash is in deep power down mode when system enters Wait Mode */ -#define PMC_FSMR_FLPM_FLASH_IDLE (0x2u << 21) /**< \brief (PMC_FSMR) idle mode */ -/* -------- PMC_FSPR : (PMC Offset: 0x0074) Fast Start-up Polarity Register -------- */ -#define PMC_FSPR_FSTP0 (0x1u << 0) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP1 (0x1u << 1) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP2 (0x1u << 2) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP3 (0x1u << 3) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP4 (0x1u << 4) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP5 (0x1u << 5) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP6 (0x1u << 6) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP7 (0x1u << 7) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP8 (0x1u << 8) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP9 (0x1u << 9) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP10 (0x1u << 10) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP11 (0x1u << 11) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP12 (0x1u << 12) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP13 (0x1u << 13) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP14 (0x1u << 14) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -#define PMC_FSPR_FSTP15 (0x1u << 15) /**< \brief (PMC_FSPR) Fast Start-up Input Polarityx */ -/* -------- PMC_FOCR : (PMC Offset: 0x0078) Fault Output Clear Register -------- */ -#define PMC_FOCR_FOCLR (0x1u << 0) /**< \brief (PMC_FOCR) Fault Output Clear */ -/* -------- PMC_WPMR : (PMC Offset: 0x00E4) Write Protect Mode Register -------- */ -#define PMC_WPMR_WPEN (0x1u << 0) /**< \brief (PMC_WPMR) Write Protect Enable */ -#define PMC_WPMR_WPKEY_Pos 8 -#define PMC_WPMR_WPKEY_Msk (0xffffffu << PMC_WPMR_WPKEY_Pos) /**< \brief (PMC_WPMR) Write Protect KEY */ -#define PMC_WPMR_WPKEY(value) ((PMC_WPMR_WPKEY_Msk & ((value) << PMC_WPMR_WPKEY_Pos))) -/* -------- PMC_WPSR : (PMC Offset: 0x00E8) Write Protect Status Register -------- */ -#define PMC_WPSR_WPVS (0x1u << 0) /**< \brief (PMC_WPSR) Write Protect Violation Status */ -#define PMC_WPSR_WPVSRC_Pos 8 -#define PMC_WPSR_WPVSRC_Msk (0xffffu << PMC_WPSR_WPVSRC_Pos) /**< \brief (PMC_WPSR) Write Protect Violation Source */ -/* -------- PMC_PCER1 : (PMC Offset: 0x0100) Peripheral Clock Enable Register 1 -------- */ -#define PMC_PCER1_PID32 (0x1u << 0) /**< \brief (PMC_PCER1) Peripheral Clock 32 Enable */ -#define PMC_PCER1_PID33 (0x1u << 1) /**< \brief (PMC_PCER1) Peripheral Clock 33 Enable */ -#define PMC_PCER1_PID34 (0x1u << 2) /**< \brief (PMC_PCER1) Peripheral Clock 34 Enable */ -#define PMC_PCER1_PID35 (0x1u << 3) /**< \brief (PMC_PCER1) Peripheral Clock 35 Enable */ -#define PMC_PCER1_PID36 (0x1u << 4) /**< \brief (PMC_PCER1) Peripheral Clock 36 Enable */ -#define PMC_PCER1_PID37 (0x1u << 5) /**< \brief (PMC_PCER1) Peripheral Clock 37 Enable */ -#define PMC_PCER1_PID38 (0x1u << 6) /**< \brief (PMC_PCER1) Peripheral Clock 38 Enable */ -#define PMC_PCER1_PID39 (0x1u << 7) /**< \brief (PMC_PCER1) Peripheral Clock 39 Enable */ -#define PMC_PCER1_PID40 (0x1u << 8) /**< \brief (PMC_PCER1) Peripheral Clock 40 Enable */ -#define PMC_PCER1_PID41 (0x1u << 9) /**< \brief (PMC_PCER1) Peripheral Clock 41 Enable */ -#define PMC_PCER1_PID42 (0x1u << 10) /**< \brief (PMC_PCER1) Peripheral Clock 42 Enable */ -#define PMC_PCER1_PID43 (0x1u << 11) /**< \brief (PMC_PCER1) Peripheral Clock 43 Enable */ -#define PMC_PCER1_PID44 (0x1u << 12) /**< \brief (PMC_PCER1) Peripheral Clock 44 Enable */ -#define PMC_PCER1_PID45 (0x1u << 13) /**< \brief (PMC_PCER1) Peripheral Clock 45 Enable */ -#define PMC_PCER1_PID46 (0x1u << 14) /**< \brief (PMC_PCER1) Peripheral Clock 46 Enable */ -#define PMC_PCER1_PID47 (0x1u << 15) /**< \brief (PMC_PCER1) Peripheral Clock 47 Enable */ -/* -------- PMC_PCDR1 : (PMC Offset: 0x0104) Peripheral Clock Disable Register 1 -------- */ -#define PMC_PCDR1_PID32 (0x1u << 0) /**< \brief (PMC_PCDR1) Peripheral Clock 32 Disable */ -#define PMC_PCDR1_PID33 (0x1u << 1) /**< \brief (PMC_PCDR1) Peripheral Clock 33 Disable */ -#define PMC_PCDR1_PID34 (0x1u << 2) /**< \brief (PMC_PCDR1) Peripheral Clock 34 Disable */ -#define PMC_PCDR1_PID35 (0x1u << 3) /**< \brief (PMC_PCDR1) Peripheral Clock 35 Disable */ -#define PMC_PCDR1_PID36 (0x1u << 4) /**< \brief (PMC_PCDR1) Peripheral Clock 36 Disable */ -#define PMC_PCDR1_PID37 (0x1u << 5) /**< \brief (PMC_PCDR1) Peripheral Clock 37 Disable */ -#define PMC_PCDR1_PID38 (0x1u << 6) /**< \brief (PMC_PCDR1) Peripheral Clock 38 Disable */ -#define PMC_PCDR1_PID39 (0x1u << 7) /**< \brief (PMC_PCDR1) Peripheral Clock 39 Disable */ -#define PMC_PCDR1_PID40 (0x1u << 8) /**< \brief (PMC_PCDR1) Peripheral Clock 40 Disable */ -#define PMC_PCDR1_PID41 (0x1u << 9) /**< \brief (PMC_PCDR1) Peripheral Clock 41 Disable */ -#define PMC_PCDR1_PID42 (0x1u << 10) /**< \brief (PMC_PCDR1) Peripheral Clock 42 Disable */ -#define PMC_PCDR1_PID43 (0x1u << 11) /**< \brief (PMC_PCDR1) Peripheral Clock 43 Disable */ -#define PMC_PCDR1_PID44 (0x1u << 12) /**< \brief (PMC_PCDR1) Peripheral Clock 44 Disable */ -#define PMC_PCDR1_PID45 (0x1u << 13) /**< \brief (PMC_PCDR1) Peripheral Clock 45 Disable */ -#define PMC_PCDR1_PID46 (0x1u << 14) /**< \brief (PMC_PCDR1) Peripheral Clock 46 Disable */ -#define PMC_PCDR1_PID47 (0x1u << 15) /**< \brief (PMC_PCDR1) Peripheral Clock 47 Disable */ -/* -------- PMC_PCSR1 : (PMC Offset: 0x0108) Peripheral Clock Status Register 1 -------- */ -#define PMC_PCSR1_PID32 (0x1u << 0) /**< \brief (PMC_PCSR1) Peripheral Clock 32 Status */ -#define PMC_PCSR1_PID33 (0x1u << 1) /**< \brief (PMC_PCSR1) Peripheral Clock 33 Status */ -#define PMC_PCSR1_PID34 (0x1u << 2) /**< \brief (PMC_PCSR1) Peripheral Clock 34 Status */ -#define PMC_PCSR1_PID35 (0x1u << 3) /**< \brief (PMC_PCSR1) Peripheral Clock 35 Status */ -#define PMC_PCSR1_PID36 (0x1u << 4) /**< \brief (PMC_PCSR1) Peripheral Clock 36 Status */ -#define PMC_PCSR1_PID37 (0x1u << 5) /**< \brief (PMC_PCSR1) Peripheral Clock 37 Status */ -#define PMC_PCSR1_PID38 (0x1u << 6) /**< \brief (PMC_PCSR1) Peripheral Clock 38 Status */ -#define PMC_PCSR1_PID39 (0x1u << 7) /**< \brief (PMC_PCSR1) Peripheral Clock 39 Status */ -#define PMC_PCSR1_PID40 (0x1u << 8) /**< \brief (PMC_PCSR1) Peripheral Clock 40 Status */ -#define PMC_PCSR1_PID41 (0x1u << 9) /**< \brief (PMC_PCSR1) Peripheral Clock 41 Status */ -#define PMC_PCSR1_PID42 (0x1u << 10) /**< \brief (PMC_PCSR1) Peripheral Clock 42 Status */ -#define PMC_PCSR1_PID43 (0x1u << 11) /**< \brief (PMC_PCSR1) Peripheral Clock 43 Status */ -#define PMC_PCSR1_PID44 (0x1u << 12) /**< \brief (PMC_PCSR1) Peripheral Clock 44 Status */ -#define PMC_PCSR1_PID45 (0x1u << 13) /**< \brief (PMC_PCSR1) Peripheral Clock 45 Status */ -#define PMC_PCSR1_PID46 (0x1u << 14) /**< \brief (PMC_PCSR1) Peripheral Clock 46 Status */ -#define PMC_PCSR1_PID47 (0x1u << 15) /**< \brief (PMC_PCSR1) Peripheral Clock 47 Status */ -/* -------- PMC_OCR : (PMC Offset: 0x0110) Oscillator Calibration Register -------- */ -#define PMC_OCR_CAL4_Pos 0 -#define PMC_OCR_CAL4_Msk (0x7fu << PMC_OCR_CAL4_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 4 MHz */ -#define PMC_OCR_CAL4(value) ((PMC_OCR_CAL4_Msk & ((value) << PMC_OCR_CAL4_Pos))) -#define PMC_OCR_SEL4 (0x1u << 7) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 4 MHz */ -#define PMC_OCR_CAL8_Pos 8 -#define PMC_OCR_CAL8_Msk (0x7fu << PMC_OCR_CAL8_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 8 MHz */ -#define PMC_OCR_CAL8(value) ((PMC_OCR_CAL8_Msk & ((value) << PMC_OCR_CAL8_Pos))) -#define PMC_OCR_SEL8 (0x1u << 15) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 8 MHz */ -#define PMC_OCR_CAL12_Pos 16 -#define PMC_OCR_CAL12_Msk (0x7fu << PMC_OCR_CAL12_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 12 MHz */ -#define PMC_OCR_CAL12(value) ((PMC_OCR_CAL12_Msk & ((value) << PMC_OCR_CAL12_Pos))) -#define PMC_OCR_SEL12 (0x1u << 23) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 12 MHz */ - -/*@}*/ - - -#endif /* _SAM4E_PMC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pwm.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pwm.h deleted file mode 100644 index 4a164d403..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/pwm.h +++ /dev/null @@ -1,612 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_PWM_COMPONENT_ -#define _SAM4E_PWM_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Pulse Width Modulation Controller */ -/* ============================================================================= */ -/** \addtogroup SAM4E_PWM Pulse Width Modulation Controller */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief PwmCh_num hardware registers */ -typedef struct { - RwReg PWM_CMR; /**< \brief (PwmCh_num Offset: 0x0) PWM Channel Mode Register */ - RwReg PWM_CDTY; /**< \brief (PwmCh_num Offset: 0x4) PWM Channel Duty Cycle Register */ - RwReg PWM_CDTYUPD; /**< \brief (PwmCh_num Offset: 0x8) PWM Channel Duty Cycle Update Register */ - RwReg PWM_CPRD; /**< \brief (PwmCh_num Offset: 0xC) PWM Channel Period Register */ - RwReg PWM_CPRDUPD; /**< \brief (PwmCh_num Offset: 0x10) PWM Channel Period Update Register */ - RwReg PWM_CCNT; /**< \brief (PwmCh_num Offset: 0x14) PWM Channel Counter Register */ - RwReg PWM_DT; /**< \brief (PwmCh_num Offset: 0x18) PWM Channel Dead Time Register */ - RwReg PWM_DTUPD; /**< \brief (PwmCh_num Offset: 0x1C) PWM Channel Dead Time Update Register */ -} PwmCh_num; -/** \brief PwmCh_num_0x400 hardware registers */ -typedef struct { - RwReg PWM_CMUPD; /**< \brief (PwmCh_num_0x400 Offset: 0x0) PWM Channel Mode Update Register */ - RwReg PWM_CAE; /**< \brief (PwmCh_num_0x400 Offset: 0x4) PWM Channel Additional Edge Register */ - RwReg PWM_CAEUPD; /**< \brief (PwmCh_num_0x400 Offset: 0x8) PWM Channel Additional Edge Update Register */ - RoReg Reserved1[5]; -} PwmCh_num_0x400; -/** \brief PwmCmp hardware registers */ -typedef struct { - RwReg PWM_CMPV; /**< \brief (PwmCmp Offset: 0x0) PWM Comparison 0 Value Register */ - RwReg PWM_CMPVUPD; /**< \brief (PwmCmp Offset: 0x4) PWM Comparison 0 Value Update Register */ - RwReg PWM_CMPM; /**< \brief (PwmCmp Offset: 0x8) PWM Comparison 0 Mode Register */ - RwReg PWM_CMPMUPD; /**< \brief (PwmCmp Offset: 0xC) PWM Comparison 0 Mode Update Register */ -} PwmCmp; -/** \brief Pwm hardware registers */ -#define PWMCMP_NUMBER 8 -#define PWMCH_NUM_NUMBER 4 -#define PWMCH_NUM_0X400_NUMBER 4 -typedef struct { - RwReg PWM_CLK; /**< \brief (Pwm Offset: 0x00) PWM Clock Register */ - WoReg PWM_ENA; /**< \brief (Pwm Offset: 0x04) PWM Enable Register */ - WoReg PWM_DIS; /**< \brief (Pwm Offset: 0x08) PWM Disable Register */ - RoReg PWM_SR; /**< \brief (Pwm Offset: 0x0C) PWM Status Register */ - WoReg PWM_IER1; /**< \brief (Pwm Offset: 0x10) PWM Interrupt Enable Register 1 */ - WoReg PWM_IDR1; /**< \brief (Pwm Offset: 0x14) PWM Interrupt Disable Register 1 */ - RoReg PWM_IMR1; /**< \brief (Pwm Offset: 0x18) PWM Interrupt Mask Register 1 */ - RoReg PWM_ISR1; /**< \brief (Pwm Offset: 0x1C) PWM Interrupt Status Register 1 */ - RwReg PWM_SCM; /**< \brief (Pwm Offset: 0x20) PWM Sync Channels Mode Register */ - RoReg Reserved1[1]; - RwReg PWM_SCUC; /**< \brief (Pwm Offset: 0x28) PWM Sync Channels Update Control Register */ - RwReg PWM_SCUP; /**< \brief (Pwm Offset: 0x2C) PWM Sync Channels Update Period Register */ - WoReg PWM_SCUPUPD; /**< \brief (Pwm Offset: 0x30) PWM Sync Channels Update Period Update Register */ - WoReg PWM_IER2; /**< \brief (Pwm Offset: 0x34) PWM Interrupt Enable Register 2 */ - WoReg PWM_IDR2; /**< \brief (Pwm Offset: 0x38) PWM Interrupt Disable Register 2 */ - RoReg PWM_IMR2; /**< \brief (Pwm Offset: 0x3C) PWM Interrupt Mask Register 2 */ - RoReg PWM_ISR2; /**< \brief (Pwm Offset: 0x40) PWM Interrupt Status Register 2 */ - RwReg PWM_OOV; /**< \brief (Pwm Offset: 0x44) PWM Output Override Value Register */ - RwReg PWM_OS; /**< \brief (Pwm Offset: 0x48) PWM Output Selection Register */ - WoReg PWM_OSS; /**< \brief (Pwm Offset: 0x4C) PWM Output Selection Set Register */ - WoReg PWM_OSC; /**< \brief (Pwm Offset: 0x50) PWM Output Selection Clear Register */ - WoReg PWM_OSSUPD; /**< \brief (Pwm Offset: 0x54) PWM Output Selection Set Update Register */ - WoReg PWM_OSCUPD; /**< \brief (Pwm Offset: 0x58) PWM Output Selection Clear Update Register */ - RwReg PWM_FMR; /**< \brief (Pwm Offset: 0x5C) PWM Fault Mode Register */ - RoReg PWM_FSR; /**< \brief (Pwm Offset: 0x60) PWM Fault Status Register */ - WoReg PWM_FCR; /**< \brief (Pwm Offset: 0x64) PWM Fault Clear Register */ - RwReg PWM_FPV1; /**< \brief (Pwm Offset: 0x68) PWM Fault Protection Value Register 1 */ - RwReg PWM_FPE; /**< \brief (Pwm Offset: 0x6C) PWM Fault Protection Enable Register */ - RoReg Reserved2[3]; - RwReg PWM_ELMR[2]; /**< \brief (Pwm Offset: 0x7C) PWM Event Line 0 Mode Register */ - RoReg Reserved3[7]; - RwReg PWM_SSPR; /**< \brief (Pwm Offset: 0xA0) PWM Spread Spectrum Register */ - WoReg PWM_SSPUP; /**< \brief (Pwm Offset: 0xA4) PWM Spread Spectrum Update Register */ - RoReg Reserved4[2]; - RwReg PWM_SMMR; /**< \brief (Pwm Offset: 0xB0) PWM Stepper Motor Mode Register */ - RoReg Reserved5[3]; - RwReg PWM_FPV2; /**< \brief (Pwm Offset: 0xC0) PWM Fault Protection Value 2 Register */ - RoReg Reserved6[8]; - WoReg PWM_WPCR; /**< \brief (Pwm Offset: 0xE4) PWM Write Protect Control Register */ - RoReg PWM_WPSR; /**< \brief (Pwm Offset: 0xE8) PWM Write Protect Status Register */ - RoReg Reserved7[7]; - RwReg PWM_TPR; /**< \brief (Pwm Offset: 0x108) Transmit Pointer Register */ - RwReg PWM_TCR; /**< \brief (Pwm Offset: 0x10C) Transmit Counter Register */ - RoReg Reserved8[2]; - RwReg PWM_TNPR; /**< \brief (Pwm Offset: 0x118) Transmit Next Pointer Register */ - RwReg PWM_TNCR; /**< \brief (Pwm Offset: 0x11C) Transmit Next Counter Register */ - WoReg PWM_PTCR; /**< \brief (Pwm Offset: 0x120) Transfer Control Register */ - RoReg PWM_PTSR; /**< \brief (Pwm Offset: 0x124) Transfer Status Register */ - RoReg Reserved9[2]; - PwmCmp PWM_CMP[PWMCMP_NUMBER]; /**< \brief (Pwm Offset: 0x130) 0 .. 7 */ - RoReg Reserved10[20]; - PwmCh_num PWM_CH_NUM[PWMCH_NUM_NUMBER]; /**< \brief (Pwm Offset: 0x200) ch_num = 0 .. 3 */ - RoReg Reserved11[96]; - PwmCh_num_0x400 PWM_CH_NUM_0X400[PWMCH_NUM_0X400_NUMBER]; /**< \brief (Pwm Offset: 0x400) ch_num = 0 .. 3 */ -} Pwm; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- PWM_CLK : (PWM Offset: 0x00) PWM Clock Register -------- */ -#define PWM_CLK_DIVA_Pos 0 -#define PWM_CLK_DIVA_Msk (0xffu << PWM_CLK_DIVA_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Divide Factor */ -#define PWM_CLK_DIVA(value) ((PWM_CLK_DIVA_Msk & ((value) << PWM_CLK_DIVA_Pos))) -#define PWM_CLK_PREA_Pos 8 -#define PWM_CLK_PREA_Msk (0xfu << PWM_CLK_PREA_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Source Clock Selection */ -#define PWM_CLK_PREA(value) ((PWM_CLK_PREA_Msk & ((value) << PWM_CLK_PREA_Pos))) -#define PWM_CLK_DIVB_Pos 16 -#define PWM_CLK_DIVB_Msk (0xffu << PWM_CLK_DIVB_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Divide Factor */ -#define PWM_CLK_DIVB(value) ((PWM_CLK_DIVB_Msk & ((value) << PWM_CLK_DIVB_Pos))) -#define PWM_CLK_PREB_Pos 24 -#define PWM_CLK_PREB_Msk (0xfu << PWM_CLK_PREB_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Source Clock Selection */ -#define PWM_CLK_PREB(value) ((PWM_CLK_PREB_Msk & ((value) << PWM_CLK_PREB_Pos))) -/* -------- PWM_ENA : (PWM Offset: 0x04) PWM Enable Register -------- */ -#define PWM_ENA_CHID0 (0x1u << 0) /**< \brief (PWM_ENA) Channel ID */ -#define PWM_ENA_CHID1 (0x1u << 1) /**< \brief (PWM_ENA) Channel ID */ -#define PWM_ENA_CHID2 (0x1u << 2) /**< \brief (PWM_ENA) Channel ID */ -#define PWM_ENA_CHID3 (0x1u << 3) /**< \brief (PWM_ENA) Channel ID */ -/* -------- PWM_DIS : (PWM Offset: 0x08) PWM Disable Register -------- */ -#define PWM_DIS_CHID0 (0x1u << 0) /**< \brief (PWM_DIS) Channel ID */ -#define PWM_DIS_CHID1 (0x1u << 1) /**< \brief (PWM_DIS) Channel ID */ -#define PWM_DIS_CHID2 (0x1u << 2) /**< \brief (PWM_DIS) Channel ID */ -#define PWM_DIS_CHID3 (0x1u << 3) /**< \brief (PWM_DIS) Channel ID */ -/* -------- PWM_SR : (PWM Offset: 0x0C) PWM Status Register -------- */ -#define PWM_SR_CHID0 (0x1u << 0) /**< \brief (PWM_SR) Channel ID */ -#define PWM_SR_CHID1 (0x1u << 1) /**< \brief (PWM_SR) Channel ID */ -#define PWM_SR_CHID2 (0x1u << 2) /**< \brief (PWM_SR) Channel ID */ -#define PWM_SR_CHID3 (0x1u << 3) /**< \brief (PWM_SR) Channel ID */ -/* -------- PWM_IER1 : (PWM Offset: 0x10) PWM Interrupt Enable Register 1 -------- */ -#define PWM_IER1_CHID0 (0x1u << 0) /**< \brief (PWM_IER1) Counter Event on Channel 0 Interrupt Enable */ -#define PWM_IER1_CHID1 (0x1u << 1) /**< \brief (PWM_IER1) Counter Event on Channel 1 Interrupt Enable */ -#define PWM_IER1_CHID2 (0x1u << 2) /**< \brief (PWM_IER1) Counter Event on Channel 2 Interrupt Enable */ -#define PWM_IER1_CHID3 (0x1u << 3) /**< \brief (PWM_IER1) Counter Event on Channel 3 Interrupt Enable */ -#define PWM_IER1_FCHID0 (0x1u << 16) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 0 Interrupt Enable */ -#define PWM_IER1_FCHID1 (0x1u << 17) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 1 Interrupt Enable */ -#define PWM_IER1_FCHID2 (0x1u << 18) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 2 Interrupt Enable */ -#define PWM_IER1_FCHID3 (0x1u << 19) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 3 Interrupt Enable */ -/* -------- PWM_IDR1 : (PWM Offset: 0x14) PWM Interrupt Disable Register 1 -------- */ -#define PWM_IDR1_CHID0 (0x1u << 0) /**< \brief (PWM_IDR1) Counter Event on Channel 0 Interrupt Disable */ -#define PWM_IDR1_CHID1 (0x1u << 1) /**< \brief (PWM_IDR1) Counter Event on Channel 1 Interrupt Disable */ -#define PWM_IDR1_CHID2 (0x1u << 2) /**< \brief (PWM_IDR1) Counter Event on Channel 2 Interrupt Disable */ -#define PWM_IDR1_CHID3 (0x1u << 3) /**< \brief (PWM_IDR1) Counter Event on Channel 3 Interrupt Disable */ -#define PWM_IDR1_FCHID0 (0x1u << 16) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 0 Interrupt Disable */ -#define PWM_IDR1_FCHID1 (0x1u << 17) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 1 Interrupt Disable */ -#define PWM_IDR1_FCHID2 (0x1u << 18) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 2 Interrupt Disable */ -#define PWM_IDR1_FCHID3 (0x1u << 19) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 3 Interrupt Disable */ -/* -------- PWM_IMR1 : (PWM Offset: 0x18) PWM Interrupt Mask Register 1 -------- */ -#define PWM_IMR1_CHID0 (0x1u << 0) /**< \brief (PWM_IMR1) Counter Event on Channel 0 Interrupt Mask */ -#define PWM_IMR1_CHID1 (0x1u << 1) /**< \brief (PWM_IMR1) Counter Event on Channel 1 Interrupt Mask */ -#define PWM_IMR1_CHID2 (0x1u << 2) /**< \brief (PWM_IMR1) Counter Event on Channel 2 Interrupt Mask */ -#define PWM_IMR1_CHID3 (0x1u << 3) /**< \brief (PWM_IMR1) Counter Event on Channel 3 Interrupt Mask */ -#define PWM_IMR1_FCHID0 (0x1u << 16) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 0 Interrupt Mask */ -#define PWM_IMR1_FCHID1 (0x1u << 17) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 1 Interrupt Mask */ -#define PWM_IMR1_FCHID2 (0x1u << 18) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 2 Interrupt Mask */ -#define PWM_IMR1_FCHID3 (0x1u << 19) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 3 Interrupt Mask */ -/* -------- PWM_ISR1 : (PWM Offset: 0x1C) PWM Interrupt Status Register 1 -------- */ -#define PWM_ISR1_CHID0 (0x1u << 0) /**< \brief (PWM_ISR1) Counter Event on Channel 0 */ -#define PWM_ISR1_CHID1 (0x1u << 1) /**< \brief (PWM_ISR1) Counter Event on Channel 1 */ -#define PWM_ISR1_CHID2 (0x1u << 2) /**< \brief (PWM_ISR1) Counter Event on Channel 2 */ -#define PWM_ISR1_CHID3 (0x1u << 3) /**< \brief (PWM_ISR1) Counter Event on Channel 3 */ -#define PWM_ISR1_FCHID0 (0x1u << 16) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 0 */ -#define PWM_ISR1_FCHID1 (0x1u << 17) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 1 */ -#define PWM_ISR1_FCHID2 (0x1u << 18) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 2 */ -#define PWM_ISR1_FCHID3 (0x1u << 19) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 3 */ -/* -------- PWM_SCM : (PWM Offset: 0x20) PWM Sync Channels Mode Register -------- */ -#define PWM_SCM_SYNC0 (0x1u << 0) /**< \brief (PWM_SCM) Synchronous Channel 0 */ -#define PWM_SCM_SYNC1 (0x1u << 1) /**< \brief (PWM_SCM) Synchronous Channel 1 */ -#define PWM_SCM_SYNC2 (0x1u << 2) /**< \brief (PWM_SCM) Synchronous Channel 2 */ -#define PWM_SCM_SYNC3 (0x1u << 3) /**< \brief (PWM_SCM) Synchronous Channel 3 */ -#define PWM_SCM_UPDM_Pos 16 -#define PWM_SCM_UPDM_Msk (0x3u << PWM_SCM_UPDM_Pos) /**< \brief (PWM_SCM) Synchronous Channels Update Mode */ -#define PWM_SCM_UPDM_MODE0 (0x0u << 16) /**< \brief (PWM_SCM) Manual write of double buffer registers and manual update of synchronous channels */ -#define PWM_SCM_UPDM_MODE1 (0x1u << 16) /**< \brief (PWM_SCM) Manual write of double buffer registers and automatic update of synchronous channels */ -#define PWM_SCM_UPDM_MODE2 (0x2u << 16) /**< \brief (PWM_SCM) Automatic write of duty-cycle update registers by the PDC and automatic update of synchronous channels */ -#define PWM_SCM_PTRM (0x1u << 20) /**< \brief (PWM_SCM) PDC Transfer Request Mode */ -#define PWM_SCM_PTRCS_Pos 21 -#define PWM_SCM_PTRCS_Msk (0x7u << PWM_SCM_PTRCS_Pos) /**< \brief (PWM_SCM) PDC Transfer Request Comparison Selection */ -#define PWM_SCM_PTRCS(value) ((PWM_SCM_PTRCS_Msk & ((value) << PWM_SCM_PTRCS_Pos))) -/* -------- PWM_SCUC : (PWM Offset: 0x28) PWM Sync Channels Update Control Register -------- */ -#define PWM_SCUC_UPDULOCK (0x1u << 0) /**< \brief (PWM_SCUC) Synchronous Channels Update Unlock */ -/* -------- PWM_SCUP : (PWM Offset: 0x2C) PWM Sync Channels Update Period Register -------- */ -#define PWM_SCUP_UPR_Pos 0 -#define PWM_SCUP_UPR_Msk (0xfu << PWM_SCUP_UPR_Pos) /**< \brief (PWM_SCUP) Update Period */ -#define PWM_SCUP_UPR(value) ((PWM_SCUP_UPR_Msk & ((value) << PWM_SCUP_UPR_Pos))) -#define PWM_SCUP_UPRCNT_Pos 4 -#define PWM_SCUP_UPRCNT_Msk (0xfu << PWM_SCUP_UPRCNT_Pos) /**< \brief (PWM_SCUP) Update Period Counter */ -#define PWM_SCUP_UPRCNT(value) ((PWM_SCUP_UPRCNT_Msk & ((value) << PWM_SCUP_UPRCNT_Pos))) -/* -------- PWM_SCUPUPD : (PWM Offset: 0x30) PWM Sync Channels Update Period Update Register -------- */ -#define PWM_SCUPUPD_UPRUPD_Pos 0 -#define PWM_SCUPUPD_UPRUPD_Msk (0xfu << PWM_SCUPUPD_UPRUPD_Pos) /**< \brief (PWM_SCUPUPD) Update Period Update */ -#define PWM_SCUPUPD_UPRUPD(value) ((PWM_SCUPUPD_UPRUPD_Msk & ((value) << PWM_SCUPUPD_UPRUPD_Pos))) -/* -------- PWM_IER2 : (PWM Offset: 0x34) PWM Interrupt Enable Register 2 -------- */ -#define PWM_IER2_WRDY (0x1u << 0) /**< \brief (PWM_IER2) Write Ready for Synchronous Channels Update Interrupt Enable */ -#define PWM_IER2_ENDTX (0x1u << 1) /**< \brief (PWM_IER2) PDC End of TX Buffer Interrupt Enable */ -#define PWM_IER2_TXBUFE (0x1u << 2) /**< \brief (PWM_IER2) PDC TX Buffer Empty Interrupt Enable */ -#define PWM_IER2_UNRE (0x1u << 3) /**< \brief (PWM_IER2) Synchronous Channels Update Underrun Error Interrupt Enable */ -#define PWM_IER2_CMPM0 (0x1u << 8) /**< \brief (PWM_IER2) Comparison 0 Match Interrupt Enable */ -#define PWM_IER2_CMPM1 (0x1u << 9) /**< \brief (PWM_IER2) Comparison 1 Match Interrupt Enable */ -#define PWM_IER2_CMPM2 (0x1u << 10) /**< \brief (PWM_IER2) Comparison 2 Match Interrupt Enable */ -#define PWM_IER2_CMPM3 (0x1u << 11) /**< \brief (PWM_IER2) Comparison 3 Match Interrupt Enable */ -#define PWM_IER2_CMPM4 (0x1u << 12) /**< \brief (PWM_IER2) Comparison 4 Match Interrupt Enable */ -#define PWM_IER2_CMPM5 (0x1u << 13) /**< \brief (PWM_IER2) Comparison 5 Match Interrupt Enable */ -#define PWM_IER2_CMPM6 (0x1u << 14) /**< \brief (PWM_IER2) Comparison 6 Match Interrupt Enable */ -#define PWM_IER2_CMPM7 (0x1u << 15) /**< \brief (PWM_IER2) Comparison 7 Match Interrupt Enable */ -#define PWM_IER2_CMPU0 (0x1u << 16) /**< \brief (PWM_IER2) Comparison 0 Update Interrupt Enable */ -#define PWM_IER2_CMPU1 (0x1u << 17) /**< \brief (PWM_IER2) Comparison 1 Update Interrupt Enable */ -#define PWM_IER2_CMPU2 (0x1u << 18) /**< \brief (PWM_IER2) Comparison 2 Update Interrupt Enable */ -#define PWM_IER2_CMPU3 (0x1u << 19) /**< \brief (PWM_IER2) Comparison 3 Update Interrupt Enable */ -#define PWM_IER2_CMPU4 (0x1u << 20) /**< \brief (PWM_IER2) Comparison 4 Update Interrupt Enable */ -#define PWM_IER2_CMPU5 (0x1u << 21) /**< \brief (PWM_IER2) Comparison 5 Update Interrupt Enable */ -#define PWM_IER2_CMPU6 (0x1u << 22) /**< \brief (PWM_IER2) Comparison 6 Update Interrupt Enable */ -#define PWM_IER2_CMPU7 (0x1u << 23) /**< \brief (PWM_IER2) Comparison 7 Update Interrupt Enable */ -/* -------- PWM_IDR2 : (PWM Offset: 0x38) PWM Interrupt Disable Register 2 -------- */ -#define PWM_IDR2_WRDY (0x1u << 0) /**< \brief (PWM_IDR2) Write Ready for Synchronous Channels Update Interrupt Disable */ -#define PWM_IDR2_ENDTX (0x1u << 1) /**< \brief (PWM_IDR2) PDC End of TX Buffer Interrupt Disable */ -#define PWM_IDR2_TXBUFE (0x1u << 2) /**< \brief (PWM_IDR2) PDC TX Buffer Empty Interrupt Disable */ -#define PWM_IDR2_UNRE (0x1u << 3) /**< \brief (PWM_IDR2) Synchronous Channels Update Underrun Error Interrupt Disable */ -#define PWM_IDR2_CMPM0 (0x1u << 8) /**< \brief (PWM_IDR2) Comparison 0 Match Interrupt Disable */ -#define PWM_IDR2_CMPM1 (0x1u << 9) /**< \brief (PWM_IDR2) Comparison 1 Match Interrupt Disable */ -#define PWM_IDR2_CMPM2 (0x1u << 10) /**< \brief (PWM_IDR2) Comparison 2 Match Interrupt Disable */ -#define PWM_IDR2_CMPM3 (0x1u << 11) /**< \brief (PWM_IDR2) Comparison 3 Match Interrupt Disable */ -#define PWM_IDR2_CMPM4 (0x1u << 12) /**< \brief (PWM_IDR2) Comparison 4 Match Interrupt Disable */ -#define PWM_IDR2_CMPM5 (0x1u << 13) /**< \brief (PWM_IDR2) Comparison 5 Match Interrupt Disable */ -#define PWM_IDR2_CMPM6 (0x1u << 14) /**< \brief (PWM_IDR2) Comparison 6 Match Interrupt Disable */ -#define PWM_IDR2_CMPM7 (0x1u << 15) /**< \brief (PWM_IDR2) Comparison 7 Match Interrupt Disable */ -#define PWM_IDR2_CMPU0 (0x1u << 16) /**< \brief (PWM_IDR2) Comparison 0 Update Interrupt Disable */ -#define PWM_IDR2_CMPU1 (0x1u << 17) /**< \brief (PWM_IDR2) Comparison 1 Update Interrupt Disable */ -#define PWM_IDR2_CMPU2 (0x1u << 18) /**< \brief (PWM_IDR2) Comparison 2 Update Interrupt Disable */ -#define PWM_IDR2_CMPU3 (0x1u << 19) /**< \brief (PWM_IDR2) Comparison 3 Update Interrupt Disable */ -#define PWM_IDR2_CMPU4 (0x1u << 20) /**< \brief (PWM_IDR2) Comparison 4 Update Interrupt Disable */ -#define PWM_IDR2_CMPU5 (0x1u << 21) /**< \brief (PWM_IDR2) Comparison 5 Update Interrupt Disable */ -#define PWM_IDR2_CMPU6 (0x1u << 22) /**< \brief (PWM_IDR2) Comparison 6 Update Interrupt Disable */ -#define PWM_IDR2_CMPU7 (0x1u << 23) /**< \brief (PWM_IDR2) Comparison 7 Update Interrupt Disable */ -/* -------- PWM_IMR2 : (PWM Offset: 0x3C) PWM Interrupt Mask Register 2 -------- */ -#define PWM_IMR2_WRDY (0x1u << 0) /**< \brief (PWM_IMR2) Write Ready for Synchronous Channels Update Interrupt Mask */ -#define PWM_IMR2_ENDTX (0x1u << 1) /**< \brief (PWM_IMR2) PDC End of TX Buffer Interrupt Mask */ -#define PWM_IMR2_TXBUFE (0x1u << 2) /**< \brief (PWM_IMR2) PDC TX Buffer Empty Interrupt Mask */ -#define PWM_IMR2_UNRE (0x1u << 3) /**< \brief (PWM_IMR2) Synchronous Channels Update Underrun Error Interrupt Mask */ -#define PWM_IMR2_CMPM0 (0x1u << 8) /**< \brief (PWM_IMR2) Comparison 0 Match Interrupt Mask */ -#define PWM_IMR2_CMPM1 (0x1u << 9) /**< \brief (PWM_IMR2) Comparison 1 Match Interrupt Mask */ -#define PWM_IMR2_CMPM2 (0x1u << 10) /**< \brief (PWM_IMR2) Comparison 2 Match Interrupt Mask */ -#define PWM_IMR2_CMPM3 (0x1u << 11) /**< \brief (PWM_IMR2) Comparison 3 Match Interrupt Mask */ -#define PWM_IMR2_CMPM4 (0x1u << 12) /**< \brief (PWM_IMR2) Comparison 4 Match Interrupt Mask */ -#define PWM_IMR2_CMPM5 (0x1u << 13) /**< \brief (PWM_IMR2) Comparison 5 Match Interrupt Mask */ -#define PWM_IMR2_CMPM6 (0x1u << 14) /**< \brief (PWM_IMR2) Comparison 6 Match Interrupt Mask */ -#define PWM_IMR2_CMPM7 (0x1u << 15) /**< \brief (PWM_IMR2) Comparison 7 Match Interrupt Mask */ -#define PWM_IMR2_CMPU0 (0x1u << 16) /**< \brief (PWM_IMR2) Comparison 0 Update Interrupt Mask */ -#define PWM_IMR2_CMPU1 (0x1u << 17) /**< \brief (PWM_IMR2) Comparison 1 Update Interrupt Mask */ -#define PWM_IMR2_CMPU2 (0x1u << 18) /**< \brief (PWM_IMR2) Comparison 2 Update Interrupt Mask */ -#define PWM_IMR2_CMPU3 (0x1u << 19) /**< \brief (PWM_IMR2) Comparison 3 Update Interrupt Mask */ -#define PWM_IMR2_CMPU4 (0x1u << 20) /**< \brief (PWM_IMR2) Comparison 4 Update Interrupt Mask */ -#define PWM_IMR2_CMPU5 (0x1u << 21) /**< \brief (PWM_IMR2) Comparison 5 Update Interrupt Mask */ -#define PWM_IMR2_CMPU6 (0x1u << 22) /**< \brief (PWM_IMR2) Comparison 6 Update Interrupt Mask */ -#define PWM_IMR2_CMPU7 (0x1u << 23) /**< \brief (PWM_IMR2) Comparison 7 Update Interrupt Mask */ -/* -------- PWM_ISR2 : (PWM Offset: 0x40) PWM Interrupt Status Register 2 -------- */ -#define PWM_ISR2_WRDY (0x1u << 0) /**< \brief (PWM_ISR2) Write Ready for Synchronous Channels Update */ -#define PWM_ISR2_ENDTX (0x1u << 1) /**< \brief (PWM_ISR2) PDC End of TX Buffer */ -#define PWM_ISR2_TXBUFE (0x1u << 2) /**< \brief (PWM_ISR2) PDC TX Buffer Empty */ -#define PWM_ISR2_UNRE (0x1u << 3) /**< \brief (PWM_ISR2) Synchronous Channels Update Underrun Error */ -#define PWM_ISR2_CMPM0 (0x1u << 8) /**< \brief (PWM_ISR2) Comparison 0 Match */ -#define PWM_ISR2_CMPM1 (0x1u << 9) /**< \brief (PWM_ISR2) Comparison 1 Match */ -#define PWM_ISR2_CMPM2 (0x1u << 10) /**< \brief (PWM_ISR2) Comparison 2 Match */ -#define PWM_ISR2_CMPM3 (0x1u << 11) /**< \brief (PWM_ISR2) Comparison 3 Match */ -#define PWM_ISR2_CMPM4 (0x1u << 12) /**< \brief (PWM_ISR2) Comparison 4 Match */ -#define PWM_ISR2_CMPM5 (0x1u << 13) /**< \brief (PWM_ISR2) Comparison 5 Match */ -#define PWM_ISR2_CMPM6 (0x1u << 14) /**< \brief (PWM_ISR2) Comparison 6 Match */ -#define PWM_ISR2_CMPM7 (0x1u << 15) /**< \brief (PWM_ISR2) Comparison 7 Match */ -#define PWM_ISR2_CMPU0 (0x1u << 16) /**< \brief (PWM_ISR2) Comparison 0 Update */ -#define PWM_ISR2_CMPU1 (0x1u << 17) /**< \brief (PWM_ISR2) Comparison 1 Update */ -#define PWM_ISR2_CMPU2 (0x1u << 18) /**< \brief (PWM_ISR2) Comparison 2 Update */ -#define PWM_ISR2_CMPU3 (0x1u << 19) /**< \brief (PWM_ISR2) Comparison 3 Update */ -#define PWM_ISR2_CMPU4 (0x1u << 20) /**< \brief (PWM_ISR2) Comparison 4 Update */ -#define PWM_ISR2_CMPU5 (0x1u << 21) /**< \brief (PWM_ISR2) Comparison 5 Update */ -#define PWM_ISR2_CMPU6 (0x1u << 22) /**< \brief (PWM_ISR2) Comparison 6 Update */ -#define PWM_ISR2_CMPU7 (0x1u << 23) /**< \brief (PWM_ISR2) Comparison 7 Update */ -/* -------- PWM_OOV : (PWM Offset: 0x44) PWM Output Override Value Register -------- */ -#define PWM_OOV_OOVH0 (0x1u << 0) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 0 */ -#define PWM_OOV_OOVH1 (0x1u << 1) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 1 */ -#define PWM_OOV_OOVH2 (0x1u << 2) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 2 */ -#define PWM_OOV_OOVH3 (0x1u << 3) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 3 */ -#define PWM_OOV_OOVL0 (0x1u << 16) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 0 */ -#define PWM_OOV_OOVL1 (0x1u << 17) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 1 */ -#define PWM_OOV_OOVL2 (0x1u << 18) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 2 */ -#define PWM_OOV_OOVL3 (0x1u << 19) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 3 */ -/* -------- PWM_OS : (PWM Offset: 0x48) PWM Output Selection Register -------- */ -#define PWM_OS_OSH0 (0x1u << 0) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 0 */ -#define PWM_OS_OSH1 (0x1u << 1) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 1 */ -#define PWM_OS_OSH2 (0x1u << 2) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 2 */ -#define PWM_OS_OSH3 (0x1u << 3) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 3 */ -#define PWM_OS_OSL0 (0x1u << 16) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 0 */ -#define PWM_OS_OSL1 (0x1u << 17) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 1 */ -#define PWM_OS_OSL2 (0x1u << 18) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 2 */ -#define PWM_OS_OSL3 (0x1u << 19) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 3 */ -/* -------- PWM_OSS : (PWM Offset: 0x4C) PWM Output Selection Set Register -------- */ -#define PWM_OSS_OSSH0 (0x1u << 0) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 0 */ -#define PWM_OSS_OSSH1 (0x1u << 1) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 1 */ -#define PWM_OSS_OSSH2 (0x1u << 2) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 2 */ -#define PWM_OSS_OSSH3 (0x1u << 3) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 3 */ -#define PWM_OSS_OSSL0 (0x1u << 16) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 0 */ -#define PWM_OSS_OSSL1 (0x1u << 17) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 1 */ -#define PWM_OSS_OSSL2 (0x1u << 18) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 2 */ -#define PWM_OSS_OSSL3 (0x1u << 19) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 3 */ -/* -------- PWM_OSC : (PWM Offset: 0x50) PWM Output Selection Clear Register -------- */ -#define PWM_OSC_OSCH0 (0x1u << 0) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 0 */ -#define PWM_OSC_OSCH1 (0x1u << 1) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 1 */ -#define PWM_OSC_OSCH2 (0x1u << 2) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 2 */ -#define PWM_OSC_OSCH3 (0x1u << 3) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 3 */ -#define PWM_OSC_OSCL0 (0x1u << 16) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 0 */ -#define PWM_OSC_OSCL1 (0x1u << 17) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 1 */ -#define PWM_OSC_OSCL2 (0x1u << 18) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 2 */ -#define PWM_OSC_OSCL3 (0x1u << 19) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 3 */ -/* -------- PWM_OSSUPD : (PWM Offset: 0x54) PWM Output Selection Set Update Register -------- */ -#define PWM_OSSUPD_OSSUPH0 (0x1u << 0) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 0 */ -#define PWM_OSSUPD_OSSUPH1 (0x1u << 1) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 1 */ -#define PWM_OSSUPD_OSSUPH2 (0x1u << 2) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 2 */ -#define PWM_OSSUPD_OSSUPH3 (0x1u << 3) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 3 */ -#define PWM_OSSUPD_OSSUPL0 (0x1u << 16) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 0 */ -#define PWM_OSSUPD_OSSUPL1 (0x1u << 17) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 1 */ -#define PWM_OSSUPD_OSSUPL2 (0x1u << 18) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 2 */ -#define PWM_OSSUPD_OSSUPL3 (0x1u << 19) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 3 */ -/* -------- PWM_OSCUPD : (PWM Offset: 0x58) PWM Output Selection Clear Update Register -------- */ -#define PWM_OSCUPD_OSCUPH0 (0x1u << 0) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 0 */ -#define PWM_OSCUPD_OSCUPH1 (0x1u << 1) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 1 */ -#define PWM_OSCUPD_OSCUPH2 (0x1u << 2) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 2 */ -#define PWM_OSCUPD_OSCUPH3 (0x1u << 3) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 3 */ -#define PWM_OSCUPD_OSCUPL0 (0x1u << 16) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 0 */ -#define PWM_OSCUPD_OSCUPL1 (0x1u << 17) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 1 */ -#define PWM_OSCUPD_OSCUPL2 (0x1u << 18) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 2 */ -#define PWM_OSCUPD_OSCUPL3 (0x1u << 19) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 3 */ -/* -------- PWM_FMR : (PWM Offset: 0x5C) PWM Fault Mode Register -------- */ -#define PWM_FMR_FPOL_Pos 0 -#define PWM_FMR_FPOL_Msk (0xffu << PWM_FMR_FPOL_Pos) /**< \brief (PWM_FMR) Fault Polarity (fault input bit varies from 0 to 7) */ -#define PWM_FMR_FPOL(value) ((PWM_FMR_FPOL_Msk & ((value) << PWM_FMR_FPOL_Pos))) -#define PWM_FMR_FMOD_Pos 8 -#define PWM_FMR_FMOD_Msk (0xffu << PWM_FMR_FMOD_Pos) /**< \brief (PWM_FMR) Fault Activation Mode (fault input bit varies from 0 to 7) */ -#define PWM_FMR_FMOD(value) ((PWM_FMR_FMOD_Msk & ((value) << PWM_FMR_FMOD_Pos))) -#define PWM_FMR_FFIL_Pos 16 -#define PWM_FMR_FFIL_Msk (0xffu << PWM_FMR_FFIL_Pos) /**< \brief (PWM_FMR) Fault Filtering (fault input bit varies from 0 to 7) */ -#define PWM_FMR_FFIL(value) ((PWM_FMR_FFIL_Msk & ((value) << PWM_FMR_FFIL_Pos))) -/* -------- PWM_FSR : (PWM Offset: 0x60) PWM Fault Status Register -------- */ -#define PWM_FSR_FIV_Pos 0 -#define PWM_FSR_FIV_Msk (0xffu << PWM_FSR_FIV_Pos) /**< \brief (PWM_FSR) Fault Input Value (fault input bit varies from 0 to 7) */ -#define PWM_FSR_FS_Pos 8 -#define PWM_FSR_FS_Msk (0xffu << PWM_FSR_FS_Pos) /**< \brief (PWM_FSR) Fault Status (fault input bit varies from 0 to 7) */ -/* -------- PWM_FCR : (PWM Offset: 0x64) PWM Fault Clear Register -------- */ -#define PWM_FCR_FCLR_Pos 0 -#define PWM_FCR_FCLR_Msk (0xffu << PWM_FCR_FCLR_Pos) /**< \brief (PWM_FCR) Fault Clear (fault input bit varies from 0 to 7) */ -#define PWM_FCR_FCLR(value) ((PWM_FCR_FCLR_Msk & ((value) << PWM_FCR_FCLR_Pos))) -/* -------- PWM_FPV1 : (PWM Offset: 0x68) PWM Fault Protection Value Register 1 -------- */ -#define PWM_FPV1_FPVH0 (0x1u << 0) /**< \brief (PWM_FPV1) Fault Protection Value for PWMH output on channel 0 */ -#define PWM_FPV1_FPVH1 (0x1u << 1) /**< \brief (PWM_FPV1) Fault Protection Value for PWMH output on channel 1 */ -#define PWM_FPV1_FPVH2 (0x1u << 2) /**< \brief (PWM_FPV1) Fault Protection Value for PWMH output on channel 2 */ -#define PWM_FPV1_FPVH3 (0x1u << 3) /**< \brief (PWM_FPV1) Fault Protection Value for PWMH output on channel 3 */ -#define PWM_FPV1_FPVL0 (0x1u << 16) /**< \brief (PWM_FPV1) Fault Protection Value for PWML output on channel 0 */ -#define PWM_FPV1_FPVL1 (0x1u << 17) /**< \brief (PWM_FPV1) Fault Protection Value for PWML output on channel 1 */ -#define PWM_FPV1_FPVL2 (0x1u << 18) /**< \brief (PWM_FPV1) Fault Protection Value for PWML output on channel 2 */ -#define PWM_FPV1_FPVL3 (0x1u << 19) /**< \brief (PWM_FPV1) Fault Protection Value for PWML output on channel 3 */ -/* -------- PWM_FPE : (PWM Offset: 0x6C) PWM Fault Protection Enable Register -------- */ -#define PWM_FPE_FPE0_Pos 0 -#define PWM_FPE_FPE0_Msk (0xffu << PWM_FPE_FPE0_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 0 (fault input bit varies from 0 to 7) */ -#define PWM_FPE_FPE0(value) ((PWM_FPE_FPE0_Msk & ((value) << PWM_FPE_FPE0_Pos))) -#define PWM_FPE_FPE1_Pos 8 -#define PWM_FPE_FPE1_Msk (0xffu << PWM_FPE_FPE1_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 1 (fault input bit varies from 0 to 7) */ -#define PWM_FPE_FPE1(value) ((PWM_FPE_FPE1_Msk & ((value) << PWM_FPE_FPE1_Pos))) -#define PWM_FPE_FPE2_Pos 16 -#define PWM_FPE_FPE2_Msk (0xffu << PWM_FPE_FPE2_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 2 (fault input bit varies from 0 to 7) */ -#define PWM_FPE_FPE2(value) ((PWM_FPE_FPE2_Msk & ((value) << PWM_FPE_FPE2_Pos))) -#define PWM_FPE_FPE3_Pos 24 -#define PWM_FPE_FPE3_Msk (0xffu << PWM_FPE_FPE3_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 3 (fault input bit varies from 0 to 7) */ -#define PWM_FPE_FPE3(value) ((PWM_FPE_FPE3_Msk & ((value) << PWM_FPE_FPE3_Pos))) -/* -------- PWM_ELMR[2] : (PWM Offset: 0x7C) PWM Event Line 0 Mode Register -------- */ -#define PWM_ELMR_CSEL0 (0x1u << 0) /**< \brief (PWM_ELMR[2]) Comparison 0 Selection */ -#define PWM_ELMR_CSEL1 (0x1u << 1) /**< \brief (PWM_ELMR[2]) Comparison 1 Selection */ -#define PWM_ELMR_CSEL2 (0x1u << 2) /**< \brief (PWM_ELMR[2]) Comparison 2 Selection */ -#define PWM_ELMR_CSEL3 (0x1u << 3) /**< \brief (PWM_ELMR[2]) Comparison 3 Selection */ -#define PWM_ELMR_CSEL4 (0x1u << 4) /**< \brief (PWM_ELMR[2]) Comparison 4 Selection */ -#define PWM_ELMR_CSEL5 (0x1u << 5) /**< \brief (PWM_ELMR[2]) Comparison 5 Selection */ -#define PWM_ELMR_CSEL6 (0x1u << 6) /**< \brief (PWM_ELMR[2]) Comparison 6 Selection */ -#define PWM_ELMR_CSEL7 (0x1u << 7) /**< \brief (PWM_ELMR[2]) Comparison 7 Selection */ -/* -------- PWM_SSPR : (PWM Offset: 0xA0) PWM Spread Spectrum Register -------- */ -#define PWM_SSPR_SPRD_Pos 0 -#define PWM_SSPR_SPRD_Msk (0xffffffu << PWM_SSPR_SPRD_Pos) /**< \brief (PWM_SSPR) Spread Spectrum Limit Value */ -#define PWM_SSPR_SPRD(value) ((PWM_SSPR_SPRD_Msk & ((value) << PWM_SSPR_SPRD_Pos))) -#define PWM_SSPR_SPRDM (0x1u << 24) /**< \brief (PWM_SSPR) Spread Spectrum Counter Mode */ -/* -------- PWM_SSPUP : (PWM Offset: 0xA4) PWM Spread Spectrum Update Register -------- */ -#define PWM_SSPUP_SPRDUP_Pos 0 -#define PWM_SSPUP_SPRDUP_Msk (0xffffffu << PWM_SSPUP_SPRDUP_Pos) /**< \brief (PWM_SSPUP) Spread Spectrum Limit Value Update */ -#define PWM_SSPUP_SPRDUP(value) ((PWM_SSPUP_SPRDUP_Msk & ((value) << PWM_SSPUP_SPRDUP_Pos))) -/* -------- PWM_SMMR : (PWM Offset: 0xB0) PWM Stepper Motor Mode Register -------- */ -#define PWM_SMMR_GCEN0 (0x1u << 0) /**< \brief (PWM_SMMR) Gray Count ENable */ -#define PWM_SMMR_GCEN1 (0x1u << 1) /**< \brief (PWM_SMMR) Gray Count ENable */ -#define PWM_SMMR_DOWN0 (0x1u << 16) /**< \brief (PWM_SMMR) DOWN Count */ -#define PWM_SMMR_DOWN1 (0x1u << 17) /**< \brief (PWM_SMMR) DOWN Count */ -/* -------- PWM_FPV2 : (PWM Offset: 0xC0) PWM Fault Protection Value 2 Register -------- */ -#define PWM_FPV2_FPZH0 (0x1u << 0) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWMH output on channel 0 */ -#define PWM_FPV2_FPZH1 (0x1u << 1) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWMH output on channel 1 */ -#define PWM_FPV2_FPZH2 (0x1u << 2) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWMH output on channel 2 */ -#define PWM_FPV2_FPZH3 (0x1u << 3) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWMH output on channel 3 */ -#define PWM_FPV2_FPZL0 (0x1u << 16) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWML output on channel 0 */ -#define PWM_FPV2_FPZL1 (0x1u << 17) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWML output on channel 1 */ -#define PWM_FPV2_FPZL2 (0x1u << 18) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWML output on channel 2 */ -#define PWM_FPV2_FPZL3 (0x1u << 19) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWML output on channel 3 */ -/* -------- PWM_WPCR : (PWM Offset: 0xE4) PWM Write Protect Control Register -------- */ -#define PWM_WPCR_WPCMD_Pos 0 -#define PWM_WPCR_WPCMD_Msk (0x3u << PWM_WPCR_WPCMD_Pos) /**< \brief (PWM_WPCR) Write Protect Command */ -#define PWM_WPCR_WPCMD(value) ((PWM_WPCR_WPCMD_Msk & ((value) << PWM_WPCR_WPCMD_Pos))) -#define PWM_WPCR_WPRG0 (0x1u << 2) /**< \brief (PWM_WPCR) Write Protect Register Group 0 */ -#define PWM_WPCR_WPRG1 (0x1u << 3) /**< \brief (PWM_WPCR) Write Protect Register Group 1 */ -#define PWM_WPCR_WPRG2 (0x1u << 4) /**< \brief (PWM_WPCR) Write Protect Register Group 2 */ -#define PWM_WPCR_WPRG3 (0x1u << 5) /**< \brief (PWM_WPCR) Write Protect Register Group 3 */ -#define PWM_WPCR_WPRG4 (0x1u << 6) /**< \brief (PWM_WPCR) Write Protect Register Group 4 */ -#define PWM_WPCR_WPRG5 (0x1u << 7) /**< \brief (PWM_WPCR) Write Protect Register Group 5 */ -#define PWM_WPCR_WPKEY_Pos 8 -#define PWM_WPCR_WPKEY_Msk (0xffffffu << PWM_WPCR_WPKEY_Pos) /**< \brief (PWM_WPCR) Write Protect Key */ -#define PWM_WPCR_WPKEY(value) ((PWM_WPCR_WPKEY_Msk & ((value) << PWM_WPCR_WPKEY_Pos))) -/* -------- PWM_WPSR : (PWM Offset: 0xE8) PWM Write Protect Status Register -------- */ -#define PWM_WPSR_WPSWS0 (0x1u << 0) /**< \brief (PWM_WPSR) Write Protect SW Status */ -#define PWM_WPSR_WPSWS1 (0x1u << 1) /**< \brief (PWM_WPSR) Write Protect SW Status */ -#define PWM_WPSR_WPSWS2 (0x1u << 2) /**< \brief (PWM_WPSR) Write Protect SW Status */ -#define PWM_WPSR_WPSWS3 (0x1u << 3) /**< \brief (PWM_WPSR) Write Protect SW Status */ -#define PWM_WPSR_WPSWS4 (0x1u << 4) /**< \brief (PWM_WPSR) Write Protect SW Status */ -#define PWM_WPSR_WPSWS5 (0x1u << 5) /**< \brief (PWM_WPSR) Write Protect SW Status */ -#define PWM_WPSR_WPVS (0x1u << 7) /**< \brief (PWM_WPSR) Write Protect Violation Status */ -#define PWM_WPSR_WPHWS0 (0x1u << 8) /**< \brief (PWM_WPSR) Write Protect HW Status */ -#define PWM_WPSR_WPHWS1 (0x1u << 9) /**< \brief (PWM_WPSR) Write Protect HW Status */ -#define PWM_WPSR_WPHWS2 (0x1u << 10) /**< \brief (PWM_WPSR) Write Protect HW Status */ -#define PWM_WPSR_WPHWS3 (0x1u << 11) /**< \brief (PWM_WPSR) Write Protect HW Status */ -#define PWM_WPSR_WPHWS4 (0x1u << 12) /**< \brief (PWM_WPSR) Write Protect HW Status */ -#define PWM_WPSR_WPHWS5 (0x1u << 13) /**< \brief (PWM_WPSR) Write Protect HW Status */ -#define PWM_WPSR_WPVSRC_Pos 16 -#define PWM_WPSR_WPVSRC_Msk (0xffffu << PWM_WPSR_WPVSRC_Pos) /**< \brief (PWM_WPSR) Write Protect Violation Source */ -/* -------- PWM_TPR : (PWM Offset: 0x108) Transmit Pointer Register -------- */ -#define PWM_TPR_TXPTR_Pos 0 -#define PWM_TPR_TXPTR_Msk (0xffffffffu << PWM_TPR_TXPTR_Pos) /**< \brief (PWM_TPR) Transmit Counter Register */ -#define PWM_TPR_TXPTR(value) ((PWM_TPR_TXPTR_Msk & ((value) << PWM_TPR_TXPTR_Pos))) -/* -------- PWM_TCR : (PWM Offset: 0x10C) Transmit Counter Register -------- */ -#define PWM_TCR_TXCTR_Pos 0 -#define PWM_TCR_TXCTR_Msk (0xffffu << PWM_TCR_TXCTR_Pos) /**< \brief (PWM_TCR) Transmit Counter Register */ -#define PWM_TCR_TXCTR(value) ((PWM_TCR_TXCTR_Msk & ((value) << PWM_TCR_TXCTR_Pos))) -/* -------- PWM_TNPR : (PWM Offset: 0x118) Transmit Next Pointer Register -------- */ -#define PWM_TNPR_TXNPTR_Pos 0 -#define PWM_TNPR_TXNPTR_Msk (0xffffffffu << PWM_TNPR_TXNPTR_Pos) /**< \brief (PWM_TNPR) Transmit Next Pointer */ -#define PWM_TNPR_TXNPTR(value) ((PWM_TNPR_TXNPTR_Msk & ((value) << PWM_TNPR_TXNPTR_Pos))) -/* -------- PWM_TNCR : (PWM Offset: 0x11C) Transmit Next Counter Register -------- */ -#define PWM_TNCR_TXNCTR_Pos 0 -#define PWM_TNCR_TXNCTR_Msk (0xffffu << PWM_TNCR_TXNCTR_Pos) /**< \brief (PWM_TNCR) Transmit Counter Next */ -#define PWM_TNCR_TXNCTR(value) ((PWM_TNCR_TXNCTR_Msk & ((value) << PWM_TNCR_TXNCTR_Pos))) -/* -------- PWM_PTCR : (PWM Offset: 0x120) Transfer Control Register -------- */ -#define PWM_PTCR_RXTEN (0x1u << 0) /**< \brief (PWM_PTCR) Receiver Transfer Enable */ -#define PWM_PTCR_RXTDIS (0x1u << 1) /**< \brief (PWM_PTCR) Receiver Transfer Disable */ -#define PWM_PTCR_TXTEN (0x1u << 8) /**< \brief (PWM_PTCR) Transmitter Transfer Enable */ -#define PWM_PTCR_TXTDIS (0x1u << 9) /**< \brief (PWM_PTCR) Transmitter Transfer Disable */ -/* -------- PWM_PTSR : (PWM Offset: 0x124) Transfer Status Register -------- */ -#define PWM_PTSR_RXTEN (0x1u << 0) /**< \brief (PWM_PTSR) Receiver Transfer Enable */ -#define PWM_PTSR_TXTEN (0x1u << 8) /**< \brief (PWM_PTSR) Transmitter Transfer Enable */ -/* -------- PWM_CMPV : (PWM Offset: N/A) PWM Comparison 0 Value Register -------- */ -#define PWM_CMPV_CV_Pos 0 -#define PWM_CMPV_CV_Msk (0xffffffu << PWM_CMPV_CV_Pos) /**< \brief (PWM_CMPV) Comparison x Value */ -#define PWM_CMPV_CV(value) ((PWM_CMPV_CV_Msk & ((value) << PWM_CMPV_CV_Pos))) -#define PWM_CMPV_CVM (0x1u << 24) /**< \brief (PWM_CMPV) Comparison x Value Mode */ -/* -------- PWM_CMPVUPD : (PWM Offset: N/A) PWM Comparison 0 Value Update Register -------- */ -#define PWM_CMPVUPD_CVUPD_Pos 0 -#define PWM_CMPVUPD_CVUPD_Msk (0xffffffu << PWM_CMPVUPD_CVUPD_Pos) /**< \brief (PWM_CMPVUPD) Comparison x Value Update */ -#define PWM_CMPVUPD_CVUPD(value) ((PWM_CMPVUPD_CVUPD_Msk & ((value) << PWM_CMPVUPD_CVUPD_Pos))) -#define PWM_CMPVUPD_CVMUPD (0x1u << 24) /**< \brief (PWM_CMPVUPD) Comparison x Value Mode Update */ -/* -------- PWM_CMPM : (PWM Offset: N/A) PWM Comparison 0 Mode Register -------- */ -#define PWM_CMPM_CEN (0x1u << 0) /**< \brief (PWM_CMPM) Comparison x Enable */ -#define PWM_CMPM_CTR_Pos 4 -#define PWM_CMPM_CTR_Msk (0xfu << PWM_CMPM_CTR_Pos) /**< \brief (PWM_CMPM) Comparison x Trigger */ -#define PWM_CMPM_CTR(value) ((PWM_CMPM_CTR_Msk & ((value) << PWM_CMPM_CTR_Pos))) -#define PWM_CMPM_CPR_Pos 8 -#define PWM_CMPM_CPR_Msk (0xfu << PWM_CMPM_CPR_Pos) /**< \brief (PWM_CMPM) Comparison x Period */ -#define PWM_CMPM_CPR(value) ((PWM_CMPM_CPR_Msk & ((value) << PWM_CMPM_CPR_Pos))) -#define PWM_CMPM_CPRCNT_Pos 12 -#define PWM_CMPM_CPRCNT_Msk (0xfu << PWM_CMPM_CPRCNT_Pos) /**< \brief (PWM_CMPM) Comparison x Period Counter */ -#define PWM_CMPM_CPRCNT(value) ((PWM_CMPM_CPRCNT_Msk & ((value) << PWM_CMPM_CPRCNT_Pos))) -#define PWM_CMPM_CUPR_Pos 16 -#define PWM_CMPM_CUPR_Msk (0xfu << PWM_CMPM_CUPR_Pos) /**< \brief (PWM_CMPM) Comparison x Update Period */ -#define PWM_CMPM_CUPR(value) ((PWM_CMPM_CUPR_Msk & ((value) << PWM_CMPM_CUPR_Pos))) -#define PWM_CMPM_CUPRCNT_Pos 20 -#define PWM_CMPM_CUPRCNT_Msk (0xfu << PWM_CMPM_CUPRCNT_Pos) /**< \brief (PWM_CMPM) Comparison x Update Period Counter */ -#define PWM_CMPM_CUPRCNT(value) ((PWM_CMPM_CUPRCNT_Msk & ((value) << PWM_CMPM_CUPRCNT_Pos))) -/* -------- PWM_CMPMUPD : (PWM Offset: N/A) PWM Comparison 0 Mode Update Register -------- */ -#define PWM_CMPMUPD_CENUPD (0x1u << 0) /**< \brief (PWM_CMPMUPD) Comparison x Enable Update */ -#define PWM_CMPMUPD_CTRUPD_Pos 4 -#define PWM_CMPMUPD_CTRUPD_Msk (0xfu << PWM_CMPMUPD_CTRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Trigger Update */ -#define PWM_CMPMUPD_CTRUPD(value) ((PWM_CMPMUPD_CTRUPD_Msk & ((value) << PWM_CMPMUPD_CTRUPD_Pos))) -#define PWM_CMPMUPD_CPRUPD_Pos 8 -#define PWM_CMPMUPD_CPRUPD_Msk (0xfu << PWM_CMPMUPD_CPRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Period Update */ -#define PWM_CMPMUPD_CPRUPD(value) ((PWM_CMPMUPD_CPRUPD_Msk & ((value) << PWM_CMPMUPD_CPRUPD_Pos))) -#define PWM_CMPMUPD_CUPRUPD_Pos 16 -#define PWM_CMPMUPD_CUPRUPD_Msk (0xfu << PWM_CMPMUPD_CUPRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Update Period Update */ -#define PWM_CMPMUPD_CUPRUPD(value) ((PWM_CMPMUPD_CUPRUPD_Msk & ((value) << PWM_CMPMUPD_CUPRUPD_Pos))) -/* -------- PWM_CMR : (PWM Offset: N/A) PWM Channel Mode Register -------- */ -#define PWM_CMR_CPRE_Pos 0 -#define PWM_CMR_CPRE_Msk (0xfu << PWM_CMR_CPRE_Pos) /**< \brief (PWM_CMR) Channel Pre-scaler */ -#define PWM_CMR_CPRE_MCK (0x0u << 0) /**< \brief (PWM_CMR) Master clock */ -#define PWM_CMR_CPRE_MCK_DIV_2 (0x1u << 0) /**< \brief (PWM_CMR) Master clock/2 */ -#define PWM_CMR_CPRE_MCK_DIV_4 (0x2u << 0) /**< \brief (PWM_CMR) Master clock/4 */ -#define PWM_CMR_CPRE_MCK_DIV_8 (0x3u << 0) /**< \brief (PWM_CMR) Master clock/8 */ -#define PWM_CMR_CPRE_MCK_DIV_16 (0x4u << 0) /**< \brief (PWM_CMR) Master clock/16 */ -#define PWM_CMR_CPRE_MCK_DIV_32 (0x5u << 0) /**< \brief (PWM_CMR) Master clock/32 */ -#define PWM_CMR_CPRE_MCK_DIV_64 (0x6u << 0) /**< \brief (PWM_CMR) Master clock/64 */ -#define PWM_CMR_CPRE_MCK_DIV_128 (0x7u << 0) /**< \brief (PWM_CMR) Master clock/128 */ -#define PWM_CMR_CPRE_MCK_DIV_256 (0x8u << 0) /**< \brief (PWM_CMR) Master clock/256 */ -#define PWM_CMR_CPRE_MCK_DIV_512 (0x9u << 0) /**< \brief (PWM_CMR) Master clock/512 */ -#define PWM_CMR_CPRE_MCK_DIV_1024 (0xAu << 0) /**< \brief (PWM_CMR) Master clock/1024 */ -#define PWM_CMR_CPRE_CLKA (0xBu << 0) /**< \brief (PWM_CMR) Clock A */ -#define PWM_CMR_CPRE_CLKB (0xCu << 0) /**< \brief (PWM_CMR) Clock B */ -#define PWM_CMR_CALG (0x1u << 8) /**< \brief (PWM_CMR) Channel Alignment */ -#define PWM_CMR_CPOL (0x1u << 9) /**< \brief (PWM_CMR) Channel Polarity */ -#define PWM_CMR_CES (0x1u << 10) /**< \brief (PWM_CMR) Counter Event Selection */ -#define PWM_CMR_UPDS (0x1u << 11) /**< \brief (PWM_CMR) Update Selection */ -#define PWM_CMR_DTE (0x1u << 16) /**< \brief (PWM_CMR) Dead-Time Generator Enable */ -#define PWM_CMR_DTHI (0x1u << 17) /**< \brief (PWM_CMR) Dead-Time PWMHx Output Inverted */ -#define PWM_CMR_DTLI (0x1u << 18) /**< \brief (PWM_CMR) Dead-Time PWMLx Output Inverted */ -/* -------- PWM_CDTY : (PWM Offset: N/A) PWM Channel Duty Cycle Register -------- */ -#define PWM_CDTY_CDTY_Pos 0 -#define PWM_CDTY_CDTY_Msk (0xffffffu << PWM_CDTY_CDTY_Pos) /**< \brief (PWM_CDTY) Channel Duty-Cycle */ -#define PWM_CDTY_CDTY(value) ((PWM_CDTY_CDTY_Msk & ((value) << PWM_CDTY_CDTY_Pos))) -/* -------- PWM_CDTYUPD : (PWM Offset: N/A) PWM Channel Duty Cycle Update Register -------- */ -#define PWM_CDTYUPD_CDTYUPD_Pos 0 -#define PWM_CDTYUPD_CDTYUPD_Msk (0xffffffu << PWM_CDTYUPD_CDTYUPD_Pos) /**< \brief (PWM_CDTYUPD) Channel Duty-Cycle Update */ -#define PWM_CDTYUPD_CDTYUPD(value) ((PWM_CDTYUPD_CDTYUPD_Msk & ((value) << PWM_CDTYUPD_CDTYUPD_Pos))) -/* -------- PWM_CPRD : (PWM Offset: N/A) PWM Channel Period Register -------- */ -#define PWM_CPRD_CPRD_Pos 0 -#define PWM_CPRD_CPRD_Msk (0xffffffu << PWM_CPRD_CPRD_Pos) /**< \brief (PWM_CPRD) Channel Period */ -#define PWM_CPRD_CPRD(value) ((PWM_CPRD_CPRD_Msk & ((value) << PWM_CPRD_CPRD_Pos))) -/* -------- PWM_CPRDUPD : (PWM Offset: N/A) PWM Channel Period Update Register -------- */ -#define PWM_CPRDUPD_CPRDUPD_Pos 0 -#define PWM_CPRDUPD_CPRDUPD_Msk (0xffffffu << PWM_CPRDUPD_CPRDUPD_Pos) /**< \brief (PWM_CPRDUPD) Channel Period Update */ -#define PWM_CPRDUPD_CPRDUPD(value) ((PWM_CPRDUPD_CPRDUPD_Msk & ((value) << PWM_CPRDUPD_CPRDUPD_Pos))) -/* -------- PWM_CCNT : (PWM Offset: N/A) PWM Channel Counter Register -------- */ -#define PWM_CCNT_CNT_Pos 0 -#define PWM_CCNT_CNT_Msk (0xffffffu << PWM_CCNT_CNT_Pos) /**< \brief (PWM_CCNT) Channel Counter Register */ -/* -------- PWM_DT : (PWM Offset: N/A) PWM Channel Dead Time Register -------- */ -#define PWM_DT_DTH_Pos 0 -#define PWM_DT_DTH_Msk (0xffffu << PWM_DT_DTH_Pos) /**< \brief (PWM_DT) Dead-Time Value for PWMHx Output */ -#define PWM_DT_DTH(value) ((PWM_DT_DTH_Msk & ((value) << PWM_DT_DTH_Pos))) -#define PWM_DT_DTL_Pos 16 -#define PWM_DT_DTL_Msk (0xffffu << PWM_DT_DTL_Pos) /**< \brief (PWM_DT) Dead-Time Value for PWMLx Output */ -#define PWM_DT_DTL(value) ((PWM_DT_DTL_Msk & ((value) << PWM_DT_DTL_Pos))) -/* -------- PWM_DTUPD : (PWM Offset: N/A) PWM Channel Dead Time Update Register -------- */ -#define PWM_DTUPD_DTHUPD_Pos 0 -#define PWM_DTUPD_DTHUPD_Msk (0xffffu << PWM_DTUPD_DTHUPD_Pos) /**< \brief (PWM_DTUPD) Dead-Time Value Update for PWMHx Output */ -#define PWM_DTUPD_DTHUPD(value) ((PWM_DTUPD_DTHUPD_Msk & ((value) << PWM_DTUPD_DTHUPD_Pos))) -#define PWM_DTUPD_DTLUPD_Pos 16 -#define PWM_DTUPD_DTLUPD_Msk (0xffffu << PWM_DTUPD_DTLUPD_Pos) /**< \brief (PWM_DTUPD) Dead-Time Value Update for PWMLx Output */ -#define PWM_DTUPD_DTLUPD(value) ((PWM_DTUPD_DTLUPD_Msk & ((value) << PWM_DTUPD_DTLUPD_Pos))) -/* -------- PWM_CMUPD : (PWM Offset: N/A) PWM Channel Mode Update Register -------- */ -#define PWM_CMUPD_CPOLUP (0x1u << 9) /**< \brief (PWM_CMUPD) Channel Polarity Update */ -#define PWM_CMUPD_CPOLINVUP (0x1u << 13) /**< \brief (PWM_CMUPD) Channel Polarity Inversion Update */ -/* -------- PWM_CAE : (PWM Offset: N/A) PWM Channel Additional Edge Register -------- */ -#define PWM_CAE_ADEDGV_Pos 0 -#define PWM_CAE_ADEDGV_Msk (0xffffffu << PWM_CAE_ADEDGV_Pos) /**< \brief (PWM_CAE) Channel Additional Edge Value */ -#define PWM_CAE_ADEDGV(value) ((PWM_CAE_ADEDGV_Msk & ((value) << PWM_CAE_ADEDGV_Pos))) -#define PWM_CAE_ADEDGM_Pos 24 -#define PWM_CAE_ADEDGM_Msk (0x3u << PWM_CAE_ADEDGM_Pos) /**< \brief (PWM_CAE) Channel Additional Edge Mode */ -#define PWM_CAE_ADEDGM_INC (0x0u << 24) /**< \brief (PWM_CAE) The additional edge of the channel x output waveform occurs when CCNTx reaches ADEDGV and the counter of the channel x is incrementing. */ -#define PWM_CAE_ADEDGM_DEC (0x1u << 24) /**< \brief (PWM_CAE) The additional edge of the channel x output waveform occurs when CCNTx reaches ADEDGV and the counter of the channel x is incrementing. */ -#define PWM_CAE_ADEDGM_BOTH (0x2u << 24) /**< \brief (PWM_CAE) The additional edge of the channel x output waveform occurs when CCNTx reaches ADEDGV, whether the counter is incrementing or not. */ -/* -------- PWM_CAEUPD : (PWM Offset: N/A) PWM Channel Additional Edge Update Register -------- */ -#define PWM_CAEUPD_ADEDGVUP_Pos 0 -#define PWM_CAEUPD_ADEDGVUP_Msk (0xffffffu << PWM_CAEUPD_ADEDGVUP_Pos) /**< \brief (PWM_CAEUPD) Channel Additional Edge Value Update */ -#define PWM_CAEUPD_ADEDGVUP(value) ((PWM_CAEUPD_ADEDGVUP_Msk & ((value) << PWM_CAEUPD_ADEDGVUP_Pos))) -#define PWM_CAEUPD_ADEDGMUP_Pos 24 -#define PWM_CAEUPD_ADEDGMUP_Msk (0x3u << PWM_CAEUPD_ADEDGMUP_Pos) /**< \brief (PWM_CAEUPD) Channel Additional Edge Mode Update */ -#define PWM_CAEUPD_ADEDGMUP_INC (0x0u << 24) /**< \brief (PWM_CAEUPD) The additional edge of the channel x output waveform occurs when CCNTx reaches ADEDGVUP and the counter of the channel x is incrementing. */ -#define PWM_CAEUPD_ADEDGMUP_DEC (0x1u << 24) /**< \brief (PWM_CAEUPD) The additional edge of the channel x output waveform occurs when CCNTx reaches ADEDGVUP and the counter of the channel x is incrementing. */ -#define PWM_CAEUPD_ADEDGMUP_BOTH (0x2u << 24) /**< \brief (PWM_CAEUPD) The additional edge of the channel x output waveform occurs when CCNTx reaches ADEDGVUP, whether the counter is incrementing or not. */ - -/*@}*/ - - -#endif /* _SAM4E_PWM_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rstc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rstc.h deleted file mode 100644 index abc1b6350..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rstc.h +++ /dev/null @@ -1,85 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_RSTC_COMPONENT_ -#define _SAM4E_RSTC_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Reset Controller */ -/* ============================================================================= */ -/** \addtogroup SAM4E_RSTC Reset Controller */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Rstc hardware registers */ -typedef struct { - WoReg RSTC_CR; /**< \brief (Rstc Offset: 0x00) Control Register */ - RoReg RSTC_SR; /**< \brief (Rstc Offset: 0x04) Status Register */ - RwReg RSTC_MR; /**< \brief (Rstc Offset: 0x08) Mode Register */ -} Rstc; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- RSTC_CR : (RSTC Offset: 0x00) Control Register -------- */ -#define RSTC_CR_PROCRST (0x1u << 0) /**< \brief (RSTC_CR) Processor Reset */ -#define RSTC_CR_PERRST (0x1u << 2) /**< \brief (RSTC_CR) Peripheral Reset */ -#define RSTC_CR_EXTRST (0x1u << 3) /**< \brief (RSTC_CR) External Reset */ -#define RSTC_CR_KEY_Pos 24 -#define RSTC_CR_KEY_Msk (0xffu << RSTC_CR_KEY_Pos) /**< \brief (RSTC_CR) System Reset Key */ -#define RSTC_CR_KEY(value) ((RSTC_CR_KEY_Msk & ((value) << RSTC_CR_KEY_Pos))) -/* -------- RSTC_SR : (RSTC Offset: 0x04) Status Register -------- */ -#define RSTC_SR_URSTS (0x1u << 0) /**< \brief (RSTC_SR) User Reset Status */ -#define RSTC_SR_RSTTYP_Pos 8 -#define RSTC_SR_RSTTYP_Msk (0x7u << RSTC_SR_RSTTYP_Pos) /**< \brief (RSTC_SR) Reset Type */ -#define RSTC_SR_NRSTL (0x1u << 16) /**< \brief (RSTC_SR) NRST Pin Level */ -#define RSTC_SR_SRCMP (0x1u << 17) /**< \brief (RSTC_SR) Software Reset Command in Progress */ -/* -------- RSTC_MR : (RSTC Offset: 0x08) Mode Register -------- */ -#define RSTC_MR_URSTEN (0x1u << 0) /**< \brief (RSTC_MR) User Reset Enable */ -#define RSTC_MR_URSTIEN (0x1u << 4) /**< \brief (RSTC_MR) User Reset Interrupt Enable */ -#define RSTC_MR_ERSTL_Pos 8 -#define RSTC_MR_ERSTL_Msk (0xfu << RSTC_MR_ERSTL_Pos) /**< \brief (RSTC_MR) External Reset Length */ -#define RSTC_MR_ERSTL(value) ((RSTC_MR_ERSTL_Msk & ((value) << RSTC_MR_ERSTL_Pos))) -#define RSTC_MR_KEY_Pos 24 -#define RSTC_MR_KEY_Msk (0xffu << RSTC_MR_KEY_Pos) /**< \brief (RSTC_MR) Password */ -#define RSTC_MR_KEY(value) ((RSTC_MR_KEY_Msk & ((value) << RSTC_MR_KEY_Pos))) - -/*@}*/ - - -#endif /* _SAM4E_RSTC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rswdt.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rswdt.h deleted file mode 100644 index 2f728db10..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rswdt.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_RSWDT_COMPONENT_ -#define _SAM4E_RSWDT_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Reinforced Safety Watchdog Timer */ -/* ============================================================================= */ -/** \addtogroup SAM4E_RSWDT Reinforced Safety Watchdog Timer */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Rswdt hardware registers */ -typedef struct { - WoReg RSWDT_CR; /**< \brief (Rswdt Offset: 0x00) Control Register */ - RwReg RSWDT_MR; /**< \brief (Rswdt Offset: 0x04) Mode Register */ - RoReg RSWDT_SR; /**< \brief (Rswdt Offset: 0x08) Status Register */ -} Rswdt; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- RSWDT_CR : (RSWDT Offset: 0x00) Control Register -------- */ -#define RSWDT_CR_WDRSTT (0x1u << 0) /**< \brief (RSWDT_CR) Watchdog Restart */ -#define RSWDT_CR_KEY_Pos 24 -#define RSWDT_CR_KEY_Msk (0xffu << RSWDT_CR_KEY_Pos) /**< \brief (RSWDT_CR) Password */ -#define RSWDT_CR_KEY(value) ((RSWDT_CR_KEY_Msk & ((value) << RSWDT_CR_KEY_Pos))) -/* -------- RSWDT_MR : (RSWDT Offset: 0x04) Mode Register -------- */ -#define RSWDT_MR_WDV_Pos 0 -#define RSWDT_MR_WDV_Msk (0xfffu << RSWDT_MR_WDV_Pos) /**< \brief (RSWDT_MR) Watchdog Counter Value */ -#define RSWDT_MR_WDV(value) ((RSWDT_MR_WDV_Msk & ((value) << RSWDT_MR_WDV_Pos))) -#define RSWDT_MR_WDFIEN (0x1u << 12) /**< \brief (RSWDT_MR) Watchdog Fault Interrupt Enable */ -#define RSWDT_MR_WDRSTEN (0x1u << 13) /**< \brief (RSWDT_MR) Watchdog Reset Enable */ -#define RSWDT_MR_WDRPROC (0x1u << 14) /**< \brief (RSWDT_MR) Watchdog Reset Processor */ -#define RSWDT_MR_WDDIS (0x1u << 15) /**< \brief (RSWDT_MR) Watchdog Disable */ -#define RSWDT_MR_WDD_Pos 16 -#define RSWDT_MR_WDD_Msk (0xfffu << RSWDT_MR_WDD_Pos) /**< \brief (RSWDT_MR) Watchdog Delta Value */ -#define RSWDT_MR_WDD(value) ((RSWDT_MR_WDD_Msk & ((value) << RSWDT_MR_WDD_Pos))) -#define RSWDT_MR_WDDBGHLT (0x1u << 28) /**< \brief (RSWDT_MR) Watchdog Debug Halt */ -#define RSWDT_MR_WDIDLEHLT (0x1u << 29) /**< \brief (RSWDT_MR) Watchdog Idle Halt */ -/* -------- RSWDT_SR : (RSWDT Offset: 0x08) Status Register -------- */ -#define RSWDT_SR_WDUNF (0x1u << 0) /**< \brief (RSWDT_SR) Watchdog Underflow */ -#define RSWDT_SR_WDERR (0x1u << 1) /**< \brief (RSWDT_SR) Watchdog Error */ - -/*@}*/ - - -#endif /* _SAM4E_RSWDT_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rtc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rtc.h deleted file mode 100644 index 94d9303fa..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rtc.h +++ /dev/null @@ -1,231 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_RTC_COMPONENT_ -#define _SAM4E_RTC_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Real-time Clock */ -/* ============================================================================= */ -/** \addtogroup SAM4E_RTC Real-time Clock */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Rtc hardware registers */ -typedef struct { - RwReg RTC_CR; /**< \brief (Rtc Offset: 0x00) Control Register */ - RwReg RTC_MR; /**< \brief (Rtc Offset: 0x04) Mode Register */ - RwReg RTC_TIMR; /**< \brief (Rtc Offset: 0x08) Time Register */ - RwReg RTC_CALR; /**< \brief (Rtc Offset: 0x0C) Calendar Register */ - RwReg RTC_TIMALR; /**< \brief (Rtc Offset: 0x10) Time Alarm Register */ - RwReg RTC_CALALR; /**< \brief (Rtc Offset: 0x14) Calendar Alarm Register */ - RoReg RTC_SR; /**< \brief (Rtc Offset: 0x18) Status Register */ - WoReg RTC_SCCR; /**< \brief (Rtc Offset: 0x1C) Status Clear Command Register */ - WoReg RTC_IER; /**< \brief (Rtc Offset: 0x20) Interrupt Enable Register */ - WoReg RTC_IDR; /**< \brief (Rtc Offset: 0x24) Interrupt Disable Register */ - RoReg RTC_IMR; /**< \brief (Rtc Offset: 0x28) Interrupt Mask Register */ - RoReg RTC_VER; /**< \brief (Rtc Offset: 0x2C) Valid Entry Register */ -} Rtc; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- RTC_CR : (RTC Offset: 0x00) Control Register -------- */ -#define RTC_CR_UPDTIM (0x1u << 0) /**< \brief (RTC_CR) Update Request Time Register */ -#define RTC_CR_UPDCAL (0x1u << 1) /**< \brief (RTC_CR) Update Request Calendar Register */ -#define RTC_CR_TIMEVSEL_Pos 8 -#define RTC_CR_TIMEVSEL_Msk (0x3u << RTC_CR_TIMEVSEL_Pos) /**< \brief (RTC_CR) Time Event Selection */ -#define RTC_CR_TIMEVSEL_MINUTE (0x0u << 8) /**< \brief (RTC_CR) Minute change */ -#define RTC_CR_TIMEVSEL_HOUR (0x1u << 8) /**< \brief (RTC_CR) Hour change */ -#define RTC_CR_TIMEVSEL_MIDNIGHT (0x2u << 8) /**< \brief (RTC_CR) Every day at midnight */ -#define RTC_CR_TIMEVSEL_NOON (0x3u << 8) /**< \brief (RTC_CR) Every day at noon */ -#define RTC_CR_CALEVSEL_Pos 16 -#define RTC_CR_CALEVSEL_Msk (0x3u << RTC_CR_CALEVSEL_Pos) /**< \brief (RTC_CR) Calendar Event Selection */ -#define RTC_CR_CALEVSEL_WEEK (0x0u << 16) /**< \brief (RTC_CR) Week change (every Monday at time 00:00:00) */ -#define RTC_CR_CALEVSEL_MONTH (0x1u << 16) /**< \brief (RTC_CR) Month change (every 01 of each month at time 00:00:00) */ -#define RTC_CR_CALEVSEL_YEAR (0x2u << 16) /**< \brief (RTC_CR) Year change (every January 1 at time 00:00:00) */ -/* -------- RTC_MR : (RTC Offset: 0x04) Mode Register -------- */ -#define RTC_MR_HRMOD (0x1u << 0) /**< \brief (RTC_MR) 12-/24-hour Mode */ -#define RTC_MR_PERSIAN (0x1u << 1) /**< \brief (RTC_MR) PERSIAN Calendar */ -#define RTC_MR_NEGPPM (0x1u << 4) /**< \brief (RTC_MR) NEGative PPM Correction */ -#define RTC_MR_CORRECTION_Pos 8 -#define RTC_MR_CORRECTION_Msk (0x7fu << RTC_MR_CORRECTION_Pos) /**< \brief (RTC_MR) Slow Clock Correction */ -#define RTC_MR_CORRECTION(value) ((RTC_MR_CORRECTION_Msk & ((value) << RTC_MR_CORRECTION_Pos))) -#define RTC_MR_HIGHPPM (0x1u << 15) /**< \brief (RTC_MR) HIGH PPM Correction */ -#define RTC_MR_OUT0_Pos 16 -#define RTC_MR_OUT0_Msk (0x7u << RTC_MR_OUT0_Pos) /**< \brief (RTC_MR) RTCOUT0 OutputSource Selection */ -#define RTC_MR_OUT0_NO_WAVE (0x0u << 16) /**< \brief (RTC_MR) no waveform, stuck at '0' */ -#define RTC_MR_OUT0_FREQ1HZ (0x1u << 16) /**< \brief (RTC_MR) 1 Hz square wave */ -#define RTC_MR_OUT0_FREQ32HZ (0x2u << 16) /**< \brief (RTC_MR) 32 Hz square wave */ -#define RTC_MR_OUT0_FREQ64HZ (0x3u << 16) /**< \brief (RTC_MR) 64 Hz square wave */ -#define RTC_MR_OUT0_FREQ512HZ (0x4u << 16) /**< \brief (RTC_MR) 512 Hz square wave */ -#define RTC_MR_OUT0_ALARM_TOGGLE (0x5u << 16) /**< \brief (RTC_MR) output toggles when alarm flag rises */ -#define RTC_MR_OUT0_ALARM_FLAG (0x6u << 16) /**< \brief (RTC_MR) output is a copy of the alarm flag */ -#define RTC_MR_OUT0_PROG_PULSE (0x7u << 16) /**< \brief (RTC_MR) duty cycle programmable pulse */ -#define RTC_MR_OUT1_Pos 20 -#define RTC_MR_OUT1_Msk (0x7u << RTC_MR_OUT1_Pos) /**< \brief (RTC_MR) RTCOUT1 Output Source Selection */ -#define RTC_MR_OUT1_NO_WAVE (0x0u << 20) /**< \brief (RTC_MR) no waveform, stuck at '0' */ -#define RTC_MR_OUT1_FREQ1HZ (0x1u << 20) /**< \brief (RTC_MR) 1 Hz square wave */ -#define RTC_MR_OUT1_FREQ32HZ (0x2u << 20) /**< \brief (RTC_MR) 32 Hz square wave */ -#define RTC_MR_OUT1_FREQ64HZ (0x3u << 20) /**< \brief (RTC_MR) 64 Hz square wave */ -#define RTC_MR_OUT1_FREQ512HZ (0x4u << 20) /**< \brief (RTC_MR) 512 Hz square wave */ -#define RTC_MR_OUT1_ALARM_TOGGLE (0x5u << 20) /**< \brief (RTC_MR) output toggles when alarm flag rises */ -#define RTC_MR_OUT1_ALARM_FLAG (0x6u << 20) /**< \brief (RTC_MR) output is a copy of the alarm flag */ -#define RTC_MR_OUT1_PROG_PULSE (0x7u << 20) /**< \brief (RTC_MR) duty cycle programmable pulse */ -#define RTC_MR_THIGH_Pos 24 -#define RTC_MR_THIGH_Msk (0x7u << RTC_MR_THIGH_Pos) /**< \brief (RTC_MR) High Duration of the Output Pulse */ -#define RTC_MR_THIGH_H_31MS (0x0u << 24) /**< \brief (RTC_MR) 31.2 ms */ -#define RTC_MR_THIGH_H_16MS (0x1u << 24) /**< \brief (RTC_MR) 15.6 ms */ -#define RTC_MR_THIGH_H_4MS (0x2u << 24) /**< \brief (RTC_MR) 3.91 Mms */ -#define RTC_MR_THIGH_H_976US (0x3u << 24) /**< \brief (RTC_MR) 976 us */ -#define RTC_MR_THIGH_H_488US (0x4u << 24) /**< \brief (RTC_MR) 488 us */ -#define RTC_MR_THIGH_H_122US (0x5u << 24) /**< \brief (RTC_MR) 122 us */ -#define RTC_MR_THIGH_H_30US (0x6u << 24) /**< \brief (RTC_MR) 30.5 us */ -#define RTC_MR_THIGH_H_15US (0x7u << 24) /**< \brief (RTC_MR) 15.2 us */ -#define RTC_MR_TPERIOD_Pos 28 -#define RTC_MR_TPERIOD_Msk (0x3u << RTC_MR_TPERIOD_Pos) /**< \brief (RTC_MR) Period of the Output Pulse */ -#define RTC_MR_TPERIOD_P_1S (0x0u << 28) /**< \brief (RTC_MR) 1 second */ -#define RTC_MR_TPERIOD_P_500MS (0x1u << 28) /**< \brief (RTC_MR) 500 ms */ -#define RTC_MR_TPERIOD_P_250MS (0x2u << 28) /**< \brief (RTC_MR) 250 ms */ -#define RTC_MR_TPERIOD_P_125MS (0x3u << 28) /**< \brief (RTC_MR) 125 ms */ -/* -------- RTC_TIMR : (RTC Offset: 0x08) Time Register -------- */ -#define RTC_TIMR_SEC_Pos 0 -#define RTC_TIMR_SEC_Msk (0x7fu << RTC_TIMR_SEC_Pos) /**< \brief (RTC_TIMR) Current Second */ -#define RTC_TIMR_SEC(value) ((RTC_TIMR_SEC_Msk & ((value) << RTC_TIMR_SEC_Pos))) -#define RTC_TIMR_MIN_Pos 8 -#define RTC_TIMR_MIN_Msk (0x7fu << RTC_TIMR_MIN_Pos) /**< \brief (RTC_TIMR) Current Minute */ -#define RTC_TIMR_MIN(value) ((RTC_TIMR_MIN_Msk & ((value) << RTC_TIMR_MIN_Pos))) -#define RTC_TIMR_HOUR_Pos 16 -#define RTC_TIMR_HOUR_Msk (0x3fu << RTC_TIMR_HOUR_Pos) /**< \brief (RTC_TIMR) Current Hour */ -#define RTC_TIMR_HOUR(value) ((RTC_TIMR_HOUR_Msk & ((value) << RTC_TIMR_HOUR_Pos))) -#define RTC_TIMR_AMPM (0x1u << 22) /**< \brief (RTC_TIMR) Ante Meridiem Post Meridiem Indicator */ -/* -------- RTC_CALR : (RTC Offset: 0x0C) Calendar Register -------- */ -#define RTC_CALR_CENT_Pos 0 -#define RTC_CALR_CENT_Msk (0x7fu << RTC_CALR_CENT_Pos) /**< \brief (RTC_CALR) Current Century */ -#define RTC_CALR_CENT(value) ((RTC_CALR_CENT_Msk & ((value) << RTC_CALR_CENT_Pos))) -#define RTC_CALR_YEAR_Pos 8 -#define RTC_CALR_YEAR_Msk (0xffu << RTC_CALR_YEAR_Pos) /**< \brief (RTC_CALR) Current Year */ -#define RTC_CALR_YEAR(value) ((RTC_CALR_YEAR_Msk & ((value) << RTC_CALR_YEAR_Pos))) -#define RTC_CALR_MONTH_Pos 16 -#define RTC_CALR_MONTH_Msk (0x1fu << RTC_CALR_MONTH_Pos) /**< \brief (RTC_CALR) Current Month */ -#define RTC_CALR_MONTH(value) ((RTC_CALR_MONTH_Msk & ((value) << RTC_CALR_MONTH_Pos))) -#define RTC_CALR_DAY_Pos 21 -#define RTC_CALR_DAY_Msk (0x7u << RTC_CALR_DAY_Pos) /**< \brief (RTC_CALR) Current Day in Current Week */ -#define RTC_CALR_DAY(value) ((RTC_CALR_DAY_Msk & ((value) << RTC_CALR_DAY_Pos))) -#define RTC_CALR_DATE_Pos 24 -#define RTC_CALR_DATE_Msk (0x3fu << RTC_CALR_DATE_Pos) /**< \brief (RTC_CALR) Current Day in Current Month */ -#define RTC_CALR_DATE(value) ((RTC_CALR_DATE_Msk & ((value) << RTC_CALR_DATE_Pos))) -/* -------- RTC_TIMALR : (RTC Offset: 0x10) Time Alarm Register -------- */ -#define RTC_TIMALR_SEC_Pos 0 -#define RTC_TIMALR_SEC_Msk (0x7fu << RTC_TIMALR_SEC_Pos) /**< \brief (RTC_TIMALR) Second Alarm */ -#define RTC_TIMALR_SEC(value) ((RTC_TIMALR_SEC_Msk & ((value) << RTC_TIMALR_SEC_Pos))) -#define RTC_TIMALR_SECEN (0x1u << 7) /**< \brief (RTC_TIMALR) Second Alarm Enable */ -#define RTC_TIMALR_MIN_Pos 8 -#define RTC_TIMALR_MIN_Msk (0x7fu << RTC_TIMALR_MIN_Pos) /**< \brief (RTC_TIMALR) Minute Alarm */ -#define RTC_TIMALR_MIN(value) ((RTC_TIMALR_MIN_Msk & ((value) << RTC_TIMALR_MIN_Pos))) -#define RTC_TIMALR_MINEN (0x1u << 15) /**< \brief (RTC_TIMALR) Minute Alarm Enable */ -#define RTC_TIMALR_HOUR_Pos 16 -#define RTC_TIMALR_HOUR_Msk (0x3fu << RTC_TIMALR_HOUR_Pos) /**< \brief (RTC_TIMALR) Hour Alarm */ -#define RTC_TIMALR_HOUR(value) ((RTC_TIMALR_HOUR_Msk & ((value) << RTC_TIMALR_HOUR_Pos))) -#define RTC_TIMALR_AMPM (0x1u << 22) /**< \brief (RTC_TIMALR) AM/PM Indicator */ -#define RTC_TIMALR_HOUREN (0x1u << 23) /**< \brief (RTC_TIMALR) Hour Alarm Enable */ -/* -------- RTC_CALALR : (RTC Offset: 0x14) Calendar Alarm Register -------- */ -#define RTC_CALALR_MONTH_Pos 16 -#define RTC_CALALR_MONTH_Msk (0x1fu << RTC_CALALR_MONTH_Pos) /**< \brief (RTC_CALALR) Month Alarm */ -#define RTC_CALALR_MONTH(value) ((RTC_CALALR_MONTH_Msk & ((value) << RTC_CALALR_MONTH_Pos))) -#define RTC_CALALR_MTHEN (0x1u << 23) /**< \brief (RTC_CALALR) Month Alarm Enable */ -#define RTC_CALALR_DATE_Pos 24 -#define RTC_CALALR_DATE_Msk (0x3fu << RTC_CALALR_DATE_Pos) /**< \brief (RTC_CALALR) Date Alarm */ -#define RTC_CALALR_DATE(value) ((RTC_CALALR_DATE_Msk & ((value) << RTC_CALALR_DATE_Pos))) -#define RTC_CALALR_DATEEN (0x1u << 31) /**< \brief (RTC_CALALR) Date Alarm Enable */ -/* -------- RTC_SR : (RTC Offset: 0x18) Status Register -------- */ -#define RTC_SR_ACKUPD (0x1u << 0) /**< \brief (RTC_SR) Acknowledge for Update */ -#define RTC_SR_ACKUPD_FREERUN (0x0u << 0) /**< \brief (RTC_SR) Time and calendar registers cannot be updated. */ -#define RTC_SR_ACKUPD_UPDATE (0x1u << 0) /**< \brief (RTC_SR) Time and calendar registers can be updated. */ -#define RTC_SR_ALARM (0x1u << 1) /**< \brief (RTC_SR) Alarm Flag */ -#define RTC_SR_ALARM_NO_ALARMEVENT (0x0u << 1) /**< \brief (RTC_SR) No alarm matching condition occurred. */ -#define RTC_SR_ALARM_ALARMEVENT (0x1u << 1) /**< \brief (RTC_SR) An alarm matching condition has occurred. */ -#define RTC_SR_SEC (0x1u << 2) /**< \brief (RTC_SR) Second Event */ -#define RTC_SR_SEC_NO_SECEVENT (0x0u << 2) /**< \brief (RTC_SR) No second event has occurred since the last clear. */ -#define RTC_SR_SEC_SECEVENT (0x1u << 2) /**< \brief (RTC_SR) At least one second event has occurred since the last clear. */ -#define RTC_SR_TIMEV (0x1u << 3) /**< \brief (RTC_SR) Time Event */ -#define RTC_SR_TIMEV_NO_TIMEVENT (0x0u << 3) /**< \brief (RTC_SR) No time event has occurred since the last clear. */ -#define RTC_SR_TIMEV_TIMEVENT (0x1u << 3) /**< \brief (RTC_SR) At least one time event has occurred since the last clear. */ -#define RTC_SR_CALEV (0x1u << 4) /**< \brief (RTC_SR) Calendar Event */ -#define RTC_SR_CALEV_NO_CALEVENT (0x0u << 4) /**< \brief (RTC_SR) No calendar event has occurred since the last clear. */ -#define RTC_SR_CALEV_CALEVENT (0x1u << 4) /**< \brief (RTC_SR) At least one calendar event has occurred since the last clear. */ -#define RTC_SR_TDERR (0x1u << 5) /**< \brief (RTC_SR) Time and/or Date Free Running Error */ -#define RTC_SR_TDERR_CORRECT (0x0u << 5) /**< \brief (RTC_SR) The internal free running counters are carrying valid values since the last read of RTC_SR. */ -#define RTC_SR_TDERR_ERR_TIMEDATE (0x1u << 5) /**< \brief (RTC_SR) The internal free running counters have been corrupted (invalid date or time, non-BCD values) since the last read and/or they are still invalid. */ -/* -------- RTC_SCCR : (RTC Offset: 0x1C) Status Clear Command Register -------- */ -#define RTC_SCCR_ACKCLR (0x1u << 0) /**< \brief (RTC_SCCR) Acknowledge Clear */ -#define RTC_SCCR_ALRCLR (0x1u << 1) /**< \brief (RTC_SCCR) Alarm Clear */ -#define RTC_SCCR_SECCLR (0x1u << 2) /**< \brief (RTC_SCCR) Second Clear */ -#define RTC_SCCR_TIMCLR (0x1u << 3) /**< \brief (RTC_SCCR) Time Clear */ -#define RTC_SCCR_CALCLR (0x1u << 4) /**< \brief (RTC_SCCR) Calendar Clear */ -#define RTC_SCCR_TDERRCLR (0x1u << 5) /**< \brief (RTC_SCCR) Time and/or Date Free Running Error Clear */ -/* -------- RTC_IER : (RTC Offset: 0x20) Interrupt Enable Register -------- */ -#define RTC_IER_ACKEN (0x1u << 0) /**< \brief (RTC_IER) Acknowledge Update Interrupt Enable */ -#define RTC_IER_ALREN (0x1u << 1) /**< \brief (RTC_IER) Alarm Interrupt Enable */ -#define RTC_IER_SECEN (0x1u << 2) /**< \brief (RTC_IER) Second Event Interrupt Enable */ -#define RTC_IER_TIMEN (0x1u << 3) /**< \brief (RTC_IER) Time Event Interrupt Enable */ -#define RTC_IER_CALEN (0x1u << 4) /**< \brief (RTC_IER) Calendar Event Interrupt Enable */ -#define RTC_IER_TDERREN (0x1u << 5) /**< \brief (RTC_IER) Time and/or Date Error Interrupt Enable */ -/* -------- RTC_IDR : (RTC Offset: 0x24) Interrupt Disable Register -------- */ -#define RTC_IDR_ACKDIS (0x1u << 0) /**< \brief (RTC_IDR) Acknowledge Update Interrupt Disable */ -#define RTC_IDR_ALRDIS (0x1u << 1) /**< \brief (RTC_IDR) Alarm Interrupt Disable */ -#define RTC_IDR_SECDIS (0x1u << 2) /**< \brief (RTC_IDR) Second Event Interrupt Disable */ -#define RTC_IDR_TIMDIS (0x1u << 3) /**< \brief (RTC_IDR) Time Event Interrupt Disable */ -#define RTC_IDR_CALDIS (0x1u << 4) /**< \brief (RTC_IDR) Calendar Event Interrupt Disable */ -#define RTC_IDR_TDERRDIS (0x1u << 5) /**< \brief (RTC_IDR) Time and/or Date Error Interrupt Disable */ -/* -------- RTC_IMR : (RTC Offset: 0x28) Interrupt Mask Register -------- */ -#define RTC_IMR_ACK (0x1u << 0) /**< \brief (RTC_IMR) Acknowledge Update Interrupt Mask */ -#define RTC_IMR_ALR (0x1u << 1) /**< \brief (RTC_IMR) Alarm Interrupt Mask */ -#define RTC_IMR_SEC (0x1u << 2) /**< \brief (RTC_IMR) Second Event Interrupt Mask */ -#define RTC_IMR_TIM (0x1u << 3) /**< \brief (RTC_IMR) Time Event Interrupt Mask */ -#define RTC_IMR_CAL (0x1u << 4) /**< \brief (RTC_IMR) Calendar Event Interrupt Mask */ -/* -------- RTC_VER : (RTC Offset: 0x2C) Valid Entry Register -------- */ -#define RTC_VER_NVTIM (0x1u << 0) /**< \brief (RTC_VER) Non-valid Time */ -#define RTC_VER_NVCAL (0x1u << 1) /**< \brief (RTC_VER) Non-valid Calendar */ -#define RTC_VER_NVTIMALR (0x1u << 2) /**< \brief (RTC_VER) Non-valid Time Alarm */ -#define RTC_VER_NVCALALR (0x1u << 3) /**< \brief (RTC_VER) Non-valid Calendar Alarm */ - -/*@}*/ - - -#endif /* _SAM4E_RTC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rtt.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rtt.h deleted file mode 100644 index c22057a31..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/rtt.h +++ /dev/null @@ -1,83 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_RTT_COMPONENT_ -#define _SAM4E_RTT_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Real-time Timer */ -/* ============================================================================= */ -/** \addtogroup SAM4E_RTT Real-time Timer */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Rtt hardware registers */ -typedef struct { - RwReg RTT_MR; /**< \brief (Rtt Offset: 0x00) Mode Register */ - RwReg RTT_AR; /**< \brief (Rtt Offset: 0x04) Alarm Register */ - RoReg RTT_VR; /**< \brief (Rtt Offset: 0x08) Value Register */ - RoReg RTT_SR; /**< \brief (Rtt Offset: 0x0C) Status Register */ -} Rtt; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- RTT_MR : (RTT Offset: 0x00) Mode Register -------- */ -#define RTT_MR_RTPRES_Pos 0 -#define RTT_MR_RTPRES_Msk (0xffffu << RTT_MR_RTPRES_Pos) /**< \brief (RTT_MR) Real-time Timer Prescaler Value */ -#define RTT_MR_RTPRES(value) ((RTT_MR_RTPRES_Msk & ((value) << RTT_MR_RTPRES_Pos))) -#define RTT_MR_ALMIEN (0x1u << 16) /**< \brief (RTT_MR) Alarm Interrupt Enable */ -#define RTT_MR_RTTINCIEN (0x1u << 17) /**< \brief (RTT_MR) Real-time Timer Increment Interrupt Enable */ -#define RTT_MR_RTTRST (0x1u << 18) /**< \brief (RTT_MR) Real-time Timer Restart */ -#define RTT_MR_RTTDIS (0x1u << 20) /**< \brief (RTT_MR) Real-time Timer Disable */ -#define RTT_MR_RTC1HZ (0x1u << 24) /**< \brief (RTT_MR) Real-Time Clock 1Hz Clock Selection */ -/* -------- RTT_AR : (RTT Offset: 0x04) Alarm Register -------- */ -#define RTT_AR_ALMV_Pos 0 -#define RTT_AR_ALMV_Msk (0xffffffffu << RTT_AR_ALMV_Pos) /**< \brief (RTT_AR) Alarm Value */ -#define RTT_AR_ALMV(value) ((RTT_AR_ALMV_Msk & ((value) << RTT_AR_ALMV_Pos))) -/* -------- RTT_VR : (RTT Offset: 0x08) Value Register -------- */ -#define RTT_VR_CRTV_Pos 0 -#define RTT_VR_CRTV_Msk (0xffffffffu << RTT_VR_CRTV_Pos) /**< \brief (RTT_VR) Current Real-time Value */ -/* -------- RTT_SR : (RTT Offset: 0x0C) Status Register -------- */ -#define RTT_SR_ALMS (0x1u << 0) /**< \brief (RTT_SR) Real-time Alarm Status */ -#define RTT_SR_RTTINC (0x1u << 1) /**< \brief (RTT_SR) Real-time Timer Increment */ - -/*@}*/ - - -#endif /* _SAM4E_RTT_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/smc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/smc.h deleted file mode 100644 index 93dbf7510..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/smc.h +++ /dev/null @@ -1,151 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_SMC_COMPONENT_ -#define _SAM4E_SMC_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Static Memory Controller */ -/* ============================================================================= */ -/** \addtogroup SAM4E_SMC Static Memory Controller */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief SmcCs_number hardware registers */ -typedef struct { - RwReg SMC_SETUP; /**< \brief (SmcCs_number Offset: 0x0) SMC Setup Register */ - RwReg SMC_PULSE; /**< \brief (SmcCs_number Offset: 0x4) SMC Pulse Register */ - RwReg SMC_CYCLE; /**< \brief (SmcCs_number Offset: 0x8) SMC Cycle Register */ - RwReg SMC_MODE; /**< \brief (SmcCs_number Offset: 0xC) SMC Mode Register */ -} SmcCs_number; -/** \brief Smc hardware registers */ -#define SMCCS_NUMBER_NUMBER 4 -typedef struct { - SmcCs_number SMC_CS_NUMBER[SMCCS_NUMBER_NUMBER]; /**< \brief (Smc Offset: 0x0) CS_number = 0 .. 3 */ - RoReg Reserved1[16]; - RwReg SMC_OCMS; /**< \brief (Smc Offset: 0x80) SMC OCMS MODE Register */ - WoReg SMC_KEY1; /**< \brief (Smc Offset: 0x84) SMC OCMS KEY1 Register */ - WoReg SMC_KEY2; /**< \brief (Smc Offset: 0x88) SMC OCMS KEY2 Register */ - RoReg Reserved2[22]; - RwReg SMC_WPMR; /**< \brief (Smc Offset: 0xE4) SMC Write Protect Mode Register */ - RoReg SMC_WPSR; /**< \brief (Smc Offset: 0xE8) SMC Write Protect Status Register */ -} Smc; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- SMC_SETUP : (SMC Offset: N/A) SMC Setup Register -------- */ -#define SMC_SETUP_NWE_SETUP_Pos 0 -#define SMC_SETUP_NWE_SETUP_Msk (0x3fu << SMC_SETUP_NWE_SETUP_Pos) /**< \brief (SMC_SETUP) NWE Setup Length */ -#define SMC_SETUP_NWE_SETUP(value) ((SMC_SETUP_NWE_SETUP_Msk & ((value) << SMC_SETUP_NWE_SETUP_Pos))) -#define SMC_SETUP_NCS_WR_SETUP_Pos 8 -#define SMC_SETUP_NCS_WR_SETUP_Msk (0x3fu << SMC_SETUP_NCS_WR_SETUP_Pos) /**< \brief (SMC_SETUP) NCS Setup Length in WRITE Access */ -#define SMC_SETUP_NCS_WR_SETUP(value) ((SMC_SETUP_NCS_WR_SETUP_Msk & ((value) << SMC_SETUP_NCS_WR_SETUP_Pos))) -#define SMC_SETUP_NRD_SETUP_Pos 16 -#define SMC_SETUP_NRD_SETUP_Msk (0x3fu << SMC_SETUP_NRD_SETUP_Pos) /**< \brief (SMC_SETUP) NRD Setup Length */ -#define SMC_SETUP_NRD_SETUP(value) ((SMC_SETUP_NRD_SETUP_Msk & ((value) << SMC_SETUP_NRD_SETUP_Pos))) -#define SMC_SETUP_NCS_RD_SETUP_Pos 24 -#define SMC_SETUP_NCS_RD_SETUP_Msk (0x3fu << SMC_SETUP_NCS_RD_SETUP_Pos) /**< \brief (SMC_SETUP) NCS Setup Length in READ Access */ -#define SMC_SETUP_NCS_RD_SETUP(value) ((SMC_SETUP_NCS_RD_SETUP_Msk & ((value) << SMC_SETUP_NCS_RD_SETUP_Pos))) -/* -------- SMC_PULSE : (SMC Offset: N/A) SMC Pulse Register -------- */ -#define SMC_PULSE_NWE_PULSE_Pos 0 -#define SMC_PULSE_NWE_PULSE_Msk (0x7fu << SMC_PULSE_NWE_PULSE_Pos) /**< \brief (SMC_PULSE) NWE Pulse Length */ -#define SMC_PULSE_NWE_PULSE(value) ((SMC_PULSE_NWE_PULSE_Msk & ((value) << SMC_PULSE_NWE_PULSE_Pos))) -#define SMC_PULSE_NCS_WR_PULSE_Pos 8 -#define SMC_PULSE_NCS_WR_PULSE_Msk (0x7fu << SMC_PULSE_NCS_WR_PULSE_Pos) /**< \brief (SMC_PULSE) NCS Pulse Length in WRITE Access */ -#define SMC_PULSE_NCS_WR_PULSE(value) ((SMC_PULSE_NCS_WR_PULSE_Msk & ((value) << SMC_PULSE_NCS_WR_PULSE_Pos))) -#define SMC_PULSE_NRD_PULSE_Pos 16 -#define SMC_PULSE_NRD_PULSE_Msk (0x7fu << SMC_PULSE_NRD_PULSE_Pos) /**< \brief (SMC_PULSE) NRD Pulse Length */ -#define SMC_PULSE_NRD_PULSE(value) ((SMC_PULSE_NRD_PULSE_Msk & ((value) << SMC_PULSE_NRD_PULSE_Pos))) -#define SMC_PULSE_NCS_RD_PULSE_Pos 24 -#define SMC_PULSE_NCS_RD_PULSE_Msk (0x7fu << SMC_PULSE_NCS_RD_PULSE_Pos) /**< \brief (SMC_PULSE) NCS Pulse Length in READ Access */ -#define SMC_PULSE_NCS_RD_PULSE(value) ((SMC_PULSE_NCS_RD_PULSE_Msk & ((value) << SMC_PULSE_NCS_RD_PULSE_Pos))) -/* -------- SMC_CYCLE : (SMC Offset: N/A) SMC Cycle Register -------- */ -#define SMC_CYCLE_NWE_CYCLE_Pos 0 -#define SMC_CYCLE_NWE_CYCLE_Msk (0x1ffu << SMC_CYCLE_NWE_CYCLE_Pos) /**< \brief (SMC_CYCLE) Total Write Cycle Length */ -#define SMC_CYCLE_NWE_CYCLE(value) ((SMC_CYCLE_NWE_CYCLE_Msk & ((value) << SMC_CYCLE_NWE_CYCLE_Pos))) -#define SMC_CYCLE_NRD_CYCLE_Pos 16 -#define SMC_CYCLE_NRD_CYCLE_Msk (0x1ffu << SMC_CYCLE_NRD_CYCLE_Pos) /**< \brief (SMC_CYCLE) Total Read Cycle Length */ -#define SMC_CYCLE_NRD_CYCLE(value) ((SMC_CYCLE_NRD_CYCLE_Msk & ((value) << SMC_CYCLE_NRD_CYCLE_Pos))) -/* -------- SMC_MODE : (SMC Offset: N/A) SMC Mode Register -------- */ -#define SMC_MODE_READ_MODE (0x1u << 0) /**< \brief (SMC_MODE) */ -#define SMC_MODE_WRITE_MODE (0x1u << 1) /**< \brief (SMC_MODE) */ -#define SMC_MODE_EXNW_MODE_Pos 4 -#define SMC_MODE_EXNW_MODE_Msk (0x3u << SMC_MODE_EXNW_MODE_Pos) /**< \brief (SMC_MODE) NWAIT Mode */ -#define SMC_MODE_EXNW_MODE_DISABLED (0x0u << 4) /**< \brief (SMC_MODE) Disabled */ -#define SMC_MODE_EXNW_MODE_FROZEN (0x2u << 4) /**< \brief (SMC_MODE) Frozen Mode */ -#define SMC_MODE_EXNW_MODE_READY (0x3u << 4) /**< \brief (SMC_MODE) Ready Mode */ -#define SMC_MODE_TDF_CYCLES_Pos 16 -#define SMC_MODE_TDF_CYCLES_Msk (0xfu << SMC_MODE_TDF_CYCLES_Pos) /**< \brief (SMC_MODE) Data Float Time */ -#define SMC_MODE_TDF_CYCLES(value) ((SMC_MODE_TDF_CYCLES_Msk & ((value) << SMC_MODE_TDF_CYCLES_Pos))) -#define SMC_MODE_TDF_MODE (0x1u << 20) /**< \brief (SMC_MODE) TDF Optimization */ -#define SMC_MODE_PMEN (0x1u << 24) /**< \brief (SMC_MODE) Page Mode Enabled */ -#define SMC_MODE_PS_Pos 28 -#define SMC_MODE_PS_Msk (0x3u << SMC_MODE_PS_Pos) /**< \brief (SMC_MODE) Page Size */ -#define SMC_MODE_PS_4_BYTE (0x0u << 28) /**< \brief (SMC_MODE) 4-byte page */ -#define SMC_MODE_PS_8_BYTE (0x1u << 28) /**< \brief (SMC_MODE) 8-byte page */ -#define SMC_MODE_PS_16_BYTE (0x2u << 28) /**< \brief (SMC_MODE) 16-byte page */ -#define SMC_MODE_PS_32_BYTE (0x3u << 28) /**< \brief (SMC_MODE) 32-byte page */ -/* -------- SMC_OCMS : (SMC Offset: 0x80) SMC OCMS MODE Register -------- */ -#define SMC_OCMS_SMSE (0x1u << 0) /**< \brief (SMC_OCMS) Static Memory Controller Scrambling Enable */ -#define SMC_OCMS_CS0SE (0x1u << 16) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ -#define SMC_OCMS_CS1SE (0x1u << 17) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ -#define SMC_OCMS_CS2SE (0x1u << 18) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ -#define SMC_OCMS_CS3SE (0x1u << 19) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ -/* -------- SMC_KEY1 : (SMC Offset: 0x84) SMC OCMS KEY1 Register -------- */ -#define SMC_KEY1_KEY1_Pos 0 -#define SMC_KEY1_KEY1_Msk (0xffffffffu << SMC_KEY1_KEY1_Pos) /**< \brief (SMC_KEY1) Off Chip Memory Scrambling (OCMS) Key Part 1 */ -#define SMC_KEY1_KEY1(value) ((SMC_KEY1_KEY1_Msk & ((value) << SMC_KEY1_KEY1_Pos))) -/* -------- SMC_KEY2 : (SMC Offset: 0x88) SMC OCMS KEY2 Register -------- */ -#define SMC_KEY2_KEY2_Pos 0 -#define SMC_KEY2_KEY2_Msk (0xffffffffu << SMC_KEY2_KEY2_Pos) /**< \brief (SMC_KEY2) Off Chip Memory Scrambling (OCMS) Key Part 2 */ -#define SMC_KEY2_KEY2(value) ((SMC_KEY2_KEY2_Msk & ((value) << SMC_KEY2_KEY2_Pos))) -/* -------- SMC_WPMR : (SMC Offset: 0xE4) SMC Write Protect Mode Register -------- */ -#define SMC_WPMR_WPEN (0x1u << 0) /**< \brief (SMC_WPMR) Write Protect Enable */ -#define SMC_WPMR_WPKEY_Pos 8 -#define SMC_WPMR_WPKEY_Msk (0xffffffu << SMC_WPMR_WPKEY_Pos) /**< \brief (SMC_WPMR) Write Protect KEY */ -#define SMC_WPMR_WPKEY(value) ((SMC_WPMR_WPKEY_Msk & ((value) << SMC_WPMR_WPKEY_Pos))) -/* -------- SMC_WPSR : (SMC Offset: 0xE8) SMC Write Protect Status Register -------- */ -#define SMC_WPSR_WPVS (0x1u << 0) /**< \brief (SMC_WPSR) Write Protect Enable */ -#define SMC_WPSR_WPVSRC_Pos 8 -#define SMC_WPSR_WPVSRC_Msk (0xffffu << SMC_WPSR_WPVSRC_Pos) /**< \brief (SMC_WPSR) Write Protect Violation Source */ - -/*@}*/ - - -#endif /* _SAM4E_SMC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/spi.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/spi.h deleted file mode 100644 index e42695864..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/spi.h +++ /dev/null @@ -1,238 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_SPI_COMPONENT_ -#define _SAM4E_SPI_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Serial Peripheral Interface */ -/* ============================================================================= */ -/** \addtogroup SAM4E_SPI Serial Peripheral Interface */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Spi hardware registers */ -typedef struct { - WoReg SPI_CR; /**< \brief (Spi Offset: 0x00) Control Register */ - RwReg SPI_MR; /**< \brief (Spi Offset: 0x04) Mode Register */ - RoReg SPI_RDR; /**< \brief (Spi Offset: 0x08) Receive Data Register */ - WoReg SPI_TDR; /**< \brief (Spi Offset: 0x0C) Transmit Data Register */ - RoReg SPI_SR; /**< \brief (Spi Offset: 0x10) Status Register */ - WoReg SPI_IER; /**< \brief (Spi Offset: 0x14) Interrupt Enable Register */ - WoReg SPI_IDR; /**< \brief (Spi Offset: 0x18) Interrupt Disable Register */ - RoReg SPI_IMR; /**< \brief (Spi Offset: 0x1C) Interrupt Mask Register */ - RoReg Reserved1[4]; - RwReg SPI_CSR[4]; /**< \brief (Spi Offset: 0x30) Chip Select Register */ - RoReg Reserved2[41]; - RwReg SPI_WPMR; /**< \brief (Spi Offset: 0xE4) Write Protection Control Register */ - RoReg SPI_WPSR; /**< \brief (Spi Offset: 0xE8) Write Protection Status Register */ - RoReg Reserved3[5]; - RwReg SPI_RPR; /**< \brief (Spi Offset: 0x100) Receive Pointer Register */ - RwReg SPI_RCR; /**< \brief (Spi Offset: 0x104) Receive Counter Register */ - RwReg SPI_TPR; /**< \brief (Spi Offset: 0x108) Transmit Pointer Register */ - RwReg SPI_TCR; /**< \brief (Spi Offset: 0x10C) Transmit Counter Register */ - RwReg SPI_RNPR; /**< \brief (Spi Offset: 0x110) Receive Next Pointer Register */ - RwReg SPI_RNCR; /**< \brief (Spi Offset: 0x114) Receive Next Counter Register */ - RwReg SPI_TNPR; /**< \brief (Spi Offset: 0x118) Transmit Next Pointer Register */ - RwReg SPI_TNCR; /**< \brief (Spi Offset: 0x11C) Transmit Next Counter Register */ - WoReg SPI_PTCR; /**< \brief (Spi Offset: 0x120) Transfer Control Register */ - RoReg SPI_PTSR; /**< \brief (Spi Offset: 0x124) Transfer Status Register */ -} Spi; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- SPI_CR : (SPI Offset: 0x00) Control Register -------- */ -#define SPI_CR_SPIEN (0x1u << 0) /**< \brief (SPI_CR) SPI Enable */ -#define SPI_CR_SPIDIS (0x1u << 1) /**< \brief (SPI_CR) SPI Disable */ -#define SPI_CR_SWRST (0x1u << 7) /**< \brief (SPI_CR) SPI Software Reset */ -#define SPI_CR_LASTXFER (0x1u << 24) /**< \brief (SPI_CR) Last Transfer */ -/* -------- SPI_MR : (SPI Offset: 0x04) Mode Register -------- */ -#define SPI_MR_MSTR (0x1u << 0) /**< \brief (SPI_MR) Master/Slave Mode */ -#define SPI_MR_PS (0x1u << 1) /**< \brief (SPI_MR) Peripheral Select */ -#define SPI_MR_PCSDEC (0x1u << 2) /**< \brief (SPI_MR) Chip Select Decode */ -#define SPI_MR_MODFDIS (0x1u << 4) /**< \brief (SPI_MR) Mode Fault Detection */ -#define SPI_MR_WDRBT (0x1u << 5) /**< \brief (SPI_MR) Wait Data Read Before Transfer */ -#define SPI_MR_LLB (0x1u << 7) /**< \brief (SPI_MR) Local Loopback Enable */ -#define SPI_MR_PCS_Pos 16 -#define SPI_MR_PCS_Msk (0xfu << SPI_MR_PCS_Pos) /**< \brief (SPI_MR) Peripheral Chip Select */ -#define SPI_MR_PCS(value) ((SPI_MR_PCS_Msk & ((value) << SPI_MR_PCS_Pos))) -#define SPI_MR_DLYBCS_Pos 24 -#define SPI_MR_DLYBCS_Msk (0xffu << SPI_MR_DLYBCS_Pos) /**< \brief (SPI_MR) Delay Between Chip Selects */ -#define SPI_MR_DLYBCS(value) ((SPI_MR_DLYBCS_Msk & ((value) << SPI_MR_DLYBCS_Pos))) -/* -------- SPI_RDR : (SPI Offset: 0x08) Receive Data Register -------- */ -#define SPI_RDR_RD_Pos 0 -#define SPI_RDR_RD_Msk (0xffffu << SPI_RDR_RD_Pos) /**< \brief (SPI_RDR) Receive Data */ -#define SPI_RDR_PCS_Pos 16 -#define SPI_RDR_PCS_Msk (0xfu << SPI_RDR_PCS_Pos) /**< \brief (SPI_RDR) Peripheral Chip Select */ -/* -------- SPI_TDR : (SPI Offset: 0x0C) Transmit Data Register -------- */ -#define SPI_TDR_TD_Pos 0 -#define SPI_TDR_TD_Msk (0xffffu << SPI_TDR_TD_Pos) /**< \brief (SPI_TDR) Transmit Data */ -#define SPI_TDR_TD(value) ((SPI_TDR_TD_Msk & ((value) << SPI_TDR_TD_Pos))) -#define SPI_TDR_PCS_Pos 16 -#define SPI_TDR_PCS_Msk (0xfu << SPI_TDR_PCS_Pos) /**< \brief (SPI_TDR) Peripheral Chip Select */ -#define SPI_TDR_PCS(value) ((SPI_TDR_PCS_Msk & ((value) << SPI_TDR_PCS_Pos))) -#define SPI_TDR_LASTXFER (0x1u << 24) /**< \brief (SPI_TDR) Last Transfer */ -/* -------- SPI_SR : (SPI Offset: 0x10) Status Register -------- */ -#define SPI_SR_RDRF (0x1u << 0) /**< \brief (SPI_SR) Receive Data Register Full */ -#define SPI_SR_TDRE (0x1u << 1) /**< \brief (SPI_SR) Transmit Data Register Empty */ -#define SPI_SR_MODF (0x1u << 2) /**< \brief (SPI_SR) Mode Fault Error */ -#define SPI_SR_OVRES (0x1u << 3) /**< \brief (SPI_SR) Overrun Error Status */ -#define SPI_SR_ENDRX (0x1u << 4) /**< \brief (SPI_SR) End of RX buffer */ -#define SPI_SR_ENDTX (0x1u << 5) /**< \brief (SPI_SR) End of TX buffer */ -#define SPI_SR_RXBUFF (0x1u << 6) /**< \brief (SPI_SR) RX Buffer Full */ -#define SPI_SR_TXBUFE (0x1u << 7) /**< \brief (SPI_SR) TX Buffer Empty */ -#define SPI_SR_NSSR (0x1u << 8) /**< \brief (SPI_SR) NSS Rising */ -#define SPI_SR_TXEMPTY (0x1u << 9) /**< \brief (SPI_SR) Transmission Registers Empty */ -#define SPI_SR_UNDES (0x1u << 10) /**< \brief (SPI_SR) Underrun Error Status (Slave Mode Only) */ -#define SPI_SR_SPIENS (0x1u << 16) /**< \brief (SPI_SR) SPI Enable Status */ -/* -------- SPI_IER : (SPI Offset: 0x14) Interrupt Enable Register -------- */ -#define SPI_IER_RDRF (0x1u << 0) /**< \brief (SPI_IER) Receive Data Register Full Interrupt Enable */ -#define SPI_IER_TDRE (0x1u << 1) /**< \brief (SPI_IER) SPI Transmit Data Register Empty Interrupt Enable */ -#define SPI_IER_MODF (0x1u << 2) /**< \brief (SPI_IER) Mode Fault Error Interrupt Enable */ -#define SPI_IER_OVRES (0x1u << 3) /**< \brief (SPI_IER) Overrun Error Interrupt Enable */ -#define SPI_IER_ENDRX (0x1u << 4) /**< \brief (SPI_IER) End of Receive Buffer Interrupt Enable */ -#define SPI_IER_ENDTX (0x1u << 5) /**< \brief (SPI_IER) End of Transmit Buffer Interrupt Enable */ -#define SPI_IER_RXBUFF (0x1u << 6) /**< \brief (SPI_IER) Receive Buffer Full Interrupt Enable */ -#define SPI_IER_TXBUFE (0x1u << 7) /**< \brief (SPI_IER) Transmit Buffer Empty Interrupt Enable */ -#define SPI_IER_NSSR (0x1u << 8) /**< \brief (SPI_IER) NSS Rising Interrupt Enable */ -#define SPI_IER_TXEMPTY (0x1u << 9) /**< \brief (SPI_IER) Transmission Registers Empty Enable */ -#define SPI_IER_UNDES (0x1u << 10) /**< \brief (SPI_IER) Underrun Error Interrupt Enable */ -/* -------- SPI_IDR : (SPI Offset: 0x18) Interrupt Disable Register -------- */ -#define SPI_IDR_RDRF (0x1u << 0) /**< \brief (SPI_IDR) Receive Data Register Full Interrupt Disable */ -#define SPI_IDR_TDRE (0x1u << 1) /**< \brief (SPI_IDR) SPI Transmit Data Register Empty Interrupt Disable */ -#define SPI_IDR_MODF (0x1u << 2) /**< \brief (SPI_IDR) Mode Fault Error Interrupt Disable */ -#define SPI_IDR_OVRES (0x1u << 3) /**< \brief (SPI_IDR) Overrun Error Interrupt Disable */ -#define SPI_IDR_ENDRX (0x1u << 4) /**< \brief (SPI_IDR) End of Receive Buffer Interrupt Disable */ -#define SPI_IDR_ENDTX (0x1u << 5) /**< \brief (SPI_IDR) End of Transmit Buffer Interrupt Disable */ -#define SPI_IDR_RXBUFF (0x1u << 6) /**< \brief (SPI_IDR) Receive Buffer Full Interrupt Disable */ -#define SPI_IDR_TXBUFE (0x1u << 7) /**< \brief (SPI_IDR) Transmit Buffer Empty Interrupt Disable */ -#define SPI_IDR_NSSR (0x1u << 8) /**< \brief (SPI_IDR) NSS Rising Interrupt Disable */ -#define SPI_IDR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IDR) Transmission Registers Empty Disable */ -#define SPI_IDR_UNDES (0x1u << 10) /**< \brief (SPI_IDR) Underrun Error Interrupt Disable */ -/* -------- SPI_IMR : (SPI Offset: 0x1C) Interrupt Mask Register -------- */ -#define SPI_IMR_RDRF (0x1u << 0) /**< \brief (SPI_IMR) Receive Data Register Full Interrupt Mask */ -#define SPI_IMR_TDRE (0x1u << 1) /**< \brief (SPI_IMR) SPI Transmit Data Register Empty Interrupt Mask */ -#define SPI_IMR_MODF (0x1u << 2) /**< \brief (SPI_IMR) Mode Fault Error Interrupt Mask */ -#define SPI_IMR_OVRES (0x1u << 3) /**< \brief (SPI_IMR) Overrun Error Interrupt Mask */ -#define SPI_IMR_ENDRX (0x1u << 4) /**< \brief (SPI_IMR) End of Receive Buffer Interrupt Mask */ -#define SPI_IMR_ENDTX (0x1u << 5) /**< \brief (SPI_IMR) End of Transmit Buffer Interrupt Mask */ -#define SPI_IMR_RXBUFF (0x1u << 6) /**< \brief (SPI_IMR) Receive Buffer Full Interrupt Mask */ -#define SPI_IMR_TXBUFE (0x1u << 7) /**< \brief (SPI_IMR) Transmit Buffer Empty Interrupt Mask */ -#define SPI_IMR_NSSR (0x1u << 8) /**< \brief (SPI_IMR) NSS Rising Interrupt Mask */ -#define SPI_IMR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IMR) Transmission Registers Empty Mask */ -#define SPI_IMR_UNDES (0x1u << 10) /**< \brief (SPI_IMR) Underrun Error Interrupt Mask */ -/* -------- SPI_CSR[4] : (SPI Offset: 0x30) Chip Select Register -------- */ -#define SPI_CSR_CPOL (0x1u << 0) /**< \brief (SPI_CSR[4]) Clock Polarity */ -#define SPI_CSR_NCPHA (0x1u << 1) /**< \brief (SPI_CSR[4]) Clock Phase */ -#define SPI_CSR_CSNAAT (0x1u << 2) /**< \brief (SPI_CSR[4]) Chip Select Not Active After Transfer (Ignored if CSAAT = 1) */ -#define SPI_CSR_CSAAT (0x1u << 3) /**< \brief (SPI_CSR[4]) Chip Select Active After Transfer */ -#define SPI_CSR_BITS_Pos 4 -#define SPI_CSR_BITS_Msk (0xfu << SPI_CSR_BITS_Pos) /**< \brief (SPI_CSR[4]) Bits Per Transfer */ -#define SPI_CSR_BITS_8_BIT (0x0u << 4) /**< \brief (SPI_CSR[4]) 8 bits for transfer */ -#define SPI_CSR_BITS_9_BIT (0x1u << 4) /**< \brief (SPI_CSR[4]) 9 bits for transfer */ -#define SPI_CSR_BITS_10_BIT (0x2u << 4) /**< \brief (SPI_CSR[4]) 10 bits for transfer */ -#define SPI_CSR_BITS_11_BIT (0x3u << 4) /**< \brief (SPI_CSR[4]) 11 bits for transfer */ -#define SPI_CSR_BITS_12_BIT (0x4u << 4) /**< \brief (SPI_CSR[4]) 12 bits for transfer */ -#define SPI_CSR_BITS_13_BIT (0x5u << 4) /**< \brief (SPI_CSR[4]) 13 bits for transfer */ -#define SPI_CSR_BITS_14_BIT (0x6u << 4) /**< \brief (SPI_CSR[4]) 14 bits for transfer */ -#define SPI_CSR_BITS_15_BIT (0x7u << 4) /**< \brief (SPI_CSR[4]) 15 bits for transfer */ -#define SPI_CSR_BITS_16_BIT (0x8u << 4) /**< \brief (SPI_CSR[4]) 16 bits for transfer */ -#define SPI_CSR_SCBR_Pos 8 -#define SPI_CSR_SCBR_Msk (0xffu << SPI_CSR_SCBR_Pos) /**< \brief (SPI_CSR[4]) Serial Clock Baud Rate */ -#define SPI_CSR_SCBR(value) ((SPI_CSR_SCBR_Msk & ((value) << SPI_CSR_SCBR_Pos))) -#define SPI_CSR_DLYBS_Pos 16 -#define SPI_CSR_DLYBS_Msk (0xffu << SPI_CSR_DLYBS_Pos) /**< \brief (SPI_CSR[4]) Delay Before SPCK */ -#define SPI_CSR_DLYBS(value) ((SPI_CSR_DLYBS_Msk & ((value) << SPI_CSR_DLYBS_Pos))) -#define SPI_CSR_DLYBCT_Pos 24 -#define SPI_CSR_DLYBCT_Msk (0xffu << SPI_CSR_DLYBCT_Pos) /**< \brief (SPI_CSR[4]) Delay Between Consecutive Transfers */ -#define SPI_CSR_DLYBCT(value) ((SPI_CSR_DLYBCT_Msk & ((value) << SPI_CSR_DLYBCT_Pos))) -/* -------- SPI_WPMR : (SPI Offset: 0xE4) Write Protection Control Register -------- */ -#define SPI_WPMR_WPEN (0x1u << 0) /**< \brief (SPI_WPMR) Write Protection Enable */ -#define SPI_WPMR_WPKEY_Pos 8 -#define SPI_WPMR_WPKEY_Msk (0xffffffu << SPI_WPMR_WPKEY_Pos) /**< \brief (SPI_WPMR) Write Protection Key Password */ -#define SPI_WPMR_WPKEY(value) ((SPI_WPMR_WPKEY_Msk & ((value) << SPI_WPMR_WPKEY_Pos))) -/* -------- SPI_WPSR : (SPI Offset: 0xE8) Write Protection Status Register -------- */ -#define SPI_WPSR_WPVS (0x1u << 0) /**< \brief (SPI_WPSR) Write Protection Violation Status */ -#define SPI_WPSR_WPVSRC_Pos 8 -#define SPI_WPSR_WPVSRC_Msk (0xffu << SPI_WPSR_WPVSRC_Pos) /**< \brief (SPI_WPSR) Write Protection Violation Source */ -/* -------- SPI_RPR : (SPI Offset: 0x100) Receive Pointer Register -------- */ -#define SPI_RPR_RXPTR_Pos 0 -#define SPI_RPR_RXPTR_Msk (0xffffffffu << SPI_RPR_RXPTR_Pos) /**< \brief (SPI_RPR) Receive Pointer Register */ -#define SPI_RPR_RXPTR(value) ((SPI_RPR_RXPTR_Msk & ((value) << SPI_RPR_RXPTR_Pos))) -/* -------- SPI_RCR : (SPI Offset: 0x104) Receive Counter Register -------- */ -#define SPI_RCR_RXCTR_Pos 0 -#define SPI_RCR_RXCTR_Msk (0xffffu << SPI_RCR_RXCTR_Pos) /**< \brief (SPI_RCR) Receive Counter Register */ -#define SPI_RCR_RXCTR(value) ((SPI_RCR_RXCTR_Msk & ((value) << SPI_RCR_RXCTR_Pos))) -/* -------- SPI_TPR : (SPI Offset: 0x108) Transmit Pointer Register -------- */ -#define SPI_TPR_TXPTR_Pos 0 -#define SPI_TPR_TXPTR_Msk (0xffffffffu << SPI_TPR_TXPTR_Pos) /**< \brief (SPI_TPR) Transmit Counter Register */ -#define SPI_TPR_TXPTR(value) ((SPI_TPR_TXPTR_Msk & ((value) << SPI_TPR_TXPTR_Pos))) -/* -------- SPI_TCR : (SPI Offset: 0x10C) Transmit Counter Register -------- */ -#define SPI_TCR_TXCTR_Pos 0 -#define SPI_TCR_TXCTR_Msk (0xffffu << SPI_TCR_TXCTR_Pos) /**< \brief (SPI_TCR) Transmit Counter Register */ -#define SPI_TCR_TXCTR(value) ((SPI_TCR_TXCTR_Msk & ((value) << SPI_TCR_TXCTR_Pos))) -/* -------- SPI_RNPR : (SPI Offset: 0x110) Receive Next Pointer Register -------- */ -#define SPI_RNPR_RXNPTR_Pos 0 -#define SPI_RNPR_RXNPTR_Msk (0xffffffffu << SPI_RNPR_RXNPTR_Pos) /**< \brief (SPI_RNPR) Receive Next Pointer */ -#define SPI_RNPR_RXNPTR(value) ((SPI_RNPR_RXNPTR_Msk & ((value) << SPI_RNPR_RXNPTR_Pos))) -/* -------- SPI_RNCR : (SPI Offset: 0x114) Receive Next Counter Register -------- */ -#define SPI_RNCR_RXNCTR_Pos 0 -#define SPI_RNCR_RXNCTR_Msk (0xffffu << SPI_RNCR_RXNCTR_Pos) /**< \brief (SPI_RNCR) Receive Next Counter */ -#define SPI_RNCR_RXNCTR(value) ((SPI_RNCR_RXNCTR_Msk & ((value) << SPI_RNCR_RXNCTR_Pos))) -/* -------- SPI_TNPR : (SPI Offset: 0x118) Transmit Next Pointer Register -------- */ -#define SPI_TNPR_TXNPTR_Pos 0 -#define SPI_TNPR_TXNPTR_Msk (0xffffffffu << SPI_TNPR_TXNPTR_Pos) /**< \brief (SPI_TNPR) Transmit Next Pointer */ -#define SPI_TNPR_TXNPTR(value) ((SPI_TNPR_TXNPTR_Msk & ((value) << SPI_TNPR_TXNPTR_Pos))) -/* -------- SPI_TNCR : (SPI Offset: 0x11C) Transmit Next Counter Register -------- */ -#define SPI_TNCR_TXNCTR_Pos 0 -#define SPI_TNCR_TXNCTR_Msk (0xffffu << SPI_TNCR_TXNCTR_Pos) /**< \brief (SPI_TNCR) Transmit Counter Next */ -#define SPI_TNCR_TXNCTR(value) ((SPI_TNCR_TXNCTR_Msk & ((value) << SPI_TNCR_TXNCTR_Pos))) -/* -------- SPI_PTCR : (SPI Offset: 0x120) Transfer Control Register -------- */ -#define SPI_PTCR_RXTEN (0x1u << 0) /**< \brief (SPI_PTCR) Receiver Transfer Enable */ -#define SPI_PTCR_RXTDIS (0x1u << 1) /**< \brief (SPI_PTCR) Receiver Transfer Disable */ -#define SPI_PTCR_TXTEN (0x1u << 8) /**< \brief (SPI_PTCR) Transmitter Transfer Enable */ -#define SPI_PTCR_TXTDIS (0x1u << 9) /**< \brief (SPI_PTCR) Transmitter Transfer Disable */ -/* -------- SPI_PTSR : (SPI Offset: 0x124) Transfer Status Register -------- */ -#define SPI_PTSR_RXTEN (0x1u << 0) /**< \brief (SPI_PTSR) Receiver Transfer Enable */ -#define SPI_PTSR_TXTEN (0x1u << 8) /**< \brief (SPI_PTSR) Transmitter Transfer Enable */ - -/*@}*/ - - -#endif /* _SAM4E_SPI_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/supc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/supc.h deleted file mode 100644 index 903ab9c8c..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/supc.h +++ /dev/null @@ -1,336 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_SUPC_COMPONENT_ -#define _SAM4E_SUPC_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Supply Controller */ -/* ============================================================================= */ -/** \addtogroup SAM4E_SUPC Supply Controller */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Supc hardware registers */ -typedef struct { - WoReg SUPC_CR; /**< \brief (Supc Offset: 0x00) Supply Controller Control Register */ - RwReg SUPC_SMMR; /**< \brief (Supc Offset: 0x04) Supply Controller Supply Monitor Mode Register */ - RwReg SUPC_MR; /**< \brief (Supc Offset: 0x08) Supply Controller Mode Register */ - RwReg SUPC_WUMR; /**< \brief (Supc Offset: 0x0C) Supply Controller Wake-up Mode Register */ - RwReg SUPC_WUIR; /**< \brief (Supc Offset: 0x10) Supply Controller Wake-up Inputs Register */ - RoReg SUPC_SR; /**< \brief (Supc Offset: 0x14) Supply Controller Status Register */ -} Supc; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- SUPC_CR : (SUPC Offset: 0x00) Supply Controller Control Register -------- */ -#define SUPC_CR_VROFF (0x1u << 2) /**< \brief (SUPC_CR) Voltage Regulator Off */ -#define SUPC_CR_VROFF_NO_EFFECT (0x0u << 2) /**< \brief (SUPC_CR) no effect. */ -#define SUPC_CR_VROFF_STOP_VREG (0x1u << 2) /**< \brief (SUPC_CR) if KEY is correct, asserts the vddcore_nreset and stops the voltage regulator. */ -#define SUPC_CR_XTALSEL (0x1u << 3) /**< \brief (SUPC_CR) Crystal Oscillator Select */ -#define SUPC_CR_XTALSEL_NO_EFFECT (0x0u << 3) /**< \brief (SUPC_CR) no effect. */ -#define SUPC_CR_XTALSEL_CRYSTAL_SEL (0x1u << 3) /**< \brief (SUPC_CR) if KEY is correct, switches the slow clock on the crystal oscillator output. */ -#define SUPC_CR_KEY_Pos 24 -#define SUPC_CR_KEY_Msk (0xffu << SUPC_CR_KEY_Pos) /**< \brief (SUPC_CR) Password */ -#define SUPC_CR_KEY(value) ((SUPC_CR_KEY_Msk & ((value) << SUPC_CR_KEY_Pos))) -/* -------- SUPC_SMMR : (SUPC Offset: 0x04) Supply Controller Supply Monitor Mode Register -------- */ -#define SUPC_SMMR_SMTH_Pos 0 -#define SUPC_SMMR_SMTH_Msk (0xfu << SUPC_SMMR_SMTH_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Threshold */ -#define SUPC_SMMR_SMTH(value) ((SUPC_SMMR_SMTH_Msk & ((value) << SUPC_SMMR_SMTH_Pos))) -#define SUPC_SMMR_SMSMPL_Pos 8 -#define SUPC_SMMR_SMSMPL_Msk (0x7u << SUPC_SMMR_SMSMPL_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Sampling Period */ -#define SUPC_SMMR_SMSMPL_SMD (0x0u << 8) /**< \brief (SUPC_SMMR) Supply Monitor disabled */ -#define SUPC_SMMR_SMSMPL_CSM (0x1u << 8) /**< \brief (SUPC_SMMR) Continuous Supply Monitor */ -#define SUPC_SMMR_SMSMPL_32SLCK (0x2u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 32 SLCK periods */ -#define SUPC_SMMR_SMSMPL_256SLCK (0x3u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 256 SLCK periods */ -#define SUPC_SMMR_SMSMPL_2048SLCK (0x4u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 2,048 SLCK periods */ -#define SUPC_SMMR_SMRSTEN (0x1u << 12) /**< \brief (SUPC_SMMR) Supply Monitor Reset Enable */ -#define SUPC_SMMR_SMRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_SMMR) the core reset signal "vddcore_nreset" is not affected when a supply monitor detection occurs. */ -#define SUPC_SMMR_SMRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_SMMR) the core reset signal, vddcore_nreset is asserted when a supply monitor detection occurs. */ -#define SUPC_SMMR_SMIEN (0x1u << 13) /**< \brief (SUPC_SMMR) Supply Monitor Interrupt Enable */ -#define SUPC_SMMR_SMIEN_NOT_ENABLE (0x0u << 13) /**< \brief (SUPC_SMMR) the SUPC interrupt signal is not affected when a supply monitor detection occurs. */ -#define SUPC_SMMR_SMIEN_ENABLE (0x1u << 13) /**< \brief (SUPC_SMMR) the SUPC interrupt signal is asserted when a supply monitor detection occurs. */ -/* -------- SUPC_MR : (SUPC Offset: 0x08) Supply Controller Mode Register -------- */ -#define SUPC_MR_BODRSTEN (0x1u << 12) /**< \brief (SUPC_MR) Brownout Detector Reset Enable */ -#define SUPC_MR_BODRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_MR) the core reset signal "vddcore_nreset" is not affected when a brownout detection occurs. */ -#define SUPC_MR_BODRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_MR) the core reset signal, vddcore_nreset is asserted when a brownout detection occurs. */ -#define SUPC_MR_BODDIS (0x1u << 13) /**< \brief (SUPC_MR) Brownout Detector Disable */ -#define SUPC_MR_BODDIS_ENABLE (0x0u << 13) /**< \brief (SUPC_MR) the core brownout detector is enabled. */ -#define SUPC_MR_BODDIS_DISABLE (0x1u << 13) /**< \brief (SUPC_MR) the core brownout detector is disabled. */ -#define SUPC_MR_ONREG (0x1u << 14) /**< \brief (SUPC_MR) Voltage Regulator enable */ -#define SUPC_MR_ONREG_ONREG_UNUSED (0x0u << 14) /**< \brief (SUPC_MR) Internal voltage regulator is not used (external power supply is used) */ -#define SUPC_MR_ONREG_ONREG_USED (0x1u << 14) /**< \brief (SUPC_MR) internal voltage regulator is used */ -#define SUPC_MR_OSCBYPASS (0x1u << 20) /**< \brief (SUPC_MR) Oscillator Bypass */ -#define SUPC_MR_OSCBYPASS_NO_EFFECT (0x0u << 20) /**< \brief (SUPC_MR) no effect. Clock selection depends on XTALSEL value. */ -#define SUPC_MR_OSCBYPASS_BYPASS (0x1u << 20) /**< \brief (SUPC_MR) the 32-KHz XTAL oscillator is selected and is put in bypass mode. */ -#define SUPC_MR_KEY_Pos 24 -#define SUPC_MR_KEY_Msk (0xffu << SUPC_MR_KEY_Pos) /**< \brief (SUPC_MR) Password Key */ -#define SUPC_MR_KEY(value) ((SUPC_MR_KEY_Msk & ((value) << SUPC_MR_KEY_Pos))) -/* -------- SUPC_WUMR : (SUPC Offset: 0x0C) Supply Controller Wake-up Mode Register -------- */ -#define SUPC_WUMR_FWUPEN (0x1u << 0) /**< \brief (SUPC_WUMR) Force Wake-up Enable */ -#define SUPC_WUMR_FWUPEN_NOT_ENABLE (0x0u << 0) /**< \brief (SUPC_WUMR) the Force Wake-up pin has no wake-up effect. */ -#define SUPC_WUMR_FWUPEN_ENABLE (0x1u << 0) /**< \brief (SUPC_WUMR) the Force Wake-up pin low forces the wake-up of the core power supply. */ -#define SUPC_WUMR_SMEN (0x1u << 1) /**< \brief (SUPC_WUMR) Supply Monitor Wake-up Enable */ -#define SUPC_WUMR_SMEN_NOT_ENABLE (0x0u << 1) /**< \brief (SUPC_WUMR) the supply monitor detection has no wake-up effect. */ -#define SUPC_WUMR_SMEN_ENABLE (0x1u << 1) /**< \brief (SUPC_WUMR) the supply monitor detection forces the wake-up of the core power supply. */ -#define SUPC_WUMR_RTTEN (0x1u << 2) /**< \brief (SUPC_WUMR) Real Time Timer Wake-up Enable */ -#define SUPC_WUMR_RTTEN_NOT_ENABLE (0x0u << 2) /**< \brief (SUPC_WUMR) the RTT alarm signal has no wake-up effect. */ -#define SUPC_WUMR_RTTEN_ENABLE (0x1u << 2) /**< \brief (SUPC_WUMR) the RTT alarm signal forces the wake-up of the core power supply. */ -#define SUPC_WUMR_RTCEN (0x1u << 3) /**< \brief (SUPC_WUMR) Real Time Clock Wake-up Enable */ -#define SUPC_WUMR_RTCEN_NOT_ENABLE (0x0u << 3) /**< \brief (SUPC_WUMR) the RTC alarm signal has no wake-up effect. */ -#define SUPC_WUMR_RTCEN_ENABLE (0x1u << 3) /**< \brief (SUPC_WUMR) the RTC alarm signal forces the wake-up of the core power supply. */ -#define SUPC_WUMR_LPDBCEN0 (0x1u << 5) /**< \brief (SUPC_WUMR) Low power Debouncer ENable WKUP0 */ -#define SUPC_WUMR_LPDBCEN0_NOT_ENABLE (0x0u << 5) /**< \brief (SUPC_WUMR) the WKUP0 input pin is not connected with low power debouncer. */ -#define SUPC_WUMR_LPDBCEN0_ENABLE (0x1u << 5) /**< \brief (SUPC_WUMR) the WKUP0 input pin is connected with low power debouncer and can force a core wake-up. */ -#define SUPC_WUMR_LPDBCEN1 (0x1u << 6) /**< \brief (SUPC_WUMR) Low power Debouncer ENable WKUP1 */ -#define SUPC_WUMR_LPDBCEN1_NOT_ENABLE (0x0u << 6) /**< \brief (SUPC_WUMR) the WKUP1input pin is not connected with low power debouncer. */ -#define SUPC_WUMR_LPDBCEN1_ENABLE (0x1u << 6) /**< \brief (SUPC_WUMR) the WKUP1 input pin is connected with low power debouncer and can force a core wake-up. */ -#define SUPC_WUMR_LPDBCCLR (0x1u << 7) /**< \brief (SUPC_WUMR) Low power Debouncer Clear */ -#define SUPC_WUMR_LPDBCCLR_NOT_ENABLE (0x0u << 7) /**< \brief (SUPC_WUMR) a low power debounce event does not create an immediate clear on first half GPBR registers. */ -#define SUPC_WUMR_LPDBCCLR_ENABLE (0x1u << 7) /**< \brief (SUPC_WUMR) a low power debounce event on WKUP0 or WKUP1 generates an immediate clear on first half GPBR registers. */ -#define SUPC_WUMR_FWUPDBC_Pos 8 -#define SUPC_WUMR_FWUPDBC_Msk (0x7u << SUPC_WUMR_FWUPDBC_Pos) /**< \brief (SUPC_WUMR) Force Wake-up Debouncer Period */ -#define SUPC_WUMR_FWUPDBC_IMMEDIATE (0x0u << 8) /**< \brief (SUPC_WUMR) Immediate, no debouncing, detected active at least on one Slow Clock edge. */ -#define SUPC_WUMR_FWUPDBC_3_SCLK (0x1u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 3 SLCK periods */ -#define SUPC_WUMR_FWUPDBC_32_SCLK (0x2u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 32 SLCK periods */ -#define SUPC_WUMR_FWUPDBC_512_SCLK (0x3u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 512 SLCK periods */ -#define SUPC_WUMR_FWUPDBC_4096_SCLK (0x4u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 4,096 SLCK periods */ -#define SUPC_WUMR_FWUPDBC_32768_SCLK (0x5u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 32,768 SLCK periods */ -#define SUPC_WUMR_WKUPDBC_Pos 12 -#define SUPC_WUMR_WKUPDBC_Msk (0x7u << SUPC_WUMR_WKUPDBC_Pos) /**< \brief (SUPC_WUMR) Wake-up Inputs Debouncer Period */ -#define SUPC_WUMR_WKUPDBC_IMMEDIATE (0x0u << 12) /**< \brief (SUPC_WUMR) Immediate, no debouncing, detected active at least on one Slow Clock edge. */ -#define SUPC_WUMR_WKUPDBC_3_SCLK (0x1u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 3 SLCK periods */ -#define SUPC_WUMR_WKUPDBC_32_SCLK (0x2u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32 SLCK periods */ -#define SUPC_WUMR_WKUPDBC_512_SCLK (0x3u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 512 SLCK periods */ -#define SUPC_WUMR_WKUPDBC_4096_SCLK (0x4u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 4,096 SLCK periods */ -#define SUPC_WUMR_WKUPDBC_32768_SCLK (0x5u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32,768 SLCK periods */ -#define SUPC_WUMR_LPDBC_Pos 16 -#define SUPC_WUMR_LPDBC_Msk (0x7u << SUPC_WUMR_LPDBC_Pos) /**< \brief (SUPC_WUMR) Low Power DeBounCer Period */ -#define SUPC_WUMR_LPDBC_DISABLE (0x0u << 16) /**< \brief (SUPC_WUMR) Disable the low power debouncer. */ -#define SUPC_WUMR_LPDBC_2_RTCOUT0 (0x1u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 2 RTCOUT0 periods */ -#define SUPC_WUMR_LPDBC_3_RTCOUT0 (0x2u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 3 RTCOUT0 periods */ -#define SUPC_WUMR_LPDBC_4_RTCOUT0 (0x3u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 4 RTCOUT0 periods */ -#define SUPC_WUMR_LPDBC_5_RTCOUT0 (0x4u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 5 RTCOUT0 periods */ -#define SUPC_WUMR_LPDBC_6_RTCOUT0 (0x5u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 6 RTCOUT0 periods */ -#define SUPC_WUMR_LPDBC_7_RTCOUT0 (0x6u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 7 RTCOUT0 periods */ -#define SUPC_WUMR_LPDBC_8_RTCOUT0 (0x7u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 8 RTCOUT0 periods */ -/* -------- SUPC_WUIR : (SUPC Offset: 0x10) Supply Controller Wake-up Inputs Register -------- */ -#define SUPC_WUIR_WKUPEN0 (0x1u << 0) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 */ -#define SUPC_WUIR_WKUPEN0_DISABLE (0x0u << 0) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN0_ENABLE (0x1u << 0) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN1 (0x1u << 1) /**< \brief (SUPC_WUIR) Wake-up Input Enable 1 */ -#define SUPC_WUIR_WKUPEN1_DISABLE (0x0u << 1) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN1_ENABLE (0x1u << 1) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN2 (0x1u << 2) /**< \brief (SUPC_WUIR) Wake-up Input Enable 2 */ -#define SUPC_WUIR_WKUPEN2_DISABLE (0x0u << 2) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN2_ENABLE (0x1u << 2) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN3 (0x1u << 3) /**< \brief (SUPC_WUIR) Wake-up Input Enable 3 */ -#define SUPC_WUIR_WKUPEN3_DISABLE (0x0u << 3) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN3_ENABLE (0x1u << 3) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN4 (0x1u << 4) /**< \brief (SUPC_WUIR) Wake-up Input Enable 4 */ -#define SUPC_WUIR_WKUPEN4_DISABLE (0x0u << 4) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN4_ENABLE (0x1u << 4) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN5 (0x1u << 5) /**< \brief (SUPC_WUIR) Wake-up Input Enable 5 */ -#define SUPC_WUIR_WKUPEN5_DISABLE (0x0u << 5) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN5_ENABLE (0x1u << 5) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN6 (0x1u << 6) /**< \brief (SUPC_WUIR) Wake-up Input Enable 6 */ -#define SUPC_WUIR_WKUPEN6_DISABLE (0x0u << 6) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN6_ENABLE (0x1u << 6) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN7 (0x1u << 7) /**< \brief (SUPC_WUIR) Wake-up Input Enable 7 */ -#define SUPC_WUIR_WKUPEN7_DISABLE (0x0u << 7) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN7_ENABLE (0x1u << 7) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN8 (0x1u << 8) /**< \brief (SUPC_WUIR) Wake-up Input Enable 8 */ -#define SUPC_WUIR_WKUPEN8_DISABLE (0x0u << 8) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN8_ENABLE (0x1u << 8) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN9 (0x1u << 9) /**< \brief (SUPC_WUIR) Wake-up Input Enable 9 */ -#define SUPC_WUIR_WKUPEN9_DISABLE (0x0u << 9) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN9_ENABLE (0x1u << 9) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN10 (0x1u << 10) /**< \brief (SUPC_WUIR) Wake-up Input Enable 10 */ -#define SUPC_WUIR_WKUPEN10_DISABLE (0x0u << 10) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN10_ENABLE (0x1u << 10) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN11 (0x1u << 11) /**< \brief (SUPC_WUIR) Wake-up Input Enable 11 */ -#define SUPC_WUIR_WKUPEN11_DISABLE (0x0u << 11) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN11_ENABLE (0x1u << 11) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN12 (0x1u << 12) /**< \brief (SUPC_WUIR) Wake-up Input Enable 12 */ -#define SUPC_WUIR_WKUPEN12_DISABLE (0x0u << 12) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN12_ENABLE (0x1u << 12) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN13 (0x1u << 13) /**< \brief (SUPC_WUIR) Wake-up Input Enable 13 */ -#define SUPC_WUIR_WKUPEN13_DISABLE (0x0u << 13) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN13_ENABLE (0x1u << 13) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN14 (0x1u << 14) /**< \brief (SUPC_WUIR) Wake-up Input Enable 14 */ -#define SUPC_WUIR_WKUPEN14_DISABLE (0x0u << 14) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN14_ENABLE (0x1u << 14) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPEN15 (0x1u << 15) /**< \brief (SUPC_WUIR) Wake-up Input Enable 15 */ -#define SUPC_WUIR_WKUPEN15_DISABLE (0x0u << 15) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake-up effect. */ -#define SUPC_WUIR_WKUPEN15_ENABLE (0x1u << 15) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT0 (0x1u << 16) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 */ -#define SUPC_WUIR_WKUPT0_LOW (0x0u << 16) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT0_HIGH (0x1u << 16) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT1 (0x1u << 17) /**< \brief (SUPC_WUIR) Wake-up Input Type 1 */ -#define SUPC_WUIR_WKUPT1_LOW (0x0u << 17) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT1_HIGH (0x1u << 17) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT2 (0x1u << 18) /**< \brief (SUPC_WUIR) Wake-up Input Type 2 */ -#define SUPC_WUIR_WKUPT2_LOW (0x0u << 18) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT2_HIGH (0x1u << 18) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT3 (0x1u << 19) /**< \brief (SUPC_WUIR) Wake-up Input Type 3 */ -#define SUPC_WUIR_WKUPT3_LOW (0x0u << 19) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT3_HIGH (0x1u << 19) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT4 (0x1u << 20) /**< \brief (SUPC_WUIR) Wake-up Input Type 4 */ -#define SUPC_WUIR_WKUPT4_LOW (0x0u << 20) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT4_HIGH (0x1u << 20) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT5 (0x1u << 21) /**< \brief (SUPC_WUIR) Wake-up Input Type 5 */ -#define SUPC_WUIR_WKUPT5_LOW (0x0u << 21) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT5_HIGH (0x1u << 21) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT6 (0x1u << 22) /**< \brief (SUPC_WUIR) Wake-up Input Type 6 */ -#define SUPC_WUIR_WKUPT6_LOW (0x0u << 22) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT6_HIGH (0x1u << 22) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT7 (0x1u << 23) /**< \brief (SUPC_WUIR) Wake-up Input Type 7 */ -#define SUPC_WUIR_WKUPT7_LOW (0x0u << 23) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT7_HIGH (0x1u << 23) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT8 (0x1u << 24) /**< \brief (SUPC_WUIR) Wake-up Input Type 8 */ -#define SUPC_WUIR_WKUPT8_LOW (0x0u << 24) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT8_HIGH (0x1u << 24) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT9 (0x1u << 25) /**< \brief (SUPC_WUIR) Wake-up Input Type 9 */ -#define SUPC_WUIR_WKUPT9_LOW (0x0u << 25) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT9_HIGH (0x1u << 25) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT10 (0x1u << 26) /**< \brief (SUPC_WUIR) Wake-up Input Type 10 */ -#define SUPC_WUIR_WKUPT10_LOW (0x0u << 26) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT10_HIGH (0x1u << 26) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT11 (0x1u << 27) /**< \brief (SUPC_WUIR) Wake-up Input Type 11 */ -#define SUPC_WUIR_WKUPT11_LOW (0x0u << 27) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT11_HIGH (0x1u << 27) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT12 (0x1u << 28) /**< \brief (SUPC_WUIR) Wake-up Input Type 12 */ -#define SUPC_WUIR_WKUPT12_LOW (0x0u << 28) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT12_HIGH (0x1u << 28) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT13 (0x1u << 29) /**< \brief (SUPC_WUIR) Wake-up Input Type 13 */ -#define SUPC_WUIR_WKUPT13_LOW (0x0u << 29) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT13_HIGH (0x1u << 29) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT14 (0x1u << 30) /**< \brief (SUPC_WUIR) Wake-up Input Type 14 */ -#define SUPC_WUIR_WKUPT14_LOW (0x0u << 30) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT14_HIGH (0x1u << 30) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT15 (0x1u << 31) /**< \brief (SUPC_WUIR) Wake-up Input Type 15 */ -#define SUPC_WUIR_WKUPT15_LOW (0x0u << 31) /**< \brief (SUPC_WUIR) a low level for a period defined by WKUPDBC on the corresponding wake-up input forces the wake-up of the core power supply. */ -#define SUPC_WUIR_WKUPT15_HIGH (0x1u << 31) /**< \brief (SUPC_WUIR) a high level for a period defined by WKUPDBC on the correspond-ing wake-up input forces the wake-up of the core power supply. */ -/* -------- SUPC_SR : (SUPC Offset: 0x14) Supply Controller Status Register -------- */ -#define SUPC_SR_FWUPS (0x1u << 0) /**< \brief (SUPC_SR) FWUP Wake-up Status */ -#define SUPC_SR_FWUPS_NO (0x0u << 0) /**< \brief (SUPC_SR) no wake-up due to the assertion of the FWUP pin has occurred since the last read of SUPC_SR. */ -#define SUPC_SR_FWUPS_PRESENT (0x1u << 0) /**< \brief (SUPC_SR) at least one wake-up due to the assertion of the FWUP pin has occurred since the last read of SUPC_SR. */ -#define SUPC_SR_WKUPS (0x1u << 1) /**< \brief (SUPC_SR) WKUP Wake-up Status */ -#define SUPC_SR_WKUPS_NO (0x0u << 1) /**< \brief (SUPC_SR) no wake-up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ -#define SUPC_SR_WKUPS_PRESENT (0x1u << 1) /**< \brief (SUPC_SR) at least one wake-up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ -#define SUPC_SR_SMWS (0x1u << 2) /**< \brief (SUPC_SR) Supply Monitor Detection Wake-up Status */ -#define SUPC_SR_SMWS_NO (0x0u << 2) /**< \brief (SUPC_SR) no wake-up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ -#define SUPC_SR_SMWS_PRESENT (0x1u << 2) /**< \brief (SUPC_SR) at least one wake-up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ -#define SUPC_SR_BODRSTS (0x1u << 3) /**< \brief (SUPC_SR) Brownout Detector Reset Status */ -#define SUPC_SR_BODRSTS_NO (0x0u << 3) /**< \brief (SUPC_SR) no core brownout rising edge event has been detected since the last read of the SUPC_SR. */ -#define SUPC_SR_BODRSTS_PRESENT (0x1u << 3) /**< \brief (SUPC_SR) at least one brownout output rising edge event has been detected since the last read of the SUPC_SR. */ -#define SUPC_SR_SMRSTS (0x1u << 4) /**< \brief (SUPC_SR) Supply Monitor Reset Status */ -#define SUPC_SR_SMRSTS_NO (0x0u << 4) /**< \brief (SUPC_SR) no supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ -#define SUPC_SR_SMRSTS_PRESENT (0x1u << 4) /**< \brief (SUPC_SR) at least one supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ -#define SUPC_SR_SMS (0x1u << 5) /**< \brief (SUPC_SR) Supply Monitor Status */ -#define SUPC_SR_SMS_NO (0x0u << 5) /**< \brief (SUPC_SR) no supply monitor detection since the last read of SUPC_SR. */ -#define SUPC_SR_SMS_PRESENT (0x1u << 5) /**< \brief (SUPC_SR) at least one supply monitor detection since the last read of SUPC_SR. */ -#define SUPC_SR_SMOS (0x1u << 6) /**< \brief (SUPC_SR) Supply Monitor Output Status */ -#define SUPC_SR_SMOS_HIGH (0x0u << 6) /**< \brief (SUPC_SR) the supply monitor detected VDDIO higher than its threshold at its last measurement. */ -#define SUPC_SR_SMOS_LOW (0x1u << 6) /**< \brief (SUPC_SR) the supply monitor detected VDDIO lower than its threshold at its last measurement. */ -#define SUPC_SR_OSCSEL (0x1u << 7) /**< \brief (SUPC_SR) 32-kHz Oscillator Selection Status */ -#define SUPC_SR_OSCSEL_RC (0x0u << 7) /**< \brief (SUPC_SR) the slow clock, SLCK is generated by the embedded 32-kHz RC oscillator. */ -#define SUPC_SR_OSCSEL_CRYST (0x1u << 7) /**< \brief (SUPC_SR) the slow clock, SLCK is generated by the 32-kHz crystal oscillator. */ -#define SUPC_SR_FWUPIS (0x1u << 12) /**< \brief (SUPC_SR) FWUP Input Status */ -#define SUPC_SR_FWUPIS_LOW (0x0u << 12) /**< \brief (SUPC_SR) FWUP input is tied low. */ -#define SUPC_SR_FWUPIS_HIGH (0x1u << 12) /**< \brief (SUPC_SR) FWUP input is tied high. */ -#define SUPC_SR_LPDBCS0 (0x1u << 13) /**< \brief (SUPC_SR) Low Power Debouncer Wake-up Status on WKUP0 */ -#define SUPC_SR_LPDBCS0_NO (0x0u << 13) /**< \brief (SUPC_SR) no wake-up due to the assertion of the WKUP0 pin has occurred since the last read of SUPC_SR. */ -#define SUPC_SR_LPDBCS0_PRESENT (0x1u << 13) /**< \brief (SUPC_SR) at least one wake-up due to the assertion of the WKUP0 pin has occurred since the last read of SUPC_SR. */ -#define SUPC_SR_LPDBCS1 (0x1u << 14) /**< \brief (SUPC_SR) Low Power Debouncer Wake-up Status on WKUP1 */ -#define SUPC_SR_LPDBCS1_NO (0x0u << 14) /**< \brief (SUPC_SR) no wake-up due to the assertion of the WKUP1 pin has occurred since the last read of SUPC_SR. */ -#define SUPC_SR_LPDBCS1_PRESENT (0x1u << 14) /**< \brief (SUPC_SR) at least one wake-up due to the assertion of the WKUP1 pin has occurred since the last read of SUPC_SR. */ -#define SUPC_SR_WKUPIS0 (0x1u << 16) /**< \brief (SUPC_SR) WKUP Input Status 0 */ -#define SUPC_SR_WKUPIS0_DIS (0x0u << 16) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS0_EN (0x1u << 16) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS1 (0x1u << 17) /**< \brief (SUPC_SR) WKUP Input Status 1 */ -#define SUPC_SR_WKUPIS1_DIS (0x0u << 17) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS1_EN (0x1u << 17) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS2 (0x1u << 18) /**< \brief (SUPC_SR) WKUP Input Status 2 */ -#define SUPC_SR_WKUPIS2_DIS (0x0u << 18) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS2_EN (0x1u << 18) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS3 (0x1u << 19) /**< \brief (SUPC_SR) WKUP Input Status 3 */ -#define SUPC_SR_WKUPIS3_DIS (0x0u << 19) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS3_EN (0x1u << 19) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS4 (0x1u << 20) /**< \brief (SUPC_SR) WKUP Input Status 4 */ -#define SUPC_SR_WKUPIS4_DIS (0x0u << 20) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS4_EN (0x1u << 20) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS5 (0x1u << 21) /**< \brief (SUPC_SR) WKUP Input Status 5 */ -#define SUPC_SR_WKUPIS5_DIS (0x0u << 21) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS5_EN (0x1u << 21) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS6 (0x1u << 22) /**< \brief (SUPC_SR) WKUP Input Status 6 */ -#define SUPC_SR_WKUPIS6_DIS (0x0u << 22) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS6_EN (0x1u << 22) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS7 (0x1u << 23) /**< \brief (SUPC_SR) WKUP Input Status 7 */ -#define SUPC_SR_WKUPIS7_DIS (0x0u << 23) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS7_EN (0x1u << 23) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS8 (0x1u << 24) /**< \brief (SUPC_SR) WKUP Input Status 8 */ -#define SUPC_SR_WKUPIS8_DIS (0x0u << 24) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS8_EN (0x1u << 24) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS9 (0x1u << 25) /**< \brief (SUPC_SR) WKUP Input Status 9 */ -#define SUPC_SR_WKUPIS9_DIS (0x0u << 25) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS9_EN (0x1u << 25) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS10 (0x1u << 26) /**< \brief (SUPC_SR) WKUP Input Status 10 */ -#define SUPC_SR_WKUPIS10_DIS (0x0u << 26) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS10_EN (0x1u << 26) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS11 (0x1u << 27) /**< \brief (SUPC_SR) WKUP Input Status 11 */ -#define SUPC_SR_WKUPIS11_DIS (0x0u << 27) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS11_EN (0x1u << 27) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS12 (0x1u << 28) /**< \brief (SUPC_SR) WKUP Input Status 12 */ -#define SUPC_SR_WKUPIS12_DIS (0x0u << 28) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS12_EN (0x1u << 28) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS13 (0x1u << 29) /**< \brief (SUPC_SR) WKUP Input Status 13 */ -#define SUPC_SR_WKUPIS13_DIS (0x0u << 29) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS13_EN (0x1u << 29) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS14 (0x1u << 30) /**< \brief (SUPC_SR) WKUP Input Status 14 */ -#define SUPC_SR_WKUPIS14_DIS (0x0u << 30) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS14_EN (0x1u << 30) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS15 (0x1u << 31) /**< \brief (SUPC_SR) WKUP Input Status 15 */ -#define SUPC_SR_WKUPIS15_DIS (0x0u << 31) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ -#define SUPC_SR_WKUPIS15_EN (0x1u << 31) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake-up event. */ - -/*@}*/ - - -#endif /* _SAM4E_SUPC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/tc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/tc.h deleted file mode 100644 index 6f7e607df..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/tc.h +++ /dev/null @@ -1,383 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_TC_COMPONENT_ -#define _SAM4E_TC_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Timer Counter */ -/* ============================================================================= */ -/** \addtogroup SAM4E_TC Timer Counter */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief TcChannel hardware registers */ -typedef struct { - RwReg TC_CCR; /**< \brief (TcChannel Offset: 0x0) Channel Control Register */ - RwReg TC_CMR; /**< \brief (TcChannel Offset: 0x4) Channel Mode Register */ - RwReg TC_SMMR; /**< \brief (TcChannel Offset: 0x8) Stepper Motor Mode Register */ - RwReg TC_RAB; /**< \brief (TcChannel Offset: 0xC) Register AB */ - RwReg TC_CV; /**< \brief (TcChannel Offset: 0x10) Counter Value */ - RwReg TC_RA; /**< \brief (TcChannel Offset: 0x14) Register A */ - RwReg TC_RB; /**< \brief (TcChannel Offset: 0x18) Register B */ - RwReg TC_RC; /**< \brief (TcChannel Offset: 0x1C) Register C */ - RwReg TC_SR; /**< \brief (TcChannel Offset: 0x20) Status Register */ - RwReg TC_IER; /**< \brief (TcChannel Offset: 0x24) Interrupt Enable Register */ - RwReg TC_IDR; /**< \brief (TcChannel Offset: 0x28) Interrupt Disable Register */ - RwReg TC_IMR; /**< \brief (TcChannel Offset: 0x2C) Interrupt Mask Register */ - RwReg TC_EMR; /**< \brief (TcChannel Offset: 0x30) Extended Mode Register */ - RoReg Reserved1[3]; -} TcChannel; -/** \brief TcPdc hardware registers */ -typedef struct { - RwReg TC_RPR; /**< \brief (TcPdc Offset: 0x0) Receive Pointer Register */ - RwReg TC_RCR; /**< \brief (TcPdc Offset: 0x4) Receive Counter Register */ - RoReg Reserved2[2]; - RwReg TC_RNPR; /**< \brief (TcPdc Offset: 0x10) Receive Next Pointer Register */ - RwReg TC_RNCR; /**< \brief (TcPdc Offset: 0x14) Receive Next Counter Register */ - RoReg Reserved3[2]; - RwReg TC_PTCR; /**< \brief (TcPdc Offset: 0x20) Transfer Control Register */ - RwReg TC_PTSR; /**< \brief (TcPdc Offset: 0x24) Transfer Status Register */ - RoReg Reserved4[6]; -} TcPdc; -/** \brief Tc hardware registers */ -#define TCCHANNEL_NUMBER 3 -#define TCPDC_NUMBER 3 -typedef struct { - TcChannel TC_CHANNEL[TCCHANNEL_NUMBER]; /**< \brief (Tc Offset: 0x0) channel = 0 .. 2 */ - WoReg TC_BCR; /**< \brief (Tc Offset: 0xC0) Block Control Register */ - RwReg TC_BMR; /**< \brief (Tc Offset: 0xC4) Block Mode Register */ - WoReg TC_QIER; /**< \brief (Tc Offset: 0xC8) QDEC Interrupt Enable Register */ - WoReg TC_QIDR; /**< \brief (Tc Offset: 0xCC) QDEC Interrupt Disable Register */ - RoReg TC_QIMR; /**< \brief (Tc Offset: 0xD0) QDEC Interrupt Mask Register */ - RoReg TC_QISR; /**< \brief (Tc Offset: 0xD4) QDEC Interrupt Status Register */ - RwReg TC_FMR; /**< \brief (Tc Offset: 0xD8) Fault Mode Register */ - RoReg Reserved1[2]; - RwReg TC_WPMR; /**< \brief (Tc Offset: 0xE4) Write Protect Mode Register */ - RoReg Reserved2[6]; - TcPdc TC_PDC[TCPDC_NUMBER]; /**< \brief (Tc Offset: 0x100) pdc = 0 .. 2 */ -} Tc; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- TC_CCR : (TC Offset: N/A) Channel Control Register -------- */ -#define TC_CCR_CLKEN (0x1u << 0) /**< \brief (TC_CCR) Counter Clock Enable Command */ -#define TC_CCR_CLKDIS (0x1u << 1) /**< \brief (TC_CCR) Counter Clock Disable Command */ -#define TC_CCR_SWTRG (0x1u << 2) /**< \brief (TC_CCR) Software Trigger Command */ -/* -------- TC_CMR : (TC Offset: N/A) Channel Mode Register -------- */ -#define TC_CMR_TCCLKS_Pos 0 -#define TC_CMR_TCCLKS_Msk (0x7u << TC_CMR_TCCLKS_Pos) /**< \brief (TC_CMR) Clock Selection */ -#define TC_CMR_TCCLKS_TIMER_CLOCK1 (0x0u << 0) /**< \brief (TC_CMR) Clock selected: TCLK1 */ -#define TC_CMR_TCCLKS_TIMER_CLOCK2 (0x1u << 0) /**< \brief (TC_CMR) Clock selected: TCLK2 */ -#define TC_CMR_TCCLKS_TIMER_CLOCK3 (0x2u << 0) /**< \brief (TC_CMR) Clock selected: TCLK3 */ -#define TC_CMR_TCCLKS_TIMER_CLOCK4 (0x3u << 0) /**< \brief (TC_CMR) Clock selected: TCLK4 */ -#define TC_CMR_TCCLKS_TIMER_CLOCK5 (0x4u << 0) /**< \brief (TC_CMR) Clock selected: TCLK5 */ -#define TC_CMR_TCCLKS_XC0 (0x5u << 0) /**< \brief (TC_CMR) Clock selected: XC0 */ -#define TC_CMR_TCCLKS_XC1 (0x6u << 0) /**< \brief (TC_CMR) Clock selected: XC1 */ -#define TC_CMR_TCCLKS_XC2 (0x7u << 0) /**< \brief (TC_CMR) Clock selected: XC2 */ -#define TC_CMR_CLKI (0x1u << 3) /**< \brief (TC_CMR) Clock Invert */ -#define TC_CMR_BURST_Pos 4 -#define TC_CMR_BURST_Msk (0x3u << TC_CMR_BURST_Pos) /**< \brief (TC_CMR) Burst Signal Selection */ -#define TC_CMR_BURST_NONE (0x0u << 4) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ -#define TC_CMR_BURST_XC0 (0x1u << 4) /**< \brief (TC_CMR) XC0 is ANDed with the selected clock. */ -#define TC_CMR_BURST_XC1 (0x2u << 4) /**< \brief (TC_CMR) XC1 is ANDed with the selected clock. */ -#define TC_CMR_BURST_XC2 (0x3u << 4) /**< \brief (TC_CMR) XC2 is ANDed with the selected clock. */ -#define TC_CMR_LDBSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RB Loading */ -#define TC_CMR_LDBDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RB Loading */ -#define TC_CMR_ETRGEDG_Pos 8 -#define TC_CMR_ETRGEDG_Msk (0x3u << TC_CMR_ETRGEDG_Pos) /**< \brief (TC_CMR) External Trigger Edge Selection */ -#define TC_CMR_ETRGEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ -#define TC_CMR_ETRGEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ -#define TC_CMR_ETRGEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ -#define TC_CMR_ETRGEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ -#define TC_CMR_ABETRG (0x1u << 10) /**< \brief (TC_CMR) TIOA or TIOB External Trigger Selection */ -#define TC_CMR_CPCTRG (0x1u << 14) /**< \brief (TC_CMR) RC Compare Trigger Enable */ -#define TC_CMR_WAVE (0x1u << 15) /**< \brief (TC_CMR) Waveform Mode */ -#define TC_CMR_LDRA_Pos 16 -#define TC_CMR_LDRA_Msk (0x3u << TC_CMR_LDRA_Pos) /**< \brief (TC_CMR) RA Loading Edge Selection */ -#define TC_CMR_LDRA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ -#define TC_CMR_LDRA_RISING (0x1u << 16) /**< \brief (TC_CMR) Rising edge of TIOA */ -#define TC_CMR_LDRA_FALLING (0x2u << 16) /**< \brief (TC_CMR) Falling edge of TIOA */ -#define TC_CMR_LDRA_EDGE (0x3u << 16) /**< \brief (TC_CMR) Each edge of TIOA */ -#define TC_CMR_LDRB_Pos 18 -#define TC_CMR_LDRB_Msk (0x3u << TC_CMR_LDRB_Pos) /**< \brief (TC_CMR) RB Loading Edge Selection */ -#define TC_CMR_LDRB_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ -#define TC_CMR_LDRB_RISING (0x1u << 18) /**< \brief (TC_CMR) Rising edge of TIOA */ -#define TC_CMR_LDRB_FALLING (0x2u << 18) /**< \brief (TC_CMR) Falling edge of TIOA */ -#define TC_CMR_LDRB_EDGE (0x3u << 18) /**< \brief (TC_CMR) Each edge of TIOA */ -#define TC_CMR_SBSMPLR_Pos 20 -#define TC_CMR_SBSMPLR_Msk (0x7u << TC_CMR_SBSMPLR_Pos) /**< \brief (TC_CMR) Loading Edge Subsampling Ratio */ -#define TC_CMR_SBSMPLR_ONE (0x0u << 20) /**< \brief (TC_CMR) Load a Capture Register each selected edge */ -#define TC_CMR_SBSMPLR_HALF (0x1u << 20) /**< \brief (TC_CMR) Load a Capture Register every 2 selected edges */ -#define TC_CMR_SBSMPLR_FOURTH (0x2u << 20) /**< \brief (TC_CMR) Load a Capture Register every 4 selected edges */ -#define TC_CMR_SBSMPLR_EIGHTH (0x3u << 20) /**< \brief (TC_CMR) Load a Capture Register every 8 selected edges */ -#define TC_CMR_SBSMPLR_SIXTEENTH (0x4u << 20) /**< \brief (TC_CMR) Load a Capture Register every 16 selected edges */ -#define TC_CMR_CPCSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RC Compare */ -#define TC_CMR_CPCDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RC Compare */ -#define TC_CMR_EEVTEDG_Pos 8 -#define TC_CMR_EEVTEDG_Msk (0x3u << TC_CMR_EEVTEDG_Pos) /**< \brief (TC_CMR) External Event Edge Selection */ -#define TC_CMR_EEVTEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) None */ -#define TC_CMR_EEVTEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ -#define TC_CMR_EEVTEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ -#define TC_CMR_EEVTEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ -#define TC_CMR_EEVT_Pos 10 -#define TC_CMR_EEVT_Msk (0x3u << TC_CMR_EEVT_Pos) /**< \brief (TC_CMR) External Event Selection */ -#define TC_CMR_EEVT_TIOB (0x0u << 10) /**< \brief (TC_CMR) TIOB */ -#define TC_CMR_EEVT_XC0 (0x1u << 10) /**< \brief (TC_CMR) XC0 */ -#define TC_CMR_EEVT_XC1 (0x2u << 10) /**< \brief (TC_CMR) XC1 */ -#define TC_CMR_EEVT_XC2 (0x3u << 10) /**< \brief (TC_CMR) XC2 */ -#define TC_CMR_ENETRG (0x1u << 12) /**< \brief (TC_CMR) External Event Trigger Enable */ -#define TC_CMR_WAVSEL_Pos 13 -#define TC_CMR_WAVSEL_Msk (0x3u << TC_CMR_WAVSEL_Pos) /**< \brief (TC_CMR) Waveform Selection */ -#define TC_CMR_WAVSEL_UP (0x0u << 13) /**< \brief (TC_CMR) UP mode without automatic trigger on RC Compare */ -#define TC_CMR_WAVSEL_UPDOWN (0x1u << 13) /**< \brief (TC_CMR) UPDOWN mode without automatic trigger on RC Compare */ -#define TC_CMR_WAVSEL_UP_RC (0x2u << 13) /**< \brief (TC_CMR) UP mode with automatic trigger on RC Compare */ -#define TC_CMR_WAVSEL_UPDOWN_RC (0x3u << 13) /**< \brief (TC_CMR) UPDOWN mode with automatic trigger on RC Compare */ -#define TC_CMR_ACPA_Pos 16 -#define TC_CMR_ACPA_Msk (0x3u << TC_CMR_ACPA_Pos) /**< \brief (TC_CMR) RA Compare Effect on TIOA */ -#define TC_CMR_ACPA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ -#define TC_CMR_ACPA_SET (0x1u << 16) /**< \brief (TC_CMR) Set */ -#define TC_CMR_ACPA_CLEAR (0x2u << 16) /**< \brief (TC_CMR) Clear */ -#define TC_CMR_ACPA_TOGGLE (0x3u << 16) /**< \brief (TC_CMR) Toggle */ -#define TC_CMR_ACPC_Pos 18 -#define TC_CMR_ACPC_Msk (0x3u << TC_CMR_ACPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOA */ -#define TC_CMR_ACPC_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ -#define TC_CMR_ACPC_SET (0x1u << 18) /**< \brief (TC_CMR) Set */ -#define TC_CMR_ACPC_CLEAR (0x2u << 18) /**< \brief (TC_CMR) Clear */ -#define TC_CMR_ACPC_TOGGLE (0x3u << 18) /**< \brief (TC_CMR) Toggle */ -#define TC_CMR_AEEVT_Pos 20 -#define TC_CMR_AEEVT_Msk (0x3u << TC_CMR_AEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOA */ -#define TC_CMR_AEEVT_NONE (0x0u << 20) /**< \brief (TC_CMR) None */ -#define TC_CMR_AEEVT_SET (0x1u << 20) /**< \brief (TC_CMR) Set */ -#define TC_CMR_AEEVT_CLEAR (0x2u << 20) /**< \brief (TC_CMR) Clear */ -#define TC_CMR_AEEVT_TOGGLE (0x3u << 20) /**< \brief (TC_CMR) Toggle */ -#define TC_CMR_ASWTRG_Pos 22 -#define TC_CMR_ASWTRG_Msk (0x3u << TC_CMR_ASWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOA */ -#define TC_CMR_ASWTRG_NONE (0x0u << 22) /**< \brief (TC_CMR) None */ -#define TC_CMR_ASWTRG_SET (0x1u << 22) /**< \brief (TC_CMR) Set */ -#define TC_CMR_ASWTRG_CLEAR (0x2u << 22) /**< \brief (TC_CMR) Clear */ -#define TC_CMR_ASWTRG_TOGGLE (0x3u << 22) /**< \brief (TC_CMR) Toggle */ -#define TC_CMR_BCPB_Pos 24 -#define TC_CMR_BCPB_Msk (0x3u << TC_CMR_BCPB_Pos) /**< \brief (TC_CMR) RB Compare Effect on TIOB */ -#define TC_CMR_BCPB_NONE (0x0u << 24) /**< \brief (TC_CMR) None */ -#define TC_CMR_BCPB_SET (0x1u << 24) /**< \brief (TC_CMR) Set */ -#define TC_CMR_BCPB_CLEAR (0x2u << 24) /**< \brief (TC_CMR) Clear */ -#define TC_CMR_BCPB_TOGGLE (0x3u << 24) /**< \brief (TC_CMR) Toggle */ -#define TC_CMR_BCPC_Pos 26 -#define TC_CMR_BCPC_Msk (0x3u << TC_CMR_BCPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOB */ -#define TC_CMR_BCPC_NONE (0x0u << 26) /**< \brief (TC_CMR) None */ -#define TC_CMR_BCPC_SET (0x1u << 26) /**< \brief (TC_CMR) Set */ -#define TC_CMR_BCPC_CLEAR (0x2u << 26) /**< \brief (TC_CMR) Clear */ -#define TC_CMR_BCPC_TOGGLE (0x3u << 26) /**< \brief (TC_CMR) Toggle */ -#define TC_CMR_BEEVT_Pos 28 -#define TC_CMR_BEEVT_Msk (0x3u << TC_CMR_BEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOB */ -#define TC_CMR_BEEVT_NONE (0x0u << 28) /**< \brief (TC_CMR) None */ -#define TC_CMR_BEEVT_SET (0x1u << 28) /**< \brief (TC_CMR) Set */ -#define TC_CMR_BEEVT_CLEAR (0x2u << 28) /**< \brief (TC_CMR) Clear */ -#define TC_CMR_BEEVT_TOGGLE (0x3u << 28) /**< \brief (TC_CMR) Toggle */ -#define TC_CMR_BSWTRG_Pos 30 -#define TC_CMR_BSWTRG_Msk (0x3u << TC_CMR_BSWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOB */ -#define TC_CMR_BSWTRG_NONE (0x0u << 30) /**< \brief (TC_CMR) None */ -#define TC_CMR_BSWTRG_SET (0x1u << 30) /**< \brief (TC_CMR) Set */ -#define TC_CMR_BSWTRG_CLEAR (0x2u << 30) /**< \brief (TC_CMR) Clear */ -#define TC_CMR_BSWTRG_TOGGLE (0x3u << 30) /**< \brief (TC_CMR) Toggle */ -/* -------- TC_SMMR : (TC Offset: N/A) Stepper Motor Mode Register -------- */ -#define TC_SMMR_GCEN (0x1u << 0) /**< \brief (TC_SMMR) Gray Count Enable */ -#define TC_SMMR_DOWN (0x1u << 1) /**< \brief (TC_SMMR) DOWN Count */ -/* -------- TC_RAB : (TC Offset: N/A) Register AB -------- */ -#define TC_RAB_RAB_Pos 0 -#define TC_RAB_RAB_Msk (0xffffffffu << TC_RAB_RAB_Pos) /**< \brief (TC_RAB) Register A or Register B */ -/* -------- TC_CV : (TC Offset: N/A) Counter Value -------- */ -#define TC_CV_CV_Pos 0 -#define TC_CV_CV_Msk (0xffffffffu << TC_CV_CV_Pos) /**< \brief (TC_CV) Counter Value */ -/* -------- TC_RA : (TC Offset: N/A) Register A -------- */ -#define TC_RA_RA_Pos 0 -#define TC_RA_RA_Msk (0xffffffffu << TC_RA_RA_Pos) /**< \brief (TC_RA) Register A */ -#define TC_RA_RA(value) ((TC_RA_RA_Msk & ((value) << TC_RA_RA_Pos))) -/* -------- TC_RB : (TC Offset: N/A) Register B -------- */ -#define TC_RB_RB_Pos 0 -#define TC_RB_RB_Msk (0xffffffffu << TC_RB_RB_Pos) /**< \brief (TC_RB) Register B */ -#define TC_RB_RB(value) ((TC_RB_RB_Msk & ((value) << TC_RB_RB_Pos))) -/* -------- TC_RC : (TC Offset: N/A) Register C -------- */ -#define TC_RC_RC_Pos 0 -#define TC_RC_RC_Msk (0xffffffffu << TC_RC_RC_Pos) /**< \brief (TC_RC) Register C */ -#define TC_RC_RC(value) ((TC_RC_RC_Msk & ((value) << TC_RC_RC_Pos))) -/* -------- TC_SR : (TC Offset: N/A) Status Register -------- */ -#define TC_SR_COVFS (0x1u << 0) /**< \brief (TC_SR) Counter Overflow Status */ -#define TC_SR_LOVRS (0x1u << 1) /**< \brief (TC_SR) Load Overrun Status */ -#define TC_SR_CPAS (0x1u << 2) /**< \brief (TC_SR) RA Compare Status */ -#define TC_SR_CPBS (0x1u << 3) /**< \brief (TC_SR) RB Compare Status */ -#define TC_SR_CPCS (0x1u << 4) /**< \brief (TC_SR) RC Compare Status */ -#define TC_SR_LDRAS (0x1u << 5) /**< \brief (TC_SR) RA Loading Status */ -#define TC_SR_LDRBS (0x1u << 6) /**< \brief (TC_SR) RB Loading Status */ -#define TC_SR_ETRGS (0x1u << 7) /**< \brief (TC_SR) External Trigger Status */ -#define TC_SR_ENDRX (0x1u << 8) /**< \brief (TC_SR) End of Receiver Transfer */ -#define TC_SR_RXBUFF (0x1u << 9) /**< \brief (TC_SR) Reception Buffer Full */ -#define TC_SR_CLKSTA (0x1u << 16) /**< \brief (TC_SR) Clock Enabling Status */ -#define TC_SR_MTIOA (0x1u << 17) /**< \brief (TC_SR) TIOA Mirror */ -#define TC_SR_MTIOB (0x1u << 18) /**< \brief (TC_SR) TIOB Mirror */ -/* -------- TC_IER : (TC Offset: N/A) Interrupt Enable Register -------- */ -#define TC_IER_COVFS (0x1u << 0) /**< \brief (TC_IER) Counter Overflow */ -#define TC_IER_LOVRS (0x1u << 1) /**< \brief (TC_IER) Load Overrun */ -#define TC_IER_CPAS (0x1u << 2) /**< \brief (TC_IER) RA Compare */ -#define TC_IER_CPBS (0x1u << 3) /**< \brief (TC_IER) RB Compare */ -#define TC_IER_CPCS (0x1u << 4) /**< \brief (TC_IER) RC Compare */ -#define TC_IER_LDRAS (0x1u << 5) /**< \brief (TC_IER) RA Loading */ -#define TC_IER_LDRBS (0x1u << 6) /**< \brief (TC_IER) RB Loading */ -#define TC_IER_ETRGS (0x1u << 7) /**< \brief (TC_IER) External Trigger */ -#define TC_IER_ENDRX (0x1u << 8) /**< \brief (TC_IER) End of Receiver Transfer */ -#define TC_IER_RXBUFF (0x1u << 9) /**< \brief (TC_IER) Reception Buffer Full */ -/* -------- TC_IDR : (TC Offset: N/A) Interrupt Disable Register -------- */ -#define TC_IDR_COVFS (0x1u << 0) /**< \brief (TC_IDR) Counter Overflow */ -#define TC_IDR_LOVRS (0x1u << 1) /**< \brief (TC_IDR) Load Overrun */ -#define TC_IDR_CPAS (0x1u << 2) /**< \brief (TC_IDR) RA Compare */ -#define TC_IDR_CPBS (0x1u << 3) /**< \brief (TC_IDR) RB Compare */ -#define TC_IDR_CPCS (0x1u << 4) /**< \brief (TC_IDR) RC Compare */ -#define TC_IDR_LDRAS (0x1u << 5) /**< \brief (TC_IDR) RA Loading */ -#define TC_IDR_LDRBS (0x1u << 6) /**< \brief (TC_IDR) RB Loading */ -#define TC_IDR_ETRGS (0x1u << 7) /**< \brief (TC_IDR) External Trigger */ -#define TC_IDR_ENDRX (0x1u << 8) /**< \brief (TC_IDR) End of Receiver Transfer */ -#define TC_IDR_RXBUFF (0x1u << 9) /**< \brief (TC_IDR) Reception Buffer Full */ -/* -------- TC_IMR : (TC Offset: N/A) Interrupt Mask Register -------- */ -#define TC_IMR_COVFS (0x1u << 0) /**< \brief (TC_IMR) Counter Overflow */ -#define TC_IMR_LOVRS (0x1u << 1) /**< \brief (TC_IMR) Load Overrun */ -#define TC_IMR_CPAS (0x1u << 2) /**< \brief (TC_IMR) RA Compare */ -#define TC_IMR_CPBS (0x1u << 3) /**< \brief (TC_IMR) RB Compare */ -#define TC_IMR_CPCS (0x1u << 4) /**< \brief (TC_IMR) RC Compare */ -#define TC_IMR_LDRAS (0x1u << 5) /**< \brief (TC_IMR) RA Loading */ -#define TC_IMR_LDRBS (0x1u << 6) /**< \brief (TC_IMR) RB Loading */ -#define TC_IMR_ETRGS (0x1u << 7) /**< \brief (TC_IMR) External Trigger */ -#define TC_IMR_ENDRX (0x1u << 8) /**< \brief (TC_IMR) End of Receiver Transfer */ -#define TC_IMR_RXBUFF (0x1u << 9) /**< \brief (TC_IMR) Reception Buffer Full */ -/* -------- TC_EMR : (TC Offset: N/A) Extended Mode Register -------- */ -#define TC_EMR_TRIGSRCA_Pos 0 -#define TC_EMR_TRIGSRCA_Msk (0x3u << TC_EMR_TRIGSRCA_Pos) /**< \brief (TC_EMR) TRIGger SouRCe for input A */ -#define TC_EMR_TRIGSRCA_EXTERNAL_TIOAx (0x0u << 0) /**< \brief (TC_EMR) the trigger/capture input A is driven by external pin TIOAx */ -#define TC_EMR_TRIGSRCA_PWMx (0x1u << 0) /**< \brief (TC_EMR) the trigger/capture input A is driven internally by PWMx */ -#define TC_EMR_TRIGSRCB_Pos 4 -#define TC_EMR_TRIGSRCB_Msk (0x3u << TC_EMR_TRIGSRCB_Pos) /**< \brief (TC_EMR) TRIGger SouRCe for input B */ -#define TC_EMR_TRIGSRCB_EXTERNAL_TIOBx (0x0u << 4) /**< \brief (TC_EMR) the trigger/capture input B is driven by external pin TIOBx */ -#define TC_EMR_TRIGSRCB_PWMx (0x1u << 4) /**< \brief (TC_EMR) the trigger/capture input B is driven internally by PWMx */ -#define TC_EMR_NODIVCLK (0x1u << 8) /**< \brief (TC_EMR) NO DIVided CLocK */ -/* -------- TC_BCR : (TC Offset: 0xC0) Block Control Register -------- */ -#define TC_BCR_SYNC (0x1u << 0) /**< \brief (TC_BCR) Synchro Command */ -/* -------- TC_BMR : (TC Offset: 0xC4) Block Mode Register -------- */ -#define TC_BMR_TC0XC0S_Pos 0 -#define TC_BMR_TC0XC0S_Msk (0x3u << TC_BMR_TC0XC0S_Pos) /**< \brief (TC_BMR) External Clock Signal 0 Selection */ -#define TC_BMR_TC0XC0S_TCLK0 (0x0u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TCLK0 */ -#define TC_BMR_TC0XC0S_TIOA1 (0x2u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA1 */ -#define TC_BMR_TC0XC0S_TIOA2 (0x3u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA2 */ -#define TC_BMR_TC1XC1S_Pos 2 -#define TC_BMR_TC1XC1S_Msk (0x3u << TC_BMR_TC1XC1S_Pos) /**< \brief (TC_BMR) External Clock Signal 1 Selection */ -#define TC_BMR_TC1XC1S_TCLK1 (0x0u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TCLK1 */ -#define TC_BMR_TC1XC1S_TIOA0 (0x2u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA0 */ -#define TC_BMR_TC1XC1S_TIOA2 (0x3u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA2 */ -#define TC_BMR_TC2XC2S_Pos 4 -#define TC_BMR_TC2XC2S_Msk (0x3u << TC_BMR_TC2XC2S_Pos) /**< \brief (TC_BMR) External Clock Signal 2 Selection */ -#define TC_BMR_TC2XC2S_TCLK2 (0x0u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TCLK2 */ -#define TC_BMR_TC2XC2S_TIOA1 (0x2u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA1 */ -#define TC_BMR_TC2XC2S_TIOA2 (0x3u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA2 */ -#define TC_BMR_QDEN (0x1u << 8) /**< \brief (TC_BMR) Quadrature Decoder ENabled */ -#define TC_BMR_POSEN (0x1u << 9) /**< \brief (TC_BMR) POSition ENabled */ -#define TC_BMR_SPEEDEN (0x1u << 10) /**< \brief (TC_BMR) SPEED ENabled */ -#define TC_BMR_QDTRANS (0x1u << 11) /**< \brief (TC_BMR) Quadrature Decoding TRANSparent */ -#define TC_BMR_EDGPHA (0x1u << 12) /**< \brief (TC_BMR) EDGe on PHA count mode */ -#define TC_BMR_INVA (0x1u << 13) /**< \brief (TC_BMR) INVerted phA */ -#define TC_BMR_INVB (0x1u << 14) /**< \brief (TC_BMR) INVerted phB */ -#define TC_BMR_INVIDX (0x1u << 15) /**< \brief (TC_BMR) INVerted InDeX */ -#define TC_BMR_SWAP (0x1u << 16) /**< \brief (TC_BMR) SWAP PHA and PHB */ -#define TC_BMR_IDXPHB (0x1u << 17) /**< \brief (TC_BMR) InDeX pin is PHB pin */ -#define TC_BMR_FILTER (0x1u << 19) /**< \brief (TC_BMR) */ -#define TC_BMR_MAXFILT_Pos 20 -#define TC_BMR_MAXFILT_Msk (0x3fu << TC_BMR_MAXFILT_Pos) /**< \brief (TC_BMR) MAXimum FILTer */ -#define TC_BMR_MAXFILT(value) ((TC_BMR_MAXFILT_Msk & ((value) << TC_BMR_MAXFILT_Pos))) -/* -------- TC_QIER : (TC Offset: 0xC8) QDEC Interrupt Enable Register -------- */ -#define TC_QIER_IDX (0x1u << 0) /**< \brief (TC_QIER) InDeX */ -#define TC_QIER_DIRCHG (0x1u << 1) /**< \brief (TC_QIER) DIRection CHanGe */ -#define TC_QIER_QERR (0x1u << 2) /**< \brief (TC_QIER) Quadrature ERRor */ -/* -------- TC_QIDR : (TC Offset: 0xCC) QDEC Interrupt Disable Register -------- */ -#define TC_QIDR_IDX (0x1u << 0) /**< \brief (TC_QIDR) InDeX */ -#define TC_QIDR_DIRCHG (0x1u << 1) /**< \brief (TC_QIDR) DIRection CHanGe */ -#define TC_QIDR_QERR (0x1u << 2) /**< \brief (TC_QIDR) Quadrature ERRor */ -/* -------- TC_QIMR : (TC Offset: 0xD0) QDEC Interrupt Mask Register -------- */ -#define TC_QIMR_IDX (0x1u << 0) /**< \brief (TC_QIMR) InDeX */ -#define TC_QIMR_DIRCHG (0x1u << 1) /**< \brief (TC_QIMR) DIRection CHanGe */ -#define TC_QIMR_QERR (0x1u << 2) /**< \brief (TC_QIMR) Quadrature ERRor */ -/* -------- TC_QISR : (TC Offset: 0xD4) QDEC Interrupt Status Register -------- */ -#define TC_QISR_IDX (0x1u << 0) /**< \brief (TC_QISR) InDeX */ -#define TC_QISR_DIRCHG (0x1u << 1) /**< \brief (TC_QISR) DIRection CHanGe */ -#define TC_QISR_QERR (0x1u << 2) /**< \brief (TC_QISR) Quadrature ERRor */ -#define TC_QISR_DIR (0x1u << 8) /**< \brief (TC_QISR) DIRection */ -/* -------- TC_FMR : (TC Offset: 0xD8) Fault Mode Register -------- */ -#define TC_FMR_ENCF0 (0x1u << 0) /**< \brief (TC_FMR) ENable Compare Fault Channel 0 */ -#define TC_FMR_ENCF1 (0x1u << 1) /**< \brief (TC_FMR) ENable Compare Fault Channel 1 */ -/* -------- TC_WPMR : (TC Offset: 0xE4) Write Protect Mode Register -------- */ -#define TC_WPMR_WPEN (0x1u << 0) /**< \brief (TC_WPMR) Write Protect Enable */ -#define TC_WPMR_WPKEY_Pos 8 -#define TC_WPMR_WPKEY_Msk (0xffffffu << TC_WPMR_WPKEY_Pos) /**< \brief (TC_WPMR) Write Protect KEY */ -#define TC_WPMR_WPKEY(value) ((TC_WPMR_WPKEY_Msk & ((value) << TC_WPMR_WPKEY_Pos))) -/* -------- TC_RPR : (TC Offset: N/A) Receive Pointer Register -------- */ -#define TC_RPR_RXPTR_Pos 0 -#define TC_RPR_RXPTR_Msk (0xffffffffu << TC_RPR_RXPTR_Pos) /**< \brief (TC_RPR) Receive Pointer Register */ -#define TC_RPR_RXPTR(value) ((TC_RPR_RXPTR_Msk & ((value) << TC_RPR_RXPTR_Pos))) -/* -------- TC_RCR : (TC Offset: N/A) Receive Counter Register -------- */ -#define TC_RCR_RXCTR_Pos 0 -#define TC_RCR_RXCTR_Msk (0xffffu << TC_RCR_RXCTR_Pos) /**< \brief (TC_RCR) Receive Counter Register */ -#define TC_RCR_RXCTR(value) ((TC_RCR_RXCTR_Msk & ((value) << TC_RCR_RXCTR_Pos))) -/* -------- TC_RNPR : (TC Offset: N/A) Receive Next Pointer Register -------- */ -#define TC_RNPR_RXNPTR_Pos 0 -#define TC_RNPR_RXNPTR_Msk (0xffffffffu << TC_RNPR_RXNPTR_Pos) /**< \brief (TC_RNPR) Receive Next Pointer */ -#define TC_RNPR_RXNPTR(value) ((TC_RNPR_RXNPTR_Msk & ((value) << TC_RNPR_RXNPTR_Pos))) -/* -------- TC_RNCR : (TC Offset: N/A) Receive Next Counter Register -------- */ -#define TC_RNCR_RXNCTR_Pos 0 -#define TC_RNCR_RXNCTR_Msk (0xffffu << TC_RNCR_RXNCTR_Pos) /**< \brief (TC_RNCR) Receive Next Counter */ -#define TC_RNCR_RXNCTR(value) ((TC_RNCR_RXNCTR_Msk & ((value) << TC_RNCR_RXNCTR_Pos))) -/* -------- TC_PTCR : (TC Offset: N/A) Transfer Control Register -------- */ -#define TC_PTCR_RXTEN (0x1u << 0) /**< \brief (TC_PTCR) Receiver Transfer Enable */ -#define TC_PTCR_RXTDIS (0x1u << 1) /**< \brief (TC_PTCR) Receiver Transfer Disable */ -#define TC_PTCR_TXTEN (0x1u << 8) /**< \brief (TC_PTCR) Transmitter Transfer Enable */ -#define TC_PTCR_TXTDIS (0x1u << 9) /**< \brief (TC_PTCR) Transmitter Transfer Disable */ -/* -------- TC_PTSR : (TC Offset: N/A) Transfer Status Register -------- */ -#define TC_PTSR_RXTEN (0x1u << 0) /**< \brief (TC_PTSR) Receiver Transfer Enable */ -#define TC_PTSR_TXTEN (0x1u << 8) /**< \brief (TC_PTSR) Transmitter Transfer Enable */ - -/*@}*/ - - -#endif /* _SAM4E_TC_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/twi.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/twi.h deleted file mode 100644 index f340cad05..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/twi.h +++ /dev/null @@ -1,241 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_TWI_COMPONENT_ -#define _SAM4E_TWI_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Two-wire Interface */ -/* ============================================================================= */ -/** \addtogroup SAM4E_TWI Two-wire Interface */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Twi hardware registers */ -typedef struct { - WoReg TWI_CR; /**< \brief (Twi Offset: 0x00) Control Register */ - RwReg TWI_MMR; /**< \brief (Twi Offset: 0x04) Master Mode Register */ - RwReg TWI_SMR; /**< \brief (Twi Offset: 0x08) Slave Mode Register */ - RwReg TWI_IADR; /**< \brief (Twi Offset: 0x0C) Internal Address Register */ - RwReg TWI_CWGR; /**< \brief (Twi Offset: 0x10) Clock Waveform Generator Register */ - RoReg Reserved1[3]; - RoReg TWI_SR; /**< \brief (Twi Offset: 0x20) Status Register */ - WoReg TWI_IER; /**< \brief (Twi Offset: 0x24) Interrupt Enable Register */ - WoReg TWI_IDR; /**< \brief (Twi Offset: 0x28) Interrupt Disable Register */ - RoReg TWI_IMR; /**< \brief (Twi Offset: 0x2C) Interrupt Mask Register */ - RoReg TWI_RHR; /**< \brief (Twi Offset: 0x30) Receive Holding Register */ - WoReg TWI_THR; /**< \brief (Twi Offset: 0x34) Transmit Holding Register */ - RoReg Reserved2[43]; - RwReg TWI_WPROT_MODE; /**< \brief (Twi Offset: 0xE4) Protection Mode Register */ - RoReg TWI_WPROT_STATUS; /**< \brief (Twi Offset: 0xE8) Protection Status Register */ - RoReg Reserved3[5]; - RwReg TWI_RPR; /**< \brief (Twi Offset: 0x100) Receive Pointer Register */ - RwReg TWI_RCR; /**< \brief (Twi Offset: 0x104) Receive Counter Register */ - RwReg TWI_TPR; /**< \brief (Twi Offset: 0x108) Transmit Pointer Register */ - RwReg TWI_TCR; /**< \brief (Twi Offset: 0x10C) Transmit Counter Register */ - RwReg TWI_RNPR; /**< \brief (Twi Offset: 0x110) Receive Next Pointer Register */ - RwReg TWI_RNCR; /**< \brief (Twi Offset: 0x114) Receive Next Counter Register */ - RwReg TWI_TNPR; /**< \brief (Twi Offset: 0x118) Transmit Next Pointer Register */ - RwReg TWI_TNCR; /**< \brief (Twi Offset: 0x11C) Transmit Next Counter Register */ - WoReg TWI_PTCR; /**< \brief (Twi Offset: 0x120) Transfer Control Register */ - RoReg TWI_PTSR; /**< \brief (Twi Offset: 0x124) Transfer Status Register */ -} Twi; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- TWI_CR : (TWI Offset: 0x00) Control Register -------- */ -#define TWI_CR_START (0x1u << 0) /**< \brief (TWI_CR) Send a START Condition */ -#define TWI_CR_STOP (0x1u << 1) /**< \brief (TWI_CR) Send a STOP Condition */ -#define TWI_CR_MSEN (0x1u << 2) /**< \brief (TWI_CR) TWI Master Mode Enabled */ -#define TWI_CR_MSDIS (0x1u << 3) /**< \brief (TWI_CR) TWI Master Mode Disabled */ -#define TWI_CR_SVEN (0x1u << 4) /**< \brief (TWI_CR) TWI Slave Mode Enabled */ -#define TWI_CR_SVDIS (0x1u << 5) /**< \brief (TWI_CR) TWI Slave Mode Disabled */ -#define TWI_CR_QUICK (0x1u << 6) /**< \brief (TWI_CR) SMBUS Quick Command */ -#define TWI_CR_SWRST (0x1u << 7) /**< \brief (TWI_CR) Software Reset */ -/* -------- TWI_MMR : (TWI Offset: 0x04) Master Mode Register -------- */ -#define TWI_MMR_IADRSZ_Pos 8 -#define TWI_MMR_IADRSZ_Msk (0x3u << TWI_MMR_IADRSZ_Pos) /**< \brief (TWI_MMR) Internal Device Address Size */ -#define TWI_MMR_IADRSZ_NONE (0x0u << 8) /**< \brief (TWI_MMR) No internal device address */ -#define TWI_MMR_IADRSZ_1_BYTE (0x1u << 8) /**< \brief (TWI_MMR) One-byte internal device address */ -#define TWI_MMR_IADRSZ_2_BYTE (0x2u << 8) /**< \brief (TWI_MMR) Two-byte internal device address */ -#define TWI_MMR_IADRSZ_3_BYTE (0x3u << 8) /**< \brief (TWI_MMR) Three-byte internal device address */ -#define TWI_MMR_MREAD (0x1u << 12) /**< \brief (TWI_MMR) Master Read Direction */ -#define TWI_MMR_DADR_Pos 16 -#define TWI_MMR_DADR_Msk (0x7fu << TWI_MMR_DADR_Pos) /**< \brief (TWI_MMR) Device Address */ -#define TWI_MMR_DADR(value) ((TWI_MMR_DADR_Msk & ((value) << TWI_MMR_DADR_Pos))) -/* -------- TWI_SMR : (TWI Offset: 0x08) Slave Mode Register -------- */ -#define TWI_SMR_SADR_Pos 16 -#define TWI_SMR_SADR_Msk (0x7fu << TWI_SMR_SADR_Pos) /**< \brief (TWI_SMR) Slave Address */ -#define TWI_SMR_SADR(value) ((TWI_SMR_SADR_Msk & ((value) << TWI_SMR_SADR_Pos))) -/* -------- TWI_IADR : (TWI Offset: 0x0C) Internal Address Register -------- */ -#define TWI_IADR_IADR_Pos 0 -#define TWI_IADR_IADR_Msk (0xffffffu << TWI_IADR_IADR_Pos) /**< \brief (TWI_IADR) Internal Address */ -#define TWI_IADR_IADR(value) ((TWI_IADR_IADR_Msk & ((value) << TWI_IADR_IADR_Pos))) -/* -------- TWI_CWGR : (TWI Offset: 0x10) Clock Waveform Generator Register -------- */ -#define TWI_CWGR_CLDIV_Pos 0 -#define TWI_CWGR_CLDIV_Msk (0xffu << TWI_CWGR_CLDIV_Pos) /**< \brief (TWI_CWGR) Clock Low Divider */ -#define TWI_CWGR_CLDIV(value) ((TWI_CWGR_CLDIV_Msk & ((value) << TWI_CWGR_CLDIV_Pos))) -#define TWI_CWGR_CHDIV_Pos 8 -#define TWI_CWGR_CHDIV_Msk (0xffu << TWI_CWGR_CHDIV_Pos) /**< \brief (TWI_CWGR) Clock High Divider */ -#define TWI_CWGR_CHDIV(value) ((TWI_CWGR_CHDIV_Msk & ((value) << TWI_CWGR_CHDIV_Pos))) -#define TWI_CWGR_CKDIV_Pos 16 -#define TWI_CWGR_CKDIV_Msk (0x7u << TWI_CWGR_CKDIV_Pos) /**< \brief (TWI_CWGR) Clock Divider */ -#define TWI_CWGR_CKDIV(value) ((TWI_CWGR_CKDIV_Msk & ((value) << TWI_CWGR_CKDIV_Pos))) -/* -------- TWI_SR : (TWI Offset: 0x20) Status Register -------- */ -#define TWI_SR_TXCOMP (0x1u << 0) /**< \brief (TWI_SR) Transmission Completed (automatically set / reset) */ -#define TWI_SR_RXRDY (0x1u << 1) /**< \brief (TWI_SR) Receive Holding Register Ready (automatically set / reset) */ -#define TWI_SR_TXRDY (0x1u << 2) /**< \brief (TWI_SR) Transmit Holding Register Ready (automatically set / reset) */ -#define TWI_SR_SVREAD (0x1u << 3) /**< \brief (TWI_SR) Slave Read (automatically set / reset) */ -#define TWI_SR_SVACC (0x1u << 4) /**< \brief (TWI_SR) Slave Access (automatically set / reset) */ -#define TWI_SR_GACC (0x1u << 5) /**< \brief (TWI_SR) General Call Access (clear on read) */ -#define TWI_SR_OVRE (0x1u << 6) /**< \brief (TWI_SR) Overrun Error (clear on read) */ -#define TWI_SR_NACK (0x1u << 8) /**< \brief (TWI_SR) Not Acknowledged (clear on read) */ -#define TWI_SR_ARBLST (0x1u << 9) /**< \brief (TWI_SR) Arbitration Lost (clear on read) */ -#define TWI_SR_SCLWS (0x1u << 10) /**< \brief (TWI_SR) Clock Wait State (automatically set / reset) */ -#define TWI_SR_EOSACC (0x1u << 11) /**< \brief (TWI_SR) End Of Slave Access (clear on read) */ -#define TWI_SR_ENDRX (0x1u << 12) /**< \brief (TWI_SR) End of RX buffer */ -#define TWI_SR_ENDTX (0x1u << 13) /**< \brief (TWI_SR) End of TX buffer */ -#define TWI_SR_RXBUFF (0x1u << 14) /**< \brief (TWI_SR) RX Buffer Full */ -#define TWI_SR_TXBUFE (0x1u << 15) /**< \brief (TWI_SR) TX Buffer Empty */ -/* -------- TWI_IER : (TWI Offset: 0x24) Interrupt Enable Register -------- */ -#define TWI_IER_TXCOMP (0x1u << 0) /**< \brief (TWI_IER) Transmission Completed Interrupt Enable */ -#define TWI_IER_RXRDY (0x1u << 1) /**< \brief (TWI_IER) Receive Holding Register Ready Interrupt Enable */ -#define TWI_IER_TXRDY (0x1u << 2) /**< \brief (TWI_IER) Transmit Holding Register Ready Interrupt Enable */ -#define TWI_IER_SVACC (0x1u << 4) /**< \brief (TWI_IER) Slave Access Interrupt Enable */ -#define TWI_IER_GACC (0x1u << 5) /**< \brief (TWI_IER) General Call Access Interrupt Enable */ -#define TWI_IER_OVRE (0x1u << 6) /**< \brief (TWI_IER) Overrun Error Interrupt Enable */ -#define TWI_IER_NACK (0x1u << 8) /**< \brief (TWI_IER) Not Acknowledge Interrupt Enable */ -#define TWI_IER_ARBLST (0x1u << 9) /**< \brief (TWI_IER) Arbitration Lost Interrupt Enable */ -#define TWI_IER_SCL_WS (0x1u << 10) /**< \brief (TWI_IER) Clock Wait State Interrupt Enable */ -#define TWI_IER_EOSACC (0x1u << 11) /**< \brief (TWI_IER) End Of Slave Access Interrupt Enable */ -#define TWI_IER_ENDRX (0x1u << 12) /**< \brief (TWI_IER) End of Receive Buffer Interrupt Enable */ -#define TWI_IER_ENDTX (0x1u << 13) /**< \brief (TWI_IER) End of Transmit Buffer Interrupt Enable */ -#define TWI_IER_RXBUFF (0x1u << 14) /**< \brief (TWI_IER) Receive Buffer Full Interrupt Enable */ -#define TWI_IER_TXBUFE (0x1u << 15) /**< \brief (TWI_IER) Transmit Buffer Empty Interrupt Enable */ -/* -------- TWI_IDR : (TWI Offset: 0x28) Interrupt Disable Register -------- */ -#define TWI_IDR_TXCOMP (0x1u << 0) /**< \brief (TWI_IDR) Transmission Completed Interrupt Disable */ -#define TWI_IDR_RXRDY (0x1u << 1) /**< \brief (TWI_IDR) Receive Holding Register Ready Interrupt Disable */ -#define TWI_IDR_TXRDY (0x1u << 2) /**< \brief (TWI_IDR) Transmit Holding Register Ready Interrupt Disable */ -#define TWI_IDR_SVACC (0x1u << 4) /**< \brief (TWI_IDR) Slave Access Interrupt Disable */ -#define TWI_IDR_GACC (0x1u << 5) /**< \brief (TWI_IDR) General Call Access Interrupt Disable */ -#define TWI_IDR_OVRE (0x1u << 6) /**< \brief (TWI_IDR) Overrun Error Interrupt Disable */ -#define TWI_IDR_NACK (0x1u << 8) /**< \brief (TWI_IDR) Not Acknowledge Interrupt Disable */ -#define TWI_IDR_ARBLST (0x1u << 9) /**< \brief (TWI_IDR) Arbitration Lost Interrupt Disable */ -#define TWI_IDR_SCL_WS (0x1u << 10) /**< \brief (TWI_IDR) Clock Wait State Interrupt Disable */ -#define TWI_IDR_EOSACC (0x1u << 11) /**< \brief (TWI_IDR) End Of Slave Access Interrupt Disable */ -#define TWI_IDR_ENDRX (0x1u << 12) /**< \brief (TWI_IDR) End of Receive Buffer Interrupt Disable */ -#define TWI_IDR_ENDTX (0x1u << 13) /**< \brief (TWI_IDR) End of Transmit Buffer Interrupt Disable */ -#define TWI_IDR_RXBUFF (0x1u << 14) /**< \brief (TWI_IDR) Receive Buffer Full Interrupt Disable */ -#define TWI_IDR_TXBUFE (0x1u << 15) /**< \brief (TWI_IDR) Transmit Buffer Empty Interrupt Disable */ -/* -------- TWI_IMR : (TWI Offset: 0x2C) Interrupt Mask Register -------- */ -#define TWI_IMR_TXCOMP (0x1u << 0) /**< \brief (TWI_IMR) Transmission Completed Interrupt Mask */ -#define TWI_IMR_RXRDY (0x1u << 1) /**< \brief (TWI_IMR) Receive Holding Register Ready Interrupt Mask */ -#define TWI_IMR_TXRDY (0x1u << 2) /**< \brief (TWI_IMR) Transmit Holding Register Ready Interrupt Mask */ -#define TWI_IMR_SVACC (0x1u << 4) /**< \brief (TWI_IMR) Slave Access Interrupt Mask */ -#define TWI_IMR_GACC (0x1u << 5) /**< \brief (TWI_IMR) General Call Access Interrupt Mask */ -#define TWI_IMR_OVRE (0x1u << 6) /**< \brief (TWI_IMR) Overrun Error Interrupt Mask */ -#define TWI_IMR_NACK (0x1u << 8) /**< \brief (TWI_IMR) Not Acknowledge Interrupt Mask */ -#define TWI_IMR_ARBLST (0x1u << 9) /**< \brief (TWI_IMR) Arbitration Lost Interrupt Mask */ -#define TWI_IMR_SCL_WS (0x1u << 10) /**< \brief (TWI_IMR) Clock Wait State Interrupt Mask */ -#define TWI_IMR_EOSACC (0x1u << 11) /**< \brief (TWI_IMR) End Of Slave Access Interrupt Mask */ -#define TWI_IMR_ENDRX (0x1u << 12) /**< \brief (TWI_IMR) End of Receive Buffer Interrupt Mask */ -#define TWI_IMR_ENDTX (0x1u << 13) /**< \brief (TWI_IMR) End of Transmit Buffer Interrupt Mask */ -#define TWI_IMR_RXBUFF (0x1u << 14) /**< \brief (TWI_IMR) Receive Buffer Full Interrupt Mask */ -#define TWI_IMR_TXBUFE (0x1u << 15) /**< \brief (TWI_IMR) Transmit Buffer Empty Interrupt Mask */ -/* -------- TWI_RHR : (TWI Offset: 0x30) Receive Holding Register -------- */ -#define TWI_RHR_RXDATA_Pos 0 -#define TWI_RHR_RXDATA_Msk (0xffu << TWI_RHR_RXDATA_Pos) /**< \brief (TWI_RHR) Master or Slave Receive Holding Data */ -/* -------- TWI_THR : (TWI Offset: 0x34) Transmit Holding Register -------- */ -#define TWI_THR_TXDATA_Pos 0 -#define TWI_THR_TXDATA_Msk (0xffu << TWI_THR_TXDATA_Pos) /**< \brief (TWI_THR) Master or Slave Transmit Holding Data */ -#define TWI_THR_TXDATA(value) ((TWI_THR_TXDATA_Msk & ((value) << TWI_THR_TXDATA_Pos))) -/* -------- TWI_WPROT_MODE : (TWI Offset: 0xE4) Protection Mode Register -------- */ -#define TWI_WPROT_MODE_WPROT (0x1u << 0) /**< \brief (TWI_WPROT_MODE) Write protection bit */ -#define TWI_WPROT_MODE_SECURITY_CODE_Pos 8 -#define TWI_WPROT_MODE_SECURITY_CODE_Msk (0xffffffu << TWI_WPROT_MODE_SECURITY_CODE_Pos) /**< \brief (TWI_WPROT_MODE) Write protection mode security code */ -#define TWI_WPROT_MODE_SECURITY_CODE(value) ((TWI_WPROT_MODE_SECURITY_CODE_Msk & ((value) << TWI_WPROT_MODE_SECURITY_CODE_Pos))) -/* -------- TWI_WPROT_STATUS : (TWI Offset: 0xE8) Protection Status Register -------- */ -#define TWI_WPROT_STATUS_WPROTERR (0x1u << 0) /**< \brief (TWI_WPROT_STATUS) Write Protection Error */ -#define TWI_WPROT_STATUS_WPROTADDR_Pos 8 -#define TWI_WPROT_STATUS_WPROTADDR_Msk (0xffffffu << TWI_WPROT_STATUS_WPROTADDR_Pos) /**< \brief (TWI_WPROT_STATUS) Write Protection Error Address */ -/* -------- TWI_RPR : (TWI Offset: 0x100) Receive Pointer Register -------- */ -#define TWI_RPR_RXPTR_Pos 0 -#define TWI_RPR_RXPTR_Msk (0xffffffffu << TWI_RPR_RXPTR_Pos) /**< \brief (TWI_RPR) Receive Pointer Register */ -#define TWI_RPR_RXPTR(value) ((TWI_RPR_RXPTR_Msk & ((value) << TWI_RPR_RXPTR_Pos))) -/* -------- TWI_RCR : (TWI Offset: 0x104) Receive Counter Register -------- */ -#define TWI_RCR_RXCTR_Pos 0 -#define TWI_RCR_RXCTR_Msk (0xffffu << TWI_RCR_RXCTR_Pos) /**< \brief (TWI_RCR) Receive Counter Register */ -#define TWI_RCR_RXCTR(value) ((TWI_RCR_RXCTR_Msk & ((value) << TWI_RCR_RXCTR_Pos))) -/* -------- TWI_TPR : (TWI Offset: 0x108) Transmit Pointer Register -------- */ -#define TWI_TPR_TXPTR_Pos 0 -#define TWI_TPR_TXPTR_Msk (0xffffffffu << TWI_TPR_TXPTR_Pos) /**< \brief (TWI_TPR) Transmit Counter Register */ -#define TWI_TPR_TXPTR(value) ((TWI_TPR_TXPTR_Msk & ((value) << TWI_TPR_TXPTR_Pos))) -/* -------- TWI_TCR : (TWI Offset: 0x10C) Transmit Counter Register -------- */ -#define TWI_TCR_TXCTR_Pos 0 -#define TWI_TCR_TXCTR_Msk (0xffffu << TWI_TCR_TXCTR_Pos) /**< \brief (TWI_TCR) Transmit Counter Register */ -#define TWI_TCR_TXCTR(value) ((TWI_TCR_TXCTR_Msk & ((value) << TWI_TCR_TXCTR_Pos))) -/* -------- TWI_RNPR : (TWI Offset: 0x110) Receive Next Pointer Register -------- */ -#define TWI_RNPR_RXNPTR_Pos 0 -#define TWI_RNPR_RXNPTR_Msk (0xffffffffu << TWI_RNPR_RXNPTR_Pos) /**< \brief (TWI_RNPR) Receive Next Pointer */ -#define TWI_RNPR_RXNPTR(value) ((TWI_RNPR_RXNPTR_Msk & ((value) << TWI_RNPR_RXNPTR_Pos))) -/* -------- TWI_RNCR : (TWI Offset: 0x114) Receive Next Counter Register -------- */ -#define TWI_RNCR_RXNCTR_Pos 0 -#define TWI_RNCR_RXNCTR_Msk (0xffffu << TWI_RNCR_RXNCTR_Pos) /**< \brief (TWI_RNCR) Receive Next Counter */ -#define TWI_RNCR_RXNCTR(value) ((TWI_RNCR_RXNCTR_Msk & ((value) << TWI_RNCR_RXNCTR_Pos))) -/* -------- TWI_TNPR : (TWI Offset: 0x118) Transmit Next Pointer Register -------- */ -#define TWI_TNPR_TXNPTR_Pos 0 -#define TWI_TNPR_TXNPTR_Msk (0xffffffffu << TWI_TNPR_TXNPTR_Pos) /**< \brief (TWI_TNPR) Transmit Next Pointer */ -#define TWI_TNPR_TXNPTR(value) ((TWI_TNPR_TXNPTR_Msk & ((value) << TWI_TNPR_TXNPTR_Pos))) -/* -------- TWI_TNCR : (TWI Offset: 0x11C) Transmit Next Counter Register -------- */ -#define TWI_TNCR_TXNCTR_Pos 0 -#define TWI_TNCR_TXNCTR_Msk (0xffffu << TWI_TNCR_TXNCTR_Pos) /**< \brief (TWI_TNCR) Transmit Counter Next */ -#define TWI_TNCR_TXNCTR(value) ((TWI_TNCR_TXNCTR_Msk & ((value) << TWI_TNCR_TXNCTR_Pos))) -/* -------- TWI_PTCR : (TWI Offset: 0x120) Transfer Control Register -------- */ -#define TWI_PTCR_RXTEN (0x1u << 0) /**< \brief (TWI_PTCR) Receiver Transfer Enable */ -#define TWI_PTCR_RXTDIS (0x1u << 1) /**< \brief (TWI_PTCR) Receiver Transfer Disable */ -#define TWI_PTCR_TXTEN (0x1u << 8) /**< \brief (TWI_PTCR) Transmitter Transfer Enable */ -#define TWI_PTCR_TXTDIS (0x1u << 9) /**< \brief (TWI_PTCR) Transmitter Transfer Disable */ -/* -------- TWI_PTSR : (TWI Offset: 0x124) Transfer Status Register -------- */ -#define TWI_PTSR_RXTEN (0x1u << 0) /**< \brief (TWI_PTSR) Receiver Transfer Enable */ -#define TWI_PTSR_TXTEN (0x1u << 8) /**< \brief (TWI_PTSR) Transmitter Transfer Enable */ - -/*@}*/ - - -#endif /* _SAM4E_TWI_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/uart.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/uart.h deleted file mode 100644 index 663624fe2..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/uart.h +++ /dev/null @@ -1,197 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_UART_COMPONENT_ -#define _SAM4E_UART_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Universal Asynchronous Receiver Transmitter */ -/* ============================================================================= */ -/** \addtogroup SAM4E_UART Universal Asynchronous Receiver Transmitter */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Uart hardware registers */ -typedef struct { - WoReg UART_CR; /**< \brief (Uart Offset: 0x0000) Control Register */ - RwReg UART_MR; /**< \brief (Uart Offset: 0x0004) Mode Register */ - WoReg UART_IER; /**< \brief (Uart Offset: 0x0008) Interrupt Enable Register */ - WoReg UART_IDR; /**< \brief (Uart Offset: 0x000C) Interrupt Disable Register */ - RoReg UART_IMR; /**< \brief (Uart Offset: 0x0010) Interrupt Mask Register */ - RoReg UART_SR; /**< \brief (Uart Offset: 0x0014) Status Register */ - RoReg UART_RHR; /**< \brief (Uart Offset: 0x0018) Receive Holding Register */ - WoReg UART_THR; /**< \brief (Uart Offset: 0x001C) Transmit Holding Register */ - RwReg UART_BRGR; /**< \brief (Uart Offset: 0x0020) Baud Rate Generator Register */ - RoReg Reserved1[55]; - RwReg UART_RPR; /**< \brief (Uart Offset: 0x100) Receive Pointer Register */ - RwReg UART_RCR; /**< \brief (Uart Offset: 0x104) Receive Counter Register */ - RwReg UART_TPR; /**< \brief (Uart Offset: 0x108) Transmit Pointer Register */ - RwReg UART_TCR; /**< \brief (Uart Offset: 0x10C) Transmit Counter Register */ - RwReg UART_RNPR; /**< \brief (Uart Offset: 0x110) Receive Next Pointer Register */ - RwReg UART_RNCR; /**< \brief (Uart Offset: 0x114) Receive Next Counter Register */ - RwReg UART_TNPR; /**< \brief (Uart Offset: 0x118) Transmit Next Pointer Register */ - RwReg UART_TNCR; /**< \brief (Uart Offset: 0x11C) Transmit Next Counter Register */ - WoReg UART_PTCR; /**< \brief (Uart Offset: 0x120) Transfer Control Register */ - RoReg UART_PTSR; /**< \brief (Uart Offset: 0x124) Transfer Status Register */ -} Uart; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- UART_CR : (UART Offset: 0x0000) Control Register -------- */ -#define UART_CR_RSTRX (0x1u << 2) /**< \brief (UART_CR) Reset Receiver */ -#define UART_CR_RSTTX (0x1u << 3) /**< \brief (UART_CR) Reset Transmitter */ -#define UART_CR_RXEN (0x1u << 4) /**< \brief (UART_CR) Receiver Enable */ -#define UART_CR_RXDIS (0x1u << 5) /**< \brief (UART_CR) Receiver Disable */ -#define UART_CR_TXEN (0x1u << 6) /**< \brief (UART_CR) Transmitter Enable */ -#define UART_CR_TXDIS (0x1u << 7) /**< \brief (UART_CR) Transmitter Disable */ -#define UART_CR_RSTSTA (0x1u << 8) /**< \brief (UART_CR) Reset Status Bits */ -/* -------- UART_MR : (UART Offset: 0x0004) Mode Register -------- */ -#define UART_MR_PAR_Pos 9 -#define UART_MR_PAR_Msk (0x7u << UART_MR_PAR_Pos) /**< \brief (UART_MR) Parity Type */ -#define UART_MR_PAR_EVEN (0x0u << 9) /**< \brief (UART_MR) Even Parity */ -#define UART_MR_PAR_ODD (0x1u << 9) /**< \brief (UART_MR) Odd Parity */ -#define UART_MR_PAR_SPACE (0x2u << 9) /**< \brief (UART_MR) Space: parity forced to 0 */ -#define UART_MR_PAR_MARK (0x3u << 9) /**< \brief (UART_MR) Mark: parity forced to 1 */ -#define UART_MR_PAR_NO (0x4u << 9) /**< \brief (UART_MR) No Parity */ -#define UART_MR_CHMODE_Pos 14 -#define UART_MR_CHMODE_Msk (0x3u << UART_MR_CHMODE_Pos) /**< \brief (UART_MR) Channel Mode */ -#define UART_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (UART_MR) Normal Mode */ -#define UART_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (UART_MR) Automatic Echo */ -#define UART_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (UART_MR) Local Loopback */ -#define UART_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (UART_MR) Remote Loopback */ -/* -------- UART_IER : (UART Offset: 0x0008) Interrupt Enable Register -------- */ -#define UART_IER_RXRDY (0x1u << 0) /**< \brief (UART_IER) Enable RXRDY Interrupt */ -#define UART_IER_TXRDY (0x1u << 1) /**< \brief (UART_IER) Enable TXRDY Interrupt */ -#define UART_IER_ENDRX (0x1u << 3) /**< \brief (UART_IER) Enable End of Receive Transfer Interrupt */ -#define UART_IER_ENDTX (0x1u << 4) /**< \brief (UART_IER) Enable End of Transmit Interrupt */ -#define UART_IER_OVRE (0x1u << 5) /**< \brief (UART_IER) Enable Overrun Error Interrupt */ -#define UART_IER_FRAME (0x1u << 6) /**< \brief (UART_IER) Enable Framing Error Interrupt */ -#define UART_IER_PARE (0x1u << 7) /**< \brief (UART_IER) Enable Parity Error Interrupt */ -#define UART_IER_TXEMPTY (0x1u << 9) /**< \brief (UART_IER) Enable TXEMPTY Interrupt */ -#define UART_IER_TXBUFE (0x1u << 11) /**< \brief (UART_IER) Enable Buffer Empty Interrupt */ -#define UART_IER_RXBUFF (0x1u << 12) /**< \brief (UART_IER) Enable Buffer Full Interrupt */ -/* -------- UART_IDR : (UART Offset: 0x000C) Interrupt Disable Register -------- */ -#define UART_IDR_RXRDY (0x1u << 0) /**< \brief (UART_IDR) Disable RXRDY Interrupt */ -#define UART_IDR_TXRDY (0x1u << 1) /**< \brief (UART_IDR) Disable TXRDY Interrupt */ -#define UART_IDR_ENDRX (0x1u << 3) /**< \brief (UART_IDR) Disable End of Receive Transfer Interrupt */ -#define UART_IDR_ENDTX (0x1u << 4) /**< \brief (UART_IDR) Disable End of Transmit Interrupt */ -#define UART_IDR_OVRE (0x1u << 5) /**< \brief (UART_IDR) Disable Overrun Error Interrupt */ -#define UART_IDR_FRAME (0x1u << 6) /**< \brief (UART_IDR) Disable Framing Error Interrupt */ -#define UART_IDR_PARE (0x1u << 7) /**< \brief (UART_IDR) Disable Parity Error Interrupt */ -#define UART_IDR_TXEMPTY (0x1u << 9) /**< \brief (UART_IDR) Disable TXEMPTY Interrupt */ -#define UART_IDR_TXBUFE (0x1u << 11) /**< \brief (UART_IDR) Disable Buffer Empty Interrupt */ -#define UART_IDR_RXBUFF (0x1u << 12) /**< \brief (UART_IDR) Disable Buffer Full Interrupt */ -/* -------- UART_IMR : (UART Offset: 0x0010) Interrupt Mask Register -------- */ -#define UART_IMR_RXRDY (0x1u << 0) /**< \brief (UART_IMR) Mask RXRDY Interrupt */ -#define UART_IMR_TXRDY (0x1u << 1) /**< \brief (UART_IMR) Disable TXRDY Interrupt */ -#define UART_IMR_ENDRX (0x1u << 3) /**< \brief (UART_IMR) Mask End of Receive Transfer Interrupt */ -#define UART_IMR_ENDTX (0x1u << 4) /**< \brief (UART_IMR) Mask End of Transmit Interrupt */ -#define UART_IMR_OVRE (0x1u << 5) /**< \brief (UART_IMR) Mask Overrun Error Interrupt */ -#define UART_IMR_FRAME (0x1u << 6) /**< \brief (UART_IMR) Mask Framing Error Interrupt */ -#define UART_IMR_PARE (0x1u << 7) /**< \brief (UART_IMR) Mask Parity Error Interrupt */ -#define UART_IMR_TXEMPTY (0x1u << 9) /**< \brief (UART_IMR) Mask TXEMPTY Interrupt */ -#define UART_IMR_TXBUFE (0x1u << 11) /**< \brief (UART_IMR) Mask TXBUFE Interrupt */ -#define UART_IMR_RXBUFF (0x1u << 12) /**< \brief (UART_IMR) Mask RXBUFF Interrupt */ -/* -------- UART_SR : (UART Offset: 0x0014) Status Register -------- */ -#define UART_SR_RXRDY (0x1u << 0) /**< \brief (UART_SR) Receiver Ready */ -#define UART_SR_TXRDY (0x1u << 1) /**< \brief (UART_SR) Transmitter Ready */ -#define UART_SR_ENDRX (0x1u << 3) /**< \brief (UART_SR) End of Receiver Transfer */ -#define UART_SR_ENDTX (0x1u << 4) /**< \brief (UART_SR) End of Transmitter Transfer */ -#define UART_SR_OVRE (0x1u << 5) /**< \brief (UART_SR) Overrun Error */ -#define UART_SR_FRAME (0x1u << 6) /**< \brief (UART_SR) Framing Error */ -#define UART_SR_PARE (0x1u << 7) /**< \brief (UART_SR) Parity Error */ -#define UART_SR_TXEMPTY (0x1u << 9) /**< \brief (UART_SR) Transmitter Empty */ -#define UART_SR_TXBUFE (0x1u << 11) /**< \brief (UART_SR) Transmission Buffer Empty */ -#define UART_SR_RXBUFF (0x1u << 12) /**< \brief (UART_SR) Receive Buffer Full */ -/* -------- UART_RHR : (UART Offset: 0x0018) Receive Holding Register -------- */ -#define UART_RHR_RXCHR_Pos 0 -#define UART_RHR_RXCHR_Msk (0xffu << UART_RHR_RXCHR_Pos) /**< \brief (UART_RHR) Received Character */ -/* -------- UART_THR : (UART Offset: 0x001C) Transmit Holding Register -------- */ -#define UART_THR_TXCHR_Pos 0 -#define UART_THR_TXCHR_Msk (0xffu << UART_THR_TXCHR_Pos) /**< \brief (UART_THR) Character to be Transmitted */ -#define UART_THR_TXCHR(value) ((UART_THR_TXCHR_Msk & ((value) << UART_THR_TXCHR_Pos))) -/* -------- UART_BRGR : (UART Offset: 0x0020) Baud Rate Generator Register -------- */ -#define UART_BRGR_CD_Pos 0 -#define UART_BRGR_CD_Msk (0xffffu << UART_BRGR_CD_Pos) /**< \brief (UART_BRGR) Clock Divisor */ -#define UART_BRGR_CD(value) ((UART_BRGR_CD_Msk & ((value) << UART_BRGR_CD_Pos))) -/* -------- UART_RPR : (UART Offset: 0x100) Receive Pointer Register -------- */ -#define UART_RPR_RXPTR_Pos 0 -#define UART_RPR_RXPTR_Msk (0xffffffffu << UART_RPR_RXPTR_Pos) /**< \brief (UART_RPR) Receive Pointer Register */ -#define UART_RPR_RXPTR(value) ((UART_RPR_RXPTR_Msk & ((value) << UART_RPR_RXPTR_Pos))) -/* -------- UART_RCR : (UART Offset: 0x104) Receive Counter Register -------- */ -#define UART_RCR_RXCTR_Pos 0 -#define UART_RCR_RXCTR_Msk (0xffffu << UART_RCR_RXCTR_Pos) /**< \brief (UART_RCR) Receive Counter Register */ -#define UART_RCR_RXCTR(value) ((UART_RCR_RXCTR_Msk & ((value) << UART_RCR_RXCTR_Pos))) -/* -------- UART_TPR : (UART Offset: 0x108) Transmit Pointer Register -------- */ -#define UART_TPR_TXPTR_Pos 0 -#define UART_TPR_TXPTR_Msk (0xffffffffu << UART_TPR_TXPTR_Pos) /**< \brief (UART_TPR) Transmit Counter Register */ -#define UART_TPR_TXPTR(value) ((UART_TPR_TXPTR_Msk & ((value) << UART_TPR_TXPTR_Pos))) -/* -------- UART_TCR : (UART Offset: 0x10C) Transmit Counter Register -------- */ -#define UART_TCR_TXCTR_Pos 0 -#define UART_TCR_TXCTR_Msk (0xffffu << UART_TCR_TXCTR_Pos) /**< \brief (UART_TCR) Transmit Counter Register */ -#define UART_TCR_TXCTR(value) ((UART_TCR_TXCTR_Msk & ((value) << UART_TCR_TXCTR_Pos))) -/* -------- UART_RNPR : (UART Offset: 0x110) Receive Next Pointer Register -------- */ -#define UART_RNPR_RXNPTR_Pos 0 -#define UART_RNPR_RXNPTR_Msk (0xffffffffu << UART_RNPR_RXNPTR_Pos) /**< \brief (UART_RNPR) Receive Next Pointer */ -#define UART_RNPR_RXNPTR(value) ((UART_RNPR_RXNPTR_Msk & ((value) << UART_RNPR_RXNPTR_Pos))) -/* -------- UART_RNCR : (UART Offset: 0x114) Receive Next Counter Register -------- */ -#define UART_RNCR_RXNCTR_Pos 0 -#define UART_RNCR_RXNCTR_Msk (0xffffu << UART_RNCR_RXNCTR_Pos) /**< \brief (UART_RNCR) Receive Next Counter */ -#define UART_RNCR_RXNCTR(value) ((UART_RNCR_RXNCTR_Msk & ((value) << UART_RNCR_RXNCTR_Pos))) -/* -------- UART_TNPR : (UART Offset: 0x118) Transmit Next Pointer Register -------- */ -#define UART_TNPR_TXNPTR_Pos 0 -#define UART_TNPR_TXNPTR_Msk (0xffffffffu << UART_TNPR_TXNPTR_Pos) /**< \brief (UART_TNPR) Transmit Next Pointer */ -#define UART_TNPR_TXNPTR(value) ((UART_TNPR_TXNPTR_Msk & ((value) << UART_TNPR_TXNPTR_Pos))) -/* -------- UART_TNCR : (UART Offset: 0x11C) Transmit Next Counter Register -------- */ -#define UART_TNCR_TXNCTR_Pos 0 -#define UART_TNCR_TXNCTR_Msk (0xffffu << UART_TNCR_TXNCTR_Pos) /**< \brief (UART_TNCR) Transmit Counter Next */ -#define UART_TNCR_TXNCTR(value) ((UART_TNCR_TXNCTR_Msk & ((value) << UART_TNCR_TXNCTR_Pos))) -/* -------- UART_PTCR : (UART Offset: 0x120) Transfer Control Register -------- */ -#define UART_PTCR_RXTEN (0x1u << 0) /**< \brief (UART_PTCR) Receiver Transfer Enable */ -#define UART_PTCR_RXTDIS (0x1u << 1) /**< \brief (UART_PTCR) Receiver Transfer Disable */ -#define UART_PTCR_TXTEN (0x1u << 8) /**< \brief (UART_PTCR) Transmitter Transfer Enable */ -#define UART_PTCR_TXTDIS (0x1u << 9) /**< \brief (UART_PTCR) Transmitter Transfer Disable */ -/* -------- UART_PTSR : (UART Offset: 0x124) Transfer Status Register -------- */ -#define UART_PTSR_RXTEN (0x1u << 0) /**< \brief (UART_PTSR) Receiver Transfer Enable */ -#define UART_PTSR_TXTEN (0x1u << 8) /**< \brief (UART_PTSR) Transmitter Transfer Enable */ - -/*@}*/ - - -#endif /* _SAM4E_UART_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/udp.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/udp.h deleted file mode 100644 index e7928061f..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/udp.h +++ /dev/null @@ -1,197 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_UDP_COMPONENT_ -#define _SAM4E_UDP_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR USB Device Port */ -/* ============================================================================= */ -/** \addtogroup SAM4E_UDP USB Device Port */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Udp hardware registers */ -typedef struct { - RoReg UDP_FRM_NUM; /**< \brief (Udp Offset: 0x000) Frame Number Register */ - RwReg UDP_GLB_STAT; /**< \brief (Udp Offset: 0x004) Global State Register */ - RwReg UDP_FADDR; /**< \brief (Udp Offset: 0x008) Function Address Register */ - RoReg Reserved1[1]; - WoReg UDP_IER; /**< \brief (Udp Offset: 0x010) Interrupt Enable Register */ - WoReg UDP_IDR; /**< \brief (Udp Offset: 0x014) Interrupt Disable Register */ - RoReg UDP_IMR; /**< \brief (Udp Offset: 0x018) Interrupt Mask Register */ - RoReg UDP_ISR; /**< \brief (Udp Offset: 0x01C) Interrupt Status Register */ - WoReg UDP_ICR; /**< \brief (Udp Offset: 0x020) Interrupt Clear Register */ - RoReg Reserved2[1]; - RwReg UDP_RST_EP; /**< \brief (Udp Offset: 0x028) Reset Endpoint Register */ - RoReg Reserved3[1]; - RwReg UDP_CSR[8]; /**< \brief (Udp Offset: 0x030) Endpoint Control and Status Register */ - RwReg UDP_FDR[8]; /**< \brief (Udp Offset: 0x050) Endpoint FIFO Data Register */ - RoReg Reserved4[1]; - RwReg UDP_TXVC; /**< \brief (Udp Offset: 0x074) Transceiver Control Register */ -} Udp; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- UDP_FRM_NUM : (UDP Offset: 0x000) Frame Number Register -------- */ -#define UDP_FRM_NUM_FRM_NUM_Pos 0 -#define UDP_FRM_NUM_FRM_NUM_Msk (0x7ffu << UDP_FRM_NUM_FRM_NUM_Pos) /**< \brief (UDP_FRM_NUM) Frame Number as Defined in the Packet Field Formats */ -#define UDP_FRM_NUM_FRM_ERR (0x1u << 16) /**< \brief (UDP_FRM_NUM) Frame Error */ -#define UDP_FRM_NUM_FRM_OK (0x1u << 17) /**< \brief (UDP_FRM_NUM) Frame OK */ -/* -------- UDP_GLB_STAT : (UDP Offset: 0x004) Global State Register -------- */ -#define UDP_GLB_STAT_FADDEN (0x1u << 0) /**< \brief (UDP_GLB_STAT) Function Address Enable */ -#define UDP_GLB_STAT_CONFG (0x1u << 1) /**< \brief (UDP_GLB_STAT) Configured */ -#define UDP_GLB_STAT_ESR (0x1u << 2) /**< \brief (UDP_GLB_STAT) Enable Send Resume */ -#define UDP_GLB_STAT_RSMINPR (0x1u << 3) /**< \brief (UDP_GLB_STAT) */ -#define UDP_GLB_STAT_RMWUPE (0x1u << 4) /**< \brief (UDP_GLB_STAT) Remote Wake Up Enable */ -/* -------- UDP_FADDR : (UDP Offset: 0x008) Function Address Register -------- */ -#define UDP_FADDR_FADD_Pos 0 -#define UDP_FADDR_FADD_Msk (0x7fu << UDP_FADDR_FADD_Pos) /**< \brief (UDP_FADDR) Function Address Value */ -#define UDP_FADDR_FADD(value) ((UDP_FADDR_FADD_Msk & ((value) << UDP_FADDR_FADD_Pos))) -#define UDP_FADDR_FEN (0x1u << 8) /**< \brief (UDP_FADDR) Function Enable */ -/* -------- UDP_IER : (UDP Offset: 0x010) Interrupt Enable Register -------- */ -#define UDP_IER_EP0INT (0x1u << 0) /**< \brief (UDP_IER) Enable Endpoint 0 Interrupt */ -#define UDP_IER_EP1INT (0x1u << 1) /**< \brief (UDP_IER) Enable Endpoint 1 Interrupt */ -#define UDP_IER_EP2INT (0x1u << 2) /**< \brief (UDP_IER) Enable Endpoint 2Interrupt */ -#define UDP_IER_EP3INT (0x1u << 3) /**< \brief (UDP_IER) Enable Endpoint 3 Interrupt */ -#define UDP_IER_EP4INT (0x1u << 4) /**< \brief (UDP_IER) Enable Endpoint 4 Interrupt */ -#define UDP_IER_EP5INT (0x1u << 5) /**< \brief (UDP_IER) Enable Endpoint 5 Interrupt */ -#define UDP_IER_EP6INT (0x1u << 6) /**< \brief (UDP_IER) Enable Endpoint 6 Interrupt */ -#define UDP_IER_EP7INT (0x1u << 7) /**< \brief (UDP_IER) Enable Endpoint 7 Interrupt */ -#define UDP_IER_RXSUSP (0x1u << 8) /**< \brief (UDP_IER) Enable UDP Suspend Interrupt */ -#define UDP_IER_RXRSM (0x1u << 9) /**< \brief (UDP_IER) Enable UDP Resume Interrupt */ -#define UDP_IER_EXTRSM (0x1u << 10) /**< \brief (UDP_IER) */ -#define UDP_IER_SOFINT (0x1u << 11) /**< \brief (UDP_IER) Enable Start Of Frame Interrupt */ -#define UDP_IER_WAKEUP (0x1u << 13) /**< \brief (UDP_IER) Enable UDP bus Wakeup Interrupt */ -/* -------- UDP_IDR : (UDP Offset: 0x014) Interrupt Disable Register -------- */ -#define UDP_IDR_EP0INT (0x1u << 0) /**< \brief (UDP_IDR) Disable Endpoint 0 Interrupt */ -#define UDP_IDR_EP1INT (0x1u << 1) /**< \brief (UDP_IDR) Disable Endpoint 1 Interrupt */ -#define UDP_IDR_EP2INT (0x1u << 2) /**< \brief (UDP_IDR) Disable Endpoint 2 Interrupt */ -#define UDP_IDR_EP3INT (0x1u << 3) /**< \brief (UDP_IDR) Disable Endpoint 3 Interrupt */ -#define UDP_IDR_EP4INT (0x1u << 4) /**< \brief (UDP_IDR) Disable Endpoint 4 Interrupt */ -#define UDP_IDR_EP5INT (0x1u << 5) /**< \brief (UDP_IDR) Disable Endpoint 5 Interrupt */ -#define UDP_IDR_EP6INT (0x1u << 6) /**< \brief (UDP_IDR) Disable Endpoint 6 Interrupt */ -#define UDP_IDR_EP7INT (0x1u << 7) /**< \brief (UDP_IDR) Disable Endpoint 7 Interrupt */ -#define UDP_IDR_RXSUSP (0x1u << 8) /**< \brief (UDP_IDR) Disable UDP Suspend Interrupt */ -#define UDP_IDR_RXRSM (0x1u << 9) /**< \brief (UDP_IDR) Disable UDP Resume Interrupt */ -#define UDP_IDR_EXTRSM (0x1u << 10) /**< \brief (UDP_IDR) */ -#define UDP_IDR_SOFINT (0x1u << 11) /**< \brief (UDP_IDR) Disable Start Of Frame Interrupt */ -#define UDP_IDR_WAKEUP (0x1u << 13) /**< \brief (UDP_IDR) Disable USB Bus Interrupt */ -/* -------- UDP_IMR : (UDP Offset: 0x018) Interrupt Mask Register -------- */ -#define UDP_IMR_EP0INT (0x1u << 0) /**< \brief (UDP_IMR) Mask Endpoint 0 Interrupt */ -#define UDP_IMR_EP1INT (0x1u << 1) /**< \brief (UDP_IMR) Mask Endpoint 1 Interrupt */ -#define UDP_IMR_EP2INT (0x1u << 2) /**< \brief (UDP_IMR) Mask Endpoint 2 Interrupt */ -#define UDP_IMR_EP3INT (0x1u << 3) /**< \brief (UDP_IMR) Mask Endpoint 3 Interrupt */ -#define UDP_IMR_EP4INT (0x1u << 4) /**< \brief (UDP_IMR) Mask Endpoint 4 Interrupt */ -#define UDP_IMR_EP5INT (0x1u << 5) /**< \brief (UDP_IMR) Mask Endpoint 5 Interrupt */ -#define UDP_IMR_EP6INT (0x1u << 6) /**< \brief (UDP_IMR) Mask Endpoint 6 Interrupt */ -#define UDP_IMR_EP7INT (0x1u << 7) /**< \brief (UDP_IMR) Mask Endpoint 7 Interrupt */ -#define UDP_IMR_RXSUSP (0x1u << 8) /**< \brief (UDP_IMR) Mask UDP Suspend Interrupt */ -#define UDP_IMR_RXRSM (0x1u << 9) /**< \brief (UDP_IMR) Mask UDP Resume Interrupt. */ -#define UDP_IMR_EXTRSM (0x1u << 10) /**< \brief (UDP_IMR) */ -#define UDP_IMR_SOFINT (0x1u << 11) /**< \brief (UDP_IMR) Mask Start Of Frame Interrupt */ -#define UDP_IMR_BIT12 (0x1u << 12) /**< \brief (UDP_IMR) UDP_IMR Bit 12 */ -#define UDP_IMR_WAKEUP (0x1u << 13) /**< \brief (UDP_IMR) USB Bus WAKEUP Interrupt */ -/* -------- UDP_ISR : (UDP Offset: 0x01C) Interrupt Status Register -------- */ -#define UDP_ISR_EP0INT (0x1u << 0) /**< \brief (UDP_ISR) Endpoint 0 Interrupt Status */ -#define UDP_ISR_EP1INT (0x1u << 1) /**< \brief (UDP_ISR) Endpoint 1 Interrupt Status */ -#define UDP_ISR_EP2INT (0x1u << 2) /**< \brief (UDP_ISR) Endpoint 2 Interrupt Status */ -#define UDP_ISR_EP3INT (0x1u << 3) /**< \brief (UDP_ISR) Endpoint 3 Interrupt Status */ -#define UDP_ISR_EP4INT (0x1u << 4) /**< \brief (UDP_ISR) Endpoint 4 Interrupt Status */ -#define UDP_ISR_EP5INT (0x1u << 5) /**< \brief (UDP_ISR) Endpoint 5 Interrupt Status */ -#define UDP_ISR_EP6INT (0x1u << 6) /**< \brief (UDP_ISR) Endpoint 6 Interrupt Status */ -#define UDP_ISR_EP7INT (0x1u << 7) /**< \brief (UDP_ISR) Endpoint 7Interrupt Status */ -#define UDP_ISR_RXSUSP (0x1u << 8) /**< \brief (UDP_ISR) UDP Suspend Interrupt Status */ -#define UDP_ISR_RXRSM (0x1u << 9) /**< \brief (UDP_ISR) UDP Resume Interrupt Status */ -#define UDP_ISR_EXTRSM (0x1u << 10) /**< \brief (UDP_ISR) */ -#define UDP_ISR_SOFINT (0x1u << 11) /**< \brief (UDP_ISR) Start of Frame Interrupt Status */ -#define UDP_ISR_ENDBUSRES (0x1u << 12) /**< \brief (UDP_ISR) End of BUS Reset Interrupt Status */ -#define UDP_ISR_WAKEUP (0x1u << 13) /**< \brief (UDP_ISR) UDP Resume Interrupt Status */ -/* -------- UDP_ICR : (UDP Offset: 0x020) Interrupt Clear Register -------- */ -#define UDP_ICR_RXSUSP (0x1u << 8) /**< \brief (UDP_ICR) Clear UDP Suspend Interrupt */ -#define UDP_ICR_RXRSM (0x1u << 9) /**< \brief (UDP_ICR) Clear UDP Resume Interrupt */ -#define UDP_ICR_EXTRSM (0x1u << 10) /**< \brief (UDP_ICR) */ -#define UDP_ICR_SOFINT (0x1u << 11) /**< \brief (UDP_ICR) Clear Start Of Frame Interrupt */ -#define UDP_ICR_ENDBUSRES (0x1u << 12) /**< \brief (UDP_ICR) Clear End of Bus Reset Interrupt */ -#define UDP_ICR_WAKEUP (0x1u << 13) /**< \brief (UDP_ICR) Clear Wakeup Interrupt */ -/* -------- UDP_RST_EP : (UDP Offset: 0x028) Reset Endpoint Register -------- */ -#define UDP_RST_EP_EP0 (0x1u << 0) /**< \brief (UDP_RST_EP) Reset Endpoint 0 */ -#define UDP_RST_EP_EP1 (0x1u << 1) /**< \brief (UDP_RST_EP) Reset Endpoint 1 */ -#define UDP_RST_EP_EP2 (0x1u << 2) /**< \brief (UDP_RST_EP) Reset Endpoint 2 */ -#define UDP_RST_EP_EP3 (0x1u << 3) /**< \brief (UDP_RST_EP) Reset Endpoint 3 */ -#define UDP_RST_EP_EP4 (0x1u << 4) /**< \brief (UDP_RST_EP) Reset Endpoint 4 */ -#define UDP_RST_EP_EP5 (0x1u << 5) /**< \brief (UDP_RST_EP) Reset Endpoint 5 */ -#define UDP_RST_EP_EP6 (0x1u << 6) /**< \brief (UDP_RST_EP) Reset Endpoint 6 */ -#define UDP_RST_EP_EP7 (0x1u << 7) /**< \brief (UDP_RST_EP) Reset Endpoint 7 */ -/* -------- UDP_CSR[8] : (UDP Offset: 0x030) Endpoint Control and Status Register -------- */ -#define UDP_CSR_TXCOMP (0x1u << 0) /**< \brief (UDP_CSR[8]) Generates an IN Packet with Data Previously Written in the DPR */ -#define UDP_CSR_RX_DATA_BK0 (0x1u << 1) /**< \brief (UDP_CSR[8]) Receive Data Bank 0 */ -#define UDP_CSR_RXSETUP (0x1u << 2) /**< \brief (UDP_CSR[8]) Received Setup */ -#define UDP_CSR_STALLSENT (0x1u << 3) /**< \brief (UDP_CSR[8]) Stall Sent */ -#define UDP_CSR_TXPKTRDY (0x1u << 4) /**< \brief (UDP_CSR[8]) Transmit Packet Ready */ -#define UDP_CSR_FORCESTALL (0x1u << 5) /**< \brief (UDP_CSR[8]) Force Stall (used by Control, Bulk and Isochronous Endpoints) */ -#define UDP_CSR_RX_DATA_BK1 (0x1u << 6) /**< \brief (UDP_CSR[8]) Receive Data Bank 1 (only used by endpoints with ping-pong attributes) */ -#define UDP_CSR_DIR (0x1u << 7) /**< \brief (UDP_CSR[8]) Transfer Direction (only available for control endpoints) */ -#define UDP_CSR_EPTYPE_Pos 8 -#define UDP_CSR_EPTYPE_Msk (0x7u << UDP_CSR_EPTYPE_Pos) /**< \brief (UDP_CSR[8]) Endpoint Type */ -#define UDP_CSR_EPTYPE_CTRL (0x0u << 8) /**< \brief (UDP_CSR[8]) Control */ -#define UDP_CSR_EPTYPE_ISO_OUT (0x1u << 8) /**< \brief (UDP_CSR[8]) Isochronous OUT */ -#define UDP_CSR_EPTYPE_BULK_OUT (0x2u << 8) /**< \brief (UDP_CSR[8]) Bulk OUT */ -#define UDP_CSR_EPTYPE_INT_OUT (0x3u << 8) /**< \brief (UDP_CSR[8]) Interrupt OUT */ -#define UDP_CSR_EPTYPE_ISO_IN (0x5u << 8) /**< \brief (UDP_CSR[8]) Isochronous IN */ -#define UDP_CSR_EPTYPE_BULK_IN (0x6u << 8) /**< \brief (UDP_CSR[8]) Bulk IN */ -#define UDP_CSR_EPTYPE_INT_IN (0x7u << 8) /**< \brief (UDP_CSR[8]) Interrupt IN */ -#define UDP_CSR_DTGLE (0x1u << 11) /**< \brief (UDP_CSR[8]) Data Toggle */ -#define UDP_CSR_EPEDS (0x1u << 15) /**< \brief (UDP_CSR[8]) Endpoint Enable Disable */ -#define UDP_CSR_RXBYTECNT_Pos 16 -#define UDP_CSR_RXBYTECNT_Msk (0x7ffu << UDP_CSR_RXBYTECNT_Pos) /**< \brief (UDP_CSR[8]) Number of Bytes Available in the FIFO */ -#define UDP_CSR_RXBYTECNT(value) ((UDP_CSR_RXBYTECNT_Msk & ((value) << UDP_CSR_RXBYTECNT_Pos))) -#define UDP_CSR_ISOERROR (0x1u << 3) /**< \brief (UDP_CSR[8]) A CRC error has been detected in an isochronous transfer */ -/* -------- UDP_FDR[8] : (UDP Offset: 0x050) Endpoint FIFO Data Register -------- */ -#define UDP_FDR_FIFO_DATA_Pos 0 -#define UDP_FDR_FIFO_DATA_Msk (0xffu << UDP_FDR_FIFO_DATA_Pos) /**< \brief (UDP_FDR[8]) FIFO Data Value */ -#define UDP_FDR_FIFO_DATA(value) ((UDP_FDR_FIFO_DATA_Msk & ((value) << UDP_FDR_FIFO_DATA_Pos))) -/* -------- UDP_TXVC : (UDP Offset: 0x074) Transceiver Control Register -------- */ -#define UDP_TXVC_TXVDIS (0x1u << 8) /**< \brief (UDP_TXVC) Transceiver Disable */ -#define UDP_TXVC_PUON (0x1u << 9) /**< \brief (UDP_TXVC) Pull-up On */ - -/*@}*/ - - -#endif /* _SAM4E_UDP_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/usart.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/usart.h deleted file mode 100644 index 159142e94..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/usart.h +++ /dev/null @@ -1,368 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_USART_COMPONENT_ -#define _SAM4E_USART_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Universal Synchronous Asynchronous Receiver Transmitter */ -/* ============================================================================= */ -/** \addtogroup SAM4E_USART Universal Synchronous Asynchronous Receiver Transmitter */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Usart hardware registers */ -typedef struct { - WoReg US_CR; /**< \brief (Usart Offset: 0x0000) Control Register */ - RwReg US_MR; /**< \brief (Usart Offset: 0x0004) Mode Register */ - WoReg US_IER; /**< \brief (Usart Offset: 0x0008) Interrupt Enable Register */ - WoReg US_IDR; /**< \brief (Usart Offset: 0x000C) Interrupt Disable Register */ - RoReg US_IMR; /**< \brief (Usart Offset: 0x0010) Interrupt Mask Register */ - RoReg US_CSR; /**< \brief (Usart Offset: 0x0014) Channel Status Register */ - RoReg US_RHR; /**< \brief (Usart Offset: 0x0018) Receiver Holding Register */ - WoReg US_THR; /**< \brief (Usart Offset: 0x001C) Transmitter Holding Register */ - RwReg US_BRGR; /**< \brief (Usart Offset: 0x0020) Baud Rate Generator Register */ - RwReg US_RTOR; /**< \brief (Usart Offset: 0x0024) Receiver Time-out Register */ - RwReg US_TTGR; /**< \brief (Usart Offset: 0x0028) Transmitter Timeguard Register */ - RoReg Reserved1[5]; - RwReg US_FIDI; /**< \brief (Usart Offset: 0x0040) FI DI Ratio Register */ - RoReg US_NER; /**< \brief (Usart Offset: 0x0044) Number of Errors Register */ - RoReg Reserved2[1]; - RwReg US_IF; /**< \brief (Usart Offset: 0x004C) IrDA Filter Register */ - RwReg US_MAN; /**< \brief (Usart Offset: 0x0050) Manchester Encoder Decoder Register */ - RoReg Reserved3[36]; - RwReg US_WPMR; /**< \brief (Usart Offset: 0xE4) Write Protect Mode Register */ - RoReg US_WPSR; /**< \brief (Usart Offset: 0xE8) Write Protect Status Register */ - RoReg Reserved4[5]; - RwReg US_RPR; /**< \brief (Usart Offset: 0x100) Receive Pointer Register */ - RwReg US_RCR; /**< \brief (Usart Offset: 0x104) Receive Counter Register */ - RwReg US_TPR; /**< \brief (Usart Offset: 0x108) Transmit Pointer Register */ - RwReg US_TCR; /**< \brief (Usart Offset: 0x10C) Transmit Counter Register */ - RwReg US_RNPR; /**< \brief (Usart Offset: 0x110) Receive Next Pointer Register */ - RwReg US_RNCR; /**< \brief (Usart Offset: 0x114) Receive Next Counter Register */ - RwReg US_TNPR; /**< \brief (Usart Offset: 0x118) Transmit Next Pointer Register */ - RwReg US_TNCR; /**< \brief (Usart Offset: 0x11C) Transmit Next Counter Register */ - WoReg US_PTCR; /**< \brief (Usart Offset: 0x120) Transfer Control Register */ - RoReg US_PTSR; /**< \brief (Usart Offset: 0x124) Transfer Status Register */ -} Usart; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- US_CR : (USART Offset: 0x0000) Control Register -------- */ -#define US_CR_RSTRX (0x1u << 2) /**< \brief (US_CR) Reset Receiver */ -#define US_CR_RSTTX (0x1u << 3) /**< \brief (US_CR) Reset Transmitter */ -#define US_CR_RXEN (0x1u << 4) /**< \brief (US_CR) Receiver Enable */ -#define US_CR_RXDIS (0x1u << 5) /**< \brief (US_CR) Receiver Disable */ -#define US_CR_TXEN (0x1u << 6) /**< \brief (US_CR) Transmitter Enable */ -#define US_CR_TXDIS (0x1u << 7) /**< \brief (US_CR) Transmitter Disable */ -#define US_CR_RSTSTA (0x1u << 8) /**< \brief (US_CR) Reset Status Bits */ -#define US_CR_STTBRK (0x1u << 9) /**< \brief (US_CR) Start Break */ -#define US_CR_STPBRK (0x1u << 10) /**< \brief (US_CR) Stop Break */ -#define US_CR_STTTO (0x1u << 11) /**< \brief (US_CR) Start Time-out */ -#define US_CR_SENDA (0x1u << 12) /**< \brief (US_CR) Send Address */ -#define US_CR_RSTIT (0x1u << 13) /**< \brief (US_CR) Reset Iterations */ -#define US_CR_RSTNACK (0x1u << 14) /**< \brief (US_CR) Reset Non Acknowledge */ -#define US_CR_RETTO (0x1u << 15) /**< \brief (US_CR) Rearm Time-out */ -#define US_CR_DTREN (0x1u << 16) /**< \brief (US_CR) Data Terminal Ready Enable */ -#define US_CR_DTRDIS (0x1u << 17) /**< \brief (US_CR) Data Terminal Ready Disable */ -#define US_CR_RTSEN (0x1u << 18) /**< \brief (US_CR) Request to Send Enable */ -#define US_CR_RTSDIS (0x1u << 19) /**< \brief (US_CR) Request to Send Disable */ -#define US_CR_FCS (0x1u << 18) /**< \brief (US_CR) Force SPI Chip Select */ -#define US_CR_RCS (0x1u << 19) /**< \brief (US_CR) Release SPI Chip Select */ -/* -------- US_MR : (USART Offset: 0x0004) Mode Register -------- */ -#define US_MR_USART_MODE_Pos 0 -#define US_MR_USART_MODE_Msk (0xfu << US_MR_USART_MODE_Pos) /**< \brief (US_MR) USART Mode of Operation */ -#define US_MR_USART_MODE_NORMAL (0x0u << 0) /**< \brief (US_MR) Normal mode */ -#define US_MR_USART_MODE_RS485 (0x1u << 0) /**< \brief (US_MR) RS485 */ -#define US_MR_USART_MODE_HW_HANDSHAKING (0x2u << 0) /**< \brief (US_MR) Hardware Handshaking */ -#define US_MR_USART_MODE_MODEM (0x3u << 0) /**< \brief (US_MR) Modem */ -#define US_MR_USART_MODE_IS07816_T_0 (0x4u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 0 */ -#define US_MR_USART_MODE_IS07816_T_1 (0x6u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 1 */ -#define US_MR_USART_MODE_IRDA (0x8u << 0) /**< \brief (US_MR) IrDA */ -#define US_MR_USART_MODE_SPI_MASTER (0xEu << 0) /**< \brief (US_MR) SPI Master */ -#define US_MR_USART_MODE_SPI_SLAVE (0xFu << 0) /**< \brief (US_MR) SPI Slave */ -#define US_MR_USCLKS_Pos 4 -#define US_MR_USCLKS_Msk (0x3u << US_MR_USCLKS_Pos) /**< \brief (US_MR) Clock Selection */ -#define US_MR_USCLKS_MCK (0x0u << 4) /**< \brief (US_MR) Master Clock MCK is selected */ -#define US_MR_USCLKS_DIV (0x1u << 4) /**< \brief (US_MR) Internal Clock Divided MCK/DIV (DIV=8) is selected */ -#define US_MR_USCLKS_SCK (0x3u << 4) /**< \brief (US_MR) Serial Clock SLK is selected */ -#define US_MR_CHRL_Pos 6 -#define US_MR_CHRL_Msk (0x3u << US_MR_CHRL_Pos) /**< \brief (US_MR) Character Length. */ -#define US_MR_CHRL_5_BIT (0x0u << 6) /**< \brief (US_MR) Character length is 5 bits */ -#define US_MR_CHRL_6_BIT (0x1u << 6) /**< \brief (US_MR) Character length is 6 bits */ -#define US_MR_CHRL_7_BIT (0x2u << 6) /**< \brief (US_MR) Character length is 7 bits */ -#define US_MR_CHRL_8_BIT (0x3u << 6) /**< \brief (US_MR) Character length is 8 bits */ -#define US_MR_SYNC (0x1u << 8) /**< \brief (US_MR) Synchronous Mode Select */ -#define US_MR_PAR_Pos 9 -#define US_MR_PAR_Msk (0x7u << US_MR_PAR_Pos) /**< \brief (US_MR) Parity Type */ -#define US_MR_PAR_EVEN (0x0u << 9) /**< \brief (US_MR) Even parity */ -#define US_MR_PAR_ODD (0x1u << 9) /**< \brief (US_MR) Odd parity */ -#define US_MR_PAR_SPACE (0x2u << 9) /**< \brief (US_MR) Parity forced to 0 (Space) */ -#define US_MR_PAR_MARK (0x3u << 9) /**< \brief (US_MR) Parity forced to 1 (Mark) */ -#define US_MR_PAR_NO (0x4u << 9) /**< \brief (US_MR) No parity */ -#define US_MR_PAR_MULTIDROP (0x6u << 9) /**< \brief (US_MR) Multidrop mode */ -#define US_MR_NBSTOP_Pos 12 -#define US_MR_NBSTOP_Msk (0x3u << US_MR_NBSTOP_Pos) /**< \brief (US_MR) Number of Stop Bits */ -#define US_MR_NBSTOP_1_BIT (0x0u << 12) /**< \brief (US_MR) 1 stop bit */ -#define US_MR_NBSTOP_1_5_BIT (0x1u << 12) /**< \brief (US_MR) 1.5 stop bit (SYNC = 0) or reserved (SYNC = 1) */ -#define US_MR_NBSTOP_2_BIT (0x2u << 12) /**< \brief (US_MR) 2 stop bits */ -#define US_MR_CHMODE_Pos 14 -#define US_MR_CHMODE_Msk (0x3u << US_MR_CHMODE_Pos) /**< \brief (US_MR) Channel Mode */ -#define US_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (US_MR) Normal Mode */ -#define US_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (US_MR) Automatic Echo. Receiver input is connected to the TXD pin. */ -#define US_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (US_MR) Local Loopback. Transmitter output is connected to the Receiver Input. */ -#define US_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (US_MR) Remote Loopback. RXD pin is internally connected to the TXD pin. */ -#define US_MR_MSBF (0x1u << 16) /**< \brief (US_MR) Bit Order */ -#define US_MR_MODE9 (0x1u << 17) /**< \brief (US_MR) 9-bit Character Length */ -#define US_MR_CLKO (0x1u << 18) /**< \brief (US_MR) Clock Output Select */ -#define US_MR_OVER (0x1u << 19) /**< \brief (US_MR) Oversampling Mode */ -#define US_MR_INACK (0x1u << 20) /**< \brief (US_MR) Inhibit Non Acknowledge */ -#define US_MR_DSNACK (0x1u << 21) /**< \brief (US_MR) Disable Successive NACK */ -#define US_MR_VAR_SYNC (0x1u << 22) /**< \brief (US_MR) Variable Synchronization of Command/Data Sync Start Frame Delimiter */ -#define US_MR_INVDATA (0x1u << 23) /**< \brief (US_MR) Inverted Data */ -#define US_MR_MAX_ITERATION_Pos 24 -#define US_MR_MAX_ITERATION_Msk (0x7u << US_MR_MAX_ITERATION_Pos) /**< \brief (US_MR) Maximum Number of Automatic Iteration */ -#define US_MR_MAX_ITERATION(value) ((US_MR_MAX_ITERATION_Msk & ((value) << US_MR_MAX_ITERATION_Pos))) -#define US_MR_FILTER (0x1u << 28) /**< \brief (US_MR) Infrared Receive Line Filter */ -#define US_MR_MAN (0x1u << 29) /**< \brief (US_MR) Manchester Encoder/Decoder Enable */ -#define US_MR_MODSYNC (0x1u << 30) /**< \brief (US_MR) Manchester Synchronization Mode */ -#define US_MR_ONEBIT (0x1u << 31) /**< \brief (US_MR) Start Frame Delimiter Selector */ -#define US_MR_CPHA (0x1u << 8) /**< \brief (US_MR) SPI Clock Phase */ -#define US_MR_CPOL (0x1u << 16) /**< \brief (US_MR) SPI Clock Polarity */ -#define US_MR_WRDBT (0x1u << 20) /**< \brief (US_MR) Wait Read Data Before Transfer */ -/* -------- US_IER : (USART Offset: 0x0008) Interrupt Enable Register -------- */ -#define US_IER_RXRDY (0x1u << 0) /**< \brief (US_IER) RXRDY Interrupt Enable */ -#define US_IER_TXRDY (0x1u << 1) /**< \brief (US_IER) TXRDY Interrupt Enable */ -#define US_IER_RXBRK (0x1u << 2) /**< \brief (US_IER) Receiver Break Interrupt Enable */ -#define US_IER_ENDRX (0x1u << 3) /**< \brief (US_IER) End of Receive Transfer Interrupt Enable (available in all USART modes of operation) */ -#define US_IER_ENDTX (0x1u << 4) /**< \brief (US_IER) End of Transmit Interrupt Enable (available in all USART modes of operation) */ -#define US_IER_OVRE (0x1u << 5) /**< \brief (US_IER) Overrun Error Interrupt Enable */ -#define US_IER_FRAME (0x1u << 6) /**< \brief (US_IER) Framing Error Interrupt Enable */ -#define US_IER_PARE (0x1u << 7) /**< \brief (US_IER) Parity Error Interrupt Enable */ -#define US_IER_TIMEOUT (0x1u << 8) /**< \brief (US_IER) Time-out Interrupt Enable */ -#define US_IER_TXEMPTY (0x1u << 9) /**< \brief (US_IER) TXEMPTY Interrupt Enable */ -#define US_IER_ITER (0x1u << 10) /**< \brief (US_IER) Max number of Repetitions Reached Interrupt Enable */ -#define US_IER_TXBUFE (0x1u << 11) /**< \brief (US_IER) Buffer Empty Interrupt Enable (available in all USART modes of operation) */ -#define US_IER_RXBUFF (0x1u << 12) /**< \brief (US_IER) Buffer Full Interrupt Enable (available in all USART modes of operation) */ -#define US_IER_NACK (0x1u << 13) /**< \brief (US_IER) Non AcknowledgeInterrupt Enable */ -#define US_IER_RIIC (0x1u << 16) /**< \brief (US_IER) Ring Indicator Input Change Enable */ -#define US_IER_DSRIC (0x1u << 17) /**< \brief (US_IER) Data Set Ready Input Change Enable */ -#define US_IER_DCDIC (0x1u << 18) /**< \brief (US_IER) Data Carrier Detect Input Change Interrupt Enable */ -#define US_IER_CTSIC (0x1u << 19) /**< \brief (US_IER) Clear to Send Input Change Interrupt Enable */ -#define US_IER_MANE (0x1u << 24) /**< \brief (US_IER) Manchester Error Interrupt Enable */ -#define US_IER_UNRE (0x1u << 10) /**< \brief (US_IER) SPI Underrun Error Interrupt Enable */ -/* -------- US_IDR : (USART Offset: 0x000C) Interrupt Disable Register -------- */ -#define US_IDR_RXRDY (0x1u << 0) /**< \brief (US_IDR) RXRDY Interrupt Disable */ -#define US_IDR_TXRDY (0x1u << 1) /**< \brief (US_IDR) TXRDY Interrupt Disable */ -#define US_IDR_RXBRK (0x1u << 2) /**< \brief (US_IDR) Receiver Break Interrupt Disable */ -#define US_IDR_ENDRX (0x1u << 3) /**< \brief (US_IDR) End of Receive Transfer Interrupt Disable (available in all USART modes of operation) */ -#define US_IDR_ENDTX (0x1u << 4) /**< \brief (US_IDR) End of Transmit Interrupt Disable (available in all USART modes of operation) */ -#define US_IDR_OVRE (0x1u << 5) /**< \brief (US_IDR) Overrun Error Interrupt Enable */ -#define US_IDR_FRAME (0x1u << 6) /**< \brief (US_IDR) Framing Error Interrupt Disable */ -#define US_IDR_PARE (0x1u << 7) /**< \brief (US_IDR) Parity Error Interrupt Disable */ -#define US_IDR_TIMEOUT (0x1u << 8) /**< \brief (US_IDR) Time-out Interrupt Disable */ -#define US_IDR_TXEMPTY (0x1u << 9) /**< \brief (US_IDR) TXEMPTY Interrupt Disable */ -#define US_IDR_ITER (0x1u << 10) /**< \brief (US_IDR) Max Number of Repetitions Reached Interrupt Disable */ -#define US_IDR_TXBUFE (0x1u << 11) /**< \brief (US_IDR) Buffer Empty Interrupt Disable (available in all USART modes of operation) */ -#define US_IDR_RXBUFF (0x1u << 12) /**< \brief (US_IDR) Buffer Full Interrupt Disable (available in all USART modes of operation) */ -#define US_IDR_NACK (0x1u << 13) /**< \brief (US_IDR) Non AcknowledgeInterrupt Disable */ -#define US_IDR_RIIC (0x1u << 16) /**< \brief (US_IDR) Ring Indicator Input Change Disable */ -#define US_IDR_DSRIC (0x1u << 17) /**< \brief (US_IDR) Data Set Ready Input Change Disable */ -#define US_IDR_DCDIC (0x1u << 18) /**< \brief (US_IDR) Data Carrier Detect Input Change Interrupt Disable */ -#define US_IDR_CTSIC (0x1u << 19) /**< \brief (US_IDR) Clear to Send Input Change Interrupt Disable */ -#define US_IDR_MANE (0x1u << 24) /**< \brief (US_IDR) Manchester Error Interrupt Disable */ -#define US_IDR_UNRE (0x1u << 10) /**< \brief (US_IDR) SPI Underrun Error Interrupt Disable */ -/* -------- US_IMR : (USART Offset: 0x0010) Interrupt Mask Register -------- */ -#define US_IMR_RXRDY (0x1u << 0) /**< \brief (US_IMR) RXRDY Interrupt Mask */ -#define US_IMR_TXRDY (0x1u << 1) /**< \brief (US_IMR) TXRDY Interrupt Mask */ -#define US_IMR_RXBRK (0x1u << 2) /**< \brief (US_IMR) Receiver Break Interrupt Mask */ -#define US_IMR_ENDRX (0x1u << 3) /**< \brief (US_IMR) End of Receive Transfer Interrupt Mask (available in all USART modes of operation) */ -#define US_IMR_ENDTX (0x1u << 4) /**< \brief (US_IMR) End of Transmit Interrupt Mask (available in all USART modes of operation) */ -#define US_IMR_OVRE (0x1u << 5) /**< \brief (US_IMR) Overrun Error Interrupt Mask */ -#define US_IMR_FRAME (0x1u << 6) /**< \brief (US_IMR) Framing Error Interrupt Mask */ -#define US_IMR_PARE (0x1u << 7) /**< \brief (US_IMR) Parity Error Interrupt Mask */ -#define US_IMR_TIMEOUT (0x1u << 8) /**< \brief (US_IMR) Time-out Interrupt Mask */ -#define US_IMR_TXEMPTY (0x1u << 9) /**< \brief (US_IMR) TXEMPTY Interrupt Mask */ -#define US_IMR_ITER (0x1u << 10) /**< \brief (US_IMR) Max Number of Repetitions Reached Interrupt Mask */ -#define US_IMR_TXBUFE (0x1u << 11) /**< \brief (US_IMR) Buffer Empty Interrupt Mask (available in all USART modes of operation) */ -#define US_IMR_RXBUFF (0x1u << 12) /**< \brief (US_IMR) Buffer Full Interrupt Mask (available in all USART modes of operation) */ -#define US_IMR_NACK (0x1u << 13) /**< \brief (US_IMR) Non AcknowledgeInterrupt Mask */ -#define US_IMR_RIIC (0x1u << 16) /**< \brief (US_IMR) Ring Indicator Input Change Mask */ -#define US_IMR_DSRIC (0x1u << 17) /**< \brief (US_IMR) Data Set Ready Input Change Mask */ -#define US_IMR_DCDIC (0x1u << 18) /**< \brief (US_IMR) Data Carrier Detect Input Change Interrupt Mask */ -#define US_IMR_CTSIC (0x1u << 19) /**< \brief (US_IMR) Clear to Send Input Change Interrupt Mask */ -#define US_IMR_MANE (0x1u << 24) /**< \brief (US_IMR) Manchester Error Interrupt Mask */ -#define US_IMR_UNRE (0x1u << 10) /**< \brief (US_IMR) SPI Underrun Error Interrupt Mask */ -/* -------- US_CSR : (USART Offset: 0x0014) Channel Status Register -------- */ -#define US_CSR_RXRDY (0x1u << 0) /**< \brief (US_CSR) Receiver Ready */ -#define US_CSR_TXRDY (0x1u << 1) /**< \brief (US_CSR) Transmitter Ready */ -#define US_CSR_RXBRK (0x1u << 2) /**< \brief (US_CSR) Break Received/End of Break */ -#define US_CSR_ENDRX (0x1u << 3) /**< \brief (US_CSR) End of Receiver Transfer */ -#define US_CSR_ENDTX (0x1u << 4) /**< \brief (US_CSR) End of Transmitter Transfer */ -#define US_CSR_OVRE (0x1u << 5) /**< \brief (US_CSR) Overrun Error */ -#define US_CSR_FRAME (0x1u << 6) /**< \brief (US_CSR) Framing Error */ -#define US_CSR_PARE (0x1u << 7) /**< \brief (US_CSR) Parity Error */ -#define US_CSR_TIMEOUT (0x1u << 8) /**< \brief (US_CSR) Receiver Time-out */ -#define US_CSR_TXEMPTY (0x1u << 9) /**< \brief (US_CSR) Transmitter Empty */ -#define US_CSR_ITER (0x1u << 10) /**< \brief (US_CSR) MaxNumber of Repetitions Reached */ -#define US_CSR_TXBUFE (0x1u << 11) /**< \brief (US_CSR) Transmission Buffer Empty */ -#define US_CSR_RXBUFF (0x1u << 12) /**< \brief (US_CSR) Reception Buffer Full */ -#define US_CSR_NACK (0x1u << 13) /**< \brief (US_CSR) Non AcknowledgeInterrupt */ -#define US_CSR_RIIC (0x1u << 16) /**< \brief (US_CSR) Ring Indicator Input Change Flag */ -#define US_CSR_DSRIC (0x1u << 17) /**< \brief (US_CSR) Data Set Ready Input Change Flag */ -#define US_CSR_DCDIC (0x1u << 18) /**< \brief (US_CSR) Data Carrier Detect Input Change Flag */ -#define US_CSR_CTSIC (0x1u << 19) /**< \brief (US_CSR) Clear to Send Input Change Flag */ -#define US_CSR_RI (0x1u << 20) /**< \brief (US_CSR) Image of RI Input */ -#define US_CSR_DSR (0x1u << 21) /**< \brief (US_CSR) Image of DSR Input */ -#define US_CSR_DCD (0x1u << 22) /**< \brief (US_CSR) Image of DCD Input */ -#define US_CSR_CTS (0x1u << 23) /**< \brief (US_CSR) Image of CTS Input */ -#define US_CSR_MANERR (0x1u << 24) /**< \brief (US_CSR) Manchester Error */ -#define US_CSR_UNRE (0x1u << 10) /**< \brief (US_CSR) Underrun Error */ -/* -------- US_RHR : (USART Offset: 0x0018) Receiver Holding Register -------- */ -#define US_RHR_RXCHR_Pos 0 -#define US_RHR_RXCHR_Msk (0x1ffu << US_RHR_RXCHR_Pos) /**< \brief (US_RHR) Received Character */ -#define US_RHR_RXSYNH (0x1u << 15) /**< \brief (US_RHR) Received Sync */ -/* -------- US_THR : (USART Offset: 0x001C) Transmitter Holding Register -------- */ -#define US_THR_TXCHR_Pos 0 -#define US_THR_TXCHR_Msk (0x1ffu << US_THR_TXCHR_Pos) /**< \brief (US_THR) Character to be Transmitted */ -#define US_THR_TXCHR(value) ((US_THR_TXCHR_Msk & ((value) << US_THR_TXCHR_Pos))) -#define US_THR_TXSYNH (0x1u << 15) /**< \brief (US_THR) Sync Field to be Transmitted */ -/* -------- US_BRGR : (USART Offset: 0x0020) Baud Rate Generator Register -------- */ -#define US_BRGR_CD_Pos 0 -#define US_BRGR_CD_Msk (0xffffu << US_BRGR_CD_Pos) /**< \brief (US_BRGR) Clock Divider */ -#define US_BRGR_CD(value) ((US_BRGR_CD_Msk & ((value) << US_BRGR_CD_Pos))) -#define US_BRGR_FP_Pos 16 -#define US_BRGR_FP_Msk (0x7u << US_BRGR_FP_Pos) /**< \brief (US_BRGR) Fractional Part */ -#define US_BRGR_FP(value) ((US_BRGR_FP_Msk & ((value) << US_BRGR_FP_Pos))) -/* -------- US_RTOR : (USART Offset: 0x0024) Receiver Time-out Register -------- */ -#define US_RTOR_TO_Pos 0 -#define US_RTOR_TO_Msk (0xffffu << US_RTOR_TO_Pos) /**< \brief (US_RTOR) Time-out Value */ -#define US_RTOR_TO(value) ((US_RTOR_TO_Msk & ((value) << US_RTOR_TO_Pos))) -/* -------- US_TTGR : (USART Offset: 0x0028) Transmitter Timeguard Register -------- */ -#define US_TTGR_TG_Pos 0 -#define US_TTGR_TG_Msk (0xffu << US_TTGR_TG_Pos) /**< \brief (US_TTGR) Timeguard Value */ -#define US_TTGR_TG(value) ((US_TTGR_TG_Msk & ((value) << US_TTGR_TG_Pos))) -/* -------- US_FIDI : (USART Offset: 0x0040) FI DI Ratio Register -------- */ -#define US_FIDI_FI_DI_RATIO_Pos 0 -#define US_FIDI_FI_DI_RATIO_Msk (0x7ffu << US_FIDI_FI_DI_RATIO_Pos) /**< \brief (US_FIDI) FI Over DI Ratio Value */ -#define US_FIDI_FI_DI_RATIO(value) ((US_FIDI_FI_DI_RATIO_Msk & ((value) << US_FIDI_FI_DI_RATIO_Pos))) -/* -------- US_NER : (USART Offset: 0x0044) Number of Errors Register -------- */ -#define US_NER_NB_ERRORS_Pos 0 -#define US_NER_NB_ERRORS_Msk (0xffu << US_NER_NB_ERRORS_Pos) /**< \brief (US_NER) Number of Errors */ -/* -------- US_IF : (USART Offset: 0x004C) IrDA Filter Register -------- */ -#define US_IF_IRDA_FILTER_Pos 0 -#define US_IF_IRDA_FILTER_Msk (0xffu << US_IF_IRDA_FILTER_Pos) /**< \brief (US_IF) IrDA Filter */ -#define US_IF_IRDA_FILTER(value) ((US_IF_IRDA_FILTER_Msk & ((value) << US_IF_IRDA_FILTER_Pos))) -/* -------- US_MAN : (USART Offset: 0x0050) Manchester Encoder Decoder Register -------- */ -#define US_MAN_TX_PL_Pos 0 -#define US_MAN_TX_PL_Msk (0xfu << US_MAN_TX_PL_Pos) /**< \brief (US_MAN) Transmitter Preamble Length */ -#define US_MAN_TX_PL(value) ((US_MAN_TX_PL_Msk & ((value) << US_MAN_TX_PL_Pos))) -#define US_MAN_TX_PP_Pos 8 -#define US_MAN_TX_PP_Msk (0x3u << US_MAN_TX_PP_Pos) /**< \brief (US_MAN) Transmitter Preamble Pattern */ -#define US_MAN_TX_PP_ALL_ONE (0x0u << 8) /**< \brief (US_MAN) The preamble is composed of '1's */ -#define US_MAN_TX_PP_ALL_ZERO (0x1u << 8) /**< \brief (US_MAN) The preamble is composed of '0's */ -#define US_MAN_TX_PP_ZERO_ONE (0x2u << 8) /**< \brief (US_MAN) The preamble is composed of '01's */ -#define US_MAN_TX_PP_ONE_ZERO (0x3u << 8) /**< \brief (US_MAN) The preamble is composed of '10's */ -#define US_MAN_TX_MPOL (0x1u << 12) /**< \brief (US_MAN) Transmitter Manchester Polarity */ -#define US_MAN_RX_PL_Pos 16 -#define US_MAN_RX_PL_Msk (0xfu << US_MAN_RX_PL_Pos) /**< \brief (US_MAN) Receiver Preamble Length */ -#define US_MAN_RX_PL(value) ((US_MAN_RX_PL_Msk & ((value) << US_MAN_RX_PL_Pos))) -#define US_MAN_RX_PP_Pos 24 -#define US_MAN_RX_PP_Msk (0x3u << US_MAN_RX_PP_Pos) /**< \brief (US_MAN) Receiver Preamble Pattern detected */ -#define US_MAN_RX_PP_ALL_ONE (0x0u << 24) /**< \brief (US_MAN) The preamble is composed of '1's */ -#define US_MAN_RX_PP_ALL_ZERO (0x1u << 24) /**< \brief (US_MAN) The preamble is composed of '0's */ -#define US_MAN_RX_PP_ZERO_ONE (0x2u << 24) /**< \brief (US_MAN) The preamble is composed of '01's */ -#define US_MAN_RX_PP_ONE_ZERO (0x3u << 24) /**< \brief (US_MAN) The preamble is composed of '10's */ -#define US_MAN_RX_MPOL (0x1u << 28) /**< \brief (US_MAN) Receiver Manchester Polarity */ -#define US_MAN_ONE (0x1u << 29) /**< \brief (US_MAN) Must Be Set to 1 */ -#define US_MAN_DRIFT (0x1u << 30) /**< \brief (US_MAN) Drift Compensation */ -/* -------- US_WPMR : (USART Offset: 0xE4) Write Protect Mode Register -------- */ -#define US_WPMR_WPEN (0x1u << 0) /**< \brief (US_WPMR) Write Protect Enable */ -#define US_WPMR_WPKEY_Pos 8 -#define US_WPMR_WPKEY_Msk (0xffffffu << US_WPMR_WPKEY_Pos) /**< \brief (US_WPMR) Write Protect KEY */ -#define US_WPMR_WPKEY(value) ((US_WPMR_WPKEY_Msk & ((value) << US_WPMR_WPKEY_Pos))) -/* -------- US_WPSR : (USART Offset: 0xE8) Write Protect Status Register -------- */ -#define US_WPSR_WPVS (0x1u << 0) /**< \brief (US_WPSR) Write Protect Violation Status */ -#define US_WPSR_WPVSRC_Pos 8 -#define US_WPSR_WPVSRC_Msk (0xffffu << US_WPSR_WPVSRC_Pos) /**< \brief (US_WPSR) Write Protect Violation Source */ -/* -------- US_RPR : (USART Offset: 0x100) Receive Pointer Register -------- */ -#define US_RPR_RXPTR_Pos 0 -#define US_RPR_RXPTR_Msk (0xffffffffu << US_RPR_RXPTR_Pos) /**< \brief (US_RPR) Receive Pointer Register */ -#define US_RPR_RXPTR(value) ((US_RPR_RXPTR_Msk & ((value) << US_RPR_RXPTR_Pos))) -/* -------- US_RCR : (USART Offset: 0x104) Receive Counter Register -------- */ -#define US_RCR_RXCTR_Pos 0 -#define US_RCR_RXCTR_Msk (0xffffu << US_RCR_RXCTR_Pos) /**< \brief (US_RCR) Receive Counter Register */ -#define US_RCR_RXCTR(value) ((US_RCR_RXCTR_Msk & ((value) << US_RCR_RXCTR_Pos))) -/* -------- US_TPR : (USART Offset: 0x108) Transmit Pointer Register -------- */ -#define US_TPR_TXPTR_Pos 0 -#define US_TPR_TXPTR_Msk (0xffffffffu << US_TPR_TXPTR_Pos) /**< \brief (US_TPR) Transmit Counter Register */ -#define US_TPR_TXPTR(value) ((US_TPR_TXPTR_Msk & ((value) << US_TPR_TXPTR_Pos))) -/* -------- US_TCR : (USART Offset: 0x10C) Transmit Counter Register -------- */ -#define US_TCR_TXCTR_Pos 0 -#define US_TCR_TXCTR_Msk (0xffffu << US_TCR_TXCTR_Pos) /**< \brief (US_TCR) Transmit Counter Register */ -#define US_TCR_TXCTR(value) ((US_TCR_TXCTR_Msk & ((value) << US_TCR_TXCTR_Pos))) -/* -------- US_RNPR : (USART Offset: 0x110) Receive Next Pointer Register -------- */ -#define US_RNPR_RXNPTR_Pos 0 -#define US_RNPR_RXNPTR_Msk (0xffffffffu << US_RNPR_RXNPTR_Pos) /**< \brief (US_RNPR) Receive Next Pointer */ -#define US_RNPR_RXNPTR(value) ((US_RNPR_RXNPTR_Msk & ((value) << US_RNPR_RXNPTR_Pos))) -/* -------- US_RNCR : (USART Offset: 0x114) Receive Next Counter Register -------- */ -#define US_RNCR_RXNCTR_Pos 0 -#define US_RNCR_RXNCTR_Msk (0xffffu << US_RNCR_RXNCTR_Pos) /**< \brief (US_RNCR) Receive Next Counter */ -#define US_RNCR_RXNCTR(value) ((US_RNCR_RXNCTR_Msk & ((value) << US_RNCR_RXNCTR_Pos))) -/* -------- US_TNPR : (USART Offset: 0x118) Transmit Next Pointer Register -------- */ -#define US_TNPR_TXNPTR_Pos 0 -#define US_TNPR_TXNPTR_Msk (0xffffffffu << US_TNPR_TXNPTR_Pos) /**< \brief (US_TNPR) Transmit Next Pointer */ -#define US_TNPR_TXNPTR(value) ((US_TNPR_TXNPTR_Msk & ((value) << US_TNPR_TXNPTR_Pos))) -/* -------- US_TNCR : (USART Offset: 0x11C) Transmit Next Counter Register -------- */ -#define US_TNCR_TXNCTR_Pos 0 -#define US_TNCR_TXNCTR_Msk (0xffffu << US_TNCR_TXNCTR_Pos) /**< \brief (US_TNCR) Transmit Counter Next */ -#define US_TNCR_TXNCTR(value) ((US_TNCR_TXNCTR_Msk & ((value) << US_TNCR_TXNCTR_Pos))) -/* -------- US_PTCR : (USART Offset: 0x120) Transfer Control Register -------- */ -#define US_PTCR_RXTEN (0x1u << 0) /**< \brief (US_PTCR) Receiver Transfer Enable */ -#define US_PTCR_RXTDIS (0x1u << 1) /**< \brief (US_PTCR) Receiver Transfer Disable */ -#define US_PTCR_TXTEN (0x1u << 8) /**< \brief (US_PTCR) Transmitter Transfer Enable */ -#define US_PTCR_TXTDIS (0x1u << 9) /**< \brief (US_PTCR) Transmitter Transfer Disable */ -/* -------- US_PTSR : (USART Offset: 0x124) Transfer Status Register -------- */ -#define US_PTSR_RXTEN (0x1u << 0) /**< \brief (US_PTSR) Receiver Transfer Enable */ -#define US_PTSR_TXTEN (0x1u << 8) /**< \brief (US_PTSR) Transmitter Transfer Enable */ - -/*@}*/ - - -#endif /* _SAM4E_USART_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/wdt.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/wdt.h deleted file mode 100644 index 3933e331e..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/component/wdt.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_WDT_COMPONENT_ -#define _SAM4E_WDT_COMPONENT_ - -/* ============================================================================= */ -/** SOFTWARE API DEFINITION FOR Watchdog Timer */ -/* ============================================================================= */ -/** \addtogroup SAM4E_WDT Watchdog Timer */ -/*@{*/ - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -/** \brief Wdt hardware registers */ -typedef struct { - WoReg WDT_CR; /**< \brief (Wdt Offset: 0x00) Control Register */ - RwReg WDT_MR; /**< \brief (Wdt Offset: 0x04) Mode Register */ - RoReg WDT_SR; /**< \brief (Wdt Offset: 0x08) Status Register */ -} Wdt; -#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/* -------- WDT_CR : (WDT Offset: 0x00) Control Register -------- */ -#define WDT_CR_WDRSTT (0x1u << 0) /**< \brief (WDT_CR) Watchdog Restart */ -#define WDT_CR_KEY_Pos 24 -#define WDT_CR_KEY_Msk (0xffu << WDT_CR_KEY_Pos) /**< \brief (WDT_CR) Password */ -#define WDT_CR_KEY(value) ((WDT_CR_KEY_Msk & ((value) << WDT_CR_KEY_Pos))) -/* -------- WDT_MR : (WDT Offset: 0x04) Mode Register -------- */ -#define WDT_MR_WDV_Pos 0 -#define WDT_MR_WDV_Msk (0xfffu << WDT_MR_WDV_Pos) /**< \brief (WDT_MR) Watchdog Counter Value */ -#define WDT_MR_WDV(value) ((WDT_MR_WDV_Msk & ((value) << WDT_MR_WDV_Pos))) -#define WDT_MR_WDFIEN (0x1u << 12) /**< \brief (WDT_MR) Watchdog Fault Interrupt Enable */ -#define WDT_MR_WDRSTEN (0x1u << 13) /**< \brief (WDT_MR) Watchdog Reset Enable */ -#define WDT_MR_WDRPROC (0x1u << 14) /**< \brief (WDT_MR) Watchdog Reset Processor */ -#define WDT_MR_WDDIS (0x1u << 15) /**< \brief (WDT_MR) Watchdog Disable */ -#define WDT_MR_WDD_Pos 16 -#define WDT_MR_WDD_Msk (0xfffu << WDT_MR_WDD_Pos) /**< \brief (WDT_MR) Watchdog Delta Value */ -#define WDT_MR_WDD(value) ((WDT_MR_WDD_Msk & ((value) << WDT_MR_WDD_Pos))) -#define WDT_MR_WDDBGHLT (0x1u << 28) /**< \brief (WDT_MR) Watchdog Debug Halt */ -#define WDT_MR_WDIDLEHLT (0x1u << 29) /**< \brief (WDT_MR) Watchdog Idle Halt */ -/* -------- WDT_SR : (WDT Offset: 0x08) Status Register -------- */ -#define WDT_SR_WDUNF (0x1u << 0) /**< \brief (WDT_SR) Watchdog Underflow */ -#define WDT_SR_WDERR (0x1u << 1) /**< \brief (WDT_SR) Watchdog Error */ - -/*@}*/ - - -#endif /* _SAM4E_WDT_COMPONENT_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/acc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/acc.h deleted file mode 100644 index 4e67ce412..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/acc.h +++ /dev/null @@ -1,68 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_ACC_INSTANCE_ -#define _SAM4E_ACC_INSTANCE_ - -/* ========== Register definition for ACC peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_ACC_CR (0x400BC000U) /**< \brief (ACC) Control Register */ -#define REG_ACC_MR (0x400BC004U) /**< \brief (ACC) Mode Register */ -#define REG_ACC_IER (0x400BC024U) /**< \brief (ACC) Interrupt Enable Register */ -#define REG_ACC_IDR (0x400BC028U) /**< \brief (ACC) Interrupt Disable Register */ -#define REG_ACC_IMR (0x400BC02CU) /**< \brief (ACC) Interrupt Mask Register */ -#define REG_ACC_ISR (0x400BC030U) /**< \brief (ACC) Interrupt Status Register */ -#define REG_ACC_ACR (0x400BC094U) /**< \brief (ACC) Analog Control Register */ -#define REG_ACC_WPMR (0x400BC0E4U) /**< \brief (ACC) Write Protect Mode Register */ -#define REG_ACC_WPSR (0x400BC0E8U) /**< \brief (ACC) Write Protect Status Register */ -#else -#define REG_ACC_CR (*(WoReg*)0x400BC000U) /**< \brief (ACC) Control Register */ -#define REG_ACC_MR (*(RwReg*)0x400BC004U) /**< \brief (ACC) Mode Register */ -#define REG_ACC_IER (*(WoReg*)0x400BC024U) /**< \brief (ACC) Interrupt Enable Register */ -#define REG_ACC_IDR (*(WoReg*)0x400BC028U) /**< \brief (ACC) Interrupt Disable Register */ -#define REG_ACC_IMR (*(RoReg*)0x400BC02CU) /**< \brief (ACC) Interrupt Mask Register */ -#define REG_ACC_ISR (*(RoReg*)0x400BC030U) /**< \brief (ACC) Interrupt Status Register */ -#define REG_ACC_ACR (*(RwReg*)0x400BC094U) /**< \brief (ACC) Analog Control Register */ -#define REG_ACC_WPMR (*(RwReg*)0x400BC0E4U) /**< \brief (ACC) Write Protect Mode Register */ -#define REG_ACC_WPSR (*(RoReg*)0x400BC0E8U) /**< \brief (ACC) Write Protect Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_ACC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/aes.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/aes.h deleted file mode 100644 index dd1d459a8..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/aes.h +++ /dev/null @@ -1,70 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_AES_INSTANCE_ -#define _SAM4E_AES_INSTANCE_ - -/* ========== Register definition for AES peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_AES_CR (0x40004000U) /**< \brief (AES) Control Register */ -#define REG_AES_MR (0x40004004U) /**< \brief (AES) Mode Register */ -#define REG_AES_IER (0x40004010U) /**< \brief (AES) Interrupt Enable Register */ -#define REG_AES_IDR (0x40004014U) /**< \brief (AES) Interrupt Disable Register */ -#define REG_AES_IMR (0x40004018U) /**< \brief (AES) Interrupt Mask Register */ -#define REG_AES_ISR (0x4000401CU) /**< \brief (AES) Interrupt Status Register */ -#define REG_AES_KEYWR (0x40004020U) /**< \brief (AES) Key Word Register */ -#define REG_AES_IDATAR (0x40004040U) /**< \brief (AES) Input Data Register */ -#define REG_AES_ODATAR (0x40004050U) /**< \brief (AES) Output Data Register */ -#define REG_AES_IVR (0x40004060U) /**< \brief (AES) Initialization Vector Register */ -#else -#define REG_AES_CR (*(WoReg*)0x40004000U) /**< \brief (AES) Control Register */ -#define REG_AES_MR (*(RwReg*)0x40004004U) /**< \brief (AES) Mode Register */ -#define REG_AES_IER (*(WoReg*)0x40004010U) /**< \brief (AES) Interrupt Enable Register */ -#define REG_AES_IDR (*(WoReg*)0x40004014U) /**< \brief (AES) Interrupt Disable Register */ -#define REG_AES_IMR (*(RoReg*)0x40004018U) /**< \brief (AES) Interrupt Mask Register */ -#define REG_AES_ISR (*(RoReg*)0x4000401CU) /**< \brief (AES) Interrupt Status Register */ -#define REG_AES_KEYWR (*(WoReg*)0x40004020U) /**< \brief (AES) Key Word Register */ -#define REG_AES_IDATAR (*(WoReg*)0x40004040U) /**< \brief (AES) Input Data Register */ -#define REG_AES_ODATAR (*(RoReg*)0x40004050U) /**< \brief (AES) Output Data Register */ -#define REG_AES_IVR (*(WoReg*)0x40004060U) /**< \brief (AES) Initialization Vector Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_AES_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/afec0.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/afec0.h deleted file mode 100644 index 3f6116c74..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/afec0.h +++ /dev/null @@ -1,114 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_AFEC0_INSTANCE_ -#define _SAM4E_AFEC0_INSTANCE_ - -/* ========== Register definition for AFEC0 peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_AFEC0_CR (0x400B0000U) /**< \brief (AFEC0) Control Register */ -#define REG_AFEC0_MR (0x400B0004U) /**< \brief (AFEC0) Mode Register */ -#define REG_AFEC0_EMR (0x400B0008U) /**< \brief (AFEC0) Extended Mode Register */ -#define REG_AFEC0_SEQ1R (0x400B000CU) /**< \brief (AFEC0) Channel Sequence 1 Register */ -#define REG_AFEC0_SEQ2R (0x400B0010U) /**< \brief (AFEC0) Channel Sequence 2 Register */ -#define REG_AFEC0_CHER (0x400B0014U) /**< \brief (AFEC0) Channel Enable Register */ -#define REG_AFEC0_CHDR (0x400B0018U) /**< \brief (AFEC0) Channel Disable Register */ -#define REG_AFEC0_CHSR (0x400B001CU) /**< \brief (AFEC0) Channel Status Register */ -#define REG_AFEC0_LCDR (0x400B0020U) /**< \brief (AFEC0) Last Converted Data Register */ -#define REG_AFEC0_IER (0x400B0024U) /**< \brief (AFEC0) Interrupt Enable Register */ -#define REG_AFEC0_IDR (0x400B0028U) /**< \brief (AFEC0) Interrupt Disable Register */ -#define REG_AFEC0_IMR (0x400B002CU) /**< \brief (AFEC0) Interrupt Mask Register */ -#define REG_AFEC0_ISR (0x400B0030U) /**< \brief (AFEC0) Interrupt Status Register */ -#define REG_AFEC0_OVER (0x400B004CU) /**< \brief (AFEC0) Overrun Status Register */ -#define REG_AFEC0_CWR (0x400B0050U) /**< \brief (AFEC0) Compare Window Register */ -#define REG_AFEC0_CGR (0x400B0054U) /**< \brief (AFEC0) Channel Gain Register */ -#define REG_AFEC0_CDOR (0x400B005CU) /**< \brief (AFEC0) Channel Calibration DC Offset Register */ -#define REG_AFEC0_DIFFR (0x400B0060U) /**< \brief (AFEC0) Channel Differential Register */ -#define REG_AFEC0_CSELR (0x400B0064U) /**< \brief (AFEC0) Channel Register Selection */ -#define REG_AFEC0_CDR (0x400B0068U) /**< \brief (AFEC0) Channel Data Register */ -#define REG_AFEC0_COCR (0x400B006CU) /**< \brief (AFEC0) Channel Offset Compensation Register */ -#define REG_AFEC0_TEMPMR (0x400B0070U) /**< \brief (AFEC0) Temperature Sensor Mode Register */ -#define REG_AFEC0_TEMPCWR (0x400B0074U) /**< \brief (AFEC0) Temperature Compare Window Register */ -#define REG_AFEC0_ACR (0x400B0094U) /**< \brief (AFEC0) Analog Control Register */ -#define REG_AFEC0_WPMR (0x400B00E4U) /**< \brief (AFEC0) Write Protect Mode Register */ -#define REG_AFEC0_WPSR (0x400B00E8U) /**< \brief (AFEC0) Write Protect Status Register */ -#define REG_AFEC0_RPR (0x400B0100U) /**< \brief (AFEC0) Receive Pointer Register */ -#define REG_AFEC0_RCR (0x400B0104U) /**< \brief (AFEC0) Receive Counter Register */ -#define REG_AFEC0_RNPR (0x400B0110U) /**< \brief (AFEC0) Receive Next Pointer Register */ -#define REG_AFEC0_RNCR (0x400B0114U) /**< \brief (AFEC0) Receive Next Counter Register */ -#define REG_AFEC0_PTCR (0x400B0120U) /**< \brief (AFEC0) Transfer Control Register */ -#define REG_AFEC0_PTSR (0x400B0124U) /**< \brief (AFEC0) Transfer Status Register */ -#else -#define REG_AFEC0_CR (*(WoReg*)0x400B0000U) /**< \brief (AFEC0) Control Register */ -#define REG_AFEC0_MR (*(RwReg*)0x400B0004U) /**< \brief (AFEC0) Mode Register */ -#define REG_AFEC0_EMR (*(RwReg*)0x400B0008U) /**< \brief (AFEC0) Extended Mode Register */ -#define REG_AFEC0_SEQ1R (*(RwReg*)0x400B000CU) /**< \brief (AFEC0) Channel Sequence 1 Register */ -#define REG_AFEC0_SEQ2R (*(RwReg*)0x400B0010U) /**< \brief (AFEC0) Channel Sequence 2 Register */ -#define REG_AFEC0_CHER (*(WoReg*)0x400B0014U) /**< \brief (AFEC0) Channel Enable Register */ -#define REG_AFEC0_CHDR (*(WoReg*)0x400B0018U) /**< \brief (AFEC0) Channel Disable Register */ -#define REG_AFEC0_CHSR (*(RoReg*)0x400B001CU) /**< \brief (AFEC0) Channel Status Register */ -#define REG_AFEC0_LCDR (*(RoReg*)0x400B0020U) /**< \brief (AFEC0) Last Converted Data Register */ -#define REG_AFEC0_IER (*(WoReg*)0x400B0024U) /**< \brief (AFEC0) Interrupt Enable Register */ -#define REG_AFEC0_IDR (*(WoReg*)0x400B0028U) /**< \brief (AFEC0) Interrupt Disable Register */ -#define REG_AFEC0_IMR (*(RoReg*)0x400B002CU) /**< \brief (AFEC0) Interrupt Mask Register */ -#define REG_AFEC0_ISR (*(RoReg*)0x400B0030U) /**< \brief (AFEC0) Interrupt Status Register */ -#define REG_AFEC0_OVER (*(RoReg*)0x400B004CU) /**< \brief (AFEC0) Overrun Status Register */ -#define REG_AFEC0_CWR (*(RwReg*)0x400B0050U) /**< \brief (AFEC0) Compare Window Register */ -#define REG_AFEC0_CGR (*(RwReg*)0x400B0054U) /**< \brief (AFEC0) Channel Gain Register */ -#define REG_AFEC0_CDOR (*(RwReg*)0x400B005CU) /**< \brief (AFEC0) Channel Calibration DC Offset Register */ -#define REG_AFEC0_DIFFR (*(RwReg*)0x400B0060U) /**< \brief (AFEC0) Channel Differential Register */ -#define REG_AFEC0_CSELR (*(RwReg*)0x400B0064U) /**< \brief (AFEC0) Channel Register Selection */ -#define REG_AFEC0_CDR (*(RoReg*)0x400B0068U) /**< \brief (AFEC0) Channel Data Register */ -#define REG_AFEC0_COCR (*(RwReg*)0x400B006CU) /**< \brief (AFEC0) Channel Offset Compensation Register */ -#define REG_AFEC0_TEMPMR (*(RwReg*)0x400B0070U) /**< \brief (AFEC0) Temperature Sensor Mode Register */ -#define REG_AFEC0_TEMPCWR (*(RwReg*)0x400B0074U) /**< \brief (AFEC0) Temperature Compare Window Register */ -#define REG_AFEC0_ACR (*(RwReg*)0x400B0094U) /**< \brief (AFEC0) Analog Control Register */ -#define REG_AFEC0_WPMR (*(RwReg*)0x400B00E4U) /**< \brief (AFEC0) Write Protect Mode Register */ -#define REG_AFEC0_WPSR (*(RoReg*)0x400B00E8U) /**< \brief (AFEC0) Write Protect Status Register */ -#define REG_AFEC0_RPR (*(RwReg*)0x400B0100U) /**< \brief (AFEC0) Receive Pointer Register */ -#define REG_AFEC0_RCR (*(RwReg*)0x400B0104U) /**< \brief (AFEC0) Receive Counter Register */ -#define REG_AFEC0_RNPR (*(RwReg*)0x400B0110U) /**< \brief (AFEC0) Receive Next Pointer Register */ -#define REG_AFEC0_RNCR (*(RwReg*)0x400B0114U) /**< \brief (AFEC0) Receive Next Counter Register */ -#define REG_AFEC0_PTCR (*(WoReg*)0x400B0120U) /**< \brief (AFEC0) Transfer Control Register */ -#define REG_AFEC0_PTSR (*(RoReg*)0x400B0124U) /**< \brief (AFEC0) Transfer Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_AFEC0_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/afec1.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/afec1.h deleted file mode 100644 index cc9dfb049..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/afec1.h +++ /dev/null @@ -1,114 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_AFEC1_INSTANCE_ -#define _SAM4E_AFEC1_INSTANCE_ - -/* ========== Register definition for AFEC1 peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_AFEC1_CR (0x400B4000U) /**< \brief (AFEC1) Control Register */ -#define REG_AFEC1_MR (0x400B4004U) /**< \brief (AFEC1) Mode Register */ -#define REG_AFEC1_EMR (0x400B4008U) /**< \brief (AFEC1) Extended Mode Register */ -#define REG_AFEC1_SEQ1R (0x400B400CU) /**< \brief (AFEC1) Channel Sequence 1 Register */ -#define REG_AFEC1_SEQ2R (0x400B4010U) /**< \brief (AFEC1) Channel Sequence 2 Register */ -#define REG_AFEC1_CHER (0x400B4014U) /**< \brief (AFEC1) Channel Enable Register */ -#define REG_AFEC1_CHDR (0x400B4018U) /**< \brief (AFEC1) Channel Disable Register */ -#define REG_AFEC1_CHSR (0x400B401CU) /**< \brief (AFEC1) Channel Status Register */ -#define REG_AFEC1_LCDR (0x400B4020U) /**< \brief (AFEC1) Last Converted Data Register */ -#define REG_AFEC1_IER (0x400B4024U) /**< \brief (AFEC1) Interrupt Enable Register */ -#define REG_AFEC1_IDR (0x400B4028U) /**< \brief (AFEC1) Interrupt Disable Register */ -#define REG_AFEC1_IMR (0x400B402CU) /**< \brief (AFEC1) Interrupt Mask Register */ -#define REG_AFEC1_ISR (0x400B4030U) /**< \brief (AFEC1) Interrupt Status Register */ -#define REG_AFEC1_OVER (0x400B404CU) /**< \brief (AFEC1) Overrun Status Register */ -#define REG_AFEC1_CWR (0x400B4050U) /**< \brief (AFEC1) Compare Window Register */ -#define REG_AFEC1_CGR (0x400B4054U) /**< \brief (AFEC1) Channel Gain Register */ -#define REG_AFEC1_CDOR (0x400B405CU) /**< \brief (AFEC1) Channel Calibration DC Offset Register */ -#define REG_AFEC1_DIFFR (0x400B4060U) /**< \brief (AFEC1) Channel Differential Register */ -#define REG_AFEC1_CSELR (0x400B4064U) /**< \brief (AFEC1) Channel Register Selection */ -#define REG_AFEC1_CDR (0x400B4068U) /**< \brief (AFEC1) Channel Data Register */ -#define REG_AFEC1_COCR (0x400B406CU) /**< \brief (AFEC1) Channel Offset Compensation Register */ -#define REG_AFEC1_TEMPMR (0x400B4070U) /**< \brief (AFEC1) Temperature Sensor Mode Register */ -#define REG_AFEC1_TEMPCWR (0x400B4074U) /**< \brief (AFEC1) Temperature Compare Window Register */ -#define REG_AFEC1_ACR (0x400B4094U) /**< \brief (AFEC1) Analog Control Register */ -#define REG_AFEC1_WPMR (0x400B40E4U) /**< \brief (AFEC1) Write Protect Mode Register */ -#define REG_AFEC1_WPSR (0x400B40E8U) /**< \brief (AFEC1) Write Protect Status Register */ -#define REG_AFEC1_RPR (0x400B4100U) /**< \brief (AFEC1) Receive Pointer Register */ -#define REG_AFEC1_RCR (0x400B4104U) /**< \brief (AFEC1) Receive Counter Register */ -#define REG_AFEC1_RNPR (0x400B4110U) /**< \brief (AFEC1) Receive Next Pointer Register */ -#define REG_AFEC1_RNCR (0x400B4114U) /**< \brief (AFEC1) Receive Next Counter Register */ -#define REG_AFEC1_PTCR (0x400B4120U) /**< \brief (AFEC1) Transfer Control Register */ -#define REG_AFEC1_PTSR (0x400B4124U) /**< \brief (AFEC1) Transfer Status Register */ -#else -#define REG_AFEC1_CR (*(WoReg*)0x400B4000U) /**< \brief (AFEC1) Control Register */ -#define REG_AFEC1_MR (*(RwReg*)0x400B4004U) /**< \brief (AFEC1) Mode Register */ -#define REG_AFEC1_EMR (*(RwReg*)0x400B4008U) /**< \brief (AFEC1) Extended Mode Register */ -#define REG_AFEC1_SEQ1R (*(RwReg*)0x400B400CU) /**< \brief (AFEC1) Channel Sequence 1 Register */ -#define REG_AFEC1_SEQ2R (*(RwReg*)0x400B4010U) /**< \brief (AFEC1) Channel Sequence 2 Register */ -#define REG_AFEC1_CHER (*(WoReg*)0x400B4014U) /**< \brief (AFEC1) Channel Enable Register */ -#define REG_AFEC1_CHDR (*(WoReg*)0x400B4018U) /**< \brief (AFEC1) Channel Disable Register */ -#define REG_AFEC1_CHSR (*(RoReg*)0x400B401CU) /**< \brief (AFEC1) Channel Status Register */ -#define REG_AFEC1_LCDR (*(RoReg*)0x400B4020U) /**< \brief (AFEC1) Last Converted Data Register */ -#define REG_AFEC1_IER (*(WoReg*)0x400B4024U) /**< \brief (AFEC1) Interrupt Enable Register */ -#define REG_AFEC1_IDR (*(WoReg*)0x400B4028U) /**< \brief (AFEC1) Interrupt Disable Register */ -#define REG_AFEC1_IMR (*(RoReg*)0x400B402CU) /**< \brief (AFEC1) Interrupt Mask Register */ -#define REG_AFEC1_ISR (*(RoReg*)0x400B4030U) /**< \brief (AFEC1) Interrupt Status Register */ -#define REG_AFEC1_OVER (*(RoReg*)0x400B404CU) /**< \brief (AFEC1) Overrun Status Register */ -#define REG_AFEC1_CWR (*(RwReg*)0x400B4050U) /**< \brief (AFEC1) Compare Window Register */ -#define REG_AFEC1_CGR (*(RwReg*)0x400B4054U) /**< \brief (AFEC1) Channel Gain Register */ -#define REG_AFEC1_CDOR (*(RwReg*)0x400B405CU) /**< \brief (AFEC1) Channel Calibration DC Offset Register */ -#define REG_AFEC1_DIFFR (*(RwReg*)0x400B4060U) /**< \brief (AFEC1) Channel Differential Register */ -#define REG_AFEC1_CSELR (*(RwReg*)0x400B4064U) /**< \brief (AFEC1) Channel Register Selection */ -#define REG_AFEC1_CDR (*(RoReg*)0x400B4068U) /**< \brief (AFEC1) Channel Data Register */ -#define REG_AFEC1_COCR (*(RwReg*)0x400B406CU) /**< \brief (AFEC1) Channel Offset Compensation Register */ -#define REG_AFEC1_TEMPMR (*(RwReg*)0x400B4070U) /**< \brief (AFEC1) Temperature Sensor Mode Register */ -#define REG_AFEC1_TEMPCWR (*(RwReg*)0x400B4074U) /**< \brief (AFEC1) Temperature Compare Window Register */ -#define REG_AFEC1_ACR (*(RwReg*)0x400B4094U) /**< \brief (AFEC1) Analog Control Register */ -#define REG_AFEC1_WPMR (*(RwReg*)0x400B40E4U) /**< \brief (AFEC1) Write Protect Mode Register */ -#define REG_AFEC1_WPSR (*(RoReg*)0x400B40E8U) /**< \brief (AFEC1) Write Protect Status Register */ -#define REG_AFEC1_RPR (*(RwReg*)0x400B4100U) /**< \brief (AFEC1) Receive Pointer Register */ -#define REG_AFEC1_RCR (*(RwReg*)0x400B4104U) /**< \brief (AFEC1) Receive Counter Register */ -#define REG_AFEC1_RNPR (*(RwReg*)0x400B4110U) /**< \brief (AFEC1) Receive Next Pointer Register */ -#define REG_AFEC1_RNCR (*(RwReg*)0x400B4114U) /**< \brief (AFEC1) Receive Next Counter Register */ -#define REG_AFEC1_PTCR (*(WoReg*)0x400B4120U) /**< \brief (AFEC1) Transfer Control Register */ -#define REG_AFEC1_PTSR (*(RoReg*)0x400B4124U) /**< \brief (AFEC1) Transfer Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_AFEC1_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/can0.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/can0.h deleted file mode 100644 index c90bc95b8..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/can0.h +++ /dev/null @@ -1,204 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_CAN0_INSTANCE_ -#define _SAM4E_CAN0_INSTANCE_ - -/* ========== Register definition for CAN0 peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_CAN0_MR (0x40010000U) /**< \brief (CAN0) Mode Register */ -#define REG_CAN0_IER (0x40010004U) /**< \brief (CAN0) Interrupt Enable Register */ -#define REG_CAN0_IDR (0x40010008U) /**< \brief (CAN0) Interrupt Disable Register */ -#define REG_CAN0_IMR (0x4001000CU) /**< \brief (CAN0) Interrupt Mask Register */ -#define REG_CAN0_SR (0x40010010U) /**< \brief (CAN0) Status Register */ -#define REG_CAN0_BR (0x40010014U) /**< \brief (CAN0) Baudrate Register */ -#define REG_CAN0_TIM (0x40010018U) /**< \brief (CAN0) Timer Register */ -#define REG_CAN0_TIMESTP (0x4001001CU) /**< \brief (CAN0) Timestamp Register */ -#define REG_CAN0_ECR (0x40010020U) /**< \brief (CAN0) Error Counter Register */ -#define REG_CAN0_TCR (0x40010024U) /**< \brief (CAN0) Transfer Command Register */ -#define REG_CAN0_ACR (0x40010028U) /**< \brief (CAN0) Abort Command Register */ -#define REG_CAN0_WPMR (0x400100E4U) /**< \brief (CAN0) Write Protect Mode Register */ -#define REG_CAN0_WPSR (0x400100E8U) /**< \brief (CAN0) Write Protect Status Register */ -#define REG_CAN0_MMR0 (0x40010200U) /**< \brief (CAN0) Mailbox Mode Register (MB = 0) */ -#define REG_CAN0_MAM0 (0x40010204U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 0) */ -#define REG_CAN0_MID0 (0x40010208U) /**< \brief (CAN0) Mailbox ID Register (MB = 0) */ -#define REG_CAN0_MFID0 (0x4001020CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 0) */ -#define REG_CAN0_MSR0 (0x40010210U) /**< \brief (CAN0) Mailbox Status Register (MB = 0) */ -#define REG_CAN0_MDL0 (0x40010214U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 0) */ -#define REG_CAN0_MDH0 (0x40010218U) /**< \brief (CAN0) Mailbox Data High Register (MB = 0) */ -#define REG_CAN0_MCR0 (0x4001021CU) /**< \brief (CAN0) Mailbox Control Register (MB = 0) */ -#define REG_CAN0_MMR1 (0x40010220U) /**< \brief (CAN0) Mailbox Mode Register (MB = 1) */ -#define REG_CAN0_MAM1 (0x40010224U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 1) */ -#define REG_CAN0_MID1 (0x40010228U) /**< \brief (CAN0) Mailbox ID Register (MB = 1) */ -#define REG_CAN0_MFID1 (0x4001022CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 1) */ -#define REG_CAN0_MSR1 (0x40010230U) /**< \brief (CAN0) Mailbox Status Register (MB = 1) */ -#define REG_CAN0_MDL1 (0x40010234U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 1) */ -#define REG_CAN0_MDH1 (0x40010238U) /**< \brief (CAN0) Mailbox Data High Register (MB = 1) */ -#define REG_CAN0_MCR1 (0x4001023CU) /**< \brief (CAN0) Mailbox Control Register (MB = 1) */ -#define REG_CAN0_MMR2 (0x40010240U) /**< \brief (CAN0) Mailbox Mode Register (MB = 2) */ -#define REG_CAN0_MAM2 (0x40010244U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 2) */ -#define REG_CAN0_MID2 (0x40010248U) /**< \brief (CAN0) Mailbox ID Register (MB = 2) */ -#define REG_CAN0_MFID2 (0x4001024CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 2) */ -#define REG_CAN0_MSR2 (0x40010250U) /**< \brief (CAN0) Mailbox Status Register (MB = 2) */ -#define REG_CAN0_MDL2 (0x40010254U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 2) */ -#define REG_CAN0_MDH2 (0x40010258U) /**< \brief (CAN0) Mailbox Data High Register (MB = 2) */ -#define REG_CAN0_MCR2 (0x4001025CU) /**< \brief (CAN0) Mailbox Control Register (MB = 2) */ -#define REG_CAN0_MMR3 (0x40010260U) /**< \brief (CAN0) Mailbox Mode Register (MB = 3) */ -#define REG_CAN0_MAM3 (0x40010264U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 3) */ -#define REG_CAN0_MID3 (0x40010268U) /**< \brief (CAN0) Mailbox ID Register (MB = 3) */ -#define REG_CAN0_MFID3 (0x4001026CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 3) */ -#define REG_CAN0_MSR3 (0x40010270U) /**< \brief (CAN0) Mailbox Status Register (MB = 3) */ -#define REG_CAN0_MDL3 (0x40010274U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 3) */ -#define REG_CAN0_MDH3 (0x40010278U) /**< \brief (CAN0) Mailbox Data High Register (MB = 3) */ -#define REG_CAN0_MCR3 (0x4001027CU) /**< \brief (CAN0) Mailbox Control Register (MB = 3) */ -#define REG_CAN0_MMR4 (0x40010280U) /**< \brief (CAN0) Mailbox Mode Register (MB = 4) */ -#define REG_CAN0_MAM4 (0x40010284U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 4) */ -#define REG_CAN0_MID4 (0x40010288U) /**< \brief (CAN0) Mailbox ID Register (MB = 4) */ -#define REG_CAN0_MFID4 (0x4001028CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 4) */ -#define REG_CAN0_MSR4 (0x40010290U) /**< \brief (CAN0) Mailbox Status Register (MB = 4) */ -#define REG_CAN0_MDL4 (0x40010294U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 4) */ -#define REG_CAN0_MDH4 (0x40010298U) /**< \brief (CAN0) Mailbox Data High Register (MB = 4) */ -#define REG_CAN0_MCR4 (0x4001029CU) /**< \brief (CAN0) Mailbox Control Register (MB = 4) */ -#define REG_CAN0_MMR5 (0x400102A0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 5) */ -#define REG_CAN0_MAM5 (0x400102A4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 5) */ -#define REG_CAN0_MID5 (0x400102A8U) /**< \brief (CAN0) Mailbox ID Register (MB = 5) */ -#define REG_CAN0_MFID5 (0x400102ACU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 5) */ -#define REG_CAN0_MSR5 (0x400102B0U) /**< \brief (CAN0) Mailbox Status Register (MB = 5) */ -#define REG_CAN0_MDL5 (0x400102B4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 5) */ -#define REG_CAN0_MDH5 (0x400102B8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 5) */ -#define REG_CAN0_MCR5 (0x400102BCU) /**< \brief (CAN0) Mailbox Control Register (MB = 5) */ -#define REG_CAN0_MMR6 (0x400102C0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 6) */ -#define REG_CAN0_MAM6 (0x400102C4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 6) */ -#define REG_CAN0_MID6 (0x400102C8U) /**< \brief (CAN0) Mailbox ID Register (MB = 6) */ -#define REG_CAN0_MFID6 (0x400102CCU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 6) */ -#define REG_CAN0_MSR6 (0x400102D0U) /**< \brief (CAN0) Mailbox Status Register (MB = 6) */ -#define REG_CAN0_MDL6 (0x400102D4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 6) */ -#define REG_CAN0_MDH6 (0x400102D8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 6) */ -#define REG_CAN0_MCR6 (0x400102DCU) /**< \brief (CAN0) Mailbox Control Register (MB = 6) */ -#define REG_CAN0_MMR7 (0x400102E0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 7) */ -#define REG_CAN0_MAM7 (0x400102E4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 7) */ -#define REG_CAN0_MID7 (0x400102E8U) /**< \brief (CAN0) Mailbox ID Register (MB = 7) */ -#define REG_CAN0_MFID7 (0x400102ECU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 7) */ -#define REG_CAN0_MSR7 (0x400102F0U) /**< \brief (CAN0) Mailbox Status Register (MB = 7) */ -#define REG_CAN0_MDL7 (0x400102F4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 7) */ -#define REG_CAN0_MDH7 (0x400102F8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 7) */ -#define REG_CAN0_MCR7 (0x400102FCU) /**< \brief (CAN0) Mailbox Control Register (MB = 7) */ -#else -#define REG_CAN0_MR (*(RwReg*)0x40010000U) /**< \brief (CAN0) Mode Register */ -#define REG_CAN0_IER (*(WoReg*)0x40010004U) /**< \brief (CAN0) Interrupt Enable Register */ -#define REG_CAN0_IDR (*(WoReg*)0x40010008U) /**< \brief (CAN0) Interrupt Disable Register */ -#define REG_CAN0_IMR (*(RoReg*)0x4001000CU) /**< \brief (CAN0) Interrupt Mask Register */ -#define REG_CAN0_SR (*(RoReg*)0x40010010U) /**< \brief (CAN0) Status Register */ -#define REG_CAN0_BR (*(RwReg*)0x40010014U) /**< \brief (CAN0) Baudrate Register */ -#define REG_CAN0_TIM (*(RoReg*)0x40010018U) /**< \brief (CAN0) Timer Register */ -#define REG_CAN0_TIMESTP (*(RoReg*)0x4001001CU) /**< \brief (CAN0) Timestamp Register */ -#define REG_CAN0_ECR (*(RoReg*)0x40010020U) /**< \brief (CAN0) Error Counter Register */ -#define REG_CAN0_TCR (*(WoReg*)0x40010024U) /**< \brief (CAN0) Transfer Command Register */ -#define REG_CAN0_ACR (*(WoReg*)0x40010028U) /**< \brief (CAN0) Abort Command Register */ -#define REG_CAN0_WPMR (*(RwReg*)0x400100E4U) /**< \brief (CAN0) Write Protect Mode Register */ -#define REG_CAN0_WPSR (*(RoReg*)0x400100E8U) /**< \brief (CAN0) Write Protect Status Register */ -#define REG_CAN0_MMR0 (*(RwReg*)0x40010200U) /**< \brief (CAN0) Mailbox Mode Register (MB = 0) */ -#define REG_CAN0_MAM0 (*(RwReg*)0x40010204U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 0) */ -#define REG_CAN0_MID0 (*(RwReg*)0x40010208U) /**< \brief (CAN0) Mailbox ID Register (MB = 0) */ -#define REG_CAN0_MFID0 (*(RoReg*)0x4001020CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 0) */ -#define REG_CAN0_MSR0 (*(RoReg*)0x40010210U) /**< \brief (CAN0) Mailbox Status Register (MB = 0) */ -#define REG_CAN0_MDL0 (*(RwReg*)0x40010214U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 0) */ -#define REG_CAN0_MDH0 (*(RwReg*)0x40010218U) /**< \brief (CAN0) Mailbox Data High Register (MB = 0) */ -#define REG_CAN0_MCR0 (*(WoReg*)0x4001021CU) /**< \brief (CAN0) Mailbox Control Register (MB = 0) */ -#define REG_CAN0_MMR1 (*(RwReg*)0x40010220U) /**< \brief (CAN0) Mailbox Mode Register (MB = 1) */ -#define REG_CAN0_MAM1 (*(RwReg*)0x40010224U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 1) */ -#define REG_CAN0_MID1 (*(RwReg*)0x40010228U) /**< \brief (CAN0) Mailbox ID Register (MB = 1) */ -#define REG_CAN0_MFID1 (*(RoReg*)0x4001022CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 1) */ -#define REG_CAN0_MSR1 (*(RoReg*)0x40010230U) /**< \brief (CAN0) Mailbox Status Register (MB = 1) */ -#define REG_CAN0_MDL1 (*(RwReg*)0x40010234U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 1) */ -#define REG_CAN0_MDH1 (*(RwReg*)0x40010238U) /**< \brief (CAN0) Mailbox Data High Register (MB = 1) */ -#define REG_CAN0_MCR1 (*(WoReg*)0x4001023CU) /**< \brief (CAN0) Mailbox Control Register (MB = 1) */ -#define REG_CAN0_MMR2 (*(RwReg*)0x40010240U) /**< \brief (CAN0) Mailbox Mode Register (MB = 2) */ -#define REG_CAN0_MAM2 (*(RwReg*)0x40010244U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 2) */ -#define REG_CAN0_MID2 (*(RwReg*)0x40010248U) /**< \brief (CAN0) Mailbox ID Register (MB = 2) */ -#define REG_CAN0_MFID2 (*(RoReg*)0x4001024CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 2) */ -#define REG_CAN0_MSR2 (*(RoReg*)0x40010250U) /**< \brief (CAN0) Mailbox Status Register (MB = 2) */ -#define REG_CAN0_MDL2 (*(RwReg*)0x40010254U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 2) */ -#define REG_CAN0_MDH2 (*(RwReg*)0x40010258U) /**< \brief (CAN0) Mailbox Data High Register (MB = 2) */ -#define REG_CAN0_MCR2 (*(WoReg*)0x4001025CU) /**< \brief (CAN0) Mailbox Control Register (MB = 2) */ -#define REG_CAN0_MMR3 (*(RwReg*)0x40010260U) /**< \brief (CAN0) Mailbox Mode Register (MB = 3) */ -#define REG_CAN0_MAM3 (*(RwReg*)0x40010264U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 3) */ -#define REG_CAN0_MID3 (*(RwReg*)0x40010268U) /**< \brief (CAN0) Mailbox ID Register (MB = 3) */ -#define REG_CAN0_MFID3 (*(RoReg*)0x4001026CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 3) */ -#define REG_CAN0_MSR3 (*(RoReg*)0x40010270U) /**< \brief (CAN0) Mailbox Status Register (MB = 3) */ -#define REG_CAN0_MDL3 (*(RwReg*)0x40010274U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 3) */ -#define REG_CAN0_MDH3 (*(RwReg*)0x40010278U) /**< \brief (CAN0) Mailbox Data High Register (MB = 3) */ -#define REG_CAN0_MCR3 (*(WoReg*)0x4001027CU) /**< \brief (CAN0) Mailbox Control Register (MB = 3) */ -#define REG_CAN0_MMR4 (*(RwReg*)0x40010280U) /**< \brief (CAN0) Mailbox Mode Register (MB = 4) */ -#define REG_CAN0_MAM4 (*(RwReg*)0x40010284U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 4) */ -#define REG_CAN0_MID4 (*(RwReg*)0x40010288U) /**< \brief (CAN0) Mailbox ID Register (MB = 4) */ -#define REG_CAN0_MFID4 (*(RoReg*)0x4001028CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 4) */ -#define REG_CAN0_MSR4 (*(RoReg*)0x40010290U) /**< \brief (CAN0) Mailbox Status Register (MB = 4) */ -#define REG_CAN0_MDL4 (*(RwReg*)0x40010294U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 4) */ -#define REG_CAN0_MDH4 (*(RwReg*)0x40010298U) /**< \brief (CAN0) Mailbox Data High Register (MB = 4) */ -#define REG_CAN0_MCR4 (*(WoReg*)0x4001029CU) /**< \brief (CAN0) Mailbox Control Register (MB = 4) */ -#define REG_CAN0_MMR5 (*(RwReg*)0x400102A0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 5) */ -#define REG_CAN0_MAM5 (*(RwReg*)0x400102A4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 5) */ -#define REG_CAN0_MID5 (*(RwReg*)0x400102A8U) /**< \brief (CAN0) Mailbox ID Register (MB = 5) */ -#define REG_CAN0_MFID5 (*(RoReg*)0x400102ACU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 5) */ -#define REG_CAN0_MSR5 (*(RoReg*)0x400102B0U) /**< \brief (CAN0) Mailbox Status Register (MB = 5) */ -#define REG_CAN0_MDL5 (*(RwReg*)0x400102B4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 5) */ -#define REG_CAN0_MDH5 (*(RwReg*)0x400102B8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 5) */ -#define REG_CAN0_MCR5 (*(WoReg*)0x400102BCU) /**< \brief (CAN0) Mailbox Control Register (MB = 5) */ -#define REG_CAN0_MMR6 (*(RwReg*)0x400102C0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 6) */ -#define REG_CAN0_MAM6 (*(RwReg*)0x400102C4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 6) */ -#define REG_CAN0_MID6 (*(RwReg*)0x400102C8U) /**< \brief (CAN0) Mailbox ID Register (MB = 6) */ -#define REG_CAN0_MFID6 (*(RoReg*)0x400102CCU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 6) */ -#define REG_CAN0_MSR6 (*(RoReg*)0x400102D0U) /**< \brief (CAN0) Mailbox Status Register (MB = 6) */ -#define REG_CAN0_MDL6 (*(RwReg*)0x400102D4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 6) */ -#define REG_CAN0_MDH6 (*(RwReg*)0x400102D8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 6) */ -#define REG_CAN0_MCR6 (*(WoReg*)0x400102DCU) /**< \brief (CAN0) Mailbox Control Register (MB = 6) */ -#define REG_CAN0_MMR7 (*(RwReg*)0x400102E0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 7) */ -#define REG_CAN0_MAM7 (*(RwReg*)0x400102E4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 7) */ -#define REG_CAN0_MID7 (*(RwReg*)0x400102E8U) /**< \brief (CAN0) Mailbox ID Register (MB = 7) */ -#define REG_CAN0_MFID7 (*(RoReg*)0x400102ECU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 7) */ -#define REG_CAN0_MSR7 (*(RoReg*)0x400102F0U) /**< \brief (CAN0) Mailbox Status Register (MB = 7) */ -#define REG_CAN0_MDL7 (*(RwReg*)0x400102F4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 7) */ -#define REG_CAN0_MDH7 (*(RwReg*)0x400102F8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 7) */ -#define REG_CAN0_MCR7 (*(WoReg*)0x400102FCU) /**< \brief (CAN0) Mailbox Control Register (MB = 7) */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_CAN0_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/can1.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/can1.h deleted file mode 100644 index df97b2be9..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/can1.h +++ /dev/null @@ -1,204 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_CAN1_INSTANCE_ -#define _SAM4E_CAN1_INSTANCE_ - -/* ========== Register definition for CAN1 peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_CAN1_MR (0x40014000U) /**< \brief (CAN1) Mode Register */ -#define REG_CAN1_IER (0x40014004U) /**< \brief (CAN1) Interrupt Enable Register */ -#define REG_CAN1_IDR (0x40014008U) /**< \brief (CAN1) Interrupt Disable Register */ -#define REG_CAN1_IMR (0x4001400CU) /**< \brief (CAN1) Interrupt Mask Register */ -#define REG_CAN1_SR (0x40014010U) /**< \brief (CAN1) Status Register */ -#define REG_CAN1_BR (0x40014014U) /**< \brief (CAN1) Baudrate Register */ -#define REG_CAN1_TIM (0x40014018U) /**< \brief (CAN1) Timer Register */ -#define REG_CAN1_TIMESTP (0x4001401CU) /**< \brief (CAN1) Timestamp Register */ -#define REG_CAN1_ECR (0x40014020U) /**< \brief (CAN1) Error Counter Register */ -#define REG_CAN1_TCR (0x40014024U) /**< \brief (CAN1) Transfer Command Register */ -#define REG_CAN1_ACR (0x40014028U) /**< \brief (CAN1) Abort Command Register */ -#define REG_CAN1_WPMR (0x400140E4U) /**< \brief (CAN1) Write Protect Mode Register */ -#define REG_CAN1_WPSR (0x400140E8U) /**< \brief (CAN1) Write Protect Status Register */ -#define REG_CAN1_MMR0 (0x40014200U) /**< \brief (CAN1) Mailbox Mode Register (MB = 0) */ -#define REG_CAN1_MAM0 (0x40014204U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 0) */ -#define REG_CAN1_MID0 (0x40014208U) /**< \brief (CAN1) Mailbox ID Register (MB = 0) */ -#define REG_CAN1_MFID0 (0x4001420CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 0) */ -#define REG_CAN1_MSR0 (0x40014210U) /**< \brief (CAN1) Mailbox Status Register (MB = 0) */ -#define REG_CAN1_MDL0 (0x40014214U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 0) */ -#define REG_CAN1_MDH0 (0x40014218U) /**< \brief (CAN1) Mailbox Data High Register (MB = 0) */ -#define REG_CAN1_MCR0 (0x4001421CU) /**< \brief (CAN1) Mailbox Control Register (MB = 0) */ -#define REG_CAN1_MMR1 (0x40014220U) /**< \brief (CAN1) Mailbox Mode Register (MB = 1) */ -#define REG_CAN1_MAM1 (0x40014224U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 1) */ -#define REG_CAN1_MID1 (0x40014228U) /**< \brief (CAN1) Mailbox ID Register (MB = 1) */ -#define REG_CAN1_MFID1 (0x4001422CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 1) */ -#define REG_CAN1_MSR1 (0x40014230U) /**< \brief (CAN1) Mailbox Status Register (MB = 1) */ -#define REG_CAN1_MDL1 (0x40014234U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 1) */ -#define REG_CAN1_MDH1 (0x40014238U) /**< \brief (CAN1) Mailbox Data High Register (MB = 1) */ -#define REG_CAN1_MCR1 (0x4001423CU) /**< \brief (CAN1) Mailbox Control Register (MB = 1) */ -#define REG_CAN1_MMR2 (0x40014240U) /**< \brief (CAN1) Mailbox Mode Register (MB = 2) */ -#define REG_CAN1_MAM2 (0x40014244U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 2) */ -#define REG_CAN1_MID2 (0x40014248U) /**< \brief (CAN1) Mailbox ID Register (MB = 2) */ -#define REG_CAN1_MFID2 (0x4001424CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 2) */ -#define REG_CAN1_MSR2 (0x40014250U) /**< \brief (CAN1) Mailbox Status Register (MB = 2) */ -#define REG_CAN1_MDL2 (0x40014254U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 2) */ -#define REG_CAN1_MDH2 (0x40014258U) /**< \brief (CAN1) Mailbox Data High Register (MB = 2) */ -#define REG_CAN1_MCR2 (0x4001425CU) /**< \brief (CAN1) Mailbox Control Register (MB = 2) */ -#define REG_CAN1_MMR3 (0x40014260U) /**< \brief (CAN1) Mailbox Mode Register (MB = 3) */ -#define REG_CAN1_MAM3 (0x40014264U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 3) */ -#define REG_CAN1_MID3 (0x40014268U) /**< \brief (CAN1) Mailbox ID Register (MB = 3) */ -#define REG_CAN1_MFID3 (0x4001426CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 3) */ -#define REG_CAN1_MSR3 (0x40014270U) /**< \brief (CAN1) Mailbox Status Register (MB = 3) */ -#define REG_CAN1_MDL3 (0x40014274U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 3) */ -#define REG_CAN1_MDH3 (0x40014278U) /**< \brief (CAN1) Mailbox Data High Register (MB = 3) */ -#define REG_CAN1_MCR3 (0x4001427CU) /**< \brief (CAN1) Mailbox Control Register (MB = 3) */ -#define REG_CAN1_MMR4 (0x40014280U) /**< \brief (CAN1) Mailbox Mode Register (MB = 4) */ -#define REG_CAN1_MAM4 (0x40014284U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 4) */ -#define REG_CAN1_MID4 (0x40014288U) /**< \brief (CAN1) Mailbox ID Register (MB = 4) */ -#define REG_CAN1_MFID4 (0x4001428CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 4) */ -#define REG_CAN1_MSR4 (0x40014290U) /**< \brief (CAN1) Mailbox Status Register (MB = 4) */ -#define REG_CAN1_MDL4 (0x40014294U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 4) */ -#define REG_CAN1_MDH4 (0x40014298U) /**< \brief (CAN1) Mailbox Data High Register (MB = 4) */ -#define REG_CAN1_MCR4 (0x4001429CU) /**< \brief (CAN1) Mailbox Control Register (MB = 4) */ -#define REG_CAN1_MMR5 (0x400142A0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 5) */ -#define REG_CAN1_MAM5 (0x400142A4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 5) */ -#define REG_CAN1_MID5 (0x400142A8U) /**< \brief (CAN1) Mailbox ID Register (MB = 5) */ -#define REG_CAN1_MFID5 (0x400142ACU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 5) */ -#define REG_CAN1_MSR5 (0x400142B0U) /**< \brief (CAN1) Mailbox Status Register (MB = 5) */ -#define REG_CAN1_MDL5 (0x400142B4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 5) */ -#define REG_CAN1_MDH5 (0x400142B8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 5) */ -#define REG_CAN1_MCR5 (0x400142BCU) /**< \brief (CAN1) Mailbox Control Register (MB = 5) */ -#define REG_CAN1_MMR6 (0x400142C0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 6) */ -#define REG_CAN1_MAM6 (0x400142C4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 6) */ -#define REG_CAN1_MID6 (0x400142C8U) /**< \brief (CAN1) Mailbox ID Register (MB = 6) */ -#define REG_CAN1_MFID6 (0x400142CCU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 6) */ -#define REG_CAN1_MSR6 (0x400142D0U) /**< \brief (CAN1) Mailbox Status Register (MB = 6) */ -#define REG_CAN1_MDL6 (0x400142D4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 6) */ -#define REG_CAN1_MDH6 (0x400142D8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 6) */ -#define REG_CAN1_MCR6 (0x400142DCU) /**< \brief (CAN1) Mailbox Control Register (MB = 6) */ -#define REG_CAN1_MMR7 (0x400142E0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 7) */ -#define REG_CAN1_MAM7 (0x400142E4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 7) */ -#define REG_CAN1_MID7 (0x400142E8U) /**< \brief (CAN1) Mailbox ID Register (MB = 7) */ -#define REG_CAN1_MFID7 (0x400142ECU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 7) */ -#define REG_CAN1_MSR7 (0x400142F0U) /**< \brief (CAN1) Mailbox Status Register (MB = 7) */ -#define REG_CAN1_MDL7 (0x400142F4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 7) */ -#define REG_CAN1_MDH7 (0x400142F8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 7) */ -#define REG_CAN1_MCR7 (0x400142FCU) /**< \brief (CAN1) Mailbox Control Register (MB = 7) */ -#else -#define REG_CAN1_MR (*(RwReg*)0x40014000U) /**< \brief (CAN1) Mode Register */ -#define REG_CAN1_IER (*(WoReg*)0x40014004U) /**< \brief (CAN1) Interrupt Enable Register */ -#define REG_CAN1_IDR (*(WoReg*)0x40014008U) /**< \brief (CAN1) Interrupt Disable Register */ -#define REG_CAN1_IMR (*(RoReg*)0x4001400CU) /**< \brief (CAN1) Interrupt Mask Register */ -#define REG_CAN1_SR (*(RoReg*)0x40014010U) /**< \brief (CAN1) Status Register */ -#define REG_CAN1_BR (*(RwReg*)0x40014014U) /**< \brief (CAN1) Baudrate Register */ -#define REG_CAN1_TIM (*(RoReg*)0x40014018U) /**< \brief (CAN1) Timer Register */ -#define REG_CAN1_TIMESTP (*(RoReg*)0x4001401CU) /**< \brief (CAN1) Timestamp Register */ -#define REG_CAN1_ECR (*(RoReg*)0x40014020U) /**< \brief (CAN1) Error Counter Register */ -#define REG_CAN1_TCR (*(WoReg*)0x40014024U) /**< \brief (CAN1) Transfer Command Register */ -#define REG_CAN1_ACR (*(WoReg*)0x40014028U) /**< \brief (CAN1) Abort Command Register */ -#define REG_CAN1_WPMR (*(RwReg*)0x400140E4U) /**< \brief (CAN1) Write Protect Mode Register */ -#define REG_CAN1_WPSR (*(RoReg*)0x400140E8U) /**< \brief (CAN1) Write Protect Status Register */ -#define REG_CAN1_MMR0 (*(RwReg*)0x40014200U) /**< \brief (CAN1) Mailbox Mode Register (MB = 0) */ -#define REG_CAN1_MAM0 (*(RwReg*)0x40014204U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 0) */ -#define REG_CAN1_MID0 (*(RwReg*)0x40014208U) /**< \brief (CAN1) Mailbox ID Register (MB = 0) */ -#define REG_CAN1_MFID0 (*(RoReg*)0x4001420CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 0) */ -#define REG_CAN1_MSR0 (*(RoReg*)0x40014210U) /**< \brief (CAN1) Mailbox Status Register (MB = 0) */ -#define REG_CAN1_MDL0 (*(RwReg*)0x40014214U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 0) */ -#define REG_CAN1_MDH0 (*(RwReg*)0x40014218U) /**< \brief (CAN1) Mailbox Data High Register (MB = 0) */ -#define REG_CAN1_MCR0 (*(WoReg*)0x4001421CU) /**< \brief (CAN1) Mailbox Control Register (MB = 0) */ -#define REG_CAN1_MMR1 (*(RwReg*)0x40014220U) /**< \brief (CAN1) Mailbox Mode Register (MB = 1) */ -#define REG_CAN1_MAM1 (*(RwReg*)0x40014224U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 1) */ -#define REG_CAN1_MID1 (*(RwReg*)0x40014228U) /**< \brief (CAN1) Mailbox ID Register (MB = 1) */ -#define REG_CAN1_MFID1 (*(RoReg*)0x4001422CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 1) */ -#define REG_CAN1_MSR1 (*(RoReg*)0x40014230U) /**< \brief (CAN1) Mailbox Status Register (MB = 1) */ -#define REG_CAN1_MDL1 (*(RwReg*)0x40014234U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 1) */ -#define REG_CAN1_MDH1 (*(RwReg*)0x40014238U) /**< \brief (CAN1) Mailbox Data High Register (MB = 1) */ -#define REG_CAN1_MCR1 (*(WoReg*)0x4001423CU) /**< \brief (CAN1) Mailbox Control Register (MB = 1) */ -#define REG_CAN1_MMR2 (*(RwReg*)0x40014240U) /**< \brief (CAN1) Mailbox Mode Register (MB = 2) */ -#define REG_CAN1_MAM2 (*(RwReg*)0x40014244U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 2) */ -#define REG_CAN1_MID2 (*(RwReg*)0x40014248U) /**< \brief (CAN1) Mailbox ID Register (MB = 2) */ -#define REG_CAN1_MFID2 (*(RoReg*)0x4001424CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 2) */ -#define REG_CAN1_MSR2 (*(RoReg*)0x40014250U) /**< \brief (CAN1) Mailbox Status Register (MB = 2) */ -#define REG_CAN1_MDL2 (*(RwReg*)0x40014254U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 2) */ -#define REG_CAN1_MDH2 (*(RwReg*)0x40014258U) /**< \brief (CAN1) Mailbox Data High Register (MB = 2) */ -#define REG_CAN1_MCR2 (*(WoReg*)0x4001425CU) /**< \brief (CAN1) Mailbox Control Register (MB = 2) */ -#define REG_CAN1_MMR3 (*(RwReg*)0x40014260U) /**< \brief (CAN1) Mailbox Mode Register (MB = 3) */ -#define REG_CAN1_MAM3 (*(RwReg*)0x40014264U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 3) */ -#define REG_CAN1_MID3 (*(RwReg*)0x40014268U) /**< \brief (CAN1) Mailbox ID Register (MB = 3) */ -#define REG_CAN1_MFID3 (*(RoReg*)0x4001426CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 3) */ -#define REG_CAN1_MSR3 (*(RoReg*)0x40014270U) /**< \brief (CAN1) Mailbox Status Register (MB = 3) */ -#define REG_CAN1_MDL3 (*(RwReg*)0x40014274U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 3) */ -#define REG_CAN1_MDH3 (*(RwReg*)0x40014278U) /**< \brief (CAN1) Mailbox Data High Register (MB = 3) */ -#define REG_CAN1_MCR3 (*(WoReg*)0x4001427CU) /**< \brief (CAN1) Mailbox Control Register (MB = 3) */ -#define REG_CAN1_MMR4 (*(RwReg*)0x40014280U) /**< \brief (CAN1) Mailbox Mode Register (MB = 4) */ -#define REG_CAN1_MAM4 (*(RwReg*)0x40014284U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 4) */ -#define REG_CAN1_MID4 (*(RwReg*)0x40014288U) /**< \brief (CAN1) Mailbox ID Register (MB = 4) */ -#define REG_CAN1_MFID4 (*(RoReg*)0x4001428CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 4) */ -#define REG_CAN1_MSR4 (*(RoReg*)0x40014290U) /**< \brief (CAN1) Mailbox Status Register (MB = 4) */ -#define REG_CAN1_MDL4 (*(RwReg*)0x40014294U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 4) */ -#define REG_CAN1_MDH4 (*(RwReg*)0x40014298U) /**< \brief (CAN1) Mailbox Data High Register (MB = 4) */ -#define REG_CAN1_MCR4 (*(WoReg*)0x4001429CU) /**< \brief (CAN1) Mailbox Control Register (MB = 4) */ -#define REG_CAN1_MMR5 (*(RwReg*)0x400142A0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 5) */ -#define REG_CAN1_MAM5 (*(RwReg*)0x400142A4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 5) */ -#define REG_CAN1_MID5 (*(RwReg*)0x400142A8U) /**< \brief (CAN1) Mailbox ID Register (MB = 5) */ -#define REG_CAN1_MFID5 (*(RoReg*)0x400142ACU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 5) */ -#define REG_CAN1_MSR5 (*(RoReg*)0x400142B0U) /**< \brief (CAN1) Mailbox Status Register (MB = 5) */ -#define REG_CAN1_MDL5 (*(RwReg*)0x400142B4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 5) */ -#define REG_CAN1_MDH5 (*(RwReg*)0x400142B8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 5) */ -#define REG_CAN1_MCR5 (*(WoReg*)0x400142BCU) /**< \brief (CAN1) Mailbox Control Register (MB = 5) */ -#define REG_CAN1_MMR6 (*(RwReg*)0x400142C0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 6) */ -#define REG_CAN1_MAM6 (*(RwReg*)0x400142C4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 6) */ -#define REG_CAN1_MID6 (*(RwReg*)0x400142C8U) /**< \brief (CAN1) Mailbox ID Register (MB = 6) */ -#define REG_CAN1_MFID6 (*(RoReg*)0x400142CCU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 6) */ -#define REG_CAN1_MSR6 (*(RoReg*)0x400142D0U) /**< \brief (CAN1) Mailbox Status Register (MB = 6) */ -#define REG_CAN1_MDL6 (*(RwReg*)0x400142D4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 6) */ -#define REG_CAN1_MDH6 (*(RwReg*)0x400142D8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 6) */ -#define REG_CAN1_MCR6 (*(WoReg*)0x400142DCU) /**< \brief (CAN1) Mailbox Control Register (MB = 6) */ -#define REG_CAN1_MMR7 (*(RwReg*)0x400142E0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 7) */ -#define REG_CAN1_MAM7 (*(RwReg*)0x400142E4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 7) */ -#define REG_CAN1_MID7 (*(RwReg*)0x400142E8U) /**< \brief (CAN1) Mailbox ID Register (MB = 7) */ -#define REG_CAN1_MFID7 (*(RoReg*)0x400142ECU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 7) */ -#define REG_CAN1_MSR7 (*(RoReg*)0x400142F0U) /**< \brief (CAN1) Mailbox Status Register (MB = 7) */ -#define REG_CAN1_MDL7 (*(RwReg*)0x400142F4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 7) */ -#define REG_CAN1_MDH7 (*(RwReg*)0x400142F8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 7) */ -#define REG_CAN1_MCR7 (*(WoReg*)0x400142FCU) /**< \brief (CAN1) Mailbox Control Register (MB = 7) */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_CAN1_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/chipid.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/chipid.h deleted file mode 100644 index 54c13a729..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/chipid.h +++ /dev/null @@ -1,54 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_CHIPID_INSTANCE_ -#define _SAM4E_CHIPID_INSTANCE_ - -/* ========== Register definition for CHIPID peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_CHIPID_CIDR (0x400E0740U) /**< \brief (CHIPID) Chip ID Register */ -#define REG_CHIPID_EXID (0x400E0744U) /**< \brief (CHIPID) Chip ID Extension Register */ -#else -#define REG_CHIPID_CIDR (*(RoReg*)0x400E0740U) /**< \brief (CHIPID) Chip ID Register */ -#define REG_CHIPID_EXID (*(RoReg*)0x400E0744U) /**< \brief (CHIPID) Chip ID Extension Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_CHIPID_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/cmcc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/cmcc.h deleted file mode 100644 index cee4353ce..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/cmcc.h +++ /dev/null @@ -1,70 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_CMCC_INSTANCE_ -#define _SAM4E_CMCC_INSTANCE_ - -/* ========== Register definition for CMCC peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_CMCC_TYPE (0x400C4000U) /**< \brief (CMCC) Cache Type Register */ -#define REG_CMCC_CFG (0x400C4004U) /**< \brief (CMCC) Cache Configuration Register */ -#define REG_CMCC_CTRL (0x400C4008U) /**< \brief (CMCC) Cache Control Register */ -#define REG_CMCC_SR (0x400C400CU) /**< \brief (CMCC) Cache Status Register */ -#define REG_CMCC_MAINT0 (0x400C4020U) /**< \brief (CMCC) Cache Maintenance Register 0 */ -#define REG_CMCC_MAINT1 (0x400C4024U) /**< \brief (CMCC) Cache Maintenance Register 1 */ -#define REG_CMCC_MCFG (0x400C4028U) /**< \brief (CMCC) Cache Monitor Configuration Register */ -#define REG_CMCC_MEN (0x400C402CU) /**< \brief (CMCC) Cache Monitor Enable Register */ -#define REG_CMCC_MCTRL (0x400C4030U) /**< \brief (CMCC) Cache Monitor Control Register */ -#define REG_CMCC_MSR (0x400C4034U) /**< \brief (CMCC) Cache Monitor Status Register */ -#else -#define REG_CMCC_TYPE (*(RoReg*)0x400C4000U) /**< \brief (CMCC) Cache Type Register */ -#define REG_CMCC_CFG (*(RwReg*)0x400C4004U) /**< \brief (CMCC) Cache Configuration Register */ -#define REG_CMCC_CTRL (*(WoReg*)0x400C4008U) /**< \brief (CMCC) Cache Control Register */ -#define REG_CMCC_SR (*(RoReg*)0x400C400CU) /**< \brief (CMCC) Cache Status Register */ -#define REG_CMCC_MAINT0 (*(WoReg*)0x400C4020U) /**< \brief (CMCC) Cache Maintenance Register 0 */ -#define REG_CMCC_MAINT1 (*(WoReg*)0x400C4024U) /**< \brief (CMCC) Cache Maintenance Register 1 */ -#define REG_CMCC_MCFG (*(RwReg*)0x400C4028U) /**< \brief (CMCC) Cache Monitor Configuration Register */ -#define REG_CMCC_MEN (*(RwReg*)0x400C402CU) /**< \brief (CMCC) Cache Monitor Enable Register */ -#define REG_CMCC_MCTRL (*(WoReg*)0x400C4030U) /**< \brief (CMCC) Cache Monitor Control Register */ -#define REG_CMCC_MSR (*(RoReg*)0x400C4034U) /**< \brief (CMCC) Cache Monitor Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_CMCC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/crccu.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/crccu.h deleted file mode 100644 index 9856dc73a..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/crccu.h +++ /dev/null @@ -1,80 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_CRCCU_INSTANCE_ -#define _SAM4E_CRCCU_INSTANCE_ - -/* ========== Register definition for CRCCU peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_CRCCU_DSCR (0x40044000U) /**< \brief (CRCCU) CRCCU Descriptor Base Register */ -#define REG_CRCCU_DMA_EN (0x40044008U) /**< \brief (CRCCU) CRCCU DMA Enable Register */ -#define REG_CRCCU_DMA_DIS (0x4004400CU) /**< \brief (CRCCU) CRCCU DMA Disable Register */ -#define REG_CRCCU_DMA_SR (0x40044010U) /**< \brief (CRCCU) CRCCU DMA Status Register */ -#define REG_CRCCU_DMA_IER (0x40044014U) /**< \brief (CRCCU) CRCCU DMA Interrupt Enable Register */ -#define REG_CRCCU_DMA_IDR (0x40044018U) /**< \brief (CRCCU) CRCCU DMA Interrupt Disable Register */ -#define REG_CRCCU_DMA_IMR (0x4004401CU) /**< \brief (CRCCU) CRCCU DMA Interrupt Mask Register */ -#define REG_CRCCU_DMA_ISR (0x40044020U) /**< \brief (CRCCU) CRCCU DMA Interrupt Status Register */ -#define REG_CRCCU_CR (0x40044034U) /**< \brief (CRCCU) CRCCU Control Register */ -#define REG_CRCCU_MR (0x40044038U) /**< \brief (CRCCU) CRCCU Mode Register */ -#define REG_CRCCU_SR (0x4004403CU) /**< \brief (CRCCU) CRCCU Status Register */ -#define REG_CRCCU_IER (0x40044040U) /**< \brief (CRCCU) CRCCU Interrupt Enable Register */ -#define REG_CRCCU_IDR (0x40044044U) /**< \brief (CRCCU) CRCCU Interrupt Disable Register */ -#define REG_CRCCU_IMR (0x40044048U) /**< \brief (CRCCU) CRCCU Interrupt Mask Register */ -#define REG_CRCCU_ISR (0x4004404CU) /**< \brief (CRCCU) CRCCU Interrupt Status Register */ -#else -#define REG_CRCCU_DSCR (*(RwReg*)0x40044000U) /**< \brief (CRCCU) CRCCU Descriptor Base Register */ -#define REG_CRCCU_DMA_EN (*(WoReg*)0x40044008U) /**< \brief (CRCCU) CRCCU DMA Enable Register */ -#define REG_CRCCU_DMA_DIS (*(WoReg*)0x4004400CU) /**< \brief (CRCCU) CRCCU DMA Disable Register */ -#define REG_CRCCU_DMA_SR (*(RoReg*)0x40044010U) /**< \brief (CRCCU) CRCCU DMA Status Register */ -#define REG_CRCCU_DMA_IER (*(WoReg*)0x40044014U) /**< \brief (CRCCU) CRCCU DMA Interrupt Enable Register */ -#define REG_CRCCU_DMA_IDR (*(WoReg*)0x40044018U) /**< \brief (CRCCU) CRCCU DMA Interrupt Disable Register */ -#define REG_CRCCU_DMA_IMR (*(RoReg*)0x4004401CU) /**< \brief (CRCCU) CRCCU DMA Interrupt Mask Register */ -#define REG_CRCCU_DMA_ISR (*(RoReg*)0x40044020U) /**< \brief (CRCCU) CRCCU DMA Interrupt Status Register */ -#define REG_CRCCU_CR (*(WoReg*)0x40044034U) /**< \brief (CRCCU) CRCCU Control Register */ -#define REG_CRCCU_MR (*(RwReg*)0x40044038U) /**< \brief (CRCCU) CRCCU Mode Register */ -#define REG_CRCCU_SR (*(RoReg*)0x4004403CU) /**< \brief (CRCCU) CRCCU Status Register */ -#define REG_CRCCU_IER (*(WoReg*)0x40044040U) /**< \brief (CRCCU) CRCCU Interrupt Enable Register */ -#define REG_CRCCU_IDR (*(WoReg*)0x40044044U) /**< \brief (CRCCU) CRCCU Interrupt Disable Register */ -#define REG_CRCCU_IMR (*(RoReg*)0x40044048U) /**< \brief (CRCCU) CRCCU Interrupt Mask Register */ -#define REG_CRCCU_ISR (*(RoReg*)0x4004404CU) /**< \brief (CRCCU) CRCCU Interrupt Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_CRCCU_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/dacc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/dacc.h deleted file mode 100644 index bfaf0cd80..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/dacc.h +++ /dev/null @@ -1,88 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_DACC_INSTANCE_ -#define _SAM4E_DACC_INSTANCE_ - -/* ========== Register definition for DACC peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_DACC_CR (0x400B8000U) /**< \brief (DACC) Control Register */ -#define REG_DACC_MR (0x400B8004U) /**< \brief (DACC) Mode Register */ -#define REG_DACC_CHER (0x400B8010U) /**< \brief (DACC) Channel Enable Register */ -#define REG_DACC_CHDR (0x400B8014U) /**< \brief (DACC) Channel Disable Register */ -#define REG_DACC_CHSR (0x400B8018U) /**< \brief (DACC) Channel Status Register */ -#define REG_DACC_CDR (0x400B8020U) /**< \brief (DACC) Conversion Data Register */ -#define REG_DACC_IER (0x400B8024U) /**< \brief (DACC) Interrupt Enable Register */ -#define REG_DACC_IDR (0x400B8028U) /**< \brief (DACC) Interrupt Disable Register */ -#define REG_DACC_IMR (0x400B802CU) /**< \brief (DACC) Interrupt Mask Register */ -#define REG_DACC_ISR (0x400B8030U) /**< \brief (DACC) Interrupt Status Register */ -#define REG_DACC_ACR (0x400B8094U) /**< \brief (DACC) Analog Current Register */ -#define REG_DACC_WPMR (0x400B80E4U) /**< \brief (DACC) Write Protect Mode register */ -#define REG_DACC_WPSR (0x400B80E8U) /**< \brief (DACC) Write Protect Status register */ -#define REG_DACC_TPR (0x400B8108U) /**< \brief (DACC) Transmit Pointer Register */ -#define REG_DACC_TCR (0x400B810CU) /**< \brief (DACC) Transmit Counter Register */ -#define REG_DACC_TNPR (0x400B8118U) /**< \brief (DACC) Transmit Next Pointer Register */ -#define REG_DACC_TNCR (0x400B811CU) /**< \brief (DACC) Transmit Next Counter Register */ -#define REG_DACC_PTCR (0x400B8120U) /**< \brief (DACC) Transfer Control Register */ -#define REG_DACC_PTSR (0x400B8124U) /**< \brief (DACC) Transfer Status Register */ -#else -#define REG_DACC_CR (*(WoReg*)0x400B8000U) /**< \brief (DACC) Control Register */ -#define REG_DACC_MR (*(RwReg*)0x400B8004U) /**< \brief (DACC) Mode Register */ -#define REG_DACC_CHER (*(WoReg*)0x400B8010U) /**< \brief (DACC) Channel Enable Register */ -#define REG_DACC_CHDR (*(WoReg*)0x400B8014U) /**< \brief (DACC) Channel Disable Register */ -#define REG_DACC_CHSR (*(RoReg*)0x400B8018U) /**< \brief (DACC) Channel Status Register */ -#define REG_DACC_CDR (*(WoReg*)0x400B8020U) /**< \brief (DACC) Conversion Data Register */ -#define REG_DACC_IER (*(WoReg*)0x400B8024U) /**< \brief (DACC) Interrupt Enable Register */ -#define REG_DACC_IDR (*(WoReg*)0x400B8028U) /**< \brief (DACC) Interrupt Disable Register */ -#define REG_DACC_IMR (*(RoReg*)0x400B802CU) /**< \brief (DACC) Interrupt Mask Register */ -#define REG_DACC_ISR (*(RoReg*)0x400B8030U) /**< \brief (DACC) Interrupt Status Register */ -#define REG_DACC_ACR (*(RwReg*)0x400B8094U) /**< \brief (DACC) Analog Current Register */ -#define REG_DACC_WPMR (*(RwReg*)0x400B80E4U) /**< \brief (DACC) Write Protect Mode register */ -#define REG_DACC_WPSR (*(RoReg*)0x400B80E8U) /**< \brief (DACC) Write Protect Status register */ -#define REG_DACC_TPR (*(RwReg*)0x400B8108U) /**< \brief (DACC) Transmit Pointer Register */ -#define REG_DACC_TCR (*(RwReg*)0x400B810CU) /**< \brief (DACC) Transmit Counter Register */ -#define REG_DACC_TNPR (*(RwReg*)0x400B8118U) /**< \brief (DACC) Transmit Next Pointer Register */ -#define REG_DACC_TNCR (*(RwReg*)0x400B811CU) /**< \brief (DACC) Transmit Next Counter Register */ -#define REG_DACC_PTCR (*(WoReg*)0x400B8120U) /**< \brief (DACC) Transfer Control Register */ -#define REG_DACC_PTSR (*(RoReg*)0x400B8124U) /**< \brief (DACC) Transfer Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_DACC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/dmac.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/dmac.h deleted file mode 100644 index 9c812599d..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/dmac.h +++ /dev/null @@ -1,126 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_DMAC_INSTANCE_ -#define _SAM4E_DMAC_INSTANCE_ - -/* ========== Register definition for DMAC peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_DMAC_GCFG (0x400C0000U) /**< \brief (DMAC) DMAC Global Configuration Register */ -#define REG_DMAC_EN (0x400C0004U) /**< \brief (DMAC) DMAC Enable Register */ -#define REG_DMAC_SREQ (0x400C0008U) /**< \brief (DMAC) DMAC Software Single Request Register */ -#define REG_DMAC_CREQ (0x400C000CU) /**< \brief (DMAC) DMAC Software Chunk Transfer Request Register */ -#define REG_DMAC_LAST (0x400C0010U) /**< \brief (DMAC) DMAC Software Last Transfer Flag Register */ -#define REG_DMAC_EBCIER (0x400C0018U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Enable register. */ -#define REG_DMAC_EBCIDR (0x400C001CU) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Disable register. */ -#define REG_DMAC_EBCIMR (0x400C0020U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Mask Register. */ -#define REG_DMAC_EBCISR (0x400C0024U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Status Register. */ -#define REG_DMAC_CHER (0x400C0028U) /**< \brief (DMAC) DMAC Channel Handler Enable Register */ -#define REG_DMAC_CHDR (0x400C002CU) /**< \brief (DMAC) DMAC Channel Handler Disable Register */ -#define REG_DMAC_CHSR (0x400C0030U) /**< \brief (DMAC) DMAC Channel Handler Status Register */ -#define REG_DMAC_SADDR0 (0x400C003CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 0) */ -#define REG_DMAC_DADDR0 (0x400C0040U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 0) */ -#define REG_DMAC_DSCR0 (0x400C0044U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 0) */ -#define REG_DMAC_CTRLA0 (0x400C0048U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 0) */ -#define REG_DMAC_CTRLB0 (0x400C004CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 0) */ -#define REG_DMAC_CFG0 (0x400C0050U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 0) */ -#define REG_DMAC_SADDR1 (0x400C0064U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 1) */ -#define REG_DMAC_DADDR1 (0x400C0068U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 1) */ -#define REG_DMAC_DSCR1 (0x400C006CU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 1) */ -#define REG_DMAC_CTRLA1 (0x400C0070U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 1) */ -#define REG_DMAC_CTRLB1 (0x400C0074U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 1) */ -#define REG_DMAC_CFG1 (0x400C0078U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 1) */ -#define REG_DMAC_SADDR2 (0x400C008CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 2) */ -#define REG_DMAC_DADDR2 (0x400C0090U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 2) */ -#define REG_DMAC_DSCR2 (0x400C0094U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 2) */ -#define REG_DMAC_CTRLA2 (0x400C0098U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 2) */ -#define REG_DMAC_CTRLB2 (0x400C009CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 2) */ -#define REG_DMAC_CFG2 (0x400C00A0U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 2) */ -#define REG_DMAC_SADDR3 (0x400C00B4U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 3) */ -#define REG_DMAC_DADDR3 (0x400C00B8U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 3) */ -#define REG_DMAC_DSCR3 (0x400C00BCU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 3) */ -#define REG_DMAC_CTRLA3 (0x400C00C0U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 3) */ -#define REG_DMAC_CTRLB3 (0x400C00C4U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 3) */ -#define REG_DMAC_CFG3 (0x400C00C8U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 3) */ -#define REG_DMAC_WPMR (0x400C01E4U) /**< \brief (DMAC) DMAC Write Protect Mode Register */ -#define REG_DMAC_WPSR (0x400C01E8U) /**< \brief (DMAC) DMAC Write Protect Status Register */ -#else -#define REG_DMAC_GCFG (*(RwReg*)0x400C0000U) /**< \brief (DMAC) DMAC Global Configuration Register */ -#define REG_DMAC_EN (*(RwReg*)0x400C0004U) /**< \brief (DMAC) DMAC Enable Register */ -#define REG_DMAC_SREQ (*(RwReg*)0x400C0008U) /**< \brief (DMAC) DMAC Software Single Request Register */ -#define REG_DMAC_CREQ (*(RwReg*)0x400C000CU) /**< \brief (DMAC) DMAC Software Chunk Transfer Request Register */ -#define REG_DMAC_LAST (*(RwReg*)0x400C0010U) /**< \brief (DMAC) DMAC Software Last Transfer Flag Register */ -#define REG_DMAC_EBCIER (*(WoReg*)0x400C0018U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Enable register. */ -#define REG_DMAC_EBCIDR (*(WoReg*)0x400C001CU) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Disable register. */ -#define REG_DMAC_EBCIMR (*(RoReg*)0x400C0020U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Mask Register. */ -#define REG_DMAC_EBCISR (*(RoReg*)0x400C0024U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Status Register. */ -#define REG_DMAC_CHER (*(WoReg*)0x400C0028U) /**< \brief (DMAC) DMAC Channel Handler Enable Register */ -#define REG_DMAC_CHDR (*(WoReg*)0x400C002CU) /**< \brief (DMAC) DMAC Channel Handler Disable Register */ -#define REG_DMAC_CHSR (*(RoReg*)0x400C0030U) /**< \brief (DMAC) DMAC Channel Handler Status Register */ -#define REG_DMAC_SADDR0 (*(RwReg*)0x400C003CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 0) */ -#define REG_DMAC_DADDR0 (*(RwReg*)0x400C0040U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 0) */ -#define REG_DMAC_DSCR0 (*(RwReg*)0x400C0044U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 0) */ -#define REG_DMAC_CTRLA0 (*(RwReg*)0x400C0048U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 0) */ -#define REG_DMAC_CTRLB0 (*(RwReg*)0x400C004CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 0) */ -#define REG_DMAC_CFG0 (*(RwReg*)0x400C0050U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 0) */ -#define REG_DMAC_SADDR1 (*(RwReg*)0x400C0064U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 1) */ -#define REG_DMAC_DADDR1 (*(RwReg*)0x400C0068U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 1) */ -#define REG_DMAC_DSCR1 (*(RwReg*)0x400C006CU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 1) */ -#define REG_DMAC_CTRLA1 (*(RwReg*)0x400C0070U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 1) */ -#define REG_DMAC_CTRLB1 (*(RwReg*)0x400C0074U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 1) */ -#define REG_DMAC_CFG1 (*(RwReg*)0x400C0078U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 1) */ -#define REG_DMAC_SADDR2 (*(RwReg*)0x400C008CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 2) */ -#define REG_DMAC_DADDR2 (*(RwReg*)0x400C0090U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 2) */ -#define REG_DMAC_DSCR2 (*(RwReg*)0x400C0094U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 2) */ -#define REG_DMAC_CTRLA2 (*(RwReg*)0x400C0098U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 2) */ -#define REG_DMAC_CTRLB2 (*(RwReg*)0x400C009CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 2) */ -#define REG_DMAC_CFG2 (*(RwReg*)0x400C00A0U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 2) */ -#define REG_DMAC_SADDR3 (*(RwReg*)0x400C00B4U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 3) */ -#define REG_DMAC_DADDR3 (*(RwReg*)0x400C00B8U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 3) */ -#define REG_DMAC_DSCR3 (*(RwReg*)0x400C00BCU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 3) */ -#define REG_DMAC_CTRLA3 (*(RwReg*)0x400C00C0U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 3) */ -#define REG_DMAC_CTRLB3 (*(RwReg*)0x400C00C4U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 3) */ -#define REG_DMAC_CFG3 (*(RwReg*)0x400C00C8U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 3) */ -#define REG_DMAC_WPMR (*(RwReg*)0x400C01E4U) /**< \brief (DMAC) DMAC Write Protect Mode Register */ -#define REG_DMAC_WPSR (*(RoReg*)0x400C01E8U) /**< \brief (DMAC) DMAC Write Protect Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_DMAC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/efc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/efc.h deleted file mode 100644 index 611399e28..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/efc.h +++ /dev/null @@ -1,58 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_EFC_INSTANCE_ -#define _SAM4E_EFC_INSTANCE_ - -/* ========== Register definition for EFC peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_EFC_FMR (0x400E0A00U) /**< \brief (EFC) EEFC Flash Mode Register */ -#define REG_EFC_FCR (0x400E0A04U) /**< \brief (EFC) EEFC Flash Command Register */ -#define REG_EFC_FSR (0x400E0A08U) /**< \brief (EFC) EEFC Flash Status Register */ -#define REG_EFC_FRR (0x400E0A0CU) /**< \brief (EFC) EEFC Flash Result Register */ -#else -#define REG_EFC_FMR (*(RwReg*)0x400E0A00U) /**< \brief (EFC) EEFC Flash Mode Register */ -#define REG_EFC_FCR (*(WoReg*)0x400E0A04U) /**< \brief (EFC) EEFC Flash Command Register */ -#define REG_EFC_FSR (*(RoReg*)0x400E0A08U) /**< \brief (EFC) EEFC Flash Status Register */ -#define REG_EFC_FRR (*(RoReg*)0x400E0A0CU) /**< \brief (EFC) EEFC Flash Result Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_EFC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/gmac.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/gmac.h deleted file mode 100644 index ad41815ef..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/gmac.h +++ /dev/null @@ -1,232 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_GMAC_INSTANCE_ -#define _SAM4E_GMAC_INSTANCE_ - -/* ========== Register definition for GMAC peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_GMAC_NCR (0x40034000U) /**< \brief (GMAC) Network Control Register */ -#define REG_GMAC_NCFGR (0x40034004U) /**< \brief (GMAC) Network Configuration Register */ -#define REG_GMAC_NSR (0x40034008U) /**< \brief (GMAC) Network Status Register */ -#define REG_GMAC_UR (0x4003400CU) /**< \brief (GMAC) User Register */ -#define REG_GMAC_DCFGR (0x40034010U) /**< \brief (GMAC) DMA Configuration Register */ -#define REG_GMAC_TSR (0x40034014U) /**< \brief (GMAC) Transmit Status Register */ -#define REG_GMAC_RBQB (0x40034018U) /**< \brief (GMAC) Receive Buffer Queue Base Address */ -#define REG_GMAC_TBQB (0x4003401CU) /**< \brief (GMAC) Transmit Buffer Queue Base Address */ -#define REG_GMAC_RSR (0x40034020U) /**< \brief (GMAC) Receive Status Register */ -#define REG_GMAC_ISR (0x40034024U) /**< \brief (GMAC) Interrupt Status Register */ -#define REG_GMAC_IER (0x40034028U) /**< \brief (GMAC) Interrupt Enable Register */ -#define REG_GMAC_IDR (0x4003402CU) /**< \brief (GMAC) Interrupt Disable Register */ -#define REG_GMAC_IMR (0x40034030U) /**< \brief (GMAC) Interrupt Mask Register */ -#define REG_GMAC_MAN (0x40034034U) /**< \brief (GMAC) PHY Maintenance Register */ -#define REG_GMAC_RPQ (0x40034038U) /**< \brief (GMAC) Received Pause Quantum Register */ -#define REG_GMAC_TPQ (0x4003403CU) /**< \brief (GMAC) Transmit Pause Quantum Register */ -#define REG_GMAC_HRB (0x40034080U) /**< \brief (GMAC) Hash Register Bottom [31:0] */ -#define REG_GMAC_HRT (0x40034084U) /**< \brief (GMAC) Hash Register Top [63:32] */ -#define REG_GMAC_SAB1 (0x40034088U) /**< \brief (GMAC) Specific Address 1 Bottom [31:0] Register */ -#define REG_GMAC_SAT1 (0x4003408CU) /**< \brief (GMAC) Specific Address 1 Top [47:32] Register */ -#define REG_GMAC_SAB2 (0x40034090U) /**< \brief (GMAC) Specific Address 2 Bottom [31:0] Register */ -#define REG_GMAC_SAT2 (0x40034094U) /**< \brief (GMAC) Specific Address 2 Top [47:32] Register */ -#define REG_GMAC_SAB3 (0x40034098U) /**< \brief (GMAC) Specific Address 3 Bottom [31:0] Register */ -#define REG_GMAC_SAT3 (0x4003409CU) /**< \brief (GMAC) Specific Address 3 Top [47:32] Register */ -#define REG_GMAC_SAB4 (0x400340A0U) /**< \brief (GMAC) Specific Address 4 Bottom [31:0] Register */ -#define REG_GMAC_SAT4 (0x400340A4U) /**< \brief (GMAC) Specific Address 4 Top [47:32] Register */ -#define REG_GMAC_TIDM (0x400340A8U) /**< \brief (GMAC) Type ID Match 1 Register */ -#define REG_GMAC_IPGS (0x400340BCU) /**< \brief (GMAC) IPG Stretch Register */ -#define REG_GMAC_SVLAN (0x400340C0U) /**< \brief (GMAC) Stacked VLAN Register */ -#define REG_GMAC_TPFCP (0x400340C4U) /**< \brief (GMAC) Transmit PFC Pause Register */ -#define REG_GMAC_SAMB1 (0x400340C8U) /**< \brief (GMAC) Specific Address 1 Mask Bottom [31:0] Register */ -#define REG_GMAC_SAMT1 (0x400340CCU) /**< \brief (GMAC) Specific Address 1 Mask Top [47:32] Register */ -#define REG_GMAC_OTLO (0x40034100U) /**< \brief (GMAC) Octets Transmitted [31:0] Register */ -#define REG_GMAC_OTHI (0x40034104U) /**< \brief (GMAC) Octets Transmitted [47:32] Register */ -#define REG_GMAC_FT (0x40034108U) /**< \brief (GMAC) Frames Transmitted Register */ -#define REG_GMAC_BCFT (0x4003410CU) /**< \brief (GMAC) Broadcast Frames Transmitted Register */ -#define REG_GMAC_MFT (0x40034110U) /**< \brief (GMAC) Multicast Frames Transmitted Register */ -#define REG_GMAC_PFT (0x40034114U) /**< \brief (GMAC) Pause Frames Transmitted Register */ -#define REG_GMAC_BFT64 (0x40034118U) /**< \brief (GMAC) 64 Byte Frames Transmitted Register */ -#define REG_GMAC_TBFT127 (0x4003411CU) /**< \brief (GMAC) 65 to 127 Byte Frames Transmitted Register */ -#define REG_GMAC_TBFT255 (0x40034120U) /**< \brief (GMAC) 128 to 255 Byte Frames Transmitted Register */ -#define REG_GMAC_TBFT511 (0x40034124U) /**< \brief (GMAC) 256 to 511 Byte Frames Transmitted Register */ -#define REG_GMAC_TBFT1023 (0x40034128U) /**< \brief (GMAC) 512 to 1023 Byte Frames Transmitted Register */ -#define REG_GMAC_TBFT1518 (0x4003412CU) /**< \brief (GMAC) 1024 to 1518 Byte Frames Transmitted Register */ -#define REG_GMAC_GTBFT1518 (0x40034130U) /**< \brief (GMAC) Greater Than 1518 Byte Frames Transmitted Register */ -#define REG_GMAC_TUR (0x40034134U) /**< \brief (GMAC) Transmit Under Runs Register */ -#define REG_GMAC_SCF (0x40034138U) /**< \brief (GMAC) Single Collision Frames Register */ -#define REG_GMAC_MCF (0x4003413CU) /**< \brief (GMAC) Multiple Collision Frames Register */ -#define REG_GMAC_EC (0x40034140U) /**< \brief (GMAC) Excessive Collisions Register */ -#define REG_GMAC_LC (0x40034144U) /**< \brief (GMAC) Late Collisions Register */ -#define REG_GMAC_DTF (0x40034148U) /**< \brief (GMAC) Deferred Transmission Frames Register */ -#define REG_GMAC_CSE (0x4003414CU) /**< \brief (GMAC) Carrier Sense Errors Register */ -#define REG_GMAC_ORLO (0x40034150U) /**< \brief (GMAC) Octets Received [31:0] Received */ -#define REG_GMAC_ORHI (0x40034154U) /**< \brief (GMAC) Octets Received [47:32] Received */ -#define REG_GMAC_FR (0x40034158U) /**< \brief (GMAC) Frames Received Register */ -#define REG_GMAC_BCFR (0x4003415CU) /**< \brief (GMAC) Broadcast Frames Received Register */ -#define REG_GMAC_MFR (0x40034160U) /**< \brief (GMAC) Multicast Frames Received Register */ -#define REG_GMAC_PFR (0x40034164U) /**< \brief (GMAC) Pause Frames Received Register */ -#define REG_GMAC_BFR64 (0x40034168U) /**< \brief (GMAC) 64 Byte Frames Received Register */ -#define REG_GMAC_TBFR127 (0x4003416CU) /**< \brief (GMAC) 65 to 127 Byte Frames Received Register */ -#define REG_GMAC_TBFR255 (0x40034170U) /**< \brief (GMAC) 128 to 255 Byte Frames Received Register */ -#define REG_GMAC_TBFR511 (0x40034174U) /**< \brief (GMAC) 256 to 511Byte Frames Received Register */ -#define REG_GMAC_TBFR1023 (0x40034178U) /**< \brief (GMAC) 512 to 1023 Byte Frames Received Register */ -#define REG_GMAC_TBFR1518 (0x4003417CU) /**< \brief (GMAC) 1024 to 1518 Byte Frames Received Register */ -#define REG_GMAC_TMXBFR (0x40034180U) /**< \brief (GMAC) 1519 to Maximum Byte Frames Received Register */ -#define REG_GMAC_UFR (0x40034184U) /**< \brief (GMAC) Undersize Frames Received Register */ -#define REG_GMAC_OFR (0x40034188U) /**< \brief (GMAC) Oversize Frames Received Register */ -#define REG_GMAC_JR (0x4003418CU) /**< \brief (GMAC) Jabbers Received Register */ -#define REG_GMAC_FCSE (0x40034190U) /**< \brief (GMAC) Frame Check Sequence Errors Register */ -#define REG_GMAC_LFFE (0x40034194U) /**< \brief (GMAC) Length Field Frame Errors Register */ -#define REG_GMAC_RSE (0x40034198U) /**< \brief (GMAC) Receive Symbol Errors Register */ -#define REG_GMAC_AE (0x4003419CU) /**< \brief (GMAC) Alignment Errors Register */ -#define REG_GMAC_RRE (0x400341A0U) /**< \brief (GMAC) Receive Resource Errors Register */ -#define REG_GMAC_ROE (0x400341A4U) /**< \brief (GMAC) Receive Overrun Register */ -#define REG_GMAC_IHCE (0x400341A8U) /**< \brief (GMAC) IP Header Checksum Errors Register */ -#define REG_GMAC_TCE (0x400341ACU) /**< \brief (GMAC) TCP Checksum Errors Register */ -#define REG_GMAC_UCE (0x400341B0U) /**< \brief (GMAC) UDP Checksum Errors Register */ -#define REG_GMAC_TSSS (0x400341C8U) /**< \brief (GMAC) 1588 Timer Sync Strobe Seconds Register */ -#define REG_GMAC_TSSN (0x400341CCU) /**< \brief (GMAC) 1588 Timer Sync Strobe Nanoseconds Register */ -#define REG_GMAC_TS (0x400341D0U) /**< \brief (GMAC) 1588 Timer Seconds Register */ -#define REG_GMAC_TN (0x400341D4U) /**< \brief (GMAC) 1588 Timer Nanoseconds Register */ -#define REG_GMAC_TA (0x400341D8U) /**< \brief (GMAC) 1588 Timer Adjust Register */ -#define REG_GMAC_TI (0x400341DCU) /**< \brief (GMAC) 1588 Timer Increment Register */ -#define REG_GMAC_EFTS (0x400341E0U) /**< \brief (GMAC) PTP Event Frame Transmitted Seconds */ -#define REG_GMAC_EFTN (0x400341E4U) /**< \brief (GMAC) PTP Event Frame Transmitted Nanoseconds */ -#define REG_GMAC_EFRS (0x400341E8U) /**< \brief (GMAC) PTP Event Frame Received Seconds */ -#define REG_GMAC_EFRN (0x400341ECU) /**< \brief (GMAC) PTP Event Frame Received Nanoseconds */ -#define REG_GMAC_PEFTS (0x400341F0U) /**< \brief (GMAC) PTP Peer Event Frame Transmitted Seconds */ -#define REG_GMAC_PEFTN (0x400341F4U) /**< \brief (GMAC) PTP Peer Event Frame Transmitted Nanoseconds */ -#define REG_GMAC_PEFRS (0x400341F8U) /**< \brief (GMAC) PTP Peer Event Frame Received Seconds */ -#define REG_GMAC_PEFRN (0x400341FCU) /**< \brief (GMAC) PTP Peer Event Frame Received Nanoseconds */ -#else -#define REG_GMAC_NCR (*(RwReg*)0x40034000U) /**< \brief (GMAC) Network Control Register */ -#define REG_GMAC_NCFGR (*(RwReg*)0x40034004U) /**< \brief (GMAC) Network Configuration Register */ -#define REG_GMAC_NSR (*(RoReg*)0x40034008U) /**< \brief (GMAC) Network Status Register */ -#define REG_GMAC_UR (*(RwReg*)0x4003400CU) /**< \brief (GMAC) User Register */ -#define REG_GMAC_DCFGR (*(RwReg*)0x40034010U) /**< \brief (GMAC) DMA Configuration Register */ -#define REG_GMAC_TSR (*(RwReg*)0x40034014U) /**< \brief (GMAC) Transmit Status Register */ -#define REG_GMAC_RBQB (*(RwReg*)0x40034018U) /**< \brief (GMAC) Receive Buffer Queue Base Address */ -#define REG_GMAC_TBQB (*(RwReg*)0x4003401CU) /**< \brief (GMAC) Transmit Buffer Queue Base Address */ -#define REG_GMAC_RSR (*(RwReg*)0x40034020U) /**< \brief (GMAC) Receive Status Register */ -#define REG_GMAC_ISR (*(RoReg*)0x40034024U) /**< \brief (GMAC) Interrupt Status Register */ -#define REG_GMAC_IER (*(WoReg*)0x40034028U) /**< \brief (GMAC) Interrupt Enable Register */ -#define REG_GMAC_IDR (*(WoReg*)0x4003402CU) /**< \brief (GMAC) Interrupt Disable Register */ -#define REG_GMAC_IMR (*(RoReg*)0x40034030U) /**< \brief (GMAC) Interrupt Mask Register */ -#define REG_GMAC_MAN (*(RwReg*)0x40034034U) /**< \brief (GMAC) PHY Maintenance Register */ -#define REG_GMAC_RPQ (*(RoReg*)0x40034038U) /**< \brief (GMAC) Received Pause Quantum Register */ -#define REG_GMAC_TPQ (*(RwReg*)0x4003403CU) /**< \brief (GMAC) Transmit Pause Quantum Register */ -#define REG_GMAC_HRB (*(RwReg*)0x40034080U) /**< \brief (GMAC) Hash Register Bottom [31:0] */ -#define REG_GMAC_HRT (*(RwReg*)0x40034084U) /**< \brief (GMAC) Hash Register Top [63:32] */ -#define REG_GMAC_SAB1 (*(RwReg*)0x40034088U) /**< \brief (GMAC) Specific Address 1 Bottom [31:0] Register */ -#define REG_GMAC_SAT1 (*(RwReg*)0x4003408CU) /**< \brief (GMAC) Specific Address 1 Top [47:32] Register */ -#define REG_GMAC_SAB2 (*(RwReg*)0x40034090U) /**< \brief (GMAC) Specific Address 2 Bottom [31:0] Register */ -#define REG_GMAC_SAT2 (*(RwReg*)0x40034094U) /**< \brief (GMAC) Specific Address 2 Top [47:32] Register */ -#define REG_GMAC_SAB3 (*(RwReg*)0x40034098U) /**< \brief (GMAC) Specific Address 3 Bottom [31:0] Register */ -#define REG_GMAC_SAT3 (*(RwReg*)0x4003409CU) /**< \brief (GMAC) Specific Address 3 Top [47:32] Register */ -#define REG_GMAC_SAB4 (*(RwReg*)0x400340A0U) /**< \brief (GMAC) Specific Address 4 Bottom [31:0] Register */ -#define REG_GMAC_SAT4 (*(RwReg*)0x400340A4U) /**< \brief (GMAC) Specific Address 4 Top [47:32] Register */ -#define REG_GMAC_TIDM (*(RwReg*)0x400340A8U) /**< \brief (GMAC) Type ID Match 1 Register */ -#define REG_GMAC_IPGS (*(RwReg*)0x400340BCU) /**< \brief (GMAC) IPG Stretch Register */ -#define REG_GMAC_SVLAN (*(RwReg*)0x400340C0U) /**< \brief (GMAC) Stacked VLAN Register */ -#define REG_GMAC_TPFCP (*(RwReg*)0x400340C4U) /**< \brief (GMAC) Transmit PFC Pause Register */ -#define REG_GMAC_SAMB1 (*(RwReg*)0x400340C8U) /**< \brief (GMAC) Specific Address 1 Mask Bottom [31:0] Register */ -#define REG_GMAC_SAMT1 (*(RwReg*)0x400340CCU) /**< \brief (GMAC) Specific Address 1 Mask Top [47:32] Register */ -#define REG_GMAC_OTLO (*(RoReg*)0x40034100U) /**< \brief (GMAC) Octets Transmitted [31:0] Register */ -#define REG_GMAC_OTHI (*(RoReg*)0x40034104U) /**< \brief (GMAC) Octets Transmitted [47:32] Register */ -#define REG_GMAC_FT (*(RoReg*)0x40034108U) /**< \brief (GMAC) Frames Transmitted Register */ -#define REG_GMAC_BCFT (*(RoReg*)0x4003410CU) /**< \brief (GMAC) Broadcast Frames Transmitted Register */ -#define REG_GMAC_MFT (*(RoReg*)0x40034110U) /**< \brief (GMAC) Multicast Frames Transmitted Register */ -#define REG_GMAC_PFT (*(RoReg*)0x40034114U) /**< \brief (GMAC) Pause Frames Transmitted Register */ -#define REG_GMAC_BFT64 (*(RoReg*)0x40034118U) /**< \brief (GMAC) 64 Byte Frames Transmitted Register */ -#define REG_GMAC_TBFT127 (*(RoReg*)0x4003411CU) /**< \brief (GMAC) 65 to 127 Byte Frames Transmitted Register */ -#define REG_GMAC_TBFT255 (*(RoReg*)0x40034120U) /**< \brief (GMAC) 128 to 255 Byte Frames Transmitted Register */ -#define REG_GMAC_TBFT511 (*(RoReg*)0x40034124U) /**< \brief (GMAC) 256 to 511 Byte Frames Transmitted Register */ -#define REG_GMAC_TBFT1023 (*(RoReg*)0x40034128U) /**< \brief (GMAC) 512 to 1023 Byte Frames Transmitted Register */ -#define REG_GMAC_TBFT1518 (*(RoReg*)0x4003412CU) /**< \brief (GMAC) 1024 to 1518 Byte Frames Transmitted Register */ -#define REG_GMAC_GTBFT1518 (*(RoReg*)0x40034130U) /**< \brief (GMAC) Greater Than 1518 Byte Frames Transmitted Register */ -#define REG_GMAC_TUR (*(RoReg*)0x40034134U) /**< \brief (GMAC) Transmit Under Runs Register */ -#define REG_GMAC_SCF (*(RoReg*)0x40034138U) /**< \brief (GMAC) Single Collision Frames Register */ -#define REG_GMAC_MCF (*(RoReg*)0x4003413CU) /**< \brief (GMAC) Multiple Collision Frames Register */ -#define REG_GMAC_EC (*(RoReg*)0x40034140U) /**< \brief (GMAC) Excessive Collisions Register */ -#define REG_GMAC_LC (*(RoReg*)0x40034144U) /**< \brief (GMAC) Late Collisions Register */ -#define REG_GMAC_DTF (*(RoReg*)0x40034148U) /**< \brief (GMAC) Deferred Transmission Frames Register */ -#define REG_GMAC_CSE (*(RoReg*)0x4003414CU) /**< \brief (GMAC) Carrier Sense Errors Register */ -#define REG_GMAC_ORLO (*(RoReg*)0x40034150U) /**< \brief (GMAC) Octets Received [31:0] Received */ -#define REG_GMAC_ORHI (*(RoReg*)0x40034154U) /**< \brief (GMAC) Octets Received [47:32] Received */ -#define REG_GMAC_FR (*(RoReg*)0x40034158U) /**< \brief (GMAC) Frames Received Register */ -#define REG_GMAC_BCFR (*(RoReg*)0x4003415CU) /**< \brief (GMAC) Broadcast Frames Received Register */ -#define REG_GMAC_MFR (*(RoReg*)0x40034160U) /**< \brief (GMAC) Multicast Frames Received Register */ -#define REG_GMAC_PFR (*(RoReg*)0x40034164U) /**< \brief (GMAC) Pause Frames Received Register */ -#define REG_GMAC_BFR64 (*(RoReg*)0x40034168U) /**< \brief (GMAC) 64 Byte Frames Received Register */ -#define REG_GMAC_TBFR127 (*(RoReg*)0x4003416CU) /**< \brief (GMAC) 65 to 127 Byte Frames Received Register */ -#define REG_GMAC_TBFR255 (*(RoReg*)0x40034170U) /**< \brief (GMAC) 128 to 255 Byte Frames Received Register */ -#define REG_GMAC_TBFR511 (*(RoReg*)0x40034174U) /**< \brief (GMAC) 256 to 511Byte Frames Received Register */ -#define REG_GMAC_TBFR1023 (*(RoReg*)0x40034178U) /**< \brief (GMAC) 512 to 1023 Byte Frames Received Register */ -#define REG_GMAC_TBFR1518 (*(RoReg*)0x4003417CU) /**< \brief (GMAC) 1024 to 1518 Byte Frames Received Register */ -#define REG_GMAC_TMXBFR (*(RoReg*)0x40034180U) /**< \brief (GMAC) 1519 to Maximum Byte Frames Received Register */ -#define REG_GMAC_UFR (*(RoReg*)0x40034184U) /**< \brief (GMAC) Undersize Frames Received Register */ -#define REG_GMAC_OFR (*(RoReg*)0x40034188U) /**< \brief (GMAC) Oversize Frames Received Register */ -#define REG_GMAC_JR (*(RoReg*)0x4003418CU) /**< \brief (GMAC) Jabbers Received Register */ -#define REG_GMAC_FCSE (*(RoReg*)0x40034190U) /**< \brief (GMAC) Frame Check Sequence Errors Register */ -#define REG_GMAC_LFFE (*(RoReg*)0x40034194U) /**< \brief (GMAC) Length Field Frame Errors Register */ -#define REG_GMAC_RSE (*(RoReg*)0x40034198U) /**< \brief (GMAC) Receive Symbol Errors Register */ -#define REG_GMAC_AE (*(RoReg*)0x4003419CU) /**< \brief (GMAC) Alignment Errors Register */ -#define REG_GMAC_RRE (*(RoReg*)0x400341A0U) /**< \brief (GMAC) Receive Resource Errors Register */ -#define REG_GMAC_ROE (*(RoReg*)0x400341A4U) /**< \brief (GMAC) Receive Overrun Register */ -#define REG_GMAC_IHCE (*(RoReg*)0x400341A8U) /**< \brief (GMAC) IP Header Checksum Errors Register */ -#define REG_GMAC_TCE (*(RoReg*)0x400341ACU) /**< \brief (GMAC) TCP Checksum Errors Register */ -#define REG_GMAC_UCE (*(RoReg*)0x400341B0U) /**< \brief (GMAC) UDP Checksum Errors Register */ -#define REG_GMAC_TSSS (*(RwReg*)0x400341C8U) /**< \brief (GMAC) 1588 Timer Sync Strobe Seconds Register */ -#define REG_GMAC_TSSN (*(RwReg*)0x400341CCU) /**< \brief (GMAC) 1588 Timer Sync Strobe Nanoseconds Register */ -#define REG_GMAC_TS (*(RwReg*)0x400341D0U) /**< \brief (GMAC) 1588 Timer Seconds Register */ -#define REG_GMAC_TN (*(RwReg*)0x400341D4U) /**< \brief (GMAC) 1588 Timer Nanoseconds Register */ -#define REG_GMAC_TA (*(WoReg*)0x400341D8U) /**< \brief (GMAC) 1588 Timer Adjust Register */ -#define REG_GMAC_TI (*(RwReg*)0x400341DCU) /**< \brief (GMAC) 1588 Timer Increment Register */ -#define REG_GMAC_EFTS (*(RoReg*)0x400341E0U) /**< \brief (GMAC) PTP Event Frame Transmitted Seconds */ -#define REG_GMAC_EFTN (*(RoReg*)0x400341E4U) /**< \brief (GMAC) PTP Event Frame Transmitted Nanoseconds */ -#define REG_GMAC_EFRS (*(RoReg*)0x400341E8U) /**< \brief (GMAC) PTP Event Frame Received Seconds */ -#define REG_GMAC_EFRN (*(RoReg*)0x400341ECU) /**< \brief (GMAC) PTP Event Frame Received Nanoseconds */ -#define REG_GMAC_PEFTS (*(RoReg*)0x400341F0U) /**< \brief (GMAC) PTP Peer Event Frame Transmitted Seconds */ -#define REG_GMAC_PEFTN (*(RoReg*)0x400341F4U) /**< \brief (GMAC) PTP Peer Event Frame Transmitted Nanoseconds */ -#define REG_GMAC_PEFRS (*(RoReg*)0x400341F8U) /**< \brief (GMAC) PTP Peer Event Frame Received Seconds */ -#define REG_GMAC_PEFRN (*(RoReg*)0x400341FCU) /**< \brief (GMAC) PTP Peer Event Frame Received Nanoseconds */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_GMAC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/gpbr.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/gpbr.h deleted file mode 100644 index 143e37bc2..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/gpbr.h +++ /dev/null @@ -1,52 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_GPBR_INSTANCE_ -#define _SAM4E_GPBR_INSTANCE_ - -/* ========== Register definition for GPBR peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_GPBR_GPBR (0x400E1890U) /**< \brief (GPBR) General Purpose Backup Register */ -#else -#define REG_GPBR_GPBR (*(RwReg*)0x400E1890U) /**< \brief (GPBR) General Purpose Backup Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_GPBR_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/hsmci.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/hsmci.h deleted file mode 100644 index 413b78611..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/hsmci.h +++ /dev/null @@ -1,108 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_HSMCI_INSTANCE_ -#define _SAM4E_HSMCI_INSTANCE_ - -/* ========== Register definition for HSMCI peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_HSMCI_CR (0x40080000U) /**< \brief (HSMCI) Control Register */ -#define REG_HSMCI_MR (0x40080004U) /**< \brief (HSMCI) Mode Register */ -#define REG_HSMCI_DTOR (0x40080008U) /**< \brief (HSMCI) Data Timeout Register */ -#define REG_HSMCI_SDCR (0x4008000CU) /**< \brief (HSMCI) SD/SDIO Card Register */ -#define REG_HSMCI_ARGR (0x40080010U) /**< \brief (HSMCI) Argument Register */ -#define REG_HSMCI_CMDR (0x40080014U) /**< \brief (HSMCI) Command Register */ -#define REG_HSMCI_BLKR (0x40080018U) /**< \brief (HSMCI) Block Register */ -#define REG_HSMCI_CSTOR (0x4008001CU) /**< \brief (HSMCI) Completion Signal Timeout Register */ -#define REG_HSMCI_RSPR (0x40080020U) /**< \brief (HSMCI) Response Register */ -#define REG_HSMCI_RDR (0x40080030U) /**< \brief (HSMCI) Receive Data Register */ -#define REG_HSMCI_TDR (0x40080034U) /**< \brief (HSMCI) Transmit Data Register */ -#define REG_HSMCI_SR (0x40080040U) /**< \brief (HSMCI) Status Register */ -#define REG_HSMCI_IER (0x40080044U) /**< \brief (HSMCI) Interrupt Enable Register */ -#define REG_HSMCI_IDR (0x40080048U) /**< \brief (HSMCI) Interrupt Disable Register */ -#define REG_HSMCI_IMR (0x4008004CU) /**< \brief (HSMCI) Interrupt Mask Register */ -#define REG_HSMCI_CFG (0x40080054U) /**< \brief (HSMCI) Configuration Register */ -#define REG_HSMCI_WPMR (0x400800E4U) /**< \brief (HSMCI) Write Protection Mode Register */ -#define REG_HSMCI_WPSR (0x400800E8U) /**< \brief (HSMCI) Write Protection Status Register */ -#define REG_HSMCI_RPR (0x40080100U) /**< \brief (HSMCI) Receive Pointer Register */ -#define REG_HSMCI_RCR (0x40080104U) /**< \brief (HSMCI) Receive Counter Register */ -#define REG_HSMCI_TPR (0x40080108U) /**< \brief (HSMCI) Transmit Pointer Register */ -#define REG_HSMCI_TCR (0x4008010CU) /**< \brief (HSMCI) Transmit Counter Register */ -#define REG_HSMCI_RNPR (0x40080110U) /**< \brief (HSMCI) Receive Next Pointer Register */ -#define REG_HSMCI_RNCR (0x40080114U) /**< \brief (HSMCI) Receive Next Counter Register */ -#define REG_HSMCI_TNPR (0x40080118U) /**< \brief (HSMCI) Transmit Next Pointer Register */ -#define REG_HSMCI_TNCR (0x4008011CU) /**< \brief (HSMCI) Transmit Next Counter Register */ -#define REG_HSMCI_PTCR (0x40080120U) /**< \brief (HSMCI) Transfer Control Register */ -#define REG_HSMCI_PTSR (0x40080124U) /**< \brief (HSMCI) Transfer Status Register */ -#define REG_HSMCI_FIFO (0x40080200U) /**< \brief (HSMCI) FIFO Memory Aperture0 */ -#else -#define REG_HSMCI_CR (*(WoReg*)0x40080000U) /**< \brief (HSMCI) Control Register */ -#define REG_HSMCI_MR (*(RwReg*)0x40080004U) /**< \brief (HSMCI) Mode Register */ -#define REG_HSMCI_DTOR (*(RwReg*)0x40080008U) /**< \brief (HSMCI) Data Timeout Register */ -#define REG_HSMCI_SDCR (*(RwReg*)0x4008000CU) /**< \brief (HSMCI) SD/SDIO Card Register */ -#define REG_HSMCI_ARGR (*(RwReg*)0x40080010U) /**< \brief (HSMCI) Argument Register */ -#define REG_HSMCI_CMDR (*(WoReg*)0x40080014U) /**< \brief (HSMCI) Command Register */ -#define REG_HSMCI_BLKR (*(RwReg*)0x40080018U) /**< \brief (HSMCI) Block Register */ -#define REG_HSMCI_CSTOR (*(RwReg*)0x4008001CU) /**< \brief (HSMCI) Completion Signal Timeout Register */ -#define REG_HSMCI_RSPR (*(RoReg*)0x40080020U) /**< \brief (HSMCI) Response Register */ -#define REG_HSMCI_RDR (*(RoReg*)0x40080030U) /**< \brief (HSMCI) Receive Data Register */ -#define REG_HSMCI_TDR (*(WoReg*)0x40080034U) /**< \brief (HSMCI) Transmit Data Register */ -#define REG_HSMCI_SR (*(RoReg*)0x40080040U) /**< \brief (HSMCI) Status Register */ -#define REG_HSMCI_IER (*(WoReg*)0x40080044U) /**< \brief (HSMCI) Interrupt Enable Register */ -#define REG_HSMCI_IDR (*(WoReg*)0x40080048U) /**< \brief (HSMCI) Interrupt Disable Register */ -#define REG_HSMCI_IMR (*(RoReg*)0x4008004CU) /**< \brief (HSMCI) Interrupt Mask Register */ -#define REG_HSMCI_CFG (*(RwReg*)0x40080054U) /**< \brief (HSMCI) Configuration Register */ -#define REG_HSMCI_WPMR (*(RwReg*)0x400800E4U) /**< \brief (HSMCI) Write Protection Mode Register */ -#define REG_HSMCI_WPSR (*(RoReg*)0x400800E8U) /**< \brief (HSMCI) Write Protection Status Register */ -#define REG_HSMCI_RPR (*(RwReg*)0x40080100U) /**< \brief (HSMCI) Receive Pointer Register */ -#define REG_HSMCI_RCR (*(RwReg*)0x40080104U) /**< \brief (HSMCI) Receive Counter Register */ -#define REG_HSMCI_TPR (*(RwReg*)0x40080108U) /**< \brief (HSMCI) Transmit Pointer Register */ -#define REG_HSMCI_TCR (*(RwReg*)0x4008010CU) /**< \brief (HSMCI) Transmit Counter Register */ -#define REG_HSMCI_RNPR (*(RwReg*)0x40080110U) /**< \brief (HSMCI) Receive Next Pointer Register */ -#define REG_HSMCI_RNCR (*(RwReg*)0x40080114U) /**< \brief (HSMCI) Receive Next Counter Register */ -#define REG_HSMCI_TNPR (*(RwReg*)0x40080118U) /**< \brief (HSMCI) Transmit Next Pointer Register */ -#define REG_HSMCI_TNCR (*(RwReg*)0x4008011CU) /**< \brief (HSMCI) Transmit Next Counter Register */ -#define REG_HSMCI_PTCR (*(WoReg*)0x40080120U) /**< \brief (HSMCI) Transfer Control Register */ -#define REG_HSMCI_PTSR (*(RoReg*)0x40080124U) /**< \brief (HSMCI) Transfer Status Register */ -#define REG_HSMCI_FIFO (*(RwReg*)0x40080200U) /**< \brief (HSMCI) FIFO Memory Aperture0 */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_HSMCI_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/matrix.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/matrix.h deleted file mode 100644 index e996ba229..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/matrix.h +++ /dev/null @@ -1,76 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_MATRIX_INSTANCE_ -#define _SAM4E_MATRIX_INSTANCE_ - -/* ========== Register definition for MATRIX peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_MATRIX_MCFG (0x400E0200U) /**< \brief (MATRIX) Master Configuration Register */ -#define REG_MATRIX_SCFG (0x400E0240U) /**< \brief (MATRIX) Slave Configuration Register */ -#define REG_MATRIX_PRAS0 (0x400E0280U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ -#define REG_MATRIX_PRAS1 (0x400E0288U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ -#define REG_MATRIX_PRAS2 (0x400E0290U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ -#define REG_MATRIX_PRAS3 (0x400E0298U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ -#define REG_MATRIX_PRAS4 (0x400E02A0U) /**< \brief (MATRIX) Priority Register A for Slave 4 */ -#define REG_MATRIX_PRAS5 (0x400E02A8U) /**< \brief (MATRIX) Priority Register A for Slave 5 */ -#define REG_MATRIX_MRCR (0x400E0300U) /**< \brief (MATRIX) Master Remap Control Register */ -#define REG_CCFG_SYSIO (0x400E0314U) /**< \brief (MATRIX) System I/O Configuration Register */ -#define REG_CCFG_SMCNFCS (0x400E0324U) /**< \brief (MATRIX) SMC NAND Flash Chip Select Configuration Register */ -#define REG_MATRIX_WPMR (0x400E03E4U) /**< \brief (MATRIX) Write Protect Mode Register */ -#define REG_MATRIX_WPSR (0x400E03E8U) /**< \brief (MATRIX) Write Protect Status Register */ -#else -#define REG_MATRIX_MCFG (*(RwReg*)0x400E0200U) /**< \brief (MATRIX) Master Configuration Register */ -#define REG_MATRIX_SCFG (*(RwReg*)0x400E0240U) /**< \brief (MATRIX) Slave Configuration Register */ -#define REG_MATRIX_PRAS0 (*(RwReg*)0x400E0280U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ -#define REG_MATRIX_PRAS1 (*(RwReg*)0x400E0288U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ -#define REG_MATRIX_PRAS2 (*(RwReg*)0x400E0290U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ -#define REG_MATRIX_PRAS3 (*(RwReg*)0x400E0298U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ -#define REG_MATRIX_PRAS4 (*(RwReg*)0x400E02A0U) /**< \brief (MATRIX) Priority Register A for Slave 4 */ -#define REG_MATRIX_PRAS5 (*(RwReg*)0x400E02A8U) /**< \brief (MATRIX) Priority Register A for Slave 5 */ -#define REG_MATRIX_MRCR (*(RwReg*)0x400E0300U) /**< \brief (MATRIX) Master Remap Control Register */ -#define REG_CCFG_SYSIO (*(RwReg*)0x400E0314U) /**< \brief (MATRIX) System I/O Configuration Register */ -#define REG_CCFG_SMCNFCS (*(RwReg*)0x400E0324U) /**< \brief (MATRIX) SMC NAND Flash Chip Select Configuration Register */ -#define REG_MATRIX_WPMR (*(RwReg*)0x400E03E4U) /**< \brief (MATRIX) Write Protect Mode Register */ -#define REG_MATRIX_WPSR (*(RoReg*)0x400E03E8U) /**< \brief (MATRIX) Write Protect Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_MATRIX_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioa.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioa.h deleted file mode 100644 index 61db8ab85..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioa.h +++ /dev/null @@ -1,170 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_PIOA_INSTANCE_ -#define _SAM4E_PIOA_INSTANCE_ - -/* ========== Register definition for PIOA peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_PIOA_PER (0x400E0E00U) /**< \brief (PIOA) PIO Enable Register */ -#define REG_PIOA_PDR (0x400E0E04U) /**< \brief (PIOA) PIO Disable Register */ -#define REG_PIOA_PSR (0x400E0E08U) /**< \brief (PIOA) PIO Status Register */ -#define REG_PIOA_OER (0x400E0E10U) /**< \brief (PIOA) Output Enable Register */ -#define REG_PIOA_ODR (0x400E0E14U) /**< \brief (PIOA) Output Disable Register */ -#define REG_PIOA_OSR (0x400E0E18U) /**< \brief (PIOA) Output Status Register */ -#define REG_PIOA_IFER (0x400E0E20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ -#define REG_PIOA_IFDR (0x400E0E24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ -#define REG_PIOA_IFSR (0x400E0E28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ -#define REG_PIOA_SODR (0x400E0E30U) /**< \brief (PIOA) Set Output Data Register */ -#define REG_PIOA_CODR (0x400E0E34U) /**< \brief (PIOA) Clear Output Data Register */ -#define REG_PIOA_ODSR (0x400E0E38U) /**< \brief (PIOA) Output Data Status Register */ -#define REG_PIOA_PDSR (0x400E0E3CU) /**< \brief (PIOA) Pin Data Status Register */ -#define REG_PIOA_IER (0x400E0E40U) /**< \brief (PIOA) Interrupt Enable Register */ -#define REG_PIOA_IDR (0x400E0E44U) /**< \brief (PIOA) Interrupt Disable Register */ -#define REG_PIOA_IMR (0x400E0E48U) /**< \brief (PIOA) Interrupt Mask Register */ -#define REG_PIOA_ISR (0x400E0E4CU) /**< \brief (PIOA) Interrupt Status Register */ -#define REG_PIOA_MDER (0x400E0E50U) /**< \brief (PIOA) Multi-driver Enable Register */ -#define REG_PIOA_MDDR (0x400E0E54U) /**< \brief (PIOA) Multi-driver Disable Register */ -#define REG_PIOA_MDSR (0x400E0E58U) /**< \brief (PIOA) Multi-driver Status Register */ -#define REG_PIOA_PUDR (0x400E0E60U) /**< \brief (PIOA) Pull-up Disable Register */ -#define REG_PIOA_PUER (0x400E0E64U) /**< \brief (PIOA) Pull-up Enable Register */ -#define REG_PIOA_PUSR (0x400E0E68U) /**< \brief (PIOA) Pad Pull-up Status Register */ -#define REG_PIOA_ABCDSR (0x400E0E70U) /**< \brief (PIOA) Peripheral Select Register */ -#define REG_PIOA_IFSCDR (0x400E0E80U) /**< \brief (PIOA) Input Filter Slow Clock Disable Register */ -#define REG_PIOA_IFSCER (0x400E0E84U) /**< \brief (PIOA) Input Filter Slow Clock Enable Register */ -#define REG_PIOA_IFSCSR (0x400E0E88U) /**< \brief (PIOA) Input Filter Slow Clock Status Register */ -#define REG_PIOA_SCDR (0x400E0E8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ -#define REG_PIOA_PPDDR (0x400E0E90U) /**< \brief (PIOA) Pad Pull-down Disable Register */ -#define REG_PIOA_PPDER (0x400E0E94U) /**< \brief (PIOA) Pad Pull-down Enable Register */ -#define REG_PIOA_PPDSR (0x400E0E98U) /**< \brief (PIOA) Pad Pull-down Status Register */ -#define REG_PIOA_OWER (0x400E0EA0U) /**< \brief (PIOA) Output Write Enable */ -#define REG_PIOA_OWDR (0x400E0EA4U) /**< \brief (PIOA) Output Write Disable */ -#define REG_PIOA_OWSR (0x400E0EA8U) /**< \brief (PIOA) Output Write Status Register */ -#define REG_PIOA_AIMER (0x400E0EB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ -#define REG_PIOA_AIMDR (0x400E0EB4U) /**< \brief (PIOA) Additional Interrupt Modes Disables Register */ -#define REG_PIOA_AIMMR (0x400E0EB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ -#define REG_PIOA_ESR (0x400E0EC0U) /**< \brief (PIOA) Edge Select Register */ -#define REG_PIOA_LSR (0x400E0EC4U) /**< \brief (PIOA) Level Select Register */ -#define REG_PIOA_ELSR (0x400E0EC8U) /**< \brief (PIOA) Edge/Level Status Register */ -#define REG_PIOA_FELLSR (0x400E0ED0U) /**< \brief (PIOA) Falling Edge/Low Level Select Register */ -#define REG_PIOA_REHLSR (0x400E0ED4U) /**< \brief (PIOA) Rising Edge/ High Level Select Register */ -#define REG_PIOA_FRLHSR (0x400E0ED8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ -#define REG_PIOA_LOCKSR (0x400E0EE0U) /**< \brief (PIOA) Lock Status */ -#define REG_PIOA_WPMR (0x400E0EE4U) /**< \brief (PIOA) Write Protect Mode Register */ -#define REG_PIOA_WPSR (0x400E0EE8U) /**< \brief (PIOA) Write Protect Status Register */ -#define REG_PIOA_SCHMITT (0x400E0F00U) /**< \brief (PIOA) Schmitt Trigger Register */ -#define REG_PIOA_DELAYR (0x400E0F10U) /**< \brief (PIOA) IO Delay Register */ -#define REG_PIOA_PCMR (0x400E0F50U) /**< \brief (PIOA) Parallel Capture Mode Register */ -#define REG_PIOA_PCIER (0x400E0F54U) /**< \brief (PIOA) Parallel Capture Interrupt Enable Register */ -#define REG_PIOA_PCIDR (0x400E0F58U) /**< \brief (PIOA) Parallel Capture Interrupt Disable Register */ -#define REG_PIOA_PCIMR (0x400E0F5CU) /**< \brief (PIOA) Parallel Capture Interrupt Mask Register */ -#define REG_PIOA_PCISR (0x400E0F60U) /**< \brief (PIOA) Parallel Capture Interrupt Status Register */ -#define REG_PIOA_PCRHR (0x400E0F64U) /**< \brief (PIOA) Parallel Capture Reception Holding Register */ -#define REG_PIOA_RPR (0x400E0F68U) /**< \brief (PIOA) Receive Pointer Register */ -#define REG_PIOA_RCR (0x400E0F6CU) /**< \brief (PIOA) Receive Counter Register */ -#define REG_PIOA_RNPR (0x400E0F78U) /**< \brief (PIOA) Receive Next Pointer Register */ -#define REG_PIOA_RNCR (0x400E0F7CU) /**< \brief (PIOA) Receive Next Counter Register */ -#define REG_PIOA_PTCR (0x400E0F88U) /**< \brief (PIOA) Transfer Control Register */ -#define REG_PIOA_PTSR (0x400E0F8CU) /**< \brief (PIOA) Transfer Status Register */ -#else -#define REG_PIOA_PER (*(WoReg*)0x400E0E00U) /**< \brief (PIOA) PIO Enable Register */ -#define REG_PIOA_PDR (*(WoReg*)0x400E0E04U) /**< \brief (PIOA) PIO Disable Register */ -#define REG_PIOA_PSR (*(RoReg*)0x400E0E08U) /**< \brief (PIOA) PIO Status Register */ -#define REG_PIOA_OER (*(WoReg*)0x400E0E10U) /**< \brief (PIOA) Output Enable Register */ -#define REG_PIOA_ODR (*(WoReg*)0x400E0E14U) /**< \brief (PIOA) Output Disable Register */ -#define REG_PIOA_OSR (*(RoReg*)0x400E0E18U) /**< \brief (PIOA) Output Status Register */ -#define REG_PIOA_IFER (*(WoReg*)0x400E0E20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ -#define REG_PIOA_IFDR (*(WoReg*)0x400E0E24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ -#define REG_PIOA_IFSR (*(RoReg*)0x400E0E28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ -#define REG_PIOA_SODR (*(WoReg*)0x400E0E30U) /**< \brief (PIOA) Set Output Data Register */ -#define REG_PIOA_CODR (*(WoReg*)0x400E0E34U) /**< \brief (PIOA) Clear Output Data Register */ -#define REG_PIOA_ODSR (*(RwReg*)0x400E0E38U) /**< \brief (PIOA) Output Data Status Register */ -#define REG_PIOA_PDSR (*(RoReg*)0x400E0E3CU) /**< \brief (PIOA) Pin Data Status Register */ -#define REG_PIOA_IER (*(WoReg*)0x400E0E40U) /**< \brief (PIOA) Interrupt Enable Register */ -#define REG_PIOA_IDR (*(WoReg*)0x400E0E44U) /**< \brief (PIOA) Interrupt Disable Register */ -#define REG_PIOA_IMR (*(RoReg*)0x400E0E48U) /**< \brief (PIOA) Interrupt Mask Register */ -#define REG_PIOA_ISR (*(RoReg*)0x400E0E4CU) /**< \brief (PIOA) Interrupt Status Register */ -#define REG_PIOA_MDER (*(WoReg*)0x400E0E50U) /**< \brief (PIOA) Multi-driver Enable Register */ -#define REG_PIOA_MDDR (*(WoReg*)0x400E0E54U) /**< \brief (PIOA) Multi-driver Disable Register */ -#define REG_PIOA_MDSR (*(RoReg*)0x400E0E58U) /**< \brief (PIOA) Multi-driver Status Register */ -#define REG_PIOA_PUDR (*(WoReg*)0x400E0E60U) /**< \brief (PIOA) Pull-up Disable Register */ -#define REG_PIOA_PUER (*(WoReg*)0x400E0E64U) /**< \brief (PIOA) Pull-up Enable Register */ -#define REG_PIOA_PUSR (*(RoReg*)0x400E0E68U) /**< \brief (PIOA) Pad Pull-up Status Register */ -#define REG_PIOA_ABCDSR (*(RwReg*)0x400E0E70U) /**< \brief (PIOA) Peripheral Select Register */ -#define REG_PIOA_IFSCDR (*(WoReg*)0x400E0E80U) /**< \brief (PIOA) Input Filter Slow Clock Disable Register */ -#define REG_PIOA_IFSCER (*(WoReg*)0x400E0E84U) /**< \brief (PIOA) Input Filter Slow Clock Enable Register */ -#define REG_PIOA_IFSCSR (*(RoReg*)0x400E0E88U) /**< \brief (PIOA) Input Filter Slow Clock Status Register */ -#define REG_PIOA_SCDR (*(RwReg*)0x400E0E8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ -#define REG_PIOA_PPDDR (*(WoReg*)0x400E0E90U) /**< \brief (PIOA) Pad Pull-down Disable Register */ -#define REG_PIOA_PPDER (*(WoReg*)0x400E0E94U) /**< \brief (PIOA) Pad Pull-down Enable Register */ -#define REG_PIOA_PPDSR (*(RoReg*)0x400E0E98U) /**< \brief (PIOA) Pad Pull-down Status Register */ -#define REG_PIOA_OWER (*(WoReg*)0x400E0EA0U) /**< \brief (PIOA) Output Write Enable */ -#define REG_PIOA_OWDR (*(WoReg*)0x400E0EA4U) /**< \brief (PIOA) Output Write Disable */ -#define REG_PIOA_OWSR (*(RoReg*)0x400E0EA8U) /**< \brief (PIOA) Output Write Status Register */ -#define REG_PIOA_AIMER (*(WoReg*)0x400E0EB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ -#define REG_PIOA_AIMDR (*(WoReg*)0x400E0EB4U) /**< \brief (PIOA) Additional Interrupt Modes Disables Register */ -#define REG_PIOA_AIMMR (*(RoReg*)0x400E0EB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ -#define REG_PIOA_ESR (*(WoReg*)0x400E0EC0U) /**< \brief (PIOA) Edge Select Register */ -#define REG_PIOA_LSR (*(WoReg*)0x400E0EC4U) /**< \brief (PIOA) Level Select Register */ -#define REG_PIOA_ELSR (*(RoReg*)0x400E0EC8U) /**< \brief (PIOA) Edge/Level Status Register */ -#define REG_PIOA_FELLSR (*(WoReg*)0x400E0ED0U) /**< \brief (PIOA) Falling Edge/Low Level Select Register */ -#define REG_PIOA_REHLSR (*(WoReg*)0x400E0ED4U) /**< \brief (PIOA) Rising Edge/ High Level Select Register */ -#define REG_PIOA_FRLHSR (*(RoReg*)0x400E0ED8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ -#define REG_PIOA_LOCKSR (*(RoReg*)0x400E0EE0U) /**< \brief (PIOA) Lock Status */ -#define REG_PIOA_WPMR (*(RwReg*)0x400E0EE4U) /**< \brief (PIOA) Write Protect Mode Register */ -#define REG_PIOA_WPSR (*(RoReg*)0x400E0EE8U) /**< \brief (PIOA) Write Protect Status Register */ -#define REG_PIOA_SCHMITT (*(RwReg*)0x400E0F00U) /**< \brief (PIOA) Schmitt Trigger Register */ -#define REG_PIOA_DELAYR (*(RwReg*)0x400E0F10U) /**< \brief (PIOA) IO Delay Register */ -#define REG_PIOA_PCMR (*(RwReg*)0x400E0F50U) /**< \brief (PIOA) Parallel Capture Mode Register */ -#define REG_PIOA_PCIER (*(WoReg*)0x400E0F54U) /**< \brief (PIOA) Parallel Capture Interrupt Enable Register */ -#define REG_PIOA_PCIDR (*(WoReg*)0x400E0F58U) /**< \brief (PIOA) Parallel Capture Interrupt Disable Register */ -#define REG_PIOA_PCIMR (*(RoReg*)0x400E0F5CU) /**< \brief (PIOA) Parallel Capture Interrupt Mask Register */ -#define REG_PIOA_PCISR (*(RoReg*)0x400E0F60U) /**< \brief (PIOA) Parallel Capture Interrupt Status Register */ -#define REG_PIOA_PCRHR (*(RoReg*)0x400E0F64U) /**< \brief (PIOA) Parallel Capture Reception Holding Register */ -#define REG_PIOA_RPR (*(RwReg*)0x400E0F68U) /**< \brief (PIOA) Receive Pointer Register */ -#define REG_PIOA_RCR (*(RwReg*)0x400E0F6CU) /**< \brief (PIOA) Receive Counter Register */ -#define REG_PIOA_RNPR (*(RwReg*)0x400E0F78U) /**< \brief (PIOA) Receive Next Pointer Register */ -#define REG_PIOA_RNCR (*(RwReg*)0x400E0F7CU) /**< \brief (PIOA) Receive Next Counter Register */ -#define REG_PIOA_PTCR (*(WoReg*)0x400E0F88U) /**< \brief (PIOA) Transfer Control Register */ -#define REG_PIOA_PTSR (*(RoReg*)0x400E0F8CU) /**< \brief (PIOA) Transfer Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_PIOA_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/piob.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/piob.h deleted file mode 100644 index 46b342a7e..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/piob.h +++ /dev/null @@ -1,158 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_PIOB_INSTANCE_ -#define _SAM4E_PIOB_INSTANCE_ - -/* ========== Register definition for PIOB peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_PIOB_PER (0x400E1000U) /**< \brief (PIOB) PIO Enable Register */ -#define REG_PIOB_PDR (0x400E1004U) /**< \brief (PIOB) PIO Disable Register */ -#define REG_PIOB_PSR (0x400E1008U) /**< \brief (PIOB) PIO Status Register */ -#define REG_PIOB_OER (0x400E1010U) /**< \brief (PIOB) Output Enable Register */ -#define REG_PIOB_ODR (0x400E1014U) /**< \brief (PIOB) Output Disable Register */ -#define REG_PIOB_OSR (0x400E1018U) /**< \brief (PIOB) Output Status Register */ -#define REG_PIOB_IFER (0x400E1020U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ -#define REG_PIOB_IFDR (0x400E1024U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ -#define REG_PIOB_IFSR (0x400E1028U) /**< \brief (PIOB) Glitch Input Filter Status Register */ -#define REG_PIOB_SODR (0x400E1030U) /**< \brief (PIOB) Set Output Data Register */ -#define REG_PIOB_CODR (0x400E1034U) /**< \brief (PIOB) Clear Output Data Register */ -#define REG_PIOB_ODSR (0x400E1038U) /**< \brief (PIOB) Output Data Status Register */ -#define REG_PIOB_PDSR (0x400E103CU) /**< \brief (PIOB) Pin Data Status Register */ -#define REG_PIOB_IER (0x400E1040U) /**< \brief (PIOB) Interrupt Enable Register */ -#define REG_PIOB_IDR (0x400E1044U) /**< \brief (PIOB) Interrupt Disable Register */ -#define REG_PIOB_IMR (0x400E1048U) /**< \brief (PIOB) Interrupt Mask Register */ -#define REG_PIOB_ISR (0x400E104CU) /**< \brief (PIOB) Interrupt Status Register */ -#define REG_PIOB_MDER (0x400E1050U) /**< \brief (PIOB) Multi-driver Enable Register */ -#define REG_PIOB_MDDR (0x400E1054U) /**< \brief (PIOB) Multi-driver Disable Register */ -#define REG_PIOB_MDSR (0x400E1058U) /**< \brief (PIOB) Multi-driver Status Register */ -#define REG_PIOB_PUDR (0x400E1060U) /**< \brief (PIOB) Pull-up Disable Register */ -#define REG_PIOB_PUER (0x400E1064U) /**< \brief (PIOB) Pull-up Enable Register */ -#define REG_PIOB_PUSR (0x400E1068U) /**< \brief (PIOB) Pad Pull-up Status Register */ -#define REG_PIOB_ABCDSR (0x400E1070U) /**< \brief (PIOB) Peripheral Select Register */ -#define REG_PIOB_IFSCDR (0x400E1080U) /**< \brief (PIOB) Input Filter Slow Clock Disable Register */ -#define REG_PIOB_IFSCER (0x400E1084U) /**< \brief (PIOB) Input Filter Slow Clock Enable Register */ -#define REG_PIOB_IFSCSR (0x400E1088U) /**< \brief (PIOB) Input Filter Slow Clock Status Register */ -#define REG_PIOB_SCDR (0x400E108CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ -#define REG_PIOB_PPDDR (0x400E1090U) /**< \brief (PIOB) Pad Pull-down Disable Register */ -#define REG_PIOB_PPDER (0x400E1094U) /**< \brief (PIOB) Pad Pull-down Enable Register */ -#define REG_PIOB_PPDSR (0x400E1098U) /**< \brief (PIOB) Pad Pull-down Status Register */ -#define REG_PIOB_OWER (0x400E10A0U) /**< \brief (PIOB) Output Write Enable */ -#define REG_PIOB_OWDR (0x400E10A4U) /**< \brief (PIOB) Output Write Disable */ -#define REG_PIOB_OWSR (0x400E10A8U) /**< \brief (PIOB) Output Write Status Register */ -#define REG_PIOB_AIMER (0x400E10B0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ -#define REG_PIOB_AIMDR (0x400E10B4U) /**< \brief (PIOB) Additional Interrupt Modes Disables Register */ -#define REG_PIOB_AIMMR (0x400E10B8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ -#define REG_PIOB_ESR (0x400E10C0U) /**< \brief (PIOB) Edge Select Register */ -#define REG_PIOB_LSR (0x400E10C4U) /**< \brief (PIOB) Level Select Register */ -#define REG_PIOB_ELSR (0x400E10C8U) /**< \brief (PIOB) Edge/Level Status Register */ -#define REG_PIOB_FELLSR (0x400E10D0U) /**< \brief (PIOB) Falling Edge/Low Level Select Register */ -#define REG_PIOB_REHLSR (0x400E10D4U) /**< \brief (PIOB) Rising Edge/ High Level Select Register */ -#define REG_PIOB_FRLHSR (0x400E10D8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ -#define REG_PIOB_LOCKSR (0x400E10E0U) /**< \brief (PIOB) Lock Status */ -#define REG_PIOB_WPMR (0x400E10E4U) /**< \brief (PIOB) Write Protect Mode Register */ -#define REG_PIOB_WPSR (0x400E10E8U) /**< \brief (PIOB) Write Protect Status Register */ -#define REG_PIOB_SCHMITT (0x400E1100U) /**< \brief (PIOB) Schmitt Trigger Register */ -#define REG_PIOB_DELAYR (0x400E1110U) /**< \brief (PIOB) IO Delay Register */ -#define REG_PIOB_PCMR (0x400E1150U) /**< \brief (PIOB) Parallel Capture Mode Register */ -#define REG_PIOB_PCIER (0x400E1154U) /**< \brief (PIOB) Parallel Capture Interrupt Enable Register */ -#define REG_PIOB_PCIDR (0x400E1158U) /**< \brief (PIOB) Parallel Capture Interrupt Disable Register */ -#define REG_PIOB_PCIMR (0x400E115CU) /**< \brief (PIOB) Parallel Capture Interrupt Mask Register */ -#define REG_PIOB_PCISR (0x400E1160U) /**< \brief (PIOB) Parallel Capture Interrupt Status Register */ -#define REG_PIOB_PCRHR (0x400E1164U) /**< \brief (PIOB) Parallel Capture Reception Holding Register */ -#else -#define REG_PIOB_PER (*(WoReg*)0x400E1000U) /**< \brief (PIOB) PIO Enable Register */ -#define REG_PIOB_PDR (*(WoReg*)0x400E1004U) /**< \brief (PIOB) PIO Disable Register */ -#define REG_PIOB_PSR (*(RoReg*)0x400E1008U) /**< \brief (PIOB) PIO Status Register */ -#define REG_PIOB_OER (*(WoReg*)0x400E1010U) /**< \brief (PIOB) Output Enable Register */ -#define REG_PIOB_ODR (*(WoReg*)0x400E1014U) /**< \brief (PIOB) Output Disable Register */ -#define REG_PIOB_OSR (*(RoReg*)0x400E1018U) /**< \brief (PIOB) Output Status Register */ -#define REG_PIOB_IFER (*(WoReg*)0x400E1020U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ -#define REG_PIOB_IFDR (*(WoReg*)0x400E1024U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ -#define REG_PIOB_IFSR (*(RoReg*)0x400E1028U) /**< \brief (PIOB) Glitch Input Filter Status Register */ -#define REG_PIOB_SODR (*(WoReg*)0x400E1030U) /**< \brief (PIOB) Set Output Data Register */ -#define REG_PIOB_CODR (*(WoReg*)0x400E1034U) /**< \brief (PIOB) Clear Output Data Register */ -#define REG_PIOB_ODSR (*(RwReg*)0x400E1038U) /**< \brief (PIOB) Output Data Status Register */ -#define REG_PIOB_PDSR (*(RoReg*)0x400E103CU) /**< \brief (PIOB) Pin Data Status Register */ -#define REG_PIOB_IER (*(WoReg*)0x400E1040U) /**< \brief (PIOB) Interrupt Enable Register */ -#define REG_PIOB_IDR (*(WoReg*)0x400E1044U) /**< \brief (PIOB) Interrupt Disable Register */ -#define REG_PIOB_IMR (*(RoReg*)0x400E1048U) /**< \brief (PIOB) Interrupt Mask Register */ -#define REG_PIOB_ISR (*(RoReg*)0x400E104CU) /**< \brief (PIOB) Interrupt Status Register */ -#define REG_PIOB_MDER (*(WoReg*)0x400E1050U) /**< \brief (PIOB) Multi-driver Enable Register */ -#define REG_PIOB_MDDR (*(WoReg*)0x400E1054U) /**< \brief (PIOB) Multi-driver Disable Register */ -#define REG_PIOB_MDSR (*(RoReg*)0x400E1058U) /**< \brief (PIOB) Multi-driver Status Register */ -#define REG_PIOB_PUDR (*(WoReg*)0x400E1060U) /**< \brief (PIOB) Pull-up Disable Register */ -#define REG_PIOB_PUER (*(WoReg*)0x400E1064U) /**< \brief (PIOB) Pull-up Enable Register */ -#define REG_PIOB_PUSR (*(RoReg*)0x400E1068U) /**< \brief (PIOB) Pad Pull-up Status Register */ -#define REG_PIOB_ABCDSR (*(RwReg*)0x400E1070U) /**< \brief (PIOB) Peripheral Select Register */ -#define REG_PIOB_IFSCDR (*(WoReg*)0x400E1080U) /**< \brief (PIOB) Input Filter Slow Clock Disable Register */ -#define REG_PIOB_IFSCER (*(WoReg*)0x400E1084U) /**< \brief (PIOB) Input Filter Slow Clock Enable Register */ -#define REG_PIOB_IFSCSR (*(RoReg*)0x400E1088U) /**< \brief (PIOB) Input Filter Slow Clock Status Register */ -#define REG_PIOB_SCDR (*(RwReg*)0x400E108CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ -#define REG_PIOB_PPDDR (*(WoReg*)0x400E1090U) /**< \brief (PIOB) Pad Pull-down Disable Register */ -#define REG_PIOB_PPDER (*(WoReg*)0x400E1094U) /**< \brief (PIOB) Pad Pull-down Enable Register */ -#define REG_PIOB_PPDSR (*(RoReg*)0x400E1098U) /**< \brief (PIOB) Pad Pull-down Status Register */ -#define REG_PIOB_OWER (*(WoReg*)0x400E10A0U) /**< \brief (PIOB) Output Write Enable */ -#define REG_PIOB_OWDR (*(WoReg*)0x400E10A4U) /**< \brief (PIOB) Output Write Disable */ -#define REG_PIOB_OWSR (*(RoReg*)0x400E10A8U) /**< \brief (PIOB) Output Write Status Register */ -#define REG_PIOB_AIMER (*(WoReg*)0x400E10B0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ -#define REG_PIOB_AIMDR (*(WoReg*)0x400E10B4U) /**< \brief (PIOB) Additional Interrupt Modes Disables Register */ -#define REG_PIOB_AIMMR (*(RoReg*)0x400E10B8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ -#define REG_PIOB_ESR (*(WoReg*)0x400E10C0U) /**< \brief (PIOB) Edge Select Register */ -#define REG_PIOB_LSR (*(WoReg*)0x400E10C4U) /**< \brief (PIOB) Level Select Register */ -#define REG_PIOB_ELSR (*(RoReg*)0x400E10C8U) /**< \brief (PIOB) Edge/Level Status Register */ -#define REG_PIOB_FELLSR (*(WoReg*)0x400E10D0U) /**< \brief (PIOB) Falling Edge/Low Level Select Register */ -#define REG_PIOB_REHLSR (*(WoReg*)0x400E10D4U) /**< \brief (PIOB) Rising Edge/ High Level Select Register */ -#define REG_PIOB_FRLHSR (*(RoReg*)0x400E10D8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ -#define REG_PIOB_LOCKSR (*(RoReg*)0x400E10E0U) /**< \brief (PIOB) Lock Status */ -#define REG_PIOB_WPMR (*(RwReg*)0x400E10E4U) /**< \brief (PIOB) Write Protect Mode Register */ -#define REG_PIOB_WPSR (*(RoReg*)0x400E10E8U) /**< \brief (PIOB) Write Protect Status Register */ -#define REG_PIOB_SCHMITT (*(RwReg*)0x400E1100U) /**< \brief (PIOB) Schmitt Trigger Register */ -#define REG_PIOB_DELAYR (*(RwReg*)0x400E1110U) /**< \brief (PIOB) IO Delay Register */ -#define REG_PIOB_PCMR (*(RwReg*)0x400E1150U) /**< \brief (PIOB) Parallel Capture Mode Register */ -#define REG_PIOB_PCIER (*(WoReg*)0x400E1154U) /**< \brief (PIOB) Parallel Capture Interrupt Enable Register */ -#define REG_PIOB_PCIDR (*(WoReg*)0x400E1158U) /**< \brief (PIOB) Parallel Capture Interrupt Disable Register */ -#define REG_PIOB_PCIMR (*(RoReg*)0x400E115CU) /**< \brief (PIOB) Parallel Capture Interrupt Mask Register */ -#define REG_PIOB_PCISR (*(RoReg*)0x400E1160U) /**< \brief (PIOB) Parallel Capture Interrupt Status Register */ -#define REG_PIOB_PCRHR (*(RoReg*)0x400E1164U) /**< \brief (PIOB) Parallel Capture Reception Holding Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_PIOB_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioc.h deleted file mode 100644 index c6e81e49f..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioc.h +++ /dev/null @@ -1,158 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_PIOC_INSTANCE_ -#define _SAM4E_PIOC_INSTANCE_ - -/* ========== Register definition for PIOC peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_PIOC_PER (0x400E1200U) /**< \brief (PIOC) PIO Enable Register */ -#define REG_PIOC_PDR (0x400E1204U) /**< \brief (PIOC) PIO Disable Register */ -#define REG_PIOC_PSR (0x400E1208U) /**< \brief (PIOC) PIO Status Register */ -#define REG_PIOC_OER (0x400E1210U) /**< \brief (PIOC) Output Enable Register */ -#define REG_PIOC_ODR (0x400E1214U) /**< \brief (PIOC) Output Disable Register */ -#define REG_PIOC_OSR (0x400E1218U) /**< \brief (PIOC) Output Status Register */ -#define REG_PIOC_IFER (0x400E1220U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ -#define REG_PIOC_IFDR (0x400E1224U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ -#define REG_PIOC_IFSR (0x400E1228U) /**< \brief (PIOC) Glitch Input Filter Status Register */ -#define REG_PIOC_SODR (0x400E1230U) /**< \brief (PIOC) Set Output Data Register */ -#define REG_PIOC_CODR (0x400E1234U) /**< \brief (PIOC) Clear Output Data Register */ -#define REG_PIOC_ODSR (0x400E1238U) /**< \brief (PIOC) Output Data Status Register */ -#define REG_PIOC_PDSR (0x400E123CU) /**< \brief (PIOC) Pin Data Status Register */ -#define REG_PIOC_IER (0x400E1240U) /**< \brief (PIOC) Interrupt Enable Register */ -#define REG_PIOC_IDR (0x400E1244U) /**< \brief (PIOC) Interrupt Disable Register */ -#define REG_PIOC_IMR (0x400E1248U) /**< \brief (PIOC) Interrupt Mask Register */ -#define REG_PIOC_ISR (0x400E124CU) /**< \brief (PIOC) Interrupt Status Register */ -#define REG_PIOC_MDER (0x400E1250U) /**< \brief (PIOC) Multi-driver Enable Register */ -#define REG_PIOC_MDDR (0x400E1254U) /**< \brief (PIOC) Multi-driver Disable Register */ -#define REG_PIOC_MDSR (0x400E1258U) /**< \brief (PIOC) Multi-driver Status Register */ -#define REG_PIOC_PUDR (0x400E1260U) /**< \brief (PIOC) Pull-up Disable Register */ -#define REG_PIOC_PUER (0x400E1264U) /**< \brief (PIOC) Pull-up Enable Register */ -#define REG_PIOC_PUSR (0x400E1268U) /**< \brief (PIOC) Pad Pull-up Status Register */ -#define REG_PIOC_ABCDSR (0x400E1270U) /**< \brief (PIOC) Peripheral Select Register */ -#define REG_PIOC_IFSCDR (0x400E1280U) /**< \brief (PIOC) Input Filter Slow Clock Disable Register */ -#define REG_PIOC_IFSCER (0x400E1284U) /**< \brief (PIOC) Input Filter Slow Clock Enable Register */ -#define REG_PIOC_IFSCSR (0x400E1288U) /**< \brief (PIOC) Input Filter Slow Clock Status Register */ -#define REG_PIOC_SCDR (0x400E128CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ -#define REG_PIOC_PPDDR (0x400E1290U) /**< \brief (PIOC) Pad Pull-down Disable Register */ -#define REG_PIOC_PPDER (0x400E1294U) /**< \brief (PIOC) Pad Pull-down Enable Register */ -#define REG_PIOC_PPDSR (0x400E1298U) /**< \brief (PIOC) Pad Pull-down Status Register */ -#define REG_PIOC_OWER (0x400E12A0U) /**< \brief (PIOC) Output Write Enable */ -#define REG_PIOC_OWDR (0x400E12A4U) /**< \brief (PIOC) Output Write Disable */ -#define REG_PIOC_OWSR (0x400E12A8U) /**< \brief (PIOC) Output Write Status Register */ -#define REG_PIOC_AIMER (0x400E12B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ -#define REG_PIOC_AIMDR (0x400E12B4U) /**< \brief (PIOC) Additional Interrupt Modes Disables Register */ -#define REG_PIOC_AIMMR (0x400E12B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ -#define REG_PIOC_ESR (0x400E12C0U) /**< \brief (PIOC) Edge Select Register */ -#define REG_PIOC_LSR (0x400E12C4U) /**< \brief (PIOC) Level Select Register */ -#define REG_PIOC_ELSR (0x400E12C8U) /**< \brief (PIOC) Edge/Level Status Register */ -#define REG_PIOC_FELLSR (0x400E12D0U) /**< \brief (PIOC) Falling Edge/Low Level Select Register */ -#define REG_PIOC_REHLSR (0x400E12D4U) /**< \brief (PIOC) Rising Edge/ High Level Select Register */ -#define REG_PIOC_FRLHSR (0x400E12D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ -#define REG_PIOC_LOCKSR (0x400E12E0U) /**< \brief (PIOC) Lock Status */ -#define REG_PIOC_WPMR (0x400E12E4U) /**< \brief (PIOC) Write Protect Mode Register */ -#define REG_PIOC_WPSR (0x400E12E8U) /**< \brief (PIOC) Write Protect Status Register */ -#define REG_PIOC_SCHMITT (0x400E1300U) /**< \brief (PIOC) Schmitt Trigger Register */ -#define REG_PIOC_DELAYR (0x400E1310U) /**< \brief (PIOC) IO Delay Register */ -#define REG_PIOC_PCMR (0x400E1350U) /**< \brief (PIOC) Parallel Capture Mode Register */ -#define REG_PIOC_PCIER (0x400E1354U) /**< \brief (PIOC) Parallel Capture Interrupt Enable Register */ -#define REG_PIOC_PCIDR (0x400E1358U) /**< \brief (PIOC) Parallel Capture Interrupt Disable Register */ -#define REG_PIOC_PCIMR (0x400E135CU) /**< \brief (PIOC) Parallel Capture Interrupt Mask Register */ -#define REG_PIOC_PCISR (0x400E1360U) /**< \brief (PIOC) Parallel Capture Interrupt Status Register */ -#define REG_PIOC_PCRHR (0x400E1364U) /**< \brief (PIOC) Parallel Capture Reception Holding Register */ -#else -#define REG_PIOC_PER (*(WoReg*)0x400E1200U) /**< \brief (PIOC) PIO Enable Register */ -#define REG_PIOC_PDR (*(WoReg*)0x400E1204U) /**< \brief (PIOC) PIO Disable Register */ -#define REG_PIOC_PSR (*(RoReg*)0x400E1208U) /**< \brief (PIOC) PIO Status Register */ -#define REG_PIOC_OER (*(WoReg*)0x400E1210U) /**< \brief (PIOC) Output Enable Register */ -#define REG_PIOC_ODR (*(WoReg*)0x400E1214U) /**< \brief (PIOC) Output Disable Register */ -#define REG_PIOC_OSR (*(RoReg*)0x400E1218U) /**< \brief (PIOC) Output Status Register */ -#define REG_PIOC_IFER (*(WoReg*)0x400E1220U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ -#define REG_PIOC_IFDR (*(WoReg*)0x400E1224U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ -#define REG_PIOC_IFSR (*(RoReg*)0x400E1228U) /**< \brief (PIOC) Glitch Input Filter Status Register */ -#define REG_PIOC_SODR (*(WoReg*)0x400E1230U) /**< \brief (PIOC) Set Output Data Register */ -#define REG_PIOC_CODR (*(WoReg*)0x400E1234U) /**< \brief (PIOC) Clear Output Data Register */ -#define REG_PIOC_ODSR (*(RwReg*)0x400E1238U) /**< \brief (PIOC) Output Data Status Register */ -#define REG_PIOC_PDSR (*(RoReg*)0x400E123CU) /**< \brief (PIOC) Pin Data Status Register */ -#define REG_PIOC_IER (*(WoReg*)0x400E1240U) /**< \brief (PIOC) Interrupt Enable Register */ -#define REG_PIOC_IDR (*(WoReg*)0x400E1244U) /**< \brief (PIOC) Interrupt Disable Register */ -#define REG_PIOC_IMR (*(RoReg*)0x400E1248U) /**< \brief (PIOC) Interrupt Mask Register */ -#define REG_PIOC_ISR (*(RoReg*)0x400E124CU) /**< \brief (PIOC) Interrupt Status Register */ -#define REG_PIOC_MDER (*(WoReg*)0x400E1250U) /**< \brief (PIOC) Multi-driver Enable Register */ -#define REG_PIOC_MDDR (*(WoReg*)0x400E1254U) /**< \brief (PIOC) Multi-driver Disable Register */ -#define REG_PIOC_MDSR (*(RoReg*)0x400E1258U) /**< \brief (PIOC) Multi-driver Status Register */ -#define REG_PIOC_PUDR (*(WoReg*)0x400E1260U) /**< \brief (PIOC) Pull-up Disable Register */ -#define REG_PIOC_PUER (*(WoReg*)0x400E1264U) /**< \brief (PIOC) Pull-up Enable Register */ -#define REG_PIOC_PUSR (*(RoReg*)0x400E1268U) /**< \brief (PIOC) Pad Pull-up Status Register */ -#define REG_PIOC_ABCDSR (*(RwReg*)0x400E1270U) /**< \brief (PIOC) Peripheral Select Register */ -#define REG_PIOC_IFSCDR (*(WoReg*)0x400E1280U) /**< \brief (PIOC) Input Filter Slow Clock Disable Register */ -#define REG_PIOC_IFSCER (*(WoReg*)0x400E1284U) /**< \brief (PIOC) Input Filter Slow Clock Enable Register */ -#define REG_PIOC_IFSCSR (*(RoReg*)0x400E1288U) /**< \brief (PIOC) Input Filter Slow Clock Status Register */ -#define REG_PIOC_SCDR (*(RwReg*)0x400E128CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ -#define REG_PIOC_PPDDR (*(WoReg*)0x400E1290U) /**< \brief (PIOC) Pad Pull-down Disable Register */ -#define REG_PIOC_PPDER (*(WoReg*)0x400E1294U) /**< \brief (PIOC) Pad Pull-down Enable Register */ -#define REG_PIOC_PPDSR (*(RoReg*)0x400E1298U) /**< \brief (PIOC) Pad Pull-down Status Register */ -#define REG_PIOC_OWER (*(WoReg*)0x400E12A0U) /**< \brief (PIOC) Output Write Enable */ -#define REG_PIOC_OWDR (*(WoReg*)0x400E12A4U) /**< \brief (PIOC) Output Write Disable */ -#define REG_PIOC_OWSR (*(RoReg*)0x400E12A8U) /**< \brief (PIOC) Output Write Status Register */ -#define REG_PIOC_AIMER (*(WoReg*)0x400E12B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ -#define REG_PIOC_AIMDR (*(WoReg*)0x400E12B4U) /**< \brief (PIOC) Additional Interrupt Modes Disables Register */ -#define REG_PIOC_AIMMR (*(RoReg*)0x400E12B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ -#define REG_PIOC_ESR (*(WoReg*)0x400E12C0U) /**< \brief (PIOC) Edge Select Register */ -#define REG_PIOC_LSR (*(WoReg*)0x400E12C4U) /**< \brief (PIOC) Level Select Register */ -#define REG_PIOC_ELSR (*(RoReg*)0x400E12C8U) /**< \brief (PIOC) Edge/Level Status Register */ -#define REG_PIOC_FELLSR (*(WoReg*)0x400E12D0U) /**< \brief (PIOC) Falling Edge/Low Level Select Register */ -#define REG_PIOC_REHLSR (*(WoReg*)0x400E12D4U) /**< \brief (PIOC) Rising Edge/ High Level Select Register */ -#define REG_PIOC_FRLHSR (*(RoReg*)0x400E12D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ -#define REG_PIOC_LOCKSR (*(RoReg*)0x400E12E0U) /**< \brief (PIOC) Lock Status */ -#define REG_PIOC_WPMR (*(RwReg*)0x400E12E4U) /**< \brief (PIOC) Write Protect Mode Register */ -#define REG_PIOC_WPSR (*(RoReg*)0x400E12E8U) /**< \brief (PIOC) Write Protect Status Register */ -#define REG_PIOC_SCHMITT (*(RwReg*)0x400E1300U) /**< \brief (PIOC) Schmitt Trigger Register */ -#define REG_PIOC_DELAYR (*(RwReg*)0x400E1310U) /**< \brief (PIOC) IO Delay Register */ -#define REG_PIOC_PCMR (*(RwReg*)0x400E1350U) /**< \brief (PIOC) Parallel Capture Mode Register */ -#define REG_PIOC_PCIER (*(WoReg*)0x400E1354U) /**< \brief (PIOC) Parallel Capture Interrupt Enable Register */ -#define REG_PIOC_PCIDR (*(WoReg*)0x400E1358U) /**< \brief (PIOC) Parallel Capture Interrupt Disable Register */ -#define REG_PIOC_PCIMR (*(RoReg*)0x400E135CU) /**< \brief (PIOC) Parallel Capture Interrupt Mask Register */ -#define REG_PIOC_PCISR (*(RoReg*)0x400E1360U) /**< \brief (PIOC) Parallel Capture Interrupt Status Register */ -#define REG_PIOC_PCRHR (*(RoReg*)0x400E1364U) /**< \brief (PIOC) Parallel Capture Reception Holding Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_PIOC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/piod.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/piod.h deleted file mode 100644 index 2e5288326..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/piod.h +++ /dev/null @@ -1,158 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_PIOD_INSTANCE_ -#define _SAM4E_PIOD_INSTANCE_ - -/* ========== Register definition for PIOD peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_PIOD_PER (0x400E1400U) /**< \brief (PIOD) PIO Enable Register */ -#define REG_PIOD_PDR (0x400E1404U) /**< \brief (PIOD) PIO Disable Register */ -#define REG_PIOD_PSR (0x400E1408U) /**< \brief (PIOD) PIO Status Register */ -#define REG_PIOD_OER (0x400E1410U) /**< \brief (PIOD) Output Enable Register */ -#define REG_PIOD_ODR (0x400E1414U) /**< \brief (PIOD) Output Disable Register */ -#define REG_PIOD_OSR (0x400E1418U) /**< \brief (PIOD) Output Status Register */ -#define REG_PIOD_IFER (0x400E1420U) /**< \brief (PIOD) Glitch Input Filter Enable Register */ -#define REG_PIOD_IFDR (0x400E1424U) /**< \brief (PIOD) Glitch Input Filter Disable Register */ -#define REG_PIOD_IFSR (0x400E1428U) /**< \brief (PIOD) Glitch Input Filter Status Register */ -#define REG_PIOD_SODR (0x400E1430U) /**< \brief (PIOD) Set Output Data Register */ -#define REG_PIOD_CODR (0x400E1434U) /**< \brief (PIOD) Clear Output Data Register */ -#define REG_PIOD_ODSR (0x400E1438U) /**< \brief (PIOD) Output Data Status Register */ -#define REG_PIOD_PDSR (0x400E143CU) /**< \brief (PIOD) Pin Data Status Register */ -#define REG_PIOD_IER (0x400E1440U) /**< \brief (PIOD) Interrupt Enable Register */ -#define REG_PIOD_IDR (0x400E1444U) /**< \brief (PIOD) Interrupt Disable Register */ -#define REG_PIOD_IMR (0x400E1448U) /**< \brief (PIOD) Interrupt Mask Register */ -#define REG_PIOD_ISR (0x400E144CU) /**< \brief (PIOD) Interrupt Status Register */ -#define REG_PIOD_MDER (0x400E1450U) /**< \brief (PIOD) Multi-driver Enable Register */ -#define REG_PIOD_MDDR (0x400E1454U) /**< \brief (PIOD) Multi-driver Disable Register */ -#define REG_PIOD_MDSR (0x400E1458U) /**< \brief (PIOD) Multi-driver Status Register */ -#define REG_PIOD_PUDR (0x400E1460U) /**< \brief (PIOD) Pull-up Disable Register */ -#define REG_PIOD_PUER (0x400E1464U) /**< \brief (PIOD) Pull-up Enable Register */ -#define REG_PIOD_PUSR (0x400E1468U) /**< \brief (PIOD) Pad Pull-up Status Register */ -#define REG_PIOD_ABCDSR (0x400E1470U) /**< \brief (PIOD) Peripheral Select Register */ -#define REG_PIOD_IFSCDR (0x400E1480U) /**< \brief (PIOD) Input Filter Slow Clock Disable Register */ -#define REG_PIOD_IFSCER (0x400E1484U) /**< \brief (PIOD) Input Filter Slow Clock Enable Register */ -#define REG_PIOD_IFSCSR (0x400E1488U) /**< \brief (PIOD) Input Filter Slow Clock Status Register */ -#define REG_PIOD_SCDR (0x400E148CU) /**< \brief (PIOD) Slow Clock Divider Debouncing Register */ -#define REG_PIOD_PPDDR (0x400E1490U) /**< \brief (PIOD) Pad Pull-down Disable Register */ -#define REG_PIOD_PPDER (0x400E1494U) /**< \brief (PIOD) Pad Pull-down Enable Register */ -#define REG_PIOD_PPDSR (0x400E1498U) /**< \brief (PIOD) Pad Pull-down Status Register */ -#define REG_PIOD_OWER (0x400E14A0U) /**< \brief (PIOD) Output Write Enable */ -#define REG_PIOD_OWDR (0x400E14A4U) /**< \brief (PIOD) Output Write Disable */ -#define REG_PIOD_OWSR (0x400E14A8U) /**< \brief (PIOD) Output Write Status Register */ -#define REG_PIOD_AIMER (0x400E14B0U) /**< \brief (PIOD) Additional Interrupt Modes Enable Register */ -#define REG_PIOD_AIMDR (0x400E14B4U) /**< \brief (PIOD) Additional Interrupt Modes Disables Register */ -#define REG_PIOD_AIMMR (0x400E14B8U) /**< \brief (PIOD) Additional Interrupt Modes Mask Register */ -#define REG_PIOD_ESR (0x400E14C0U) /**< \brief (PIOD) Edge Select Register */ -#define REG_PIOD_LSR (0x400E14C4U) /**< \brief (PIOD) Level Select Register */ -#define REG_PIOD_ELSR (0x400E14C8U) /**< \brief (PIOD) Edge/Level Status Register */ -#define REG_PIOD_FELLSR (0x400E14D0U) /**< \brief (PIOD) Falling Edge/Low Level Select Register */ -#define REG_PIOD_REHLSR (0x400E14D4U) /**< \brief (PIOD) Rising Edge/ High Level Select Register */ -#define REG_PIOD_FRLHSR (0x400E14D8U) /**< \brief (PIOD) Fall/Rise - Low/High Status Register */ -#define REG_PIOD_LOCKSR (0x400E14E0U) /**< \brief (PIOD) Lock Status */ -#define REG_PIOD_WPMR (0x400E14E4U) /**< \brief (PIOD) Write Protect Mode Register */ -#define REG_PIOD_WPSR (0x400E14E8U) /**< \brief (PIOD) Write Protect Status Register */ -#define REG_PIOD_SCHMITT (0x400E1500U) /**< \brief (PIOD) Schmitt Trigger Register */ -#define REG_PIOD_DELAYR (0x400E1510U) /**< \brief (PIOD) IO Delay Register */ -#define REG_PIOD_PCMR (0x400E1550U) /**< \brief (PIOD) Parallel Capture Mode Register */ -#define REG_PIOD_PCIER (0x400E1554U) /**< \brief (PIOD) Parallel Capture Interrupt Enable Register */ -#define REG_PIOD_PCIDR (0x400E1558U) /**< \brief (PIOD) Parallel Capture Interrupt Disable Register */ -#define REG_PIOD_PCIMR (0x400E155CU) /**< \brief (PIOD) Parallel Capture Interrupt Mask Register */ -#define REG_PIOD_PCISR (0x400E1560U) /**< \brief (PIOD) Parallel Capture Interrupt Status Register */ -#define REG_PIOD_PCRHR (0x400E1564U) /**< \brief (PIOD) Parallel Capture Reception Holding Register */ -#else -#define REG_PIOD_PER (*(WoReg*)0x400E1400U) /**< \brief (PIOD) PIO Enable Register */ -#define REG_PIOD_PDR (*(WoReg*)0x400E1404U) /**< \brief (PIOD) PIO Disable Register */ -#define REG_PIOD_PSR (*(RoReg*)0x400E1408U) /**< \brief (PIOD) PIO Status Register */ -#define REG_PIOD_OER (*(WoReg*)0x400E1410U) /**< \brief (PIOD) Output Enable Register */ -#define REG_PIOD_ODR (*(WoReg*)0x400E1414U) /**< \brief (PIOD) Output Disable Register */ -#define REG_PIOD_OSR (*(RoReg*)0x400E1418U) /**< \brief (PIOD) Output Status Register */ -#define REG_PIOD_IFER (*(WoReg*)0x400E1420U) /**< \brief (PIOD) Glitch Input Filter Enable Register */ -#define REG_PIOD_IFDR (*(WoReg*)0x400E1424U) /**< \brief (PIOD) Glitch Input Filter Disable Register */ -#define REG_PIOD_IFSR (*(RoReg*)0x400E1428U) /**< \brief (PIOD) Glitch Input Filter Status Register */ -#define REG_PIOD_SODR (*(WoReg*)0x400E1430U) /**< \brief (PIOD) Set Output Data Register */ -#define REG_PIOD_CODR (*(WoReg*)0x400E1434U) /**< \brief (PIOD) Clear Output Data Register */ -#define REG_PIOD_ODSR (*(RwReg*)0x400E1438U) /**< \brief (PIOD) Output Data Status Register */ -#define REG_PIOD_PDSR (*(RoReg*)0x400E143CU) /**< \brief (PIOD) Pin Data Status Register */ -#define REG_PIOD_IER (*(WoReg*)0x400E1440U) /**< \brief (PIOD) Interrupt Enable Register */ -#define REG_PIOD_IDR (*(WoReg*)0x400E1444U) /**< \brief (PIOD) Interrupt Disable Register */ -#define REG_PIOD_IMR (*(RoReg*)0x400E1448U) /**< \brief (PIOD) Interrupt Mask Register */ -#define REG_PIOD_ISR (*(RoReg*)0x400E144CU) /**< \brief (PIOD) Interrupt Status Register */ -#define REG_PIOD_MDER (*(WoReg*)0x400E1450U) /**< \brief (PIOD) Multi-driver Enable Register */ -#define REG_PIOD_MDDR (*(WoReg*)0x400E1454U) /**< \brief (PIOD) Multi-driver Disable Register */ -#define REG_PIOD_MDSR (*(RoReg*)0x400E1458U) /**< \brief (PIOD) Multi-driver Status Register */ -#define REG_PIOD_PUDR (*(WoReg*)0x400E1460U) /**< \brief (PIOD) Pull-up Disable Register */ -#define REG_PIOD_PUER (*(WoReg*)0x400E1464U) /**< \brief (PIOD) Pull-up Enable Register */ -#define REG_PIOD_PUSR (*(RoReg*)0x400E1468U) /**< \brief (PIOD) Pad Pull-up Status Register */ -#define REG_PIOD_ABCDSR (*(RwReg*)0x400E1470U) /**< \brief (PIOD) Peripheral Select Register */ -#define REG_PIOD_IFSCDR (*(WoReg*)0x400E1480U) /**< \brief (PIOD) Input Filter Slow Clock Disable Register */ -#define REG_PIOD_IFSCER (*(WoReg*)0x400E1484U) /**< \brief (PIOD) Input Filter Slow Clock Enable Register */ -#define REG_PIOD_IFSCSR (*(RoReg*)0x400E1488U) /**< \brief (PIOD) Input Filter Slow Clock Status Register */ -#define REG_PIOD_SCDR (*(RwReg*)0x400E148CU) /**< \brief (PIOD) Slow Clock Divider Debouncing Register */ -#define REG_PIOD_PPDDR (*(WoReg*)0x400E1490U) /**< \brief (PIOD) Pad Pull-down Disable Register */ -#define REG_PIOD_PPDER (*(WoReg*)0x400E1494U) /**< \brief (PIOD) Pad Pull-down Enable Register */ -#define REG_PIOD_PPDSR (*(RoReg*)0x400E1498U) /**< \brief (PIOD) Pad Pull-down Status Register */ -#define REG_PIOD_OWER (*(WoReg*)0x400E14A0U) /**< \brief (PIOD) Output Write Enable */ -#define REG_PIOD_OWDR (*(WoReg*)0x400E14A4U) /**< \brief (PIOD) Output Write Disable */ -#define REG_PIOD_OWSR (*(RoReg*)0x400E14A8U) /**< \brief (PIOD) Output Write Status Register */ -#define REG_PIOD_AIMER (*(WoReg*)0x400E14B0U) /**< \brief (PIOD) Additional Interrupt Modes Enable Register */ -#define REG_PIOD_AIMDR (*(WoReg*)0x400E14B4U) /**< \brief (PIOD) Additional Interrupt Modes Disables Register */ -#define REG_PIOD_AIMMR (*(RoReg*)0x400E14B8U) /**< \brief (PIOD) Additional Interrupt Modes Mask Register */ -#define REG_PIOD_ESR (*(WoReg*)0x400E14C0U) /**< \brief (PIOD) Edge Select Register */ -#define REG_PIOD_LSR (*(WoReg*)0x400E14C4U) /**< \brief (PIOD) Level Select Register */ -#define REG_PIOD_ELSR (*(RoReg*)0x400E14C8U) /**< \brief (PIOD) Edge/Level Status Register */ -#define REG_PIOD_FELLSR (*(WoReg*)0x400E14D0U) /**< \brief (PIOD) Falling Edge/Low Level Select Register */ -#define REG_PIOD_REHLSR (*(WoReg*)0x400E14D4U) /**< \brief (PIOD) Rising Edge/ High Level Select Register */ -#define REG_PIOD_FRLHSR (*(RoReg*)0x400E14D8U) /**< \brief (PIOD) Fall/Rise - Low/High Status Register */ -#define REG_PIOD_LOCKSR (*(RoReg*)0x400E14E0U) /**< \brief (PIOD) Lock Status */ -#define REG_PIOD_WPMR (*(RwReg*)0x400E14E4U) /**< \brief (PIOD) Write Protect Mode Register */ -#define REG_PIOD_WPSR (*(RoReg*)0x400E14E8U) /**< \brief (PIOD) Write Protect Status Register */ -#define REG_PIOD_SCHMITT (*(RwReg*)0x400E1500U) /**< \brief (PIOD) Schmitt Trigger Register */ -#define REG_PIOD_DELAYR (*(RwReg*)0x400E1510U) /**< \brief (PIOD) IO Delay Register */ -#define REG_PIOD_PCMR (*(RwReg*)0x400E1550U) /**< \brief (PIOD) Parallel Capture Mode Register */ -#define REG_PIOD_PCIER (*(WoReg*)0x400E1554U) /**< \brief (PIOD) Parallel Capture Interrupt Enable Register */ -#define REG_PIOD_PCIDR (*(WoReg*)0x400E1558U) /**< \brief (PIOD) Parallel Capture Interrupt Disable Register */ -#define REG_PIOD_PCIMR (*(RoReg*)0x400E155CU) /**< \brief (PIOD) Parallel Capture Interrupt Mask Register */ -#define REG_PIOD_PCISR (*(RoReg*)0x400E1560U) /**< \brief (PIOD) Parallel Capture Interrupt Status Register */ -#define REG_PIOD_PCRHR (*(RoReg*)0x400E1564U) /**< \brief (PIOD) Parallel Capture Reception Holding Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_PIOD_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioe.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioe.h deleted file mode 100644 index 549afa1aa..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pioe.h +++ /dev/null @@ -1,158 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_PIOE_INSTANCE_ -#define _SAM4E_PIOE_INSTANCE_ - -/* ========== Register definition for PIOE peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_PIOE_PER (0x400E1600U) /**< \brief (PIOE) PIO Enable Register */ -#define REG_PIOE_PDR (0x400E1604U) /**< \brief (PIOE) PIO Disable Register */ -#define REG_PIOE_PSR (0x400E1608U) /**< \brief (PIOE) PIO Status Register */ -#define REG_PIOE_OER (0x400E1610U) /**< \brief (PIOE) Output Enable Register */ -#define REG_PIOE_ODR (0x400E1614U) /**< \brief (PIOE) Output Disable Register */ -#define REG_PIOE_OSR (0x400E1618U) /**< \brief (PIOE) Output Status Register */ -#define REG_PIOE_IFER (0x400E1620U) /**< \brief (PIOE) Glitch Input Filter Enable Register */ -#define REG_PIOE_IFDR (0x400E1624U) /**< \brief (PIOE) Glitch Input Filter Disable Register */ -#define REG_PIOE_IFSR (0x400E1628U) /**< \brief (PIOE) Glitch Input Filter Status Register */ -#define REG_PIOE_SODR (0x400E1630U) /**< \brief (PIOE) Set Output Data Register */ -#define REG_PIOE_CODR (0x400E1634U) /**< \brief (PIOE) Clear Output Data Register */ -#define REG_PIOE_ODSR (0x400E1638U) /**< \brief (PIOE) Output Data Status Register */ -#define REG_PIOE_PDSR (0x400E163CU) /**< \brief (PIOE) Pin Data Status Register */ -#define REG_PIOE_IER (0x400E1640U) /**< \brief (PIOE) Interrupt Enable Register */ -#define REG_PIOE_IDR (0x400E1644U) /**< \brief (PIOE) Interrupt Disable Register */ -#define REG_PIOE_IMR (0x400E1648U) /**< \brief (PIOE) Interrupt Mask Register */ -#define REG_PIOE_ISR (0x400E164CU) /**< \brief (PIOE) Interrupt Status Register */ -#define REG_PIOE_MDER (0x400E1650U) /**< \brief (PIOE) Multi-driver Enable Register */ -#define REG_PIOE_MDDR (0x400E1654U) /**< \brief (PIOE) Multi-driver Disable Register */ -#define REG_PIOE_MDSR (0x400E1658U) /**< \brief (PIOE) Multi-driver Status Register */ -#define REG_PIOE_PUDR (0x400E1660U) /**< \brief (PIOE) Pull-up Disable Register */ -#define REG_PIOE_PUER (0x400E1664U) /**< \brief (PIOE) Pull-up Enable Register */ -#define REG_PIOE_PUSR (0x400E1668U) /**< \brief (PIOE) Pad Pull-up Status Register */ -#define REG_PIOE_ABCDSR (0x400E1670U) /**< \brief (PIOE) Peripheral Select Register */ -#define REG_PIOE_IFSCDR (0x400E1680U) /**< \brief (PIOE) Input Filter Slow Clock Disable Register */ -#define REG_PIOE_IFSCER (0x400E1684U) /**< \brief (PIOE) Input Filter Slow Clock Enable Register */ -#define REG_PIOE_IFSCSR (0x400E1688U) /**< \brief (PIOE) Input Filter Slow Clock Status Register */ -#define REG_PIOE_SCDR (0x400E168CU) /**< \brief (PIOE) Slow Clock Divider Debouncing Register */ -#define REG_PIOE_PPDDR (0x400E1690U) /**< \brief (PIOE) Pad Pull-down Disable Register */ -#define REG_PIOE_PPDER (0x400E1694U) /**< \brief (PIOE) Pad Pull-down Enable Register */ -#define REG_PIOE_PPDSR (0x400E1698U) /**< \brief (PIOE) Pad Pull-down Status Register */ -#define REG_PIOE_OWER (0x400E16A0U) /**< \brief (PIOE) Output Write Enable */ -#define REG_PIOE_OWDR (0x400E16A4U) /**< \brief (PIOE) Output Write Disable */ -#define REG_PIOE_OWSR (0x400E16A8U) /**< \brief (PIOE) Output Write Status Register */ -#define REG_PIOE_AIMER (0x400E16B0U) /**< \brief (PIOE) Additional Interrupt Modes Enable Register */ -#define REG_PIOE_AIMDR (0x400E16B4U) /**< \brief (PIOE) Additional Interrupt Modes Disables Register */ -#define REG_PIOE_AIMMR (0x400E16B8U) /**< \brief (PIOE) Additional Interrupt Modes Mask Register */ -#define REG_PIOE_ESR (0x400E16C0U) /**< \brief (PIOE) Edge Select Register */ -#define REG_PIOE_LSR (0x400E16C4U) /**< \brief (PIOE) Level Select Register */ -#define REG_PIOE_ELSR (0x400E16C8U) /**< \brief (PIOE) Edge/Level Status Register */ -#define REG_PIOE_FELLSR (0x400E16D0U) /**< \brief (PIOE) Falling Edge/Low Level Select Register */ -#define REG_PIOE_REHLSR (0x400E16D4U) /**< \brief (PIOE) Rising Edge/ High Level Select Register */ -#define REG_PIOE_FRLHSR (0x400E16D8U) /**< \brief (PIOE) Fall/Rise - Low/High Status Register */ -#define REG_PIOE_LOCKSR (0x400E16E0U) /**< \brief (PIOE) Lock Status */ -#define REG_PIOE_WPMR (0x400E16E4U) /**< \brief (PIOE) Write Protect Mode Register */ -#define REG_PIOE_WPSR (0x400E16E8U) /**< \brief (PIOE) Write Protect Status Register */ -#define REG_PIOE_SCHMITT (0x400E1700U) /**< \brief (PIOE) Schmitt Trigger Register */ -#define REG_PIOE_DELAYR (0x400E1710U) /**< \brief (PIOE) IO Delay Register */ -#define REG_PIOE_PCMR (0x400E1750U) /**< \brief (PIOE) Parallel Capture Mode Register */ -#define REG_PIOE_PCIER (0x400E1754U) /**< \brief (PIOE) Parallel Capture Interrupt Enable Register */ -#define REG_PIOE_PCIDR (0x400E1758U) /**< \brief (PIOE) Parallel Capture Interrupt Disable Register */ -#define REG_PIOE_PCIMR (0x400E175CU) /**< \brief (PIOE) Parallel Capture Interrupt Mask Register */ -#define REG_PIOE_PCISR (0x400E1760U) /**< \brief (PIOE) Parallel Capture Interrupt Status Register */ -#define REG_PIOE_PCRHR (0x400E1764U) /**< \brief (PIOE) Parallel Capture Reception Holding Register */ -#else -#define REG_PIOE_PER (*(WoReg*)0x400E1600U) /**< \brief (PIOE) PIO Enable Register */ -#define REG_PIOE_PDR (*(WoReg*)0x400E1604U) /**< \brief (PIOE) PIO Disable Register */ -#define REG_PIOE_PSR (*(RoReg*)0x400E1608U) /**< \brief (PIOE) PIO Status Register */ -#define REG_PIOE_OER (*(WoReg*)0x400E1610U) /**< \brief (PIOE) Output Enable Register */ -#define REG_PIOE_ODR (*(WoReg*)0x400E1614U) /**< \brief (PIOE) Output Disable Register */ -#define REG_PIOE_OSR (*(RoReg*)0x400E1618U) /**< \brief (PIOE) Output Status Register */ -#define REG_PIOE_IFER (*(WoReg*)0x400E1620U) /**< \brief (PIOE) Glitch Input Filter Enable Register */ -#define REG_PIOE_IFDR (*(WoReg*)0x400E1624U) /**< \brief (PIOE) Glitch Input Filter Disable Register */ -#define REG_PIOE_IFSR (*(RoReg*)0x400E1628U) /**< \brief (PIOE) Glitch Input Filter Status Register */ -#define REG_PIOE_SODR (*(WoReg*)0x400E1630U) /**< \brief (PIOE) Set Output Data Register */ -#define REG_PIOE_CODR (*(WoReg*)0x400E1634U) /**< \brief (PIOE) Clear Output Data Register */ -#define REG_PIOE_ODSR (*(RwReg*)0x400E1638U) /**< \brief (PIOE) Output Data Status Register */ -#define REG_PIOE_PDSR (*(RoReg*)0x400E163CU) /**< \brief (PIOE) Pin Data Status Register */ -#define REG_PIOE_IER (*(WoReg*)0x400E1640U) /**< \brief (PIOE) Interrupt Enable Register */ -#define REG_PIOE_IDR (*(WoReg*)0x400E1644U) /**< \brief (PIOE) Interrupt Disable Register */ -#define REG_PIOE_IMR (*(RoReg*)0x400E1648U) /**< \brief (PIOE) Interrupt Mask Register */ -#define REG_PIOE_ISR (*(RoReg*)0x400E164CU) /**< \brief (PIOE) Interrupt Status Register */ -#define REG_PIOE_MDER (*(WoReg*)0x400E1650U) /**< \brief (PIOE) Multi-driver Enable Register */ -#define REG_PIOE_MDDR (*(WoReg*)0x400E1654U) /**< \brief (PIOE) Multi-driver Disable Register */ -#define REG_PIOE_MDSR (*(RoReg*)0x400E1658U) /**< \brief (PIOE) Multi-driver Status Register */ -#define REG_PIOE_PUDR (*(WoReg*)0x400E1660U) /**< \brief (PIOE) Pull-up Disable Register */ -#define REG_PIOE_PUER (*(WoReg*)0x400E1664U) /**< \brief (PIOE) Pull-up Enable Register */ -#define REG_PIOE_PUSR (*(RoReg*)0x400E1668U) /**< \brief (PIOE) Pad Pull-up Status Register */ -#define REG_PIOE_ABCDSR (*(RwReg*)0x400E1670U) /**< \brief (PIOE) Peripheral Select Register */ -#define REG_PIOE_IFSCDR (*(WoReg*)0x400E1680U) /**< \brief (PIOE) Input Filter Slow Clock Disable Register */ -#define REG_PIOE_IFSCER (*(WoReg*)0x400E1684U) /**< \brief (PIOE) Input Filter Slow Clock Enable Register */ -#define REG_PIOE_IFSCSR (*(RoReg*)0x400E1688U) /**< \brief (PIOE) Input Filter Slow Clock Status Register */ -#define REG_PIOE_SCDR (*(RwReg*)0x400E168CU) /**< \brief (PIOE) Slow Clock Divider Debouncing Register */ -#define REG_PIOE_PPDDR (*(WoReg*)0x400E1690U) /**< \brief (PIOE) Pad Pull-down Disable Register */ -#define REG_PIOE_PPDER (*(WoReg*)0x400E1694U) /**< \brief (PIOE) Pad Pull-down Enable Register */ -#define REG_PIOE_PPDSR (*(RoReg*)0x400E1698U) /**< \brief (PIOE) Pad Pull-down Status Register */ -#define REG_PIOE_OWER (*(WoReg*)0x400E16A0U) /**< \brief (PIOE) Output Write Enable */ -#define REG_PIOE_OWDR (*(WoReg*)0x400E16A4U) /**< \brief (PIOE) Output Write Disable */ -#define REG_PIOE_OWSR (*(RoReg*)0x400E16A8U) /**< \brief (PIOE) Output Write Status Register */ -#define REG_PIOE_AIMER (*(WoReg*)0x400E16B0U) /**< \brief (PIOE) Additional Interrupt Modes Enable Register */ -#define REG_PIOE_AIMDR (*(WoReg*)0x400E16B4U) /**< \brief (PIOE) Additional Interrupt Modes Disables Register */ -#define REG_PIOE_AIMMR (*(RoReg*)0x400E16B8U) /**< \brief (PIOE) Additional Interrupt Modes Mask Register */ -#define REG_PIOE_ESR (*(WoReg*)0x400E16C0U) /**< \brief (PIOE) Edge Select Register */ -#define REG_PIOE_LSR (*(WoReg*)0x400E16C4U) /**< \brief (PIOE) Level Select Register */ -#define REG_PIOE_ELSR (*(RoReg*)0x400E16C8U) /**< \brief (PIOE) Edge/Level Status Register */ -#define REG_PIOE_FELLSR (*(WoReg*)0x400E16D0U) /**< \brief (PIOE) Falling Edge/Low Level Select Register */ -#define REG_PIOE_REHLSR (*(WoReg*)0x400E16D4U) /**< \brief (PIOE) Rising Edge/ High Level Select Register */ -#define REG_PIOE_FRLHSR (*(RoReg*)0x400E16D8U) /**< \brief (PIOE) Fall/Rise - Low/High Status Register */ -#define REG_PIOE_LOCKSR (*(RoReg*)0x400E16E0U) /**< \brief (PIOE) Lock Status */ -#define REG_PIOE_WPMR (*(RwReg*)0x400E16E4U) /**< \brief (PIOE) Write Protect Mode Register */ -#define REG_PIOE_WPSR (*(RoReg*)0x400E16E8U) /**< \brief (PIOE) Write Protect Status Register */ -#define REG_PIOE_SCHMITT (*(RwReg*)0x400E1700U) /**< \brief (PIOE) Schmitt Trigger Register */ -#define REG_PIOE_DELAYR (*(RwReg*)0x400E1710U) /**< \brief (PIOE) IO Delay Register */ -#define REG_PIOE_PCMR (*(RwReg*)0x400E1750U) /**< \brief (PIOE) Parallel Capture Mode Register */ -#define REG_PIOE_PCIER (*(WoReg*)0x400E1754U) /**< \brief (PIOE) Parallel Capture Interrupt Enable Register */ -#define REG_PIOE_PCIDR (*(WoReg*)0x400E1758U) /**< \brief (PIOE) Parallel Capture Interrupt Disable Register */ -#define REG_PIOE_PCIMR (*(RoReg*)0x400E175CU) /**< \brief (PIOE) Parallel Capture Interrupt Mask Register */ -#define REG_PIOE_PCISR (*(RoReg*)0x400E1760U) /**< \brief (PIOE) Parallel Capture Interrupt Status Register */ -#define REG_PIOE_PCRHR (*(RoReg*)0x400E1764U) /**< \brief (PIOE) Parallel Capture Reception Holding Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_PIOE_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pmc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pmc.h deleted file mode 100644 index 69a38e88f..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pmc.h +++ /dev/null @@ -1,100 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_PMC_INSTANCE_ -#define _SAM4E_PMC_INSTANCE_ - -/* ========== Register definition for PMC peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_PMC_SCER (0x400E0400U) /**< \brief (PMC) System Clock Enable Register */ -#define REG_PMC_SCDR (0x400E0404U) /**< \brief (PMC) System Clock Disable Register */ -#define REG_PMC_SCSR (0x400E0408U) /**< \brief (PMC) System Clock Status Register */ -#define REG_PMC_PCER0 (0x400E0410U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ -#define REG_PMC_PCDR0 (0x400E0414U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ -#define REG_PMC_PCSR0 (0x400E0418U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ -#define REG_CKGR_MOR (0x400E0420U) /**< \brief (PMC) Main Oscillator Register */ -#define REG_CKGR_MCFR (0x400E0424U) /**< \brief (PMC) Main Clock Frequency Register */ -#define REG_CKGR_PLLAR (0x400E0428U) /**< \brief (PMC) PLLA Register */ -#define REG_PMC_MCKR (0x400E0430U) /**< \brief (PMC) Master Clock Register */ -#define REG_PMC_USB (0x400E0438U) /**< \brief (PMC) USB Clock Register */ -#define REG_PMC_PCK (0x400E0440U) /**< \brief (PMC) Programmable Clock 0 Register */ -#define REG_PMC_IER (0x400E0460U) /**< \brief (PMC) Interrupt Enable Register */ -#define REG_PMC_IDR (0x400E0464U) /**< \brief (PMC) Interrupt Disable Register */ -#define REG_PMC_SR (0x400E0468U) /**< \brief (PMC) Status Register */ -#define REG_PMC_IMR (0x400E046CU) /**< \brief (PMC) Interrupt Mask Register */ -#define REG_PMC_FSMR (0x400E0470U) /**< \brief (PMC) Fast Start-up Mode Register */ -#define REG_PMC_FSPR (0x400E0474U) /**< \brief (PMC) Fast Start-up Polarity Register */ -#define REG_PMC_FOCR (0x400E0478U) /**< \brief (PMC) Fault Output Clear Register */ -#define REG_PMC_WPMR (0x400E04E4U) /**< \brief (PMC) Write Protect Mode Register */ -#define REG_PMC_WPSR (0x400E04E8U) /**< \brief (PMC) Write Protect Status Register */ -#define REG_PMC_PCER1 (0x400E0500U) /**< \brief (PMC) Peripheral Clock Enable Register 1 */ -#define REG_PMC_PCDR1 (0x400E0504U) /**< \brief (PMC) Peripheral Clock Disable Register 1 */ -#define REG_PMC_PCSR1 (0x400E0508U) /**< \brief (PMC) Peripheral Clock Status Register 1 */ -#define REG_PMC_OCR (0x400E0510U) /**< \brief (PMC) Oscillator Calibration Register */ -#else -#define REG_PMC_SCER (*(WoReg*)0x400E0400U) /**< \brief (PMC) System Clock Enable Register */ -#define REG_PMC_SCDR (*(WoReg*)0x400E0404U) /**< \brief (PMC) System Clock Disable Register */ -#define REG_PMC_SCSR (*(RoReg*)0x400E0408U) /**< \brief (PMC) System Clock Status Register */ -#define REG_PMC_PCER0 (*(WoReg*)0x400E0410U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ -#define REG_PMC_PCDR0 (*(WoReg*)0x400E0414U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ -#define REG_PMC_PCSR0 (*(RoReg*)0x400E0418U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ -#define REG_CKGR_MOR (*(RwReg*)0x400E0420U) /**< \brief (PMC) Main Oscillator Register */ -#define REG_CKGR_MCFR (*(RwReg*)0x400E0424U) /**< \brief (PMC) Main Clock Frequency Register */ -#define REG_CKGR_PLLAR (*(RwReg*)0x400E0428U) /**< \brief (PMC) PLLA Register */ -#define REG_PMC_MCKR (*(RwReg*)0x400E0430U) /**< \brief (PMC) Master Clock Register */ -#define REG_PMC_USB (*(RwReg*)0x400E0438U) /**< \brief (PMC) USB Clock Register */ -#define REG_PMC_PCK (*(RwReg*)0x400E0440U) /**< \brief (PMC) Programmable Clock 0 Register */ -#define REG_PMC_IER (*(WoReg*)0x400E0460U) /**< \brief (PMC) Interrupt Enable Register */ -#define REG_PMC_IDR (*(WoReg*)0x400E0464U) /**< \brief (PMC) Interrupt Disable Register */ -#define REG_PMC_SR (*(RoReg*)0x400E0468U) /**< \brief (PMC) Status Register */ -#define REG_PMC_IMR (*(RoReg*)0x400E046CU) /**< \brief (PMC) Interrupt Mask Register */ -#define REG_PMC_FSMR (*(RwReg*)0x400E0470U) /**< \brief (PMC) Fast Start-up Mode Register */ -#define REG_PMC_FSPR (*(RwReg*)0x400E0474U) /**< \brief (PMC) Fast Start-up Polarity Register */ -#define REG_PMC_FOCR (*(WoReg*)0x400E0478U) /**< \brief (PMC) Fault Output Clear Register */ -#define REG_PMC_WPMR (*(RwReg*)0x400E04E4U) /**< \brief (PMC) Write Protect Mode Register */ -#define REG_PMC_WPSR (*(RoReg*)0x400E04E8U) /**< \brief (PMC) Write Protect Status Register */ -#define REG_PMC_PCER1 (*(WoReg*)0x400E0500U) /**< \brief (PMC) Peripheral Clock Enable Register 1 */ -#define REG_PMC_PCDR1 (*(WoReg*)0x400E0504U) /**< \brief (PMC) Peripheral Clock Disable Register 1 */ -#define REG_PMC_PCSR1 (*(RoReg*)0x400E0508U) /**< \brief (PMC) Peripheral Clock Status Register 1 */ -#define REG_PMC_OCR (*(RwReg*)0x400E0510U) /**< \brief (PMC) Oscillator Calibration Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_PMC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pwm.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pwm.h deleted file mode 100644 index 938a52e32..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/pwm.h +++ /dev/null @@ -1,282 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_PWM_INSTANCE_ -#define _SAM4E_PWM_INSTANCE_ - -/* ========== Register definition for PWM peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_PWM_CLK (0x40000000U) /**< \brief (PWM) PWM Clock Register */ -#define REG_PWM_ENA (0x40000004U) /**< \brief (PWM) PWM Enable Register */ -#define REG_PWM_DIS (0x40000008U) /**< \brief (PWM) PWM Disable Register */ -#define REG_PWM_SR (0x4000000CU) /**< \brief (PWM) PWM Status Register */ -#define REG_PWM_IER1 (0x40000010U) /**< \brief (PWM) PWM Interrupt Enable Register 1 */ -#define REG_PWM_IDR1 (0x40000014U) /**< \brief (PWM) PWM Interrupt Disable Register 1 */ -#define REG_PWM_IMR1 (0x40000018U) /**< \brief (PWM) PWM Interrupt Mask Register 1 */ -#define REG_PWM_ISR1 (0x4000001CU) /**< \brief (PWM) PWM Interrupt Status Register 1 */ -#define REG_PWM_SCM (0x40000020U) /**< \brief (PWM) PWM Sync Channels Mode Register */ -#define REG_PWM_SCUC (0x40000028U) /**< \brief (PWM) PWM Sync Channels Update Control Register */ -#define REG_PWM_SCUP (0x4000002CU) /**< \brief (PWM) PWM Sync Channels Update Period Register */ -#define REG_PWM_SCUPUPD (0x40000030U) /**< \brief (PWM) PWM Sync Channels Update Period Update Register */ -#define REG_PWM_IER2 (0x40000034U) /**< \brief (PWM) PWM Interrupt Enable Register 2 */ -#define REG_PWM_IDR2 (0x40000038U) /**< \brief (PWM) PWM Interrupt Disable Register 2 */ -#define REG_PWM_IMR2 (0x4000003CU) /**< \brief (PWM) PWM Interrupt Mask Register 2 */ -#define REG_PWM_ISR2 (0x40000040U) /**< \brief (PWM) PWM Interrupt Status Register 2 */ -#define REG_PWM_OOV (0x40000044U) /**< \brief (PWM) PWM Output Override Value Register */ -#define REG_PWM_OS (0x40000048U) /**< \brief (PWM) PWM Output Selection Register */ -#define REG_PWM_OSS (0x4000004CU) /**< \brief (PWM) PWM Output Selection Set Register */ -#define REG_PWM_OSC (0x40000050U) /**< \brief (PWM) PWM Output Selection Clear Register */ -#define REG_PWM_OSSUPD (0x40000054U) /**< \brief (PWM) PWM Output Selection Set Update Register */ -#define REG_PWM_OSCUPD (0x40000058U) /**< \brief (PWM) PWM Output Selection Clear Update Register */ -#define REG_PWM_FMR (0x4000005CU) /**< \brief (PWM) PWM Fault Mode Register */ -#define REG_PWM_FSR (0x40000060U) /**< \brief (PWM) PWM Fault Status Register */ -#define REG_PWM_FCR (0x40000064U) /**< \brief (PWM) PWM Fault Clear Register */ -#define REG_PWM_FPV1 (0x40000068U) /**< \brief (PWM) PWM Fault Protection Value Register 1 */ -#define REG_PWM_FPE (0x4000006CU) /**< \brief (PWM) PWM Fault Protection Enable Register */ -#define REG_PWM_ELMR (0x4000007CU) /**< \brief (PWM) PWM Event Line 0 Mode Register */ -#define REG_PWM_SSPR (0x400000A0U) /**< \brief (PWM) PWM Spread Spectrum Register */ -#define REG_PWM_SSPUP (0x400000A4U) /**< \brief (PWM) PWM Spread Spectrum Update Register */ -#define REG_PWM_SMMR (0x400000B0U) /**< \brief (PWM) PWM Stepper Motor Mode Register */ -#define REG_PWM_FPV2 (0x400000C0U) /**< \brief (PWM) PWM Fault Protection Value 2 Register */ -#define REG_PWM_WPCR (0x400000E4U) /**< \brief (PWM) PWM Write Protect Control Register */ -#define REG_PWM_WPSR (0x400000E8U) /**< \brief (PWM) PWM Write Protect Status Register */ -#define REG_PWM_TPR (0x40000108U) /**< \brief (PWM) Transmit Pointer Register */ -#define REG_PWM_TCR (0x4000010CU) /**< \brief (PWM) Transmit Counter Register */ -#define REG_PWM_TNPR (0x40000118U) /**< \brief (PWM) Transmit Next Pointer Register */ -#define REG_PWM_TNCR (0x4000011CU) /**< \brief (PWM) Transmit Next Counter Register */ -#define REG_PWM_PTCR (0x40000120U) /**< \brief (PWM) Transfer Control Register */ -#define REG_PWM_PTSR (0x40000124U) /**< \brief (PWM) Transfer Status Register */ -#define REG_PWM_CMPV0 (0x40000130U) /**< \brief (PWM) PWM Comparison 0 Value Register */ -#define REG_PWM_CMPVUPD0 (0x40000134U) /**< \brief (PWM) PWM Comparison 0 Value Update Register */ -#define REG_PWM_CMPM0 (0x40000138U) /**< \brief (PWM) PWM Comparison 0 Mode Register */ -#define REG_PWM_CMPMUPD0 (0x4000013CU) /**< \brief (PWM) PWM Comparison 0 Mode Update Register */ -#define REG_PWM_CMPV1 (0x40000140U) /**< \brief (PWM) PWM Comparison 1 Value Register */ -#define REG_PWM_CMPVUPD1 (0x40000144U) /**< \brief (PWM) PWM Comparison 1 Value Update Register */ -#define REG_PWM_CMPM1 (0x40000148U) /**< \brief (PWM) PWM Comparison 1 Mode Register */ -#define REG_PWM_CMPMUPD1 (0x4000014CU) /**< \brief (PWM) PWM Comparison 1 Mode Update Register */ -#define REG_PWM_CMPV2 (0x40000150U) /**< \brief (PWM) PWM Comparison 2 Value Register */ -#define REG_PWM_CMPVUPD2 (0x40000154U) /**< \brief (PWM) PWM Comparison 2 Value Update Register */ -#define REG_PWM_CMPM2 (0x40000158U) /**< \brief (PWM) PWM Comparison 2 Mode Register */ -#define REG_PWM_CMPMUPD2 (0x4000015CU) /**< \brief (PWM) PWM Comparison 2 Mode Update Register */ -#define REG_PWM_CMPV3 (0x40000160U) /**< \brief (PWM) PWM Comparison 3 Value Register */ -#define REG_PWM_CMPVUPD3 (0x40000164U) /**< \brief (PWM) PWM Comparison 3 Value Update Register */ -#define REG_PWM_CMPM3 (0x40000168U) /**< \brief (PWM) PWM Comparison 3 Mode Register */ -#define REG_PWM_CMPMUPD3 (0x4000016CU) /**< \brief (PWM) PWM Comparison 3 Mode Update Register */ -#define REG_PWM_CMPV4 (0x40000170U) /**< \brief (PWM) PWM Comparison 4 Value Register */ -#define REG_PWM_CMPVUPD4 (0x40000174U) /**< \brief (PWM) PWM Comparison 4 Value Update Register */ -#define REG_PWM_CMPM4 (0x40000178U) /**< \brief (PWM) PWM Comparison 4 Mode Register */ -#define REG_PWM_CMPMUPD4 (0x4000017CU) /**< \brief (PWM) PWM Comparison 4 Mode Update Register */ -#define REG_PWM_CMPV5 (0x40000180U) /**< \brief (PWM) PWM Comparison 5 Value Register */ -#define REG_PWM_CMPVUPD5 (0x40000184U) /**< \brief (PWM) PWM Comparison 5 Value Update Register */ -#define REG_PWM_CMPM5 (0x40000188U) /**< \brief (PWM) PWM Comparison 5 Mode Register */ -#define REG_PWM_CMPMUPD5 (0x4000018CU) /**< \brief (PWM) PWM Comparison 5 Mode Update Register */ -#define REG_PWM_CMPV6 (0x40000190U) /**< \brief (PWM) PWM Comparison 6 Value Register */ -#define REG_PWM_CMPVUPD6 (0x40000194U) /**< \brief (PWM) PWM Comparison 6 Value Update Register */ -#define REG_PWM_CMPM6 (0x40000198U) /**< \brief (PWM) PWM Comparison 6 Mode Register */ -#define REG_PWM_CMPMUPD6 (0x4000019CU) /**< \brief (PWM) PWM Comparison 6 Mode Update Register */ -#define REG_PWM_CMPV7 (0x400001A0U) /**< \brief (PWM) PWM Comparison 7 Value Register */ -#define REG_PWM_CMPVUPD7 (0x400001A4U) /**< \brief (PWM) PWM Comparison 7 Value Update Register */ -#define REG_PWM_CMPM7 (0x400001A8U) /**< \brief (PWM) PWM Comparison 7 Mode Register */ -#define REG_PWM_CMPMUPD7 (0x400001ACU) /**< \brief (PWM) PWM Comparison 7 Mode Update Register */ -#define REG_PWM_CMR0 (0x40000200U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 0) */ -#define REG_PWM_CDTY0 (0x40000204U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 0) */ -#define REG_PWM_CDTYUPD0 (0x40000208U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 0) */ -#define REG_PWM_CPRD0 (0x4000020CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 0) */ -#define REG_PWM_CPRDUPD0 (0x40000210U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 0) */ -#define REG_PWM_CCNT0 (0x40000214U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 0) */ -#define REG_PWM_DT0 (0x40000218U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 0) */ -#define REG_PWM_DTUPD0 (0x4000021CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 0) */ -#define REG_PWM_CMR1 (0x40000220U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 1) */ -#define REG_PWM_CDTY1 (0x40000224U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 1) */ -#define REG_PWM_CDTYUPD1 (0x40000228U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 1) */ -#define REG_PWM_CPRD1 (0x4000022CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 1) */ -#define REG_PWM_CPRDUPD1 (0x40000230U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 1) */ -#define REG_PWM_CCNT1 (0x40000234U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 1) */ -#define REG_PWM_DT1 (0x40000238U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 1) */ -#define REG_PWM_DTUPD1 (0x4000023CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 1) */ -#define REG_PWM_CMR2 (0x40000240U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 2) */ -#define REG_PWM_CDTY2 (0x40000244U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 2) */ -#define REG_PWM_CDTYUPD2 (0x40000248U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 2) */ -#define REG_PWM_CPRD2 (0x4000024CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 2) */ -#define REG_PWM_CPRDUPD2 (0x40000250U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 2) */ -#define REG_PWM_CCNT2 (0x40000254U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 2) */ -#define REG_PWM_DT2 (0x40000258U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 2) */ -#define REG_PWM_DTUPD2 (0x4000025CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 2) */ -#define REG_PWM_CMR3 (0x40000260U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 3) */ -#define REG_PWM_CDTY3 (0x40000264U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 3) */ -#define REG_PWM_CDTYUPD3 (0x40000268U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 3) */ -#define REG_PWM_CPRD3 (0x4000026CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 3) */ -#define REG_PWM_CPRDUPD3 (0x40000270U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 3) */ -#define REG_PWM_CCNT3 (0x40000274U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 3) */ -#define REG_PWM_DT3 (0x40000278U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 3) */ -#define REG_PWM_DTUPD3 (0x4000027CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 3) */ -#define REG_PWM_CMUPD0 (0x40000400U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 0) */ -#define REG_PWM_CAE0 (0x40000404U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 0) */ -#define REG_PWM_CAEUPD0 (0x40000408U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 0) */ -#define REG_PWM_CMUPD1 (0x40000420U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 1) */ -#define REG_PWM_CAE1 (0x40000424U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 1) */ -#define REG_PWM_CAEUPD1 (0x40000428U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 1) */ -#define REG_PWM_CMUPD2 (0x40000440U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 2) */ -#define REG_PWM_CAE2 (0x40000444U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 2) */ -#define REG_PWM_CAEUPD2 (0x40000448U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 2) */ -#define REG_PWM_CMUPD3 (0x40000460U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 3) */ -#define REG_PWM_CAE3 (0x40000464U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 3) */ -#define REG_PWM_CAEUPD3 (0x40000468U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 3) */ -#else -#define REG_PWM_CLK (*(RwReg*)0x40000000U) /**< \brief (PWM) PWM Clock Register */ -#define REG_PWM_ENA (*(WoReg*)0x40000004U) /**< \brief (PWM) PWM Enable Register */ -#define REG_PWM_DIS (*(WoReg*)0x40000008U) /**< \brief (PWM) PWM Disable Register */ -#define REG_PWM_SR (*(RoReg*)0x4000000CU) /**< \brief (PWM) PWM Status Register */ -#define REG_PWM_IER1 (*(WoReg*)0x40000010U) /**< \brief (PWM) PWM Interrupt Enable Register 1 */ -#define REG_PWM_IDR1 (*(WoReg*)0x40000014U) /**< \brief (PWM) PWM Interrupt Disable Register 1 */ -#define REG_PWM_IMR1 (*(RoReg*)0x40000018U) /**< \brief (PWM) PWM Interrupt Mask Register 1 */ -#define REG_PWM_ISR1 (*(RoReg*)0x4000001CU) /**< \brief (PWM) PWM Interrupt Status Register 1 */ -#define REG_PWM_SCM (*(RwReg*)0x40000020U) /**< \brief (PWM) PWM Sync Channels Mode Register */ -#define REG_PWM_SCUC (*(RwReg*)0x40000028U) /**< \brief (PWM) PWM Sync Channels Update Control Register */ -#define REG_PWM_SCUP (*(RwReg*)0x4000002CU) /**< \brief (PWM) PWM Sync Channels Update Period Register */ -#define REG_PWM_SCUPUPD (*(WoReg*)0x40000030U) /**< \brief (PWM) PWM Sync Channels Update Period Update Register */ -#define REG_PWM_IER2 (*(WoReg*)0x40000034U) /**< \brief (PWM) PWM Interrupt Enable Register 2 */ -#define REG_PWM_IDR2 (*(WoReg*)0x40000038U) /**< \brief (PWM) PWM Interrupt Disable Register 2 */ -#define REG_PWM_IMR2 (*(RoReg*)0x4000003CU) /**< \brief (PWM) PWM Interrupt Mask Register 2 */ -#define REG_PWM_ISR2 (*(RoReg*)0x40000040U) /**< \brief (PWM) PWM Interrupt Status Register 2 */ -#define REG_PWM_OOV (*(RwReg*)0x40000044U) /**< \brief (PWM) PWM Output Override Value Register */ -#define REG_PWM_OS (*(RwReg*)0x40000048U) /**< \brief (PWM) PWM Output Selection Register */ -#define REG_PWM_OSS (*(WoReg*)0x4000004CU) /**< \brief (PWM) PWM Output Selection Set Register */ -#define REG_PWM_OSC (*(WoReg*)0x40000050U) /**< \brief (PWM) PWM Output Selection Clear Register */ -#define REG_PWM_OSSUPD (*(WoReg*)0x40000054U) /**< \brief (PWM) PWM Output Selection Set Update Register */ -#define REG_PWM_OSCUPD (*(WoReg*)0x40000058U) /**< \brief (PWM) PWM Output Selection Clear Update Register */ -#define REG_PWM_FMR (*(RwReg*)0x4000005CU) /**< \brief (PWM) PWM Fault Mode Register */ -#define REG_PWM_FSR (*(RoReg*)0x40000060U) /**< \brief (PWM) PWM Fault Status Register */ -#define REG_PWM_FCR (*(WoReg*)0x40000064U) /**< \brief (PWM) PWM Fault Clear Register */ -#define REG_PWM_FPV1 (*(RwReg*)0x40000068U) /**< \brief (PWM) PWM Fault Protection Value Register 1 */ -#define REG_PWM_FPE (*(RwReg*)0x4000006CU) /**< \brief (PWM) PWM Fault Protection Enable Register */ -#define REG_PWM_ELMR (*(RwReg*)0x4000007CU) /**< \brief (PWM) PWM Event Line 0 Mode Register */ -#define REG_PWM_SSPR (*(RwReg*)0x400000A0U) /**< \brief (PWM) PWM Spread Spectrum Register */ -#define REG_PWM_SSPUP (*(WoReg*)0x400000A4U) /**< \brief (PWM) PWM Spread Spectrum Update Register */ -#define REG_PWM_SMMR (*(RwReg*)0x400000B0U) /**< \brief (PWM) PWM Stepper Motor Mode Register */ -#define REG_PWM_FPV2 (*(RwReg*)0x400000C0U) /**< \brief (PWM) PWM Fault Protection Value 2 Register */ -#define REG_PWM_WPCR (*(WoReg*)0x400000E4U) /**< \brief (PWM) PWM Write Protect Control Register */ -#define REG_PWM_WPSR (*(RoReg*)0x400000E8U) /**< \brief (PWM) PWM Write Protect Status Register */ -#define REG_PWM_TPR (*(RwReg*)0x40000108U) /**< \brief (PWM) Transmit Pointer Register */ -#define REG_PWM_TCR (*(RwReg*)0x4000010CU) /**< \brief (PWM) Transmit Counter Register */ -#define REG_PWM_TNPR (*(RwReg*)0x40000118U) /**< \brief (PWM) Transmit Next Pointer Register */ -#define REG_PWM_TNCR (*(RwReg*)0x4000011CU) /**< \brief (PWM) Transmit Next Counter Register */ -#define REG_PWM_PTCR (*(WoReg*)0x40000120U) /**< \brief (PWM) Transfer Control Register */ -#define REG_PWM_PTSR (*(RoReg*)0x40000124U) /**< \brief (PWM) Transfer Status Register */ -#define REG_PWM_CMPV0 (*(RwReg*)0x40000130U) /**< \brief (PWM) PWM Comparison 0 Value Register */ -#define REG_PWM_CMPVUPD0 (*(WoReg*)0x40000134U) /**< \brief (PWM) PWM Comparison 0 Value Update Register */ -#define REG_PWM_CMPM0 (*(RwReg*)0x40000138U) /**< \brief (PWM) PWM Comparison 0 Mode Register */ -#define REG_PWM_CMPMUPD0 (*(WoReg*)0x4000013CU) /**< \brief (PWM) PWM Comparison 0 Mode Update Register */ -#define REG_PWM_CMPV1 (*(RwReg*)0x40000140U) /**< \brief (PWM) PWM Comparison 1 Value Register */ -#define REG_PWM_CMPVUPD1 (*(WoReg*)0x40000144U) /**< \brief (PWM) PWM Comparison 1 Value Update Register */ -#define REG_PWM_CMPM1 (*(RwReg*)0x40000148U) /**< \brief (PWM) PWM Comparison 1 Mode Register */ -#define REG_PWM_CMPMUPD1 (*(WoReg*)0x4000014CU) /**< \brief (PWM) PWM Comparison 1 Mode Update Register */ -#define REG_PWM_CMPV2 (*(RwReg*)0x40000150U) /**< \brief (PWM) PWM Comparison 2 Value Register */ -#define REG_PWM_CMPVUPD2 (*(WoReg*)0x40000154U) /**< \brief (PWM) PWM Comparison 2 Value Update Register */ -#define REG_PWM_CMPM2 (*(RwReg*)0x40000158U) /**< \brief (PWM) PWM Comparison 2 Mode Register */ -#define REG_PWM_CMPMUPD2 (*(WoReg*)0x4000015CU) /**< \brief (PWM) PWM Comparison 2 Mode Update Register */ -#define REG_PWM_CMPV3 (*(RwReg*)0x40000160U) /**< \brief (PWM) PWM Comparison 3 Value Register */ -#define REG_PWM_CMPVUPD3 (*(WoReg*)0x40000164U) /**< \brief (PWM) PWM Comparison 3 Value Update Register */ -#define REG_PWM_CMPM3 (*(RwReg*)0x40000168U) /**< \brief (PWM) PWM Comparison 3 Mode Register */ -#define REG_PWM_CMPMUPD3 (*(WoReg*)0x4000016CU) /**< \brief (PWM) PWM Comparison 3 Mode Update Register */ -#define REG_PWM_CMPV4 (*(RwReg*)0x40000170U) /**< \brief (PWM) PWM Comparison 4 Value Register */ -#define REG_PWM_CMPVUPD4 (*(WoReg*)0x40000174U) /**< \brief (PWM) PWM Comparison 4 Value Update Register */ -#define REG_PWM_CMPM4 (*(RwReg*)0x40000178U) /**< \brief (PWM) PWM Comparison 4 Mode Register */ -#define REG_PWM_CMPMUPD4 (*(WoReg*)0x4000017CU) /**< \brief (PWM) PWM Comparison 4 Mode Update Register */ -#define REG_PWM_CMPV5 (*(RwReg*)0x40000180U) /**< \brief (PWM) PWM Comparison 5 Value Register */ -#define REG_PWM_CMPVUPD5 (*(WoReg*)0x40000184U) /**< \brief (PWM) PWM Comparison 5 Value Update Register */ -#define REG_PWM_CMPM5 (*(RwReg*)0x40000188U) /**< \brief (PWM) PWM Comparison 5 Mode Register */ -#define REG_PWM_CMPMUPD5 (*(WoReg*)0x4000018CU) /**< \brief (PWM) PWM Comparison 5 Mode Update Register */ -#define REG_PWM_CMPV6 (*(RwReg*)0x40000190U) /**< \brief (PWM) PWM Comparison 6 Value Register */ -#define REG_PWM_CMPVUPD6 (*(WoReg*)0x40000194U) /**< \brief (PWM) PWM Comparison 6 Value Update Register */ -#define REG_PWM_CMPM6 (*(RwReg*)0x40000198U) /**< \brief (PWM) PWM Comparison 6 Mode Register */ -#define REG_PWM_CMPMUPD6 (*(WoReg*)0x4000019CU) /**< \brief (PWM) PWM Comparison 6 Mode Update Register */ -#define REG_PWM_CMPV7 (*(RwReg*)0x400001A0U) /**< \brief (PWM) PWM Comparison 7 Value Register */ -#define REG_PWM_CMPVUPD7 (*(WoReg*)0x400001A4U) /**< \brief (PWM) PWM Comparison 7 Value Update Register */ -#define REG_PWM_CMPM7 (*(RwReg*)0x400001A8U) /**< \brief (PWM) PWM Comparison 7 Mode Register */ -#define REG_PWM_CMPMUPD7 (*(WoReg*)0x400001ACU) /**< \brief (PWM) PWM Comparison 7 Mode Update Register */ -#define REG_PWM_CMR0 (*(RwReg*)0x40000200U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 0) */ -#define REG_PWM_CDTY0 (*(RwReg*)0x40000204U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 0) */ -#define REG_PWM_CDTYUPD0 (*(WoReg*)0x40000208U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 0) */ -#define REG_PWM_CPRD0 (*(RwReg*)0x4000020CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 0) */ -#define REG_PWM_CPRDUPD0 (*(WoReg*)0x40000210U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 0) */ -#define REG_PWM_CCNT0 (*(RoReg*)0x40000214U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 0) */ -#define REG_PWM_DT0 (*(RwReg*)0x40000218U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 0) */ -#define REG_PWM_DTUPD0 (*(WoReg*)0x4000021CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 0) */ -#define REG_PWM_CMR1 (*(RwReg*)0x40000220U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 1) */ -#define REG_PWM_CDTY1 (*(RwReg*)0x40000224U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 1) */ -#define REG_PWM_CDTYUPD1 (*(WoReg*)0x40000228U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 1) */ -#define REG_PWM_CPRD1 (*(RwReg*)0x4000022CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 1) */ -#define REG_PWM_CPRDUPD1 (*(WoReg*)0x40000230U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 1) */ -#define REG_PWM_CCNT1 (*(RoReg*)0x40000234U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 1) */ -#define REG_PWM_DT1 (*(RwReg*)0x40000238U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 1) */ -#define REG_PWM_DTUPD1 (*(WoReg*)0x4000023CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 1) */ -#define REG_PWM_CMR2 (*(RwReg*)0x40000240U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 2) */ -#define REG_PWM_CDTY2 (*(RwReg*)0x40000244U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 2) */ -#define REG_PWM_CDTYUPD2 (*(WoReg*)0x40000248U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 2) */ -#define REG_PWM_CPRD2 (*(RwReg*)0x4000024CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 2) */ -#define REG_PWM_CPRDUPD2 (*(WoReg*)0x40000250U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 2) */ -#define REG_PWM_CCNT2 (*(RoReg*)0x40000254U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 2) */ -#define REG_PWM_DT2 (*(RwReg*)0x40000258U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 2) */ -#define REG_PWM_DTUPD2 (*(WoReg*)0x4000025CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 2) */ -#define REG_PWM_CMR3 (*(RwReg*)0x40000260U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 3) */ -#define REG_PWM_CDTY3 (*(RwReg*)0x40000264U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 3) */ -#define REG_PWM_CDTYUPD3 (*(WoReg*)0x40000268U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 3) */ -#define REG_PWM_CPRD3 (*(RwReg*)0x4000026CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 3) */ -#define REG_PWM_CPRDUPD3 (*(WoReg*)0x40000270U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 3) */ -#define REG_PWM_CCNT3 (*(RoReg*)0x40000274U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 3) */ -#define REG_PWM_DT3 (*(RwReg*)0x40000278U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 3) */ -#define REG_PWM_DTUPD3 (*(WoReg*)0x4000027CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 3) */ -#define REG_PWM_CMUPD0 (*(WoReg*)0x40000400U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 0) */ -#define REG_PWM_CAE0 (*(RwReg*)0x40000404U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 0) */ -#define REG_PWM_CAEUPD0 (*(WoReg*)0x40000408U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 0) */ -#define REG_PWM_CMUPD1 (*(WoReg*)0x40000420U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 1) */ -#define REG_PWM_CAE1 (*(RwReg*)0x40000424U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 1) */ -#define REG_PWM_CAEUPD1 (*(WoReg*)0x40000428U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 1) */ -#define REG_PWM_CMUPD2 (*(WoReg*)0x40000440U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 2) */ -#define REG_PWM_CAE2 (*(RwReg*)0x40000444U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 2) */ -#define REG_PWM_CAEUPD2 (*(WoReg*)0x40000448U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 2) */ -#define REG_PWM_CMUPD3 (*(WoReg*)0x40000460U) /**< \brief (PWM) PWM Channel Mode Update Register (ch_num = 3) */ -#define REG_PWM_CAE3 (*(RwReg*)0x40000464U) /**< \brief (PWM) PWM Channel Additional Edge Register (ch_num = 3) */ -#define REG_PWM_CAEUPD3 (*(WoReg*)0x40000468U) /**< \brief (PWM) PWM Channel Additional Edge Update Register (ch_num = 3) */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_PWM_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rstc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rstc.h deleted file mode 100644 index 9321bea4a..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rstc.h +++ /dev/null @@ -1,56 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_RSTC_INSTANCE_ -#define _SAM4E_RSTC_INSTANCE_ - -/* ========== Register definition for RSTC peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_RSTC_CR (0x400E1800U) /**< \brief (RSTC) Control Register */ -#define REG_RSTC_SR (0x400E1804U) /**< \brief (RSTC) Status Register */ -#define REG_RSTC_MR (0x400E1808U) /**< \brief (RSTC) Mode Register */ -#else -#define REG_RSTC_CR (*(WoReg*)0x400E1800U) /**< \brief (RSTC) Control Register */ -#define REG_RSTC_SR (*(RoReg*)0x400E1804U) /**< \brief (RSTC) Status Register */ -#define REG_RSTC_MR (*(RwReg*)0x400E1808U) /**< \brief (RSTC) Mode Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_RSTC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rswdt.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rswdt.h deleted file mode 100644 index b6454d2e4..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rswdt.h +++ /dev/null @@ -1,56 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_RSWDT_INSTANCE_ -#define _SAM4E_RSWDT_INSTANCE_ - -/* ========== Register definition for RSWDT peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_RSWDT_CR (0x400E1900U) /**< \brief (RSWDT) Control Register */ -#define REG_RSWDT_MR (0x400E1904U) /**< \brief (RSWDT) Mode Register */ -#define REG_RSWDT_SR (0x400E1908U) /**< \brief (RSWDT) Status Register */ -#else -#define REG_RSWDT_CR (*(WoReg*)0x400E1900U) /**< \brief (RSWDT) Control Register */ -#define REG_RSWDT_MR (*(RwReg*)0x400E1904U) /**< \brief (RSWDT) Mode Register */ -#define REG_RSWDT_SR (*(RoReg*)0x400E1908U) /**< \brief (RSWDT) Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_RSWDT_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rtc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rtc.h deleted file mode 100644 index fa9743d38..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rtc.h +++ /dev/null @@ -1,74 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_RTC_INSTANCE_ -#define _SAM4E_RTC_INSTANCE_ - -/* ========== Register definition for RTC peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_RTC_CR (0x400E1860U) /**< \brief (RTC) Control Register */ -#define REG_RTC_MR (0x400E1864U) /**< \brief (RTC) Mode Register */ -#define REG_RTC_TIMR (0x400E1868U) /**< \brief (RTC) Time Register */ -#define REG_RTC_CALR (0x400E186CU) /**< \brief (RTC) Calendar Register */ -#define REG_RTC_TIMALR (0x400E1870U) /**< \brief (RTC) Time Alarm Register */ -#define REG_RTC_CALALR (0x400E1874U) /**< \brief (RTC) Calendar Alarm Register */ -#define REG_RTC_SR (0x400E1878U) /**< \brief (RTC) Status Register */ -#define REG_RTC_SCCR (0x400E187CU) /**< \brief (RTC) Status Clear Command Register */ -#define REG_RTC_IER (0x400E1880U) /**< \brief (RTC) Interrupt Enable Register */ -#define REG_RTC_IDR (0x400E1884U) /**< \brief (RTC) Interrupt Disable Register */ -#define REG_RTC_IMR (0x400E1888U) /**< \brief (RTC) Interrupt Mask Register */ -#define REG_RTC_VER (0x400E188CU) /**< \brief (RTC) Valid Entry Register */ -#else -#define REG_RTC_CR (*(RwReg*)0x400E1860U) /**< \brief (RTC) Control Register */ -#define REG_RTC_MR (*(RwReg*)0x400E1864U) /**< \brief (RTC) Mode Register */ -#define REG_RTC_TIMR (*(RwReg*)0x400E1868U) /**< \brief (RTC) Time Register */ -#define REG_RTC_CALR (*(RwReg*)0x400E186CU) /**< \brief (RTC) Calendar Register */ -#define REG_RTC_TIMALR (*(RwReg*)0x400E1870U) /**< \brief (RTC) Time Alarm Register */ -#define REG_RTC_CALALR (*(RwReg*)0x400E1874U) /**< \brief (RTC) Calendar Alarm Register */ -#define REG_RTC_SR (*(RoReg*)0x400E1878U) /**< \brief (RTC) Status Register */ -#define REG_RTC_SCCR (*(WoReg*)0x400E187CU) /**< \brief (RTC) Status Clear Command Register */ -#define REG_RTC_IER (*(WoReg*)0x400E1880U) /**< \brief (RTC) Interrupt Enable Register */ -#define REG_RTC_IDR (*(WoReg*)0x400E1884U) /**< \brief (RTC) Interrupt Disable Register */ -#define REG_RTC_IMR (*(RoReg*)0x400E1888U) /**< \brief (RTC) Interrupt Mask Register */ -#define REG_RTC_VER (*(RoReg*)0x400E188CU) /**< \brief (RTC) Valid Entry Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_RTC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rtt.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rtt.h deleted file mode 100644 index f8ac96ca0..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/rtt.h +++ /dev/null @@ -1,58 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_RTT_INSTANCE_ -#define _SAM4E_RTT_INSTANCE_ - -/* ========== Register definition for RTT peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_RTT_MR (0x400E1830U) /**< \brief (RTT) Mode Register */ -#define REG_RTT_AR (0x400E1834U) /**< \brief (RTT) Alarm Register */ -#define REG_RTT_VR (0x400E1838U) /**< \brief (RTT) Value Register */ -#define REG_RTT_SR (0x400E183CU) /**< \brief (RTT) Status Register */ -#else -#define REG_RTT_MR (*(RwReg*)0x400E1830U) /**< \brief (RTT) Mode Register */ -#define REG_RTT_AR (*(RwReg*)0x400E1834U) /**< \brief (RTT) Alarm Register */ -#define REG_RTT_VR (*(RoReg*)0x400E1838U) /**< \brief (RTT) Value Register */ -#define REG_RTT_SR (*(RoReg*)0x400E183CU) /**< \brief (RTT) Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_RTT_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/smc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/smc.h deleted file mode 100644 index 3906fdd33..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/smc.h +++ /dev/null @@ -1,92 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_SMC_INSTANCE_ -#define _SAM4E_SMC_INSTANCE_ - -/* ========== Register definition for SMC peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_SMC_SETUP0 (0x40060000U) /**< \brief (SMC) SMC Setup Register (CS_number = 0) */ -#define REG_SMC_PULSE0 (0x40060004U) /**< \brief (SMC) SMC Pulse Register (CS_number = 0) */ -#define REG_SMC_CYCLE0 (0x40060008U) /**< \brief (SMC) SMC Cycle Register (CS_number = 0) */ -#define REG_SMC_MODE0 (0x4006000CU) /**< \brief (SMC) SMC Mode Register (CS_number = 0) */ -#define REG_SMC_SETUP1 (0x40060010U) /**< \brief (SMC) SMC Setup Register (CS_number = 1) */ -#define REG_SMC_PULSE1 (0x40060014U) /**< \brief (SMC) SMC Pulse Register (CS_number = 1) */ -#define REG_SMC_CYCLE1 (0x40060018U) /**< \brief (SMC) SMC Cycle Register (CS_number = 1) */ -#define REG_SMC_MODE1 (0x4006001CU) /**< \brief (SMC) SMC Mode Register (CS_number = 1) */ -#define REG_SMC_SETUP2 (0x40060020U) /**< \brief (SMC) SMC Setup Register (CS_number = 2) */ -#define REG_SMC_PULSE2 (0x40060024U) /**< \brief (SMC) SMC Pulse Register (CS_number = 2) */ -#define REG_SMC_CYCLE2 (0x40060028U) /**< \brief (SMC) SMC Cycle Register (CS_number = 2) */ -#define REG_SMC_MODE2 (0x4006002CU) /**< \brief (SMC) SMC Mode Register (CS_number = 2) */ -#define REG_SMC_SETUP3 (0x40060030U) /**< \brief (SMC) SMC Setup Register (CS_number = 3) */ -#define REG_SMC_PULSE3 (0x40060034U) /**< \brief (SMC) SMC Pulse Register (CS_number = 3) */ -#define REG_SMC_CYCLE3 (0x40060038U) /**< \brief (SMC) SMC Cycle Register (CS_number = 3) */ -#define REG_SMC_MODE3 (0x4006003CU) /**< \brief (SMC) SMC Mode Register (CS_number = 3) */ -#define REG_SMC_OCMS (0x40060080U) /**< \brief (SMC) SMC OCMS MODE Register */ -#define REG_SMC_KEY1 (0x40060084U) /**< \brief (SMC) SMC OCMS KEY1 Register */ -#define REG_SMC_KEY2 (0x40060088U) /**< \brief (SMC) SMC OCMS KEY2 Register */ -#define REG_SMC_WPMR (0x400600E4U) /**< \brief (SMC) SMC Write Protect Mode Register */ -#define REG_SMC_WPSR (0x400600E8U) /**< \brief (SMC) SMC Write Protect Status Register */ -#else -#define REG_SMC_SETUP0 (*(RwReg*)0x40060000U) /**< \brief (SMC) SMC Setup Register (CS_number = 0) */ -#define REG_SMC_PULSE0 (*(RwReg*)0x40060004U) /**< \brief (SMC) SMC Pulse Register (CS_number = 0) */ -#define REG_SMC_CYCLE0 (*(RwReg*)0x40060008U) /**< \brief (SMC) SMC Cycle Register (CS_number = 0) */ -#define REG_SMC_MODE0 (*(RwReg*)0x4006000CU) /**< \brief (SMC) SMC Mode Register (CS_number = 0) */ -#define REG_SMC_SETUP1 (*(RwReg*)0x40060010U) /**< \brief (SMC) SMC Setup Register (CS_number = 1) */ -#define REG_SMC_PULSE1 (*(RwReg*)0x40060014U) /**< \brief (SMC) SMC Pulse Register (CS_number = 1) */ -#define REG_SMC_CYCLE1 (*(RwReg*)0x40060018U) /**< \brief (SMC) SMC Cycle Register (CS_number = 1) */ -#define REG_SMC_MODE1 (*(RwReg*)0x4006001CU) /**< \brief (SMC) SMC Mode Register (CS_number = 1) */ -#define REG_SMC_SETUP2 (*(RwReg*)0x40060020U) /**< \brief (SMC) SMC Setup Register (CS_number = 2) */ -#define REG_SMC_PULSE2 (*(RwReg*)0x40060024U) /**< \brief (SMC) SMC Pulse Register (CS_number = 2) */ -#define REG_SMC_CYCLE2 (*(RwReg*)0x40060028U) /**< \brief (SMC) SMC Cycle Register (CS_number = 2) */ -#define REG_SMC_MODE2 (*(RwReg*)0x4006002CU) /**< \brief (SMC) SMC Mode Register (CS_number = 2) */ -#define REG_SMC_SETUP3 (*(RwReg*)0x40060030U) /**< \brief (SMC) SMC Setup Register (CS_number = 3) */ -#define REG_SMC_PULSE3 (*(RwReg*)0x40060034U) /**< \brief (SMC) SMC Pulse Register (CS_number = 3) */ -#define REG_SMC_CYCLE3 (*(RwReg*)0x40060038U) /**< \brief (SMC) SMC Cycle Register (CS_number = 3) */ -#define REG_SMC_MODE3 (*(RwReg*)0x4006003CU) /**< \brief (SMC) SMC Mode Register (CS_number = 3) */ -#define REG_SMC_OCMS (*(RwReg*)0x40060080U) /**< \brief (SMC) SMC OCMS MODE Register */ -#define REG_SMC_KEY1 (*(WoReg*)0x40060084U) /**< \brief (SMC) SMC OCMS KEY1 Register */ -#define REG_SMC_KEY2 (*(WoReg*)0x40060088U) /**< \brief (SMC) SMC OCMS KEY2 Register */ -#define REG_SMC_WPMR (*(RwReg*)0x400600E4U) /**< \brief (SMC) SMC Write Protect Mode Register */ -#define REG_SMC_WPSR (*(RoReg*)0x400600E8U) /**< \brief (SMC) SMC Write Protect Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_SMC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/spi.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/spi.h deleted file mode 100644 index 4deb7aea2..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/spi.h +++ /dev/null @@ -1,92 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_SPI_INSTANCE_ -#define _SAM4E_SPI_INSTANCE_ - -/* ========== Register definition for SPI peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_SPI_CR (0x40088000U) /**< \brief (SPI) Control Register */ -#define REG_SPI_MR (0x40088004U) /**< \brief (SPI) Mode Register */ -#define REG_SPI_RDR (0x40088008U) /**< \brief (SPI) Receive Data Register */ -#define REG_SPI_TDR (0x4008800CU) /**< \brief (SPI) Transmit Data Register */ -#define REG_SPI_SR (0x40088010U) /**< \brief (SPI) Status Register */ -#define REG_SPI_IER (0x40088014U) /**< \brief (SPI) Interrupt Enable Register */ -#define REG_SPI_IDR (0x40088018U) /**< \brief (SPI) Interrupt Disable Register */ -#define REG_SPI_IMR (0x4008801CU) /**< \brief (SPI) Interrupt Mask Register */ -#define REG_SPI_CSR (0x40088030U) /**< \brief (SPI) Chip Select Register */ -#define REG_SPI_WPMR (0x400880E4U) /**< \brief (SPI) Write Protection Control Register */ -#define REG_SPI_WPSR (0x400880E8U) /**< \brief (SPI) Write Protection Status Register */ -#define REG_SPI_RPR (0x40088100U) /**< \brief (SPI) Receive Pointer Register */ -#define REG_SPI_RCR (0x40088104U) /**< \brief (SPI) Receive Counter Register */ -#define REG_SPI_TPR (0x40088108U) /**< \brief (SPI) Transmit Pointer Register */ -#define REG_SPI_TCR (0x4008810CU) /**< \brief (SPI) Transmit Counter Register */ -#define REG_SPI_RNPR (0x40088110U) /**< \brief (SPI) Receive Next Pointer Register */ -#define REG_SPI_RNCR (0x40088114U) /**< \brief (SPI) Receive Next Counter Register */ -#define REG_SPI_TNPR (0x40088118U) /**< \brief (SPI) Transmit Next Pointer Register */ -#define REG_SPI_TNCR (0x4008811CU) /**< \brief (SPI) Transmit Next Counter Register */ -#define REG_SPI_PTCR (0x40088120U) /**< \brief (SPI) Transfer Control Register */ -#define REG_SPI_PTSR (0x40088124U) /**< \brief (SPI) Transfer Status Register */ -#else -#define REG_SPI_CR (*(WoReg*)0x40088000U) /**< \brief (SPI) Control Register */ -#define REG_SPI_MR (*(RwReg*)0x40088004U) /**< \brief (SPI) Mode Register */ -#define REG_SPI_RDR (*(RoReg*)0x40088008U) /**< \brief (SPI) Receive Data Register */ -#define REG_SPI_TDR (*(WoReg*)0x4008800CU) /**< \brief (SPI) Transmit Data Register */ -#define REG_SPI_SR (*(RoReg*)0x40088010U) /**< \brief (SPI) Status Register */ -#define REG_SPI_IER (*(WoReg*)0x40088014U) /**< \brief (SPI) Interrupt Enable Register */ -#define REG_SPI_IDR (*(WoReg*)0x40088018U) /**< \brief (SPI) Interrupt Disable Register */ -#define REG_SPI_IMR (*(RoReg*)0x4008801CU) /**< \brief (SPI) Interrupt Mask Register */ -#define REG_SPI_CSR (*(RwReg*)0x40088030U) /**< \brief (SPI) Chip Select Register */ -#define REG_SPI_WPMR (*(RwReg*)0x400880E4U) /**< \brief (SPI) Write Protection Control Register */ -#define REG_SPI_WPSR (*(RoReg*)0x400880E8U) /**< \brief (SPI) Write Protection Status Register */ -#define REG_SPI_RPR (*(RwReg*)0x40088100U) /**< \brief (SPI) Receive Pointer Register */ -#define REG_SPI_RCR (*(RwReg*)0x40088104U) /**< \brief (SPI) Receive Counter Register */ -#define REG_SPI_TPR (*(RwReg*)0x40088108U) /**< \brief (SPI) Transmit Pointer Register */ -#define REG_SPI_TCR (*(RwReg*)0x4008810CU) /**< \brief (SPI) Transmit Counter Register */ -#define REG_SPI_RNPR (*(RwReg*)0x40088110U) /**< \brief (SPI) Receive Next Pointer Register */ -#define REG_SPI_RNCR (*(RwReg*)0x40088114U) /**< \brief (SPI) Receive Next Counter Register */ -#define REG_SPI_TNPR (*(RwReg*)0x40088118U) /**< \brief (SPI) Transmit Next Pointer Register */ -#define REG_SPI_TNCR (*(RwReg*)0x4008811CU) /**< \brief (SPI) Transmit Next Counter Register */ -#define REG_SPI_PTCR (*(WoReg*)0x40088120U) /**< \brief (SPI) Transfer Control Register */ -#define REG_SPI_PTSR (*(RoReg*)0x40088124U) /**< \brief (SPI) Transfer Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_SPI_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/supc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/supc.h deleted file mode 100644 index f38b847b9..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/supc.h +++ /dev/null @@ -1,62 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_SUPC_INSTANCE_ -#define _SAM4E_SUPC_INSTANCE_ - -/* ========== Register definition for SUPC peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_SUPC_CR (0x400E1810U) /**< \brief (SUPC) Supply Controller Control Register */ -#define REG_SUPC_SMMR (0x400E1814U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ -#define REG_SUPC_MR (0x400E1818U) /**< \brief (SUPC) Supply Controller Mode Register */ -#define REG_SUPC_WUMR (0x400E181CU) /**< \brief (SUPC) Supply Controller Wake-up Mode Register */ -#define REG_SUPC_WUIR (0x400E1820U) /**< \brief (SUPC) Supply Controller Wake-up Inputs Register */ -#define REG_SUPC_SR (0x400E1824U) /**< \brief (SUPC) Supply Controller Status Register */ -#else -#define REG_SUPC_CR (*(WoReg*)0x400E1810U) /**< \brief (SUPC) Supply Controller Control Register */ -#define REG_SUPC_SMMR (*(RwReg*)0x400E1814U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ -#define REG_SUPC_MR (*(RwReg*)0x400E1818U) /**< \brief (SUPC) Supply Controller Mode Register */ -#define REG_SUPC_WUMR (*(RwReg*)0x400E181CU) /**< \brief (SUPC) Supply Controller Wake-up Mode Register */ -#define REG_SUPC_WUIR (*(RwReg*)0x400E1820U) /**< \brief (SUPC) Supply Controller Wake-up Inputs Register */ -#define REG_SUPC_SR (*(RoReg*)0x400E1824U) /**< \brief (SUPC) Supply Controller Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_SUPC_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc0.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc0.h deleted file mode 100644 index 4da15b553..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc0.h +++ /dev/null @@ -1,180 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_TC0_INSTANCE_ -#define _SAM4E_TC0_INSTANCE_ - -/* ========== Register definition for TC0 peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_TC0_CCR0 (0x40090000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ -#define REG_TC0_CMR0 (0x40090004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ -#define REG_TC0_SMMR0 (0x40090008U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 0) */ -#define REG_TC0_RAB0 (0x4009000CU) /**< \brief (TC0) Register AB (channel = 0) */ -#define REG_TC0_CV0 (0x40090010U) /**< \brief (TC0) Counter Value (channel = 0) */ -#define REG_TC0_RA0 (0x40090014U) /**< \brief (TC0) Register A (channel = 0) */ -#define REG_TC0_RB0 (0x40090018U) /**< \brief (TC0) Register B (channel = 0) */ -#define REG_TC0_RC0 (0x4009001CU) /**< \brief (TC0) Register C (channel = 0) */ -#define REG_TC0_SR0 (0x40090020U) /**< \brief (TC0) Status Register (channel = 0) */ -#define REG_TC0_IER0 (0x40090024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ -#define REG_TC0_IDR0 (0x40090028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ -#define REG_TC0_IMR0 (0x4009002CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ -#define REG_TC0_EMR0 (0x40090030U) /**< \brief (TC0) Extended Mode Register (channel = 0) */ -#define REG_TC0_CCR1 (0x40090040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ -#define REG_TC0_CMR1 (0x40090044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ -#define REG_TC0_SMMR1 (0x40090048U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 1) */ -#define REG_TC0_RAB1 (0x4009004CU) /**< \brief (TC0) Register AB (channel = 1) */ -#define REG_TC0_CV1 (0x40090050U) /**< \brief (TC0) Counter Value (channel = 1) */ -#define REG_TC0_RA1 (0x40090054U) /**< \brief (TC0) Register A (channel = 1) */ -#define REG_TC0_RB1 (0x40090058U) /**< \brief (TC0) Register B (channel = 1) */ -#define REG_TC0_RC1 (0x4009005CU) /**< \brief (TC0) Register C (channel = 1) */ -#define REG_TC0_SR1 (0x40090060U) /**< \brief (TC0) Status Register (channel = 1) */ -#define REG_TC0_IER1 (0x40090064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ -#define REG_TC0_IDR1 (0x40090068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ -#define REG_TC0_IMR1 (0x4009006CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ -#define REG_TC0_EMR1 (0x40090070U) /**< \brief (TC0) Extended Mode Register (channel = 1) */ -#define REG_TC0_CCR2 (0x40090080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ -#define REG_TC0_CMR2 (0x40090084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ -#define REG_TC0_SMMR2 (0x40090088U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 2) */ -#define REG_TC0_RAB2 (0x4009008CU) /**< \brief (TC0) Register AB (channel = 2) */ -#define REG_TC0_CV2 (0x40090090U) /**< \brief (TC0) Counter Value (channel = 2) */ -#define REG_TC0_RA2 (0x40090094U) /**< \brief (TC0) Register A (channel = 2) */ -#define REG_TC0_RB2 (0x40090098U) /**< \brief (TC0) Register B (channel = 2) */ -#define REG_TC0_RC2 (0x4009009CU) /**< \brief (TC0) Register C (channel = 2) */ -#define REG_TC0_SR2 (0x400900A0U) /**< \brief (TC0) Status Register (channel = 2) */ -#define REG_TC0_IER2 (0x400900A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ -#define REG_TC0_IDR2 (0x400900A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ -#define REG_TC0_IMR2 (0x400900ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ -#define REG_TC0_EMR2 (0x400900B0U) /**< \brief (TC0) Extended Mode Register (channel = 2) */ -#define REG_TC0_BCR (0x400900C0U) /**< \brief (TC0) Block Control Register */ -#define REG_TC0_BMR (0x400900C4U) /**< \brief (TC0) Block Mode Register */ -#define REG_TC0_QIER (0x400900C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ -#define REG_TC0_QIDR (0x400900CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ -#define REG_TC0_QIMR (0x400900D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ -#define REG_TC0_QISR (0x400900D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ -#define REG_TC0_FMR (0x400900D8U) /**< \brief (TC0) Fault Mode Register */ -#define REG_TC0_WPMR (0x400900E4U) /**< \brief (TC0) Write Protect Mode Register */ -#define REG_TC0_RPR0 (0x40090100U) /**< \brief (TC0) Receive Pointer Register (pdc = 0) */ -#define REG_TC0_RCR0 (0x40090104U) /**< \brief (TC0) Receive Counter Register (pdc = 0) */ -#define REG_TC0_RNPR0 (0x40090110U) /**< \brief (TC0) Receive Next Pointer Register (pdc = 0) */ -#define REG_TC0_RNCR0 (0x40090114U) /**< \brief (TC0) Receive Next Counter Register (pdc = 0) */ -#define REG_TC0_PTCR0 (0x40090120U) /**< \brief (TC0) Transfer Control Register (pdc = 0) */ -#define REG_TC0_PTSR0 (0x40090124U) /**< \brief (TC0) Transfer Status Register (pdc = 0) */ -#define REG_TC0_RPR1 (0x40090140U) /**< \brief (TC0) Receive Pointer Register (pdc = 1) */ -#define REG_TC0_RCR1 (0x40090144U) /**< \brief (TC0) Receive Counter Register (pdc = 1) */ -#define REG_TC0_RNPR1 (0x40090150U) /**< \brief (TC0) Receive Next Pointer Register (pdc = 1) */ -#define REG_TC0_RNCR1 (0x40090154U) /**< \brief (TC0) Receive Next Counter Register (pdc = 1) */ -#define REG_TC0_PTCR1 (0x40090160U) /**< \brief (TC0) Transfer Control Register (pdc = 1) */ -#define REG_TC0_PTSR1 (0x40090164U) /**< \brief (TC0) Transfer Status Register (pdc = 1) */ -#define REG_TC0_RPR2 (0x40090180U) /**< \brief (TC0) Receive Pointer Register (pdc = 2) */ -#define REG_TC0_RCR2 (0x40090184U) /**< \brief (TC0) Receive Counter Register (pdc = 2) */ -#define REG_TC0_RNPR2 (0x40090190U) /**< \brief (TC0) Receive Next Pointer Register (pdc = 2) */ -#define REG_TC0_RNCR2 (0x40090194U) /**< \brief (TC0) Receive Next Counter Register (pdc = 2) */ -#define REG_TC0_PTCR2 (0x400901A0U) /**< \brief (TC0) Transfer Control Register (pdc = 2) */ -#define REG_TC0_PTSR2 (0x400901A4U) /**< \brief (TC0) Transfer Status Register (pdc = 2) */ -#else -#define REG_TC0_CCR0 (*(WoReg*)0x40090000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ -#define REG_TC0_CMR0 (*(RwReg*)0x40090004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ -#define REG_TC0_SMMR0 (*(RwReg*)0x40090008U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 0) */ -#define REG_TC0_RAB0 (*(RoReg*)0x4009000CU) /**< \brief (TC0) Register AB (channel = 0) */ -#define REG_TC0_CV0 (*(RoReg*)0x40090010U) /**< \brief (TC0) Counter Value (channel = 0) */ -#define REG_TC0_RA0 (*(RwReg*)0x40090014U) /**< \brief (TC0) Register A (channel = 0) */ -#define REG_TC0_RB0 (*(RwReg*)0x40090018U) /**< \brief (TC0) Register B (channel = 0) */ -#define REG_TC0_RC0 (*(RwReg*)0x4009001CU) /**< \brief (TC0) Register C (channel = 0) */ -#define REG_TC0_SR0 (*(RoReg*)0x40090020U) /**< \brief (TC0) Status Register (channel = 0) */ -#define REG_TC0_IER0 (*(WoReg*)0x40090024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ -#define REG_TC0_IDR0 (*(WoReg*)0x40090028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ -#define REG_TC0_IMR0 (*(RoReg*)0x4009002CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ -#define REG_TC0_EMR0 (*(RwReg*)0x40090030U) /**< \brief (TC0) Extended Mode Register (channel = 0) */ -#define REG_TC0_CCR1 (*(WoReg*)0x40090040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ -#define REG_TC0_CMR1 (*(RwReg*)0x40090044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ -#define REG_TC0_SMMR1 (*(RwReg*)0x40090048U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 1) */ -#define REG_TC0_RAB1 (*(RoReg*)0x4009004CU) /**< \brief (TC0) Register AB (channel = 1) */ -#define REG_TC0_CV1 (*(RoReg*)0x40090050U) /**< \brief (TC0) Counter Value (channel = 1) */ -#define REG_TC0_RA1 (*(RwReg*)0x40090054U) /**< \brief (TC0) Register A (channel = 1) */ -#define REG_TC0_RB1 (*(RwReg*)0x40090058U) /**< \brief (TC0) Register B (channel = 1) */ -#define REG_TC0_RC1 (*(RwReg*)0x4009005CU) /**< \brief (TC0) Register C (channel = 1) */ -#define REG_TC0_SR1 (*(RoReg*)0x40090060U) /**< \brief (TC0) Status Register (channel = 1) */ -#define REG_TC0_IER1 (*(WoReg*)0x40090064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ -#define REG_TC0_IDR1 (*(WoReg*)0x40090068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ -#define REG_TC0_IMR1 (*(RoReg*)0x4009006CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ -#define REG_TC0_EMR1 (*(RwReg*)0x40090070U) /**< \brief (TC0) Extended Mode Register (channel = 1) */ -#define REG_TC0_CCR2 (*(WoReg*)0x40090080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ -#define REG_TC0_CMR2 (*(RwReg*)0x40090084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ -#define REG_TC0_SMMR2 (*(RwReg*)0x40090088U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 2) */ -#define REG_TC0_RAB2 (*(RoReg*)0x4009008CU) /**< \brief (TC0) Register AB (channel = 2) */ -#define REG_TC0_CV2 (*(RoReg*)0x40090090U) /**< \brief (TC0) Counter Value (channel = 2) */ -#define REG_TC0_RA2 (*(RwReg*)0x40090094U) /**< \brief (TC0) Register A (channel = 2) */ -#define REG_TC0_RB2 (*(RwReg*)0x40090098U) /**< \brief (TC0) Register B (channel = 2) */ -#define REG_TC0_RC2 (*(RwReg*)0x4009009CU) /**< \brief (TC0) Register C (channel = 2) */ -#define REG_TC0_SR2 (*(RoReg*)0x400900A0U) /**< \brief (TC0) Status Register (channel = 2) */ -#define REG_TC0_IER2 (*(WoReg*)0x400900A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ -#define REG_TC0_IDR2 (*(WoReg*)0x400900A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ -#define REG_TC0_IMR2 (*(RoReg*)0x400900ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ -#define REG_TC0_EMR2 (*(RwReg*)0x400900B0U) /**< \brief (TC0) Extended Mode Register (channel = 2) */ -#define REG_TC0_BCR (*(WoReg*)0x400900C0U) /**< \brief (TC0) Block Control Register */ -#define REG_TC0_BMR (*(RwReg*)0x400900C4U) /**< \brief (TC0) Block Mode Register */ -#define REG_TC0_QIER (*(WoReg*)0x400900C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ -#define REG_TC0_QIDR (*(WoReg*)0x400900CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ -#define REG_TC0_QIMR (*(RoReg*)0x400900D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ -#define REG_TC0_QISR (*(RoReg*)0x400900D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ -#define REG_TC0_FMR (*(RwReg*)0x400900D8U) /**< \brief (TC0) Fault Mode Register */ -#define REG_TC0_WPMR (*(RwReg*)0x400900E4U) /**< \brief (TC0) Write Protect Mode Register */ -#define REG_TC0_RPR0 (*(RwReg*)0x40090100U) /**< \brief (TC0) Receive Pointer Register (pdc = 0) */ -#define REG_TC0_RCR0 (*(RwReg*)0x40090104U) /**< \brief (TC0) Receive Counter Register (pdc = 0) */ -#define REG_TC0_RNPR0 (*(RwReg*)0x40090110U) /**< \brief (TC0) Receive Next Pointer Register (pdc = 0) */ -#define REG_TC0_RNCR0 (*(RwReg*)0x40090114U) /**< \brief (TC0) Receive Next Counter Register (pdc = 0) */ -#define REG_TC0_PTCR0 (*(WoReg*)0x40090120U) /**< \brief (TC0) Transfer Control Register (pdc = 0) */ -#define REG_TC0_PTSR0 (*(RoReg*)0x40090124U) /**< \brief (TC0) Transfer Status Register (pdc = 0) */ -#define REG_TC0_RPR1 (*(RwReg*)0x40090140U) /**< \brief (TC0) Receive Pointer Register (pdc = 1) */ -#define REG_TC0_RCR1 (*(RwReg*)0x40090144U) /**< \brief (TC0) Receive Counter Register (pdc = 1) */ -#define REG_TC0_RNPR1 (*(RwReg*)0x40090150U) /**< \brief (TC0) Receive Next Pointer Register (pdc = 1) */ -#define REG_TC0_RNCR1 (*(RwReg*)0x40090154U) /**< \brief (TC0) Receive Next Counter Register (pdc = 1) */ -#define REG_TC0_PTCR1 (*(WoReg*)0x40090160U) /**< \brief (TC0) Transfer Control Register (pdc = 1) */ -#define REG_TC0_PTSR1 (*(RoReg*)0x40090164U) /**< \brief (TC0) Transfer Status Register (pdc = 1) */ -#define REG_TC0_RPR2 (*(RwReg*)0x40090180U) /**< \brief (TC0) Receive Pointer Register (pdc = 2) */ -#define REG_TC0_RCR2 (*(RwReg*)0x40090184U) /**< \brief (TC0) Receive Counter Register (pdc = 2) */ -#define REG_TC0_RNPR2 (*(RwReg*)0x40090190U) /**< \brief (TC0) Receive Next Pointer Register (pdc = 2) */ -#define REG_TC0_RNCR2 (*(RwReg*)0x40090194U) /**< \brief (TC0) Receive Next Counter Register (pdc = 2) */ -#define REG_TC0_PTCR2 (*(WoReg*)0x400901A0U) /**< \brief (TC0) Transfer Control Register (pdc = 2) */ -#define REG_TC0_PTSR2 (*(RoReg*)0x400901A4U) /**< \brief (TC0) Transfer Status Register (pdc = 2) */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_TC0_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc1.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc1.h deleted file mode 100644 index 2c3c5534a..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc1.h +++ /dev/null @@ -1,180 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_TC1_INSTANCE_ -#define _SAM4E_TC1_INSTANCE_ - -/* ========== Register definition for TC1 peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_TC1_CCR0 (0x40094000U) /**< \brief (TC1) Channel Control Register (channel = 0) */ -#define REG_TC1_CMR0 (0x40094004U) /**< \brief (TC1) Channel Mode Register (channel = 0) */ -#define REG_TC1_SMMR0 (0x40094008U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 0) */ -#define REG_TC1_RAB0 (0x4009400CU) /**< \brief (TC1) Register AB (channel = 0) */ -#define REG_TC1_CV0 (0x40094010U) /**< \brief (TC1) Counter Value (channel = 0) */ -#define REG_TC1_RA0 (0x40094014U) /**< \brief (TC1) Register A (channel = 0) */ -#define REG_TC1_RB0 (0x40094018U) /**< \brief (TC1) Register B (channel = 0) */ -#define REG_TC1_RC0 (0x4009401CU) /**< \brief (TC1) Register C (channel = 0) */ -#define REG_TC1_SR0 (0x40094020U) /**< \brief (TC1) Status Register (channel = 0) */ -#define REG_TC1_IER0 (0x40094024U) /**< \brief (TC1) Interrupt Enable Register (channel = 0) */ -#define REG_TC1_IDR0 (0x40094028U) /**< \brief (TC1) Interrupt Disable Register (channel = 0) */ -#define REG_TC1_IMR0 (0x4009402CU) /**< \brief (TC1) Interrupt Mask Register (channel = 0) */ -#define REG_TC1_EMR0 (0x40094030U) /**< \brief (TC1) Extended Mode Register (channel = 0) */ -#define REG_TC1_CCR1 (0x40094040U) /**< \brief (TC1) Channel Control Register (channel = 1) */ -#define REG_TC1_CMR1 (0x40094044U) /**< \brief (TC1) Channel Mode Register (channel = 1) */ -#define REG_TC1_SMMR1 (0x40094048U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 1) */ -#define REG_TC1_RAB1 (0x4009404CU) /**< \brief (TC1) Register AB (channel = 1) */ -#define REG_TC1_CV1 (0x40094050U) /**< \brief (TC1) Counter Value (channel = 1) */ -#define REG_TC1_RA1 (0x40094054U) /**< \brief (TC1) Register A (channel = 1) */ -#define REG_TC1_RB1 (0x40094058U) /**< \brief (TC1) Register B (channel = 1) */ -#define REG_TC1_RC1 (0x4009405CU) /**< \brief (TC1) Register C (channel = 1) */ -#define REG_TC1_SR1 (0x40094060U) /**< \brief (TC1) Status Register (channel = 1) */ -#define REG_TC1_IER1 (0x40094064U) /**< \brief (TC1) Interrupt Enable Register (channel = 1) */ -#define REG_TC1_IDR1 (0x40094068U) /**< \brief (TC1) Interrupt Disable Register (channel = 1) */ -#define REG_TC1_IMR1 (0x4009406CU) /**< \brief (TC1) Interrupt Mask Register (channel = 1) */ -#define REG_TC1_EMR1 (0x40094070U) /**< \brief (TC1) Extended Mode Register (channel = 1) */ -#define REG_TC1_CCR2 (0x40094080U) /**< \brief (TC1) Channel Control Register (channel = 2) */ -#define REG_TC1_CMR2 (0x40094084U) /**< \brief (TC1) Channel Mode Register (channel = 2) */ -#define REG_TC1_SMMR2 (0x40094088U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 2) */ -#define REG_TC1_RAB2 (0x4009408CU) /**< \brief (TC1) Register AB (channel = 2) */ -#define REG_TC1_CV2 (0x40094090U) /**< \brief (TC1) Counter Value (channel = 2) */ -#define REG_TC1_RA2 (0x40094094U) /**< \brief (TC1) Register A (channel = 2) */ -#define REG_TC1_RB2 (0x40094098U) /**< \brief (TC1) Register B (channel = 2) */ -#define REG_TC1_RC2 (0x4009409CU) /**< \brief (TC1) Register C (channel = 2) */ -#define REG_TC1_SR2 (0x400940A0U) /**< \brief (TC1) Status Register (channel = 2) */ -#define REG_TC1_IER2 (0x400940A4U) /**< \brief (TC1) Interrupt Enable Register (channel = 2) */ -#define REG_TC1_IDR2 (0x400940A8U) /**< \brief (TC1) Interrupt Disable Register (channel = 2) */ -#define REG_TC1_IMR2 (0x400940ACU) /**< \brief (TC1) Interrupt Mask Register (channel = 2) */ -#define REG_TC1_EMR2 (0x400940B0U) /**< \brief (TC1) Extended Mode Register (channel = 2) */ -#define REG_TC1_BCR (0x400940C0U) /**< \brief (TC1) Block Control Register */ -#define REG_TC1_BMR (0x400940C4U) /**< \brief (TC1) Block Mode Register */ -#define REG_TC1_QIER (0x400940C8U) /**< \brief (TC1) QDEC Interrupt Enable Register */ -#define REG_TC1_QIDR (0x400940CCU) /**< \brief (TC1) QDEC Interrupt Disable Register */ -#define REG_TC1_QIMR (0x400940D0U) /**< \brief (TC1) QDEC Interrupt Mask Register */ -#define REG_TC1_QISR (0x400940D4U) /**< \brief (TC1) QDEC Interrupt Status Register */ -#define REG_TC1_FMR (0x400940D8U) /**< \brief (TC1) Fault Mode Register */ -#define REG_TC1_WPMR (0x400940E4U) /**< \brief (TC1) Write Protect Mode Register */ -#define REG_TC1_RPR0 (0x40094100U) /**< \brief (TC1) Receive Pointer Register (pdc = 0) */ -#define REG_TC1_RCR0 (0x40094104U) /**< \brief (TC1) Receive Counter Register (pdc = 0) */ -#define REG_TC1_RNPR0 (0x40094110U) /**< \brief (TC1) Receive Next Pointer Register (pdc = 0) */ -#define REG_TC1_RNCR0 (0x40094114U) /**< \brief (TC1) Receive Next Counter Register (pdc = 0) */ -#define REG_TC1_PTCR0 (0x40094120U) /**< \brief (TC1) Transfer Control Register (pdc = 0) */ -#define REG_TC1_PTSR0 (0x40094124U) /**< \brief (TC1) Transfer Status Register (pdc = 0) */ -#define REG_TC1_RPR1 (0x40094140U) /**< \brief (TC1) Receive Pointer Register (pdc = 1) */ -#define REG_TC1_RCR1 (0x40094144U) /**< \brief (TC1) Receive Counter Register (pdc = 1) */ -#define REG_TC1_RNPR1 (0x40094150U) /**< \brief (TC1) Receive Next Pointer Register (pdc = 1) */ -#define REG_TC1_RNCR1 (0x40094154U) /**< \brief (TC1) Receive Next Counter Register (pdc = 1) */ -#define REG_TC1_PTCR1 (0x40094160U) /**< \brief (TC1) Transfer Control Register (pdc = 1) */ -#define REG_TC1_PTSR1 (0x40094164U) /**< \brief (TC1) Transfer Status Register (pdc = 1) */ -#define REG_TC1_RPR2 (0x40094180U) /**< \brief (TC1) Receive Pointer Register (pdc = 2) */ -#define REG_TC1_RCR2 (0x40094184U) /**< \brief (TC1) Receive Counter Register (pdc = 2) */ -#define REG_TC1_RNPR2 (0x40094190U) /**< \brief (TC1) Receive Next Pointer Register (pdc = 2) */ -#define REG_TC1_RNCR2 (0x40094194U) /**< \brief (TC1) Receive Next Counter Register (pdc = 2) */ -#define REG_TC1_PTCR2 (0x400941A0U) /**< \brief (TC1) Transfer Control Register (pdc = 2) */ -#define REG_TC1_PTSR2 (0x400941A4U) /**< \brief (TC1) Transfer Status Register (pdc = 2) */ -#else -#define REG_TC1_CCR0 (*(WoReg*)0x40094000U) /**< \brief (TC1) Channel Control Register (channel = 0) */ -#define REG_TC1_CMR0 (*(RwReg*)0x40094004U) /**< \brief (TC1) Channel Mode Register (channel = 0) */ -#define REG_TC1_SMMR0 (*(RwReg*)0x40094008U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 0) */ -#define REG_TC1_RAB0 (*(RoReg*)0x4009400CU) /**< \brief (TC1) Register AB (channel = 0) */ -#define REG_TC1_CV0 (*(RoReg*)0x40094010U) /**< \brief (TC1) Counter Value (channel = 0) */ -#define REG_TC1_RA0 (*(RwReg*)0x40094014U) /**< \brief (TC1) Register A (channel = 0) */ -#define REG_TC1_RB0 (*(RwReg*)0x40094018U) /**< \brief (TC1) Register B (channel = 0) */ -#define REG_TC1_RC0 (*(RwReg*)0x4009401CU) /**< \brief (TC1) Register C (channel = 0) */ -#define REG_TC1_SR0 (*(RoReg*)0x40094020U) /**< \brief (TC1) Status Register (channel = 0) */ -#define REG_TC1_IER0 (*(WoReg*)0x40094024U) /**< \brief (TC1) Interrupt Enable Register (channel = 0) */ -#define REG_TC1_IDR0 (*(WoReg*)0x40094028U) /**< \brief (TC1) Interrupt Disable Register (channel = 0) */ -#define REG_TC1_IMR0 (*(RoReg*)0x4009402CU) /**< \brief (TC1) Interrupt Mask Register (channel = 0) */ -#define REG_TC1_EMR0 (*(RwReg*)0x40094030U) /**< \brief (TC1) Extended Mode Register (channel = 0) */ -#define REG_TC1_CCR1 (*(WoReg*)0x40094040U) /**< \brief (TC1) Channel Control Register (channel = 1) */ -#define REG_TC1_CMR1 (*(RwReg*)0x40094044U) /**< \brief (TC1) Channel Mode Register (channel = 1) */ -#define REG_TC1_SMMR1 (*(RwReg*)0x40094048U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 1) */ -#define REG_TC1_RAB1 (*(RoReg*)0x4009404CU) /**< \brief (TC1) Register AB (channel = 1) */ -#define REG_TC1_CV1 (*(RoReg*)0x40094050U) /**< \brief (TC1) Counter Value (channel = 1) */ -#define REG_TC1_RA1 (*(RwReg*)0x40094054U) /**< \brief (TC1) Register A (channel = 1) */ -#define REG_TC1_RB1 (*(RwReg*)0x40094058U) /**< \brief (TC1) Register B (channel = 1) */ -#define REG_TC1_RC1 (*(RwReg*)0x4009405CU) /**< \brief (TC1) Register C (channel = 1) */ -#define REG_TC1_SR1 (*(RoReg*)0x40094060U) /**< \brief (TC1) Status Register (channel = 1) */ -#define REG_TC1_IER1 (*(WoReg*)0x40094064U) /**< \brief (TC1) Interrupt Enable Register (channel = 1) */ -#define REG_TC1_IDR1 (*(WoReg*)0x40094068U) /**< \brief (TC1) Interrupt Disable Register (channel = 1) */ -#define REG_TC1_IMR1 (*(RoReg*)0x4009406CU) /**< \brief (TC1) Interrupt Mask Register (channel = 1) */ -#define REG_TC1_EMR1 (*(RwReg*)0x40094070U) /**< \brief (TC1) Extended Mode Register (channel = 1) */ -#define REG_TC1_CCR2 (*(WoReg*)0x40094080U) /**< \brief (TC1) Channel Control Register (channel = 2) */ -#define REG_TC1_CMR2 (*(RwReg*)0x40094084U) /**< \brief (TC1) Channel Mode Register (channel = 2) */ -#define REG_TC1_SMMR2 (*(RwReg*)0x40094088U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 2) */ -#define REG_TC1_RAB2 (*(RoReg*)0x4009408CU) /**< \brief (TC1) Register AB (channel = 2) */ -#define REG_TC1_CV2 (*(RoReg*)0x40094090U) /**< \brief (TC1) Counter Value (channel = 2) */ -#define REG_TC1_RA2 (*(RwReg*)0x40094094U) /**< \brief (TC1) Register A (channel = 2) */ -#define REG_TC1_RB2 (*(RwReg*)0x40094098U) /**< \brief (TC1) Register B (channel = 2) */ -#define REG_TC1_RC2 (*(RwReg*)0x4009409CU) /**< \brief (TC1) Register C (channel = 2) */ -#define REG_TC1_SR2 (*(RoReg*)0x400940A0U) /**< \brief (TC1) Status Register (channel = 2) */ -#define REG_TC1_IER2 (*(WoReg*)0x400940A4U) /**< \brief (TC1) Interrupt Enable Register (channel = 2) */ -#define REG_TC1_IDR2 (*(WoReg*)0x400940A8U) /**< \brief (TC1) Interrupt Disable Register (channel = 2) */ -#define REG_TC1_IMR2 (*(RoReg*)0x400940ACU) /**< \brief (TC1) Interrupt Mask Register (channel = 2) */ -#define REG_TC1_EMR2 (*(RwReg*)0x400940B0U) /**< \brief (TC1) Extended Mode Register (channel = 2) */ -#define REG_TC1_BCR (*(WoReg*)0x400940C0U) /**< \brief (TC1) Block Control Register */ -#define REG_TC1_BMR (*(RwReg*)0x400940C4U) /**< \brief (TC1) Block Mode Register */ -#define REG_TC1_QIER (*(WoReg*)0x400940C8U) /**< \brief (TC1) QDEC Interrupt Enable Register */ -#define REG_TC1_QIDR (*(WoReg*)0x400940CCU) /**< \brief (TC1) QDEC Interrupt Disable Register */ -#define REG_TC1_QIMR (*(RoReg*)0x400940D0U) /**< \brief (TC1) QDEC Interrupt Mask Register */ -#define REG_TC1_QISR (*(RoReg*)0x400940D4U) /**< \brief (TC1) QDEC Interrupt Status Register */ -#define REG_TC1_FMR (*(RwReg*)0x400940D8U) /**< \brief (TC1) Fault Mode Register */ -#define REG_TC1_WPMR (*(RwReg*)0x400940E4U) /**< \brief (TC1) Write Protect Mode Register */ -#define REG_TC1_RPR0 (*(RwReg*)0x40094100U) /**< \brief (TC1) Receive Pointer Register (pdc = 0) */ -#define REG_TC1_RCR0 (*(RwReg*)0x40094104U) /**< \brief (TC1) Receive Counter Register (pdc = 0) */ -#define REG_TC1_RNPR0 (*(RwReg*)0x40094110U) /**< \brief (TC1) Receive Next Pointer Register (pdc = 0) */ -#define REG_TC1_RNCR0 (*(RwReg*)0x40094114U) /**< \brief (TC1) Receive Next Counter Register (pdc = 0) */ -#define REG_TC1_PTCR0 (*(WoReg*)0x40094120U) /**< \brief (TC1) Transfer Control Register (pdc = 0) */ -#define REG_TC1_PTSR0 (*(RoReg*)0x40094124U) /**< \brief (TC1) Transfer Status Register (pdc = 0) */ -#define REG_TC1_RPR1 (*(RwReg*)0x40094140U) /**< \brief (TC1) Receive Pointer Register (pdc = 1) */ -#define REG_TC1_RCR1 (*(RwReg*)0x40094144U) /**< \brief (TC1) Receive Counter Register (pdc = 1) */ -#define REG_TC1_RNPR1 (*(RwReg*)0x40094150U) /**< \brief (TC1) Receive Next Pointer Register (pdc = 1) */ -#define REG_TC1_RNCR1 (*(RwReg*)0x40094154U) /**< \brief (TC1) Receive Next Counter Register (pdc = 1) */ -#define REG_TC1_PTCR1 (*(WoReg*)0x40094160U) /**< \brief (TC1) Transfer Control Register (pdc = 1) */ -#define REG_TC1_PTSR1 (*(RoReg*)0x40094164U) /**< \brief (TC1) Transfer Status Register (pdc = 1) */ -#define REG_TC1_RPR2 (*(RwReg*)0x40094180U) /**< \brief (TC1) Receive Pointer Register (pdc = 2) */ -#define REG_TC1_RCR2 (*(RwReg*)0x40094184U) /**< \brief (TC1) Receive Counter Register (pdc = 2) */ -#define REG_TC1_RNPR2 (*(RwReg*)0x40094190U) /**< \brief (TC1) Receive Next Pointer Register (pdc = 2) */ -#define REG_TC1_RNCR2 (*(RwReg*)0x40094194U) /**< \brief (TC1) Receive Next Counter Register (pdc = 2) */ -#define REG_TC1_PTCR2 (*(WoReg*)0x400941A0U) /**< \brief (TC1) Transfer Control Register (pdc = 2) */ -#define REG_TC1_PTSR2 (*(RoReg*)0x400941A4U) /**< \brief (TC1) Transfer Status Register (pdc = 2) */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_TC1_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc2.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc2.h deleted file mode 100644 index 73d8f3fa5..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/tc2.h +++ /dev/null @@ -1,144 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_TC2_INSTANCE_ -#define _SAM4E_TC2_INSTANCE_ - -/* ========== Register definition for TC2 peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_TC2_CCR0 (0x40098000U) /**< \brief (TC2) Channel Control Register (channel = 0) */ -#define REG_TC2_CMR0 (0x40098004U) /**< \brief (TC2) Channel Mode Register (channel = 0) */ -#define REG_TC2_SMMR0 (0x40098008U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 0) */ -#define REG_TC2_RAB0 (0x4009800CU) /**< \brief (TC2) Register AB (channel = 0) */ -#define REG_TC2_CV0 (0x40098010U) /**< \brief (TC2) Counter Value (channel = 0) */ -#define REG_TC2_RA0 (0x40098014U) /**< \brief (TC2) Register A (channel = 0) */ -#define REG_TC2_RB0 (0x40098018U) /**< \brief (TC2) Register B (channel = 0) */ -#define REG_TC2_RC0 (0x4009801CU) /**< \brief (TC2) Register C (channel = 0) */ -#define REG_TC2_SR0 (0x40098020U) /**< \brief (TC2) Status Register (channel = 0) */ -#define REG_TC2_IER0 (0x40098024U) /**< \brief (TC2) Interrupt Enable Register (channel = 0) */ -#define REG_TC2_IDR0 (0x40098028U) /**< \brief (TC2) Interrupt Disable Register (channel = 0) */ -#define REG_TC2_IMR0 (0x4009802CU) /**< \brief (TC2) Interrupt Mask Register (channel = 0) */ -#define REG_TC2_EMR0 (0x40098030U) /**< \brief (TC2) Extended Mode Register (channel = 0) */ -#define REG_TC2_CCR1 (0x40098040U) /**< \brief (TC2) Channel Control Register (channel = 1) */ -#define REG_TC2_CMR1 (0x40098044U) /**< \brief (TC2) Channel Mode Register (channel = 1) */ -#define REG_TC2_SMMR1 (0x40098048U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 1) */ -#define REG_TC2_RAB1 (0x4009804CU) /**< \brief (TC2) Register AB (channel = 1) */ -#define REG_TC2_CV1 (0x40098050U) /**< \brief (TC2) Counter Value (channel = 1) */ -#define REG_TC2_RA1 (0x40098054U) /**< \brief (TC2) Register A (channel = 1) */ -#define REG_TC2_RB1 (0x40098058U) /**< \brief (TC2) Register B (channel = 1) */ -#define REG_TC2_RC1 (0x4009805CU) /**< \brief (TC2) Register C (channel = 1) */ -#define REG_TC2_SR1 (0x40098060U) /**< \brief (TC2) Status Register (channel = 1) */ -#define REG_TC2_IER1 (0x40098064U) /**< \brief (TC2) Interrupt Enable Register (channel = 1) */ -#define REG_TC2_IDR1 (0x40098068U) /**< \brief (TC2) Interrupt Disable Register (channel = 1) */ -#define REG_TC2_IMR1 (0x4009806CU) /**< \brief (TC2) Interrupt Mask Register (channel = 1) */ -#define REG_TC2_EMR1 (0x40098070U) /**< \brief (TC2) Extended Mode Register (channel = 1) */ -#define REG_TC2_CCR2 (0x40098080U) /**< \brief (TC2) Channel Control Register (channel = 2) */ -#define REG_TC2_CMR2 (0x40098084U) /**< \brief (TC2) Channel Mode Register (channel = 2) */ -#define REG_TC2_SMMR2 (0x40098088U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 2) */ -#define REG_TC2_RAB2 (0x4009808CU) /**< \brief (TC2) Register AB (channel = 2) */ -#define REG_TC2_CV2 (0x40098090U) /**< \brief (TC2) Counter Value (channel = 2) */ -#define REG_TC2_RA2 (0x40098094U) /**< \brief (TC2) Register A (channel = 2) */ -#define REG_TC2_RB2 (0x40098098U) /**< \brief (TC2) Register B (channel = 2) */ -#define REG_TC2_RC2 (0x4009809CU) /**< \brief (TC2) Register C (channel = 2) */ -#define REG_TC2_SR2 (0x400980A0U) /**< \brief (TC2) Status Register (channel = 2) */ -#define REG_TC2_IER2 (0x400980A4U) /**< \brief (TC2) Interrupt Enable Register (channel = 2) */ -#define REG_TC2_IDR2 (0x400980A8U) /**< \brief (TC2) Interrupt Disable Register (channel = 2) */ -#define REG_TC2_IMR2 (0x400980ACU) /**< \brief (TC2) Interrupt Mask Register (channel = 2) */ -#define REG_TC2_EMR2 (0x400980B0U) /**< \brief (TC2) Extended Mode Register (channel = 2) */ -#define REG_TC2_BCR (0x400980C0U) /**< \brief (TC2) Block Control Register */ -#define REG_TC2_BMR (0x400980C4U) /**< \brief (TC2) Block Mode Register */ -#define REG_TC2_QIER (0x400980C8U) /**< \brief (TC2) QDEC Interrupt Enable Register */ -#define REG_TC2_QIDR (0x400980CCU) /**< \brief (TC2) QDEC Interrupt Disable Register */ -#define REG_TC2_QIMR (0x400980D0U) /**< \brief (TC2) QDEC Interrupt Mask Register */ -#define REG_TC2_QISR (0x400980D4U) /**< \brief (TC2) QDEC Interrupt Status Register */ -#define REG_TC2_FMR (0x400980D8U) /**< \brief (TC2) Fault Mode Register */ -#define REG_TC2_WPMR (0x400980E4U) /**< \brief (TC2) Write Protect Mode Register */ -#else -#define REG_TC2_CCR0 (*(WoReg*)0x40098000U) /**< \brief (TC2) Channel Control Register (channel = 0) */ -#define REG_TC2_CMR0 (*(RwReg*)0x40098004U) /**< \brief (TC2) Channel Mode Register (channel = 0) */ -#define REG_TC2_SMMR0 (*(RwReg*)0x40098008U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 0) */ -#define REG_TC2_RAB0 (*(RoReg*)0x4009800CU) /**< \brief (TC2) Register AB (channel = 0) */ -#define REG_TC2_CV0 (*(RoReg*)0x40098010U) /**< \brief (TC2) Counter Value (channel = 0) */ -#define REG_TC2_RA0 (*(RwReg*)0x40098014U) /**< \brief (TC2) Register A (channel = 0) */ -#define REG_TC2_RB0 (*(RwReg*)0x40098018U) /**< \brief (TC2) Register B (channel = 0) */ -#define REG_TC2_RC0 (*(RwReg*)0x4009801CU) /**< \brief (TC2) Register C (channel = 0) */ -#define REG_TC2_SR0 (*(RoReg*)0x40098020U) /**< \brief (TC2) Status Register (channel = 0) */ -#define REG_TC2_IER0 (*(WoReg*)0x40098024U) /**< \brief (TC2) Interrupt Enable Register (channel = 0) */ -#define REG_TC2_IDR0 (*(WoReg*)0x40098028U) /**< \brief (TC2) Interrupt Disable Register (channel = 0) */ -#define REG_TC2_IMR0 (*(RoReg*)0x4009802CU) /**< \brief (TC2) Interrupt Mask Register (channel = 0) */ -#define REG_TC2_EMR0 (*(RwReg*)0x40098030U) /**< \brief (TC2) Extended Mode Register (channel = 0) */ -#define REG_TC2_CCR1 (*(WoReg*)0x40098040U) /**< \brief (TC2) Channel Control Register (channel = 1) */ -#define REG_TC2_CMR1 (*(RwReg*)0x40098044U) /**< \brief (TC2) Channel Mode Register (channel = 1) */ -#define REG_TC2_SMMR1 (*(RwReg*)0x40098048U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 1) */ -#define REG_TC2_RAB1 (*(RoReg*)0x4009804CU) /**< \brief (TC2) Register AB (channel = 1) */ -#define REG_TC2_CV1 (*(RoReg*)0x40098050U) /**< \brief (TC2) Counter Value (channel = 1) */ -#define REG_TC2_RA1 (*(RwReg*)0x40098054U) /**< \brief (TC2) Register A (channel = 1) */ -#define REG_TC2_RB1 (*(RwReg*)0x40098058U) /**< \brief (TC2) Register B (channel = 1) */ -#define REG_TC2_RC1 (*(RwReg*)0x4009805CU) /**< \brief (TC2) Register C (channel = 1) */ -#define REG_TC2_SR1 (*(RoReg*)0x40098060U) /**< \brief (TC2) Status Register (channel = 1) */ -#define REG_TC2_IER1 (*(WoReg*)0x40098064U) /**< \brief (TC2) Interrupt Enable Register (channel = 1) */ -#define REG_TC2_IDR1 (*(WoReg*)0x40098068U) /**< \brief (TC2) Interrupt Disable Register (channel = 1) */ -#define REG_TC2_IMR1 (*(RoReg*)0x4009806CU) /**< \brief (TC2) Interrupt Mask Register (channel = 1) */ -#define REG_TC2_EMR1 (*(RwReg*)0x40098070U) /**< \brief (TC2) Extended Mode Register (channel = 1) */ -#define REG_TC2_CCR2 (*(WoReg*)0x40098080U) /**< \brief (TC2) Channel Control Register (channel = 2) */ -#define REG_TC2_CMR2 (*(RwReg*)0x40098084U) /**< \brief (TC2) Channel Mode Register (channel = 2) */ -#define REG_TC2_SMMR2 (*(RwReg*)0x40098088U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 2) */ -#define REG_TC2_RAB2 (*(RoReg*)0x4009808CU) /**< \brief (TC2) Register AB (channel = 2) */ -#define REG_TC2_CV2 (*(RoReg*)0x40098090U) /**< \brief (TC2) Counter Value (channel = 2) */ -#define REG_TC2_RA2 (*(RwReg*)0x40098094U) /**< \brief (TC2) Register A (channel = 2) */ -#define REG_TC2_RB2 (*(RwReg*)0x40098098U) /**< \brief (TC2) Register B (channel = 2) */ -#define REG_TC2_RC2 (*(RwReg*)0x4009809CU) /**< \brief (TC2) Register C (channel = 2) */ -#define REG_TC2_SR2 (*(RoReg*)0x400980A0U) /**< \brief (TC2) Status Register (channel = 2) */ -#define REG_TC2_IER2 (*(WoReg*)0x400980A4U) /**< \brief (TC2) Interrupt Enable Register (channel = 2) */ -#define REG_TC2_IDR2 (*(WoReg*)0x400980A8U) /**< \brief (TC2) Interrupt Disable Register (channel = 2) */ -#define REG_TC2_IMR2 (*(RoReg*)0x400980ACU) /**< \brief (TC2) Interrupt Mask Register (channel = 2) */ -#define REG_TC2_EMR2 (*(RwReg*)0x400980B0U) /**< \brief (TC2) Extended Mode Register (channel = 2) */ -#define REG_TC2_BCR (*(WoReg*)0x400980C0U) /**< \brief (TC2) Block Control Register */ -#define REG_TC2_BMR (*(RwReg*)0x400980C4U) /**< \brief (TC2) Block Mode Register */ -#define REG_TC2_QIER (*(WoReg*)0x400980C8U) /**< \brief (TC2) QDEC Interrupt Enable Register */ -#define REG_TC2_QIDR (*(WoReg*)0x400980CCU) /**< \brief (TC2) QDEC Interrupt Disable Register */ -#define REG_TC2_QIMR (*(RoReg*)0x400980D0U) /**< \brief (TC2) QDEC Interrupt Mask Register */ -#define REG_TC2_QISR (*(RoReg*)0x400980D4U) /**< \brief (TC2) QDEC Interrupt Status Register */ -#define REG_TC2_FMR (*(RwReg*)0x400980D8U) /**< \brief (TC2) Fault Mode Register */ -#define REG_TC2_WPMR (*(RwReg*)0x400980E4U) /**< \brief (TC2) Write Protect Mode Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_TC2_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/twi0.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/twi0.h deleted file mode 100644 index 88fe9eff5..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/twi0.h +++ /dev/null @@ -1,96 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_TWI0_INSTANCE_ -#define _SAM4E_TWI0_INSTANCE_ - -/* ========== Register definition for TWI0 peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_TWI0_CR (0x400A8000U) /**< \brief (TWI0) Control Register */ -#define REG_TWI0_MMR (0x400A8004U) /**< \brief (TWI0) Master Mode Register */ -#define REG_TWI0_SMR (0x400A8008U) /**< \brief (TWI0) Slave Mode Register */ -#define REG_TWI0_IADR (0x400A800CU) /**< \brief (TWI0) Internal Address Register */ -#define REG_TWI0_CWGR (0x400A8010U) /**< \brief (TWI0) Clock Waveform Generator Register */ -#define REG_TWI0_SR (0x400A8020U) /**< \brief (TWI0) Status Register */ -#define REG_TWI0_IER (0x400A8024U) /**< \brief (TWI0) Interrupt Enable Register */ -#define REG_TWI0_IDR (0x400A8028U) /**< \brief (TWI0) Interrupt Disable Register */ -#define REG_TWI0_IMR (0x400A802CU) /**< \brief (TWI0) Interrupt Mask Register */ -#define REG_TWI0_RHR (0x400A8030U) /**< \brief (TWI0) Receive Holding Register */ -#define REG_TWI0_THR (0x400A8034U) /**< \brief (TWI0) Transmit Holding Register */ -#define REG_TWI0_WPROT_MODE (0x400A80E4U) /**< \brief (TWI0) Protection Mode Register */ -#define REG_TWI0_WPROT_STATUS (0x400A80E8U) /**< \brief (TWI0) Protection Status Register */ -#define REG_TWI0_RPR (0x400A8100U) /**< \brief (TWI0) Receive Pointer Register */ -#define REG_TWI0_RCR (0x400A8104U) /**< \brief (TWI0) Receive Counter Register */ -#define REG_TWI0_TPR (0x400A8108U) /**< \brief (TWI0) Transmit Pointer Register */ -#define REG_TWI0_TCR (0x400A810CU) /**< \brief (TWI0) Transmit Counter Register */ -#define REG_TWI0_RNPR (0x400A8110U) /**< \brief (TWI0) Receive Next Pointer Register */ -#define REG_TWI0_RNCR (0x400A8114U) /**< \brief (TWI0) Receive Next Counter Register */ -#define REG_TWI0_TNPR (0x400A8118U) /**< \brief (TWI0) Transmit Next Pointer Register */ -#define REG_TWI0_TNCR (0x400A811CU) /**< \brief (TWI0) Transmit Next Counter Register */ -#define REG_TWI0_PTCR (0x400A8120U) /**< \brief (TWI0) Transfer Control Register */ -#define REG_TWI0_PTSR (0x400A8124U) /**< \brief (TWI0) Transfer Status Register */ -#else -#define REG_TWI0_CR (*(WoReg*)0x400A8000U) /**< \brief (TWI0) Control Register */ -#define REG_TWI0_MMR (*(RwReg*)0x400A8004U) /**< \brief (TWI0) Master Mode Register */ -#define REG_TWI0_SMR (*(RwReg*)0x400A8008U) /**< \brief (TWI0) Slave Mode Register */ -#define REG_TWI0_IADR (*(RwReg*)0x400A800CU) /**< \brief (TWI0) Internal Address Register */ -#define REG_TWI0_CWGR (*(RwReg*)0x400A8010U) /**< \brief (TWI0) Clock Waveform Generator Register */ -#define REG_TWI0_SR (*(RoReg*)0x400A8020U) /**< \brief (TWI0) Status Register */ -#define REG_TWI0_IER (*(WoReg*)0x400A8024U) /**< \brief (TWI0) Interrupt Enable Register */ -#define REG_TWI0_IDR (*(WoReg*)0x400A8028U) /**< \brief (TWI0) Interrupt Disable Register */ -#define REG_TWI0_IMR (*(RoReg*)0x400A802CU) /**< \brief (TWI0) Interrupt Mask Register */ -#define REG_TWI0_RHR (*(RoReg*)0x400A8030U) /**< \brief (TWI0) Receive Holding Register */ -#define REG_TWI0_THR (*(WoReg*)0x400A8034U) /**< \brief (TWI0) Transmit Holding Register */ -#define REG_TWI0_WPROT_MODE (*(RwReg*)0x400A80E4U) /**< \brief (TWI0) Protection Mode Register */ -#define REG_TWI0_WPROT_STATUS (*(RoReg*)0x400A80E8U) /**< \brief (TWI0) Protection Status Register */ -#define REG_TWI0_RPR (*(RwReg*)0x400A8100U) /**< \brief (TWI0) Receive Pointer Register */ -#define REG_TWI0_RCR (*(RwReg*)0x400A8104U) /**< \brief (TWI0) Receive Counter Register */ -#define REG_TWI0_TPR (*(RwReg*)0x400A8108U) /**< \brief (TWI0) Transmit Pointer Register */ -#define REG_TWI0_TCR (*(RwReg*)0x400A810CU) /**< \brief (TWI0) Transmit Counter Register */ -#define REG_TWI0_RNPR (*(RwReg*)0x400A8110U) /**< \brief (TWI0) Receive Next Pointer Register */ -#define REG_TWI0_RNCR (*(RwReg*)0x400A8114U) /**< \brief (TWI0) Receive Next Counter Register */ -#define REG_TWI0_TNPR (*(RwReg*)0x400A8118U) /**< \brief (TWI0) Transmit Next Pointer Register */ -#define REG_TWI0_TNCR (*(RwReg*)0x400A811CU) /**< \brief (TWI0) Transmit Next Counter Register */ -#define REG_TWI0_PTCR (*(WoReg*)0x400A8120U) /**< \brief (TWI0) Transfer Control Register */ -#define REG_TWI0_PTSR (*(RoReg*)0x400A8124U) /**< \brief (TWI0) Transfer Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_TWI0_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/twi1.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/twi1.h deleted file mode 100644 index 172adb13e..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/twi1.h +++ /dev/null @@ -1,96 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_TWI1_INSTANCE_ -#define _SAM4E_TWI1_INSTANCE_ - -/* ========== Register definition for TWI1 peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_TWI1_CR (0x400AC000U) /**< \brief (TWI1) Control Register */ -#define REG_TWI1_MMR (0x400AC004U) /**< \brief (TWI1) Master Mode Register */ -#define REG_TWI1_SMR (0x400AC008U) /**< \brief (TWI1) Slave Mode Register */ -#define REG_TWI1_IADR (0x400AC00CU) /**< \brief (TWI1) Internal Address Register */ -#define REG_TWI1_CWGR (0x400AC010U) /**< \brief (TWI1) Clock Waveform Generator Register */ -#define REG_TWI1_SR (0x400AC020U) /**< \brief (TWI1) Status Register */ -#define REG_TWI1_IER (0x400AC024U) /**< \brief (TWI1) Interrupt Enable Register */ -#define REG_TWI1_IDR (0x400AC028U) /**< \brief (TWI1) Interrupt Disable Register */ -#define REG_TWI1_IMR (0x400AC02CU) /**< \brief (TWI1) Interrupt Mask Register */ -#define REG_TWI1_RHR (0x400AC030U) /**< \brief (TWI1) Receive Holding Register */ -#define REG_TWI1_THR (0x400AC034U) /**< \brief (TWI1) Transmit Holding Register */ -#define REG_TWI1_WPROT_MODE (0x400AC0E4U) /**< \brief (TWI1) Protection Mode Register */ -#define REG_TWI1_WPROT_STATUS (0x400AC0E8U) /**< \brief (TWI1) Protection Status Register */ -#define REG_TWI1_RPR (0x400AC100U) /**< \brief (TWI1) Receive Pointer Register */ -#define REG_TWI1_RCR (0x400AC104U) /**< \brief (TWI1) Receive Counter Register */ -#define REG_TWI1_TPR (0x400AC108U) /**< \brief (TWI1) Transmit Pointer Register */ -#define REG_TWI1_TCR (0x400AC10CU) /**< \brief (TWI1) Transmit Counter Register */ -#define REG_TWI1_RNPR (0x400AC110U) /**< \brief (TWI1) Receive Next Pointer Register */ -#define REG_TWI1_RNCR (0x400AC114U) /**< \brief (TWI1) Receive Next Counter Register */ -#define REG_TWI1_TNPR (0x400AC118U) /**< \brief (TWI1) Transmit Next Pointer Register */ -#define REG_TWI1_TNCR (0x400AC11CU) /**< \brief (TWI1) Transmit Next Counter Register */ -#define REG_TWI1_PTCR (0x400AC120U) /**< \brief (TWI1) Transfer Control Register */ -#define REG_TWI1_PTSR (0x400AC124U) /**< \brief (TWI1) Transfer Status Register */ -#else -#define REG_TWI1_CR (*(WoReg*)0x400AC000U) /**< \brief (TWI1) Control Register */ -#define REG_TWI1_MMR (*(RwReg*)0x400AC004U) /**< \brief (TWI1) Master Mode Register */ -#define REG_TWI1_SMR (*(RwReg*)0x400AC008U) /**< \brief (TWI1) Slave Mode Register */ -#define REG_TWI1_IADR (*(RwReg*)0x400AC00CU) /**< \brief (TWI1) Internal Address Register */ -#define REG_TWI1_CWGR (*(RwReg*)0x400AC010U) /**< \brief (TWI1) Clock Waveform Generator Register */ -#define REG_TWI1_SR (*(RoReg*)0x400AC020U) /**< \brief (TWI1) Status Register */ -#define REG_TWI1_IER (*(WoReg*)0x400AC024U) /**< \brief (TWI1) Interrupt Enable Register */ -#define REG_TWI1_IDR (*(WoReg*)0x400AC028U) /**< \brief (TWI1) Interrupt Disable Register */ -#define REG_TWI1_IMR (*(RoReg*)0x400AC02CU) /**< \brief (TWI1) Interrupt Mask Register */ -#define REG_TWI1_RHR (*(RoReg*)0x400AC030U) /**< \brief (TWI1) Receive Holding Register */ -#define REG_TWI1_THR (*(WoReg*)0x400AC034U) /**< \brief (TWI1) Transmit Holding Register */ -#define REG_TWI1_WPROT_MODE (*(RwReg*)0x400AC0E4U) /**< \brief (TWI1) Protection Mode Register */ -#define REG_TWI1_WPROT_STATUS (*(RoReg*)0x400AC0E8U) /**< \brief (TWI1) Protection Status Register */ -#define REG_TWI1_RPR (*(RwReg*)0x400AC100U) /**< \brief (TWI1) Receive Pointer Register */ -#define REG_TWI1_RCR (*(RwReg*)0x400AC104U) /**< \brief (TWI1) Receive Counter Register */ -#define REG_TWI1_TPR (*(RwReg*)0x400AC108U) /**< \brief (TWI1) Transmit Pointer Register */ -#define REG_TWI1_TCR (*(RwReg*)0x400AC10CU) /**< \brief (TWI1) Transmit Counter Register */ -#define REG_TWI1_RNPR (*(RwReg*)0x400AC110U) /**< \brief (TWI1) Receive Next Pointer Register */ -#define REG_TWI1_RNCR (*(RwReg*)0x400AC114U) /**< \brief (TWI1) Receive Next Counter Register */ -#define REG_TWI1_TNPR (*(RwReg*)0x400AC118U) /**< \brief (TWI1) Transmit Next Pointer Register */ -#define REG_TWI1_TNCR (*(RwReg*)0x400AC11CU) /**< \brief (TWI1) Transmit Next Counter Register */ -#define REG_TWI1_PTCR (*(WoReg*)0x400AC120U) /**< \brief (TWI1) Transfer Control Register */ -#define REG_TWI1_PTSR (*(RoReg*)0x400AC124U) /**< \brief (TWI1) Transfer Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_TWI1_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/uart0.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/uart0.h deleted file mode 100644 index 56877b7c8..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/uart0.h +++ /dev/null @@ -1,88 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_UART0_INSTANCE_ -#define _SAM4E_UART0_INSTANCE_ - -/* ========== Register definition for UART0 peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_UART0_CR (0x400E0600U) /**< \brief (UART0) Control Register */ -#define REG_UART0_MR (0x400E0604U) /**< \brief (UART0) Mode Register */ -#define REG_UART0_IER (0x400E0608U) /**< \brief (UART0) Interrupt Enable Register */ -#define REG_UART0_IDR (0x400E060CU) /**< \brief (UART0) Interrupt Disable Register */ -#define REG_UART0_IMR (0x400E0610U) /**< \brief (UART0) Interrupt Mask Register */ -#define REG_UART0_SR (0x400E0614U) /**< \brief (UART0) Status Register */ -#define REG_UART0_RHR (0x400E0618U) /**< \brief (UART0) Receive Holding Register */ -#define REG_UART0_THR (0x400E061CU) /**< \brief (UART0) Transmit Holding Register */ -#define REG_UART0_BRGR (0x400E0620U) /**< \brief (UART0) Baud Rate Generator Register */ -#define REG_UART0_RPR (0x400E0700U) /**< \brief (UART0) Receive Pointer Register */ -#define REG_UART0_RCR (0x400E0704U) /**< \brief (UART0) Receive Counter Register */ -#define REG_UART0_TPR (0x400E0708U) /**< \brief (UART0) Transmit Pointer Register */ -#define REG_UART0_TCR (0x400E070CU) /**< \brief (UART0) Transmit Counter Register */ -#define REG_UART0_RNPR (0x400E0710U) /**< \brief (UART0) Receive Next Pointer Register */ -#define REG_UART0_RNCR (0x400E0714U) /**< \brief (UART0) Receive Next Counter Register */ -#define REG_UART0_TNPR (0x400E0718U) /**< \brief (UART0) Transmit Next Pointer Register */ -#define REG_UART0_TNCR (0x400E071CU) /**< \brief (UART0) Transmit Next Counter Register */ -#define REG_UART0_PTCR (0x400E0720U) /**< \brief (UART0) Transfer Control Register */ -#define REG_UART0_PTSR (0x400E0724U) /**< \brief (UART0) Transfer Status Register */ -#else -#define REG_UART0_CR (*(WoReg*)0x400E0600U) /**< \brief (UART0) Control Register */ -#define REG_UART0_MR (*(RwReg*)0x400E0604U) /**< \brief (UART0) Mode Register */ -#define REG_UART0_IER (*(WoReg*)0x400E0608U) /**< \brief (UART0) Interrupt Enable Register */ -#define REG_UART0_IDR (*(WoReg*)0x400E060CU) /**< \brief (UART0) Interrupt Disable Register */ -#define REG_UART0_IMR (*(RoReg*)0x400E0610U) /**< \brief (UART0) Interrupt Mask Register */ -#define REG_UART0_SR (*(RoReg*)0x400E0614U) /**< \brief (UART0) Status Register */ -#define REG_UART0_RHR (*(RoReg*)0x400E0618U) /**< \brief (UART0) Receive Holding Register */ -#define REG_UART0_THR (*(WoReg*)0x400E061CU) /**< \brief (UART0) Transmit Holding Register */ -#define REG_UART0_BRGR (*(RwReg*)0x400E0620U) /**< \brief (UART0) Baud Rate Generator Register */ -#define REG_UART0_RPR (*(RwReg*)0x400E0700U) /**< \brief (UART0) Receive Pointer Register */ -#define REG_UART0_RCR (*(RwReg*)0x400E0704U) /**< \brief (UART0) Receive Counter Register */ -#define REG_UART0_TPR (*(RwReg*)0x400E0708U) /**< \brief (UART0) Transmit Pointer Register */ -#define REG_UART0_TCR (*(RwReg*)0x400E070CU) /**< \brief (UART0) Transmit Counter Register */ -#define REG_UART0_RNPR (*(RwReg*)0x400E0710U) /**< \brief (UART0) Receive Next Pointer Register */ -#define REG_UART0_RNCR (*(RwReg*)0x400E0714U) /**< \brief (UART0) Receive Next Counter Register */ -#define REG_UART0_TNPR (*(RwReg*)0x400E0718U) /**< \brief (UART0) Transmit Next Pointer Register */ -#define REG_UART0_TNCR (*(RwReg*)0x400E071CU) /**< \brief (UART0) Transmit Next Counter Register */ -#define REG_UART0_PTCR (*(WoReg*)0x400E0720U) /**< \brief (UART0) Transfer Control Register */ -#define REG_UART0_PTSR (*(RoReg*)0x400E0724U) /**< \brief (UART0) Transfer Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_UART0_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/uart1.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/uart1.h deleted file mode 100644 index 2cd603110..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/uart1.h +++ /dev/null @@ -1,88 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_UART1_INSTANCE_ -#define _SAM4E_UART1_INSTANCE_ - -/* ========== Register definition for UART1 peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_UART1_CR (0x40060600U) /**< \brief (UART1) Control Register */ -#define REG_UART1_MR (0x40060604U) /**< \brief (UART1) Mode Register */ -#define REG_UART1_IER (0x40060608U) /**< \brief (UART1) Interrupt Enable Register */ -#define REG_UART1_IDR (0x4006060CU) /**< \brief (UART1) Interrupt Disable Register */ -#define REG_UART1_IMR (0x40060610U) /**< \brief (UART1) Interrupt Mask Register */ -#define REG_UART1_SR (0x40060614U) /**< \brief (UART1) Status Register */ -#define REG_UART1_RHR (0x40060618U) /**< \brief (UART1) Receive Holding Register */ -#define REG_UART1_THR (0x4006061CU) /**< \brief (UART1) Transmit Holding Register */ -#define REG_UART1_BRGR (0x40060620U) /**< \brief (UART1) Baud Rate Generator Register */ -#define REG_UART1_RPR (0x40060700U) /**< \brief (UART1) Receive Pointer Register */ -#define REG_UART1_RCR (0x40060704U) /**< \brief (UART1) Receive Counter Register */ -#define REG_UART1_TPR (0x40060708U) /**< \brief (UART1) Transmit Pointer Register */ -#define REG_UART1_TCR (0x4006070CU) /**< \brief (UART1) Transmit Counter Register */ -#define REG_UART1_RNPR (0x40060710U) /**< \brief (UART1) Receive Next Pointer Register */ -#define REG_UART1_RNCR (0x40060714U) /**< \brief (UART1) Receive Next Counter Register */ -#define REG_UART1_TNPR (0x40060718U) /**< \brief (UART1) Transmit Next Pointer Register */ -#define REG_UART1_TNCR (0x4006071CU) /**< \brief (UART1) Transmit Next Counter Register */ -#define REG_UART1_PTCR (0x40060720U) /**< \brief (UART1) Transfer Control Register */ -#define REG_UART1_PTSR (0x40060724U) /**< \brief (UART1) Transfer Status Register */ -#else -#define REG_UART1_CR (*(WoReg*)0x40060600U) /**< \brief (UART1) Control Register */ -#define REG_UART1_MR (*(RwReg*)0x40060604U) /**< \brief (UART1) Mode Register */ -#define REG_UART1_IER (*(WoReg*)0x40060608U) /**< \brief (UART1) Interrupt Enable Register */ -#define REG_UART1_IDR (*(WoReg*)0x4006060CU) /**< \brief (UART1) Interrupt Disable Register */ -#define REG_UART1_IMR (*(RoReg*)0x40060610U) /**< \brief (UART1) Interrupt Mask Register */ -#define REG_UART1_SR (*(RoReg*)0x40060614U) /**< \brief (UART1) Status Register */ -#define REG_UART1_RHR (*(RoReg*)0x40060618U) /**< \brief (UART1) Receive Holding Register */ -#define REG_UART1_THR (*(WoReg*)0x4006061CU) /**< \brief (UART1) Transmit Holding Register */ -#define REG_UART1_BRGR (*(RwReg*)0x40060620U) /**< \brief (UART1) Baud Rate Generator Register */ -#define REG_UART1_RPR (*(RwReg*)0x40060700U) /**< \brief (UART1) Receive Pointer Register */ -#define REG_UART1_RCR (*(RwReg*)0x40060704U) /**< \brief (UART1) Receive Counter Register */ -#define REG_UART1_TPR (*(RwReg*)0x40060708U) /**< \brief (UART1) Transmit Pointer Register */ -#define REG_UART1_TCR (*(RwReg*)0x4006070CU) /**< \brief (UART1) Transmit Counter Register */ -#define REG_UART1_RNPR (*(RwReg*)0x40060710U) /**< \brief (UART1) Receive Next Pointer Register */ -#define REG_UART1_RNCR (*(RwReg*)0x40060714U) /**< \brief (UART1) Receive Next Counter Register */ -#define REG_UART1_TNPR (*(RwReg*)0x40060718U) /**< \brief (UART1) Transmit Next Pointer Register */ -#define REG_UART1_TNCR (*(RwReg*)0x4006071CU) /**< \brief (UART1) Transmit Next Counter Register */ -#define REG_UART1_PTCR (*(WoReg*)0x40060720U) /**< \brief (UART1) Transfer Control Register */ -#define REG_UART1_PTSR (*(RoReg*)0x40060724U) /**< \brief (UART1) Transfer Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_UART1_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/udp.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/udp.h deleted file mode 100644 index a9f2115c8..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/udp.h +++ /dev/null @@ -1,74 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_UDP_INSTANCE_ -#define _SAM4E_UDP_INSTANCE_ - -/* ========== Register definition for UDP peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_UDP_FRM_NUM (0x40084000U) /**< \brief (UDP) Frame Number Register */ -#define REG_UDP_GLB_STAT (0x40084004U) /**< \brief (UDP) Global State Register */ -#define REG_UDP_FADDR (0x40084008U) /**< \brief (UDP) Function Address Register */ -#define REG_UDP_IER (0x40084010U) /**< \brief (UDP) Interrupt Enable Register */ -#define REG_UDP_IDR (0x40084014U) /**< \brief (UDP) Interrupt Disable Register */ -#define REG_UDP_IMR (0x40084018U) /**< \brief (UDP) Interrupt Mask Register */ -#define REG_UDP_ISR (0x4008401CU) /**< \brief (UDP) Interrupt Status Register */ -#define REG_UDP_ICR (0x40084020U) /**< \brief (UDP) Interrupt Clear Register */ -#define REG_UDP_RST_EP (0x40084028U) /**< \brief (UDP) Reset Endpoint Register */ -#define REG_UDP_CSR (0x40084030U) /**< \brief (UDP) Endpoint Control and Status Register */ -#define REG_UDP_FDR (0x40084050U) /**< \brief (UDP) Endpoint FIFO Data Register */ -#define REG_UDP_TXVC (0x40084074U) /**< \brief (UDP) Transceiver Control Register */ -#else -#define REG_UDP_FRM_NUM (*(RoReg*)0x40084000U) /**< \brief (UDP) Frame Number Register */ -#define REG_UDP_GLB_STAT (*(RwReg*)0x40084004U) /**< \brief (UDP) Global State Register */ -#define REG_UDP_FADDR (*(RwReg*)0x40084008U) /**< \brief (UDP) Function Address Register */ -#define REG_UDP_IER (*(WoReg*)0x40084010U) /**< \brief (UDP) Interrupt Enable Register */ -#define REG_UDP_IDR (*(WoReg*)0x40084014U) /**< \brief (UDP) Interrupt Disable Register */ -#define REG_UDP_IMR (*(RoReg*)0x40084018U) /**< \brief (UDP) Interrupt Mask Register */ -#define REG_UDP_ISR (*(RoReg*)0x4008401CU) /**< \brief (UDP) Interrupt Status Register */ -#define REG_UDP_ICR (*(WoReg*)0x40084020U) /**< \brief (UDP) Interrupt Clear Register */ -#define REG_UDP_RST_EP (*(RwReg*)0x40084028U) /**< \brief (UDP) Reset Endpoint Register */ -#define REG_UDP_CSR (*(RwReg*)0x40084030U) /**< \brief (UDP) Endpoint Control and Status Register */ -#define REG_UDP_FDR (*(RwReg*)0x40084050U) /**< \brief (UDP) Endpoint FIFO Data Register */ -#define REG_UDP_TXVC (*(RwReg*)0x40084074U) /**< \brief (UDP) Transceiver Control Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_UDP_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/usart0.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/usart0.h deleted file mode 100644 index 6f9ae128d..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/usart0.h +++ /dev/null @@ -1,104 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_USART0_INSTANCE_ -#define _SAM4E_USART0_INSTANCE_ - -/* ========== Register definition for USART0 peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_USART0_CR (0x400A0000U) /**< \brief (USART0) Control Register */ -#define REG_USART0_MR (0x400A0004U) /**< \brief (USART0) Mode Register */ -#define REG_USART0_IER (0x400A0008U) /**< \brief (USART0) Interrupt Enable Register */ -#define REG_USART0_IDR (0x400A000CU) /**< \brief (USART0) Interrupt Disable Register */ -#define REG_USART0_IMR (0x400A0010U) /**< \brief (USART0) Interrupt Mask Register */ -#define REG_USART0_CSR (0x400A0014U) /**< \brief (USART0) Channel Status Register */ -#define REG_USART0_RHR (0x400A0018U) /**< \brief (USART0) Receiver Holding Register */ -#define REG_USART0_THR (0x400A001CU) /**< \brief (USART0) Transmitter Holding Register */ -#define REG_USART0_BRGR (0x400A0020U) /**< \brief (USART0) Baud Rate Generator Register */ -#define REG_USART0_RTOR (0x400A0024U) /**< \brief (USART0) Receiver Time-out Register */ -#define REG_USART0_TTGR (0x400A0028U) /**< \brief (USART0) Transmitter Timeguard Register */ -#define REG_USART0_FIDI (0x400A0040U) /**< \brief (USART0) FI DI Ratio Register */ -#define REG_USART0_NER (0x400A0044U) /**< \brief (USART0) Number of Errors Register */ -#define REG_USART0_IF (0x400A004CU) /**< \brief (USART0) IrDA Filter Register */ -#define REG_USART0_MAN (0x400A0050U) /**< \brief (USART0) Manchester Encoder Decoder Register */ -#define REG_USART0_WPMR (0x400A00E4U) /**< \brief (USART0) Write Protect Mode Register */ -#define REG_USART0_WPSR (0x400A00E8U) /**< \brief (USART0) Write Protect Status Register */ -#define REG_USART0_RPR (0x400A0100U) /**< \brief (USART0) Receive Pointer Register */ -#define REG_USART0_RCR (0x400A0104U) /**< \brief (USART0) Receive Counter Register */ -#define REG_USART0_TPR (0x400A0108U) /**< \brief (USART0) Transmit Pointer Register */ -#define REG_USART0_TCR (0x400A010CU) /**< \brief (USART0) Transmit Counter Register */ -#define REG_USART0_RNPR (0x400A0110U) /**< \brief (USART0) Receive Next Pointer Register */ -#define REG_USART0_RNCR (0x400A0114U) /**< \brief (USART0) Receive Next Counter Register */ -#define REG_USART0_TNPR (0x400A0118U) /**< \brief (USART0) Transmit Next Pointer Register */ -#define REG_USART0_TNCR (0x400A011CU) /**< \brief (USART0) Transmit Next Counter Register */ -#define REG_USART0_PTCR (0x400A0120U) /**< \brief (USART0) Transfer Control Register */ -#define REG_USART0_PTSR (0x400A0124U) /**< \brief (USART0) Transfer Status Register */ -#else -#define REG_USART0_CR (*(WoReg*)0x400A0000U) /**< \brief (USART0) Control Register */ -#define REG_USART0_MR (*(RwReg*)0x400A0004U) /**< \brief (USART0) Mode Register */ -#define REG_USART0_IER (*(WoReg*)0x400A0008U) /**< \brief (USART0) Interrupt Enable Register */ -#define REG_USART0_IDR (*(WoReg*)0x400A000CU) /**< \brief (USART0) Interrupt Disable Register */ -#define REG_USART0_IMR (*(RoReg*)0x400A0010U) /**< \brief (USART0) Interrupt Mask Register */ -#define REG_USART0_CSR (*(RoReg*)0x400A0014U) /**< \brief (USART0) Channel Status Register */ -#define REG_USART0_RHR (*(RoReg*)0x400A0018U) /**< \brief (USART0) Receiver Holding Register */ -#define REG_USART0_THR (*(WoReg*)0x400A001CU) /**< \brief (USART0) Transmitter Holding Register */ -#define REG_USART0_BRGR (*(RwReg*)0x400A0020U) /**< \brief (USART0) Baud Rate Generator Register */ -#define REG_USART0_RTOR (*(RwReg*)0x400A0024U) /**< \brief (USART0) Receiver Time-out Register */ -#define REG_USART0_TTGR (*(RwReg*)0x400A0028U) /**< \brief (USART0) Transmitter Timeguard Register */ -#define REG_USART0_FIDI (*(RwReg*)0x400A0040U) /**< \brief (USART0) FI DI Ratio Register */ -#define REG_USART0_NER (*(RoReg*)0x400A0044U) /**< \brief (USART0) Number of Errors Register */ -#define REG_USART0_IF (*(RwReg*)0x400A004CU) /**< \brief (USART0) IrDA Filter Register */ -#define REG_USART0_MAN (*(RwReg*)0x400A0050U) /**< \brief (USART0) Manchester Encoder Decoder Register */ -#define REG_USART0_WPMR (*(RwReg*)0x400A00E4U) /**< \brief (USART0) Write Protect Mode Register */ -#define REG_USART0_WPSR (*(RoReg*)0x400A00E8U) /**< \brief (USART0) Write Protect Status Register */ -#define REG_USART0_RPR (*(RwReg*)0x400A0100U) /**< \brief (USART0) Receive Pointer Register */ -#define REG_USART0_RCR (*(RwReg*)0x400A0104U) /**< \brief (USART0) Receive Counter Register */ -#define REG_USART0_TPR (*(RwReg*)0x400A0108U) /**< \brief (USART0) Transmit Pointer Register */ -#define REG_USART0_TCR (*(RwReg*)0x400A010CU) /**< \brief (USART0) Transmit Counter Register */ -#define REG_USART0_RNPR (*(RwReg*)0x400A0110U) /**< \brief (USART0) Receive Next Pointer Register */ -#define REG_USART0_RNCR (*(RwReg*)0x400A0114U) /**< \brief (USART0) Receive Next Counter Register */ -#define REG_USART0_TNPR (*(RwReg*)0x400A0118U) /**< \brief (USART0) Transmit Next Pointer Register */ -#define REG_USART0_TNCR (*(RwReg*)0x400A011CU) /**< \brief (USART0) Transmit Next Counter Register */ -#define REG_USART0_PTCR (*(WoReg*)0x400A0120U) /**< \brief (USART0) Transfer Control Register */ -#define REG_USART0_PTSR (*(RoReg*)0x400A0124U) /**< \brief (USART0) Transfer Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_USART0_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/usart1.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/usart1.h deleted file mode 100644 index 54385ee4b..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/usart1.h +++ /dev/null @@ -1,104 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_USART1_INSTANCE_ -#define _SAM4E_USART1_INSTANCE_ - -/* ========== Register definition for USART1 peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_USART1_CR (0x400A4000U) /**< \brief (USART1) Control Register */ -#define REG_USART1_MR (0x400A4004U) /**< \brief (USART1) Mode Register */ -#define REG_USART1_IER (0x400A4008U) /**< \brief (USART1) Interrupt Enable Register */ -#define REG_USART1_IDR (0x400A400CU) /**< \brief (USART1) Interrupt Disable Register */ -#define REG_USART1_IMR (0x400A4010U) /**< \brief (USART1) Interrupt Mask Register */ -#define REG_USART1_CSR (0x400A4014U) /**< \brief (USART1) Channel Status Register */ -#define REG_USART1_RHR (0x400A4018U) /**< \brief (USART1) Receiver Holding Register */ -#define REG_USART1_THR (0x400A401CU) /**< \brief (USART1) Transmitter Holding Register */ -#define REG_USART1_BRGR (0x400A4020U) /**< \brief (USART1) Baud Rate Generator Register */ -#define REG_USART1_RTOR (0x400A4024U) /**< \brief (USART1) Receiver Time-out Register */ -#define REG_USART1_TTGR (0x400A4028U) /**< \brief (USART1) Transmitter Timeguard Register */ -#define REG_USART1_FIDI (0x400A4040U) /**< \brief (USART1) FI DI Ratio Register */ -#define REG_USART1_NER (0x400A4044U) /**< \brief (USART1) Number of Errors Register */ -#define REG_USART1_IF (0x400A404CU) /**< \brief (USART1) IrDA Filter Register */ -#define REG_USART1_MAN (0x400A4050U) /**< \brief (USART1) Manchester Encoder Decoder Register */ -#define REG_USART1_WPMR (0x400A40E4U) /**< \brief (USART1) Write Protect Mode Register */ -#define REG_USART1_WPSR (0x400A40E8U) /**< \brief (USART1) Write Protect Status Register */ -#define REG_USART1_RPR (0x400A4100U) /**< \brief (USART1) Receive Pointer Register */ -#define REG_USART1_RCR (0x400A4104U) /**< \brief (USART1) Receive Counter Register */ -#define REG_USART1_TPR (0x400A4108U) /**< \brief (USART1) Transmit Pointer Register */ -#define REG_USART1_TCR (0x400A410CU) /**< \brief (USART1) Transmit Counter Register */ -#define REG_USART1_RNPR (0x400A4110U) /**< \brief (USART1) Receive Next Pointer Register */ -#define REG_USART1_RNCR (0x400A4114U) /**< \brief (USART1) Receive Next Counter Register */ -#define REG_USART1_TNPR (0x400A4118U) /**< \brief (USART1) Transmit Next Pointer Register */ -#define REG_USART1_TNCR (0x400A411CU) /**< \brief (USART1) Transmit Next Counter Register */ -#define REG_USART1_PTCR (0x400A4120U) /**< \brief (USART1) Transfer Control Register */ -#define REG_USART1_PTSR (0x400A4124U) /**< \brief (USART1) Transfer Status Register */ -#else -#define REG_USART1_CR (*(WoReg*)0x400A4000U) /**< \brief (USART1) Control Register */ -#define REG_USART1_MR (*(RwReg*)0x400A4004U) /**< \brief (USART1) Mode Register */ -#define REG_USART1_IER (*(WoReg*)0x400A4008U) /**< \brief (USART1) Interrupt Enable Register */ -#define REG_USART1_IDR (*(WoReg*)0x400A400CU) /**< \brief (USART1) Interrupt Disable Register */ -#define REG_USART1_IMR (*(RoReg*)0x400A4010U) /**< \brief (USART1) Interrupt Mask Register */ -#define REG_USART1_CSR (*(RoReg*)0x400A4014U) /**< \brief (USART1) Channel Status Register */ -#define REG_USART1_RHR (*(RoReg*)0x400A4018U) /**< \brief (USART1) Receiver Holding Register */ -#define REG_USART1_THR (*(WoReg*)0x400A401CU) /**< \brief (USART1) Transmitter Holding Register */ -#define REG_USART1_BRGR (*(RwReg*)0x400A4020U) /**< \brief (USART1) Baud Rate Generator Register */ -#define REG_USART1_RTOR (*(RwReg*)0x400A4024U) /**< \brief (USART1) Receiver Time-out Register */ -#define REG_USART1_TTGR (*(RwReg*)0x400A4028U) /**< \brief (USART1) Transmitter Timeguard Register */ -#define REG_USART1_FIDI (*(RwReg*)0x400A4040U) /**< \brief (USART1) FI DI Ratio Register */ -#define REG_USART1_NER (*(RoReg*)0x400A4044U) /**< \brief (USART1) Number of Errors Register */ -#define REG_USART1_IF (*(RwReg*)0x400A404CU) /**< \brief (USART1) IrDA Filter Register */ -#define REG_USART1_MAN (*(RwReg*)0x400A4050U) /**< \brief (USART1) Manchester Encoder Decoder Register */ -#define REG_USART1_WPMR (*(RwReg*)0x400A40E4U) /**< \brief (USART1) Write Protect Mode Register */ -#define REG_USART1_WPSR (*(RoReg*)0x400A40E8U) /**< \brief (USART1) Write Protect Status Register */ -#define REG_USART1_RPR (*(RwReg*)0x400A4100U) /**< \brief (USART1) Receive Pointer Register */ -#define REG_USART1_RCR (*(RwReg*)0x400A4104U) /**< \brief (USART1) Receive Counter Register */ -#define REG_USART1_TPR (*(RwReg*)0x400A4108U) /**< \brief (USART1) Transmit Pointer Register */ -#define REG_USART1_TCR (*(RwReg*)0x400A410CU) /**< \brief (USART1) Transmit Counter Register */ -#define REG_USART1_RNPR (*(RwReg*)0x400A4110U) /**< \brief (USART1) Receive Next Pointer Register */ -#define REG_USART1_RNCR (*(RwReg*)0x400A4114U) /**< \brief (USART1) Receive Next Counter Register */ -#define REG_USART1_TNPR (*(RwReg*)0x400A4118U) /**< \brief (USART1) Transmit Next Pointer Register */ -#define REG_USART1_TNCR (*(RwReg*)0x400A411CU) /**< \brief (USART1) Transmit Next Counter Register */ -#define REG_USART1_PTCR (*(WoReg*)0x400A4120U) /**< \brief (USART1) Transfer Control Register */ -#define REG_USART1_PTSR (*(RoReg*)0x400A4124U) /**< \brief (USART1) Transfer Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_USART1_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/wdt.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/wdt.h deleted file mode 100644 index 11d837506..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/instance/wdt.h +++ /dev/null @@ -1,56 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_WDT_INSTANCE_ -#define _SAM4E_WDT_INSTANCE_ - -/* ========== Register definition for WDT peripheral ========== */ -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define REG_WDT_CR (0x400E1850U) /**< \brief (WDT) Control Register */ -#define REG_WDT_MR (0x400E1854U) /**< \brief (WDT) Mode Register */ -#define REG_WDT_SR (0x400E1858U) /**< \brief (WDT) Status Register */ -#else -#define REG_WDT_CR (*(WoReg*)0x400E1850U) /**< \brief (WDT) Control Register */ -#define REG_WDT_MR (*(RwReg*)0x400E1854U) /**< \brief (WDT) Mode Register */ -#define REG_WDT_SR (*(RoReg*)0x400E1858U) /**< \brief (WDT) Status Register */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ - -#endif /* _SAM4E_WDT_INSTANCE_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e16c.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e16c.h deleted file mode 100644 index 019224f3a..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e16c.h +++ /dev/null @@ -1,491 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E16C_PIO_ -#define _SAM4E16C_PIO_ - -#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ -#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ -#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ -#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ -#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ -#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ -#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ -#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ -#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ -#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ -#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ -#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ -#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ -#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ -#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ -#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ -#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ -#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ -#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ -#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ -#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ -#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ -#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ -#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ -#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ -#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ -#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ -#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ -#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ -#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ -#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ -#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ -#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ -#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ -#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ -#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ -#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ -#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ -#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ -#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ -#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ -#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ -#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ -#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ -#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ -#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ -#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ -#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ -#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ -#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ -#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ -#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ -#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ -#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ -#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ -#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ -#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ -#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ -#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ -#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ -#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ -#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ -#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ -#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ -#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ -#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ -#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ -#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ -#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ -#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ -#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ -#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ -#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ -#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ -#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ -#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ -#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ -#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ -#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ -#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ -#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ -#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ -#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ -#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ -#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ -#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ -#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ -#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ -#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ -#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ -#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ -#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ -#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ -#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ -#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ -#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ -#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ -#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ -#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ -#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ -#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ -#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ -#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ -#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ -#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ -#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ -#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ -#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ -#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ -#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ -#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ -#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ -#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ -#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ -#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ -#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ -#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ -/* ========== Pio definition for AFEC0 peripheral ========== */ -#define PIO_PA17X1_AFE0_AD0 (1u << 17) /**< \brief Afec0 signal: AFE0_AD0 */ -#define PIO_PA18X1_AFE0_AD1 (1u << 18) /**< \brief Afec0 signal: AFE0_AD1 */ -#define PIO_PC30X1_AFE0_AD10 (1u << 30) /**< \brief Afec0 signal: AFE0_AD10 */ -#define PIO_PC31X1_AFE0_AD11 (1u << 31) /**< \brief Afec0 signal: AFE0_AD11 */ -#define PIO_PC26X1_AFE0_AD12 (1u << 26) /**< \brief Afec0 signal: AFE0_AD12 */ -#define PIO_PC27X1_AFE0_AD13 (1u << 27) /**< \brief Afec0 signal: AFE0_AD13 */ -#define PIO_PC0X1_AFE0_AD14 (1u << 0) /**< \brief Afec0 signal: AFE0_AD14 */ -#define PIO_PA19X1_AFE0_AD2 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ -#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ -#define PIO_PA20X1_AFE0_AD3 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ -#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ -#define PIO_PB0X1_AFE0_AD4 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ -#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ -#define PIO_PB1X1_AFE0_AD5 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ -#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ -#define PIO_PC13X1_AFE0_AD6 (1u << 13) /**< \brief Afec0 signal: AFE0_AD6 */ -#define PIO_PC15X1_AFE0_AD7 (1u << 15) /**< \brief Afec0 signal: AFE0_AD7 */ -#define PIO_PC12X1_AFE0_AD8 (1u << 12) /**< \brief Afec0 signal: AFE0_AD8 */ -#define PIO_PC29X1_AFE0_AD9 (1u << 29) /**< \brief Afec0 signal: AFE0_AD9 */ -#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ -/* ========== Pio definition for AFEC1 peripheral ========== */ -#define PIO_PB2X1_AFE1_AD0 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ -#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ -#define PIO_PB3X1_AFE1_AD1 (1u << 3) /**< \brief Afec1 signal: AFE1_AD1 */ -#define PIO_PA21X1_AFE1_AD2 (1u << 21) /**< \brief Afec1 signal: AFE1_AD2 */ -#define PIO_PA22X1_AFE1_AD3 (1u << 22) /**< \brief Afec1 signal: AFE1_AD3 */ -#define PIO_PC1X1_AFE1_AD4 (1u << 1) /**< \brief Afec1 signal: AFE1_AD4 */ -#define PIO_PC2X1_AFE1_AD5 (1u << 2) /**< \brief Afec1 signal: AFE1_AD5 */ -#define PIO_PC3X1_AFE1_AD6 (1u << 3) /**< \brief Afec1 signal: AFE1_AD6 */ -#define PIO_PC4X1_AFE1_AD7 (1u << 4) /**< \brief Afec1 signal: AFE1_AD7 */ -/* ========== Pio definition for CAN0 peripheral ========== */ -#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Can0 signal: CANRX0 */ -#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Can0 signal: CANTX0 */ -/* ========== Pio definition for CAN1 peripheral ========== */ -#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Can1 signal: CANRX1 */ -#define PIO_PC15C_CANTX1 (1u << 15) /**< \brief Can1 signal: CANTX1 */ -/* ========== Pio definition for DACC peripheral ========== */ -#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ -#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ -#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ -/* ========== Pio definition for GMAC peripheral ========== */ -#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ -#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ -#define PIO_PD4A_GCRSDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ -#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ -#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ -#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ -#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ -#define PIO_PD6A_GRX0 (1u << 6) /**< \brief Gmac signal: GRX0 */ -#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ -#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ -#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ -#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ -#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ -#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ -#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ -#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ -#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ -#define PIO_PD0A_GREFCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ -#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ -#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ -/* ========== Pio definition for HSMCI peripheral ========== */ -#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ -#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ -#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ -#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ -#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ -#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ -/* ========== Pio definition for PIOA peripheral ========== */ -#define PIO_PA24X1_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ -#define PIO_PA25X1_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ -#define PIO_PA26X1_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ -#define PIO_PA27X1_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ -#define PIO_PA28X1_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ -#define PIO_PA29X1_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ -#define PIO_PA31X1_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ -#define PIO_PA23X1_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ -#define PIO_PA30X1_WKUP11 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ -#define PIO_PA30X1_PIODC6 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ -#define PIO_PA15X1_WKUP14 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ -#define PIO_PA15X1_PIODCEN1 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ -#define PIO_PA16X1_WKUP15 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ -#define PIO_PA16X1_PIODCEN2 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ -/* ========== Pio definition for PMC peripheral ========== */ -#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ -#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ -#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ -#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ -#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ -#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ -#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ -/* ========== Pio definition for PWM peripheral ========== */ -#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ -#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PD20A_PWMH0 (1u << 20) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PD21A_PWMH1 (1u << 21) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PD22A_PWMH2 (1u << 22) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PD23A_PWMH3 (1u << 23) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ -#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ -#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ -#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ -#define PIO_PD24A_PWML0 (1u << 24) /**< \brief Pwm signal: PWML0 */ -#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ -#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ -#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ -#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ -#define PIO_PD25A_PWML1 (1u << 25) /**< \brief Pwm signal: PWML1 */ -#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ -#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ -#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ -#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ -#define PIO_PD26A_PWML2 (1u << 26) /**< \brief Pwm signal: PWML2 */ -#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ -#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ -#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ -#define PIO_PD27A_PWML3 (1u << 27) /**< \brief Pwm signal: PWML3 */ -/* ========== Pio definition for SPI peripheral ========== */ -#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ -#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ -#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ -#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ -#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ -#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ -#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ -#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ -#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ -#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ -#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ -#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ -#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ -#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ -/* ========== Pio definition for TC0 peripheral ========== */ -#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ -#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ -#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ -#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ -#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ -#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ -#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ -#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ -#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ -/* ========== Pio definition for TC1 peripheral ========== */ -#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ -#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ -#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ -#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ -#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ -#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ -#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ -#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ -#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ -/* ========== Pio definition for TC2 peripheral ========== */ -#define PIO_PC7B_TCLK6 (1u << 7) /**< \brief Tc2 signal: TCLK6 */ -#define PIO_PC10B_TCLK7 (1u << 10) /**< \brief Tc2 signal: TCLK7 */ -#define PIO_PC14B_TCLK8 (1u << 14) /**< \brief Tc2 signal: TCLK8 */ -#define PIO_PC5B_TIOA6 (1u << 5) /**< \brief Tc2 signal: TIOA6 */ -#define PIO_PC8B_TIOA7 (1u << 8) /**< \brief Tc2 signal: TIOA7 */ -#define PIO_PC11B_TIOA8 (1u << 11) /**< \brief Tc2 signal: TIOA8 */ -#define PIO_PC6B_TIOB6 (1u << 6) /**< \brief Tc2 signal: TIOB6 */ -#define PIO_PC9B_TIOB7 (1u << 9) /**< \brief Tc2 signal: TIOB7 */ -#define PIO_PC12B_TIOB8 (1u << 12) /**< \brief Tc2 signal: TIOB8 */ -/* ========== Pio definition for TWI0 peripheral ========== */ -#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ -#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ -/* ========== Pio definition for TWI1 peripheral ========== */ -#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ -#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ -/* ========== Pio definition for UART0 peripheral ========== */ -#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ -#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ -/* ========== Pio definition for UART1 peripheral ========== */ -#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ -#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ -/* ========== Pio definition for USART0 peripheral ========== */ -#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ -#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ -#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ -#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ -#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ -/* ========== Pio definition for USART1 peripheral ========== */ -#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ -#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ -#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ -#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ -#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ -#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ -#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ -#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ -#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ -/* ========== Pio indexes ========== */ -#define PIO_PA0_IDX 0 -#define PIO_PA1_IDX 1 -#define PIO_PA2_IDX 2 -#define PIO_PA3_IDX 3 -#define PIO_PA4_IDX 4 -#define PIO_PA5_IDX 5 -#define PIO_PA6_IDX 6 -#define PIO_PA7_IDX 7 -#define PIO_PA8_IDX 8 -#define PIO_PA9_IDX 9 -#define PIO_PA10_IDX 10 -#define PIO_PA11_IDX 11 -#define PIO_PA12_IDX 12 -#define PIO_PA13_IDX 13 -#define PIO_PA14_IDX 14 -#define PIO_PA15_IDX 15 -#define PIO_PA16_IDX 16 -#define PIO_PA17_IDX 17 -#define PIO_PA18_IDX 18 -#define PIO_PA19_IDX 19 -#define PIO_PA20_IDX 20 -#define PIO_PA21_IDX 21 -#define PIO_PA22_IDX 22 -#define PIO_PA23_IDX 23 -#define PIO_PA24_IDX 24 -#define PIO_PA25_IDX 25 -#define PIO_PA26_IDX 26 -#define PIO_PA27_IDX 27 -#define PIO_PA28_IDX 28 -#define PIO_PA29_IDX 29 -#define PIO_PA30_IDX 30 -#define PIO_PA31_IDX 31 -#define PIO_PB0_IDX 32 -#define PIO_PB1_IDX 33 -#define PIO_PB2_IDX 34 -#define PIO_PB3_IDX 35 -#define PIO_PB4_IDX 36 -#define PIO_PB5_IDX 37 -#define PIO_PB6_IDX 38 -#define PIO_PB7_IDX 39 -#define PIO_PB8_IDX 40 -#define PIO_PB9_IDX 41 -#define PIO_PB10_IDX 42 -#define PIO_PB11_IDX 43 -#define PIO_PB12_IDX 44 -#define PIO_PB13_IDX 45 -#define PIO_PB14_IDX 46 -#define PIO_PC0_IDX 64 -#define PIO_PC1_IDX 65 -#define PIO_PC2_IDX 66 -#define PIO_PC3_IDX 67 -#define PIO_PC4_IDX 68 -#define PIO_PC5_IDX 69 -#define PIO_PC6_IDX 70 -#define PIO_PC7_IDX 71 -#define PIO_PC8_IDX 72 -#define PIO_PC9_IDX 73 -#define PIO_PC10_IDX 74 -#define PIO_PC11_IDX 75 -#define PIO_PC12_IDX 76 -#define PIO_PC13_IDX 77 -#define PIO_PC14_IDX 78 -#define PIO_PC15_IDX 79 -#define PIO_PC16_IDX 80 -#define PIO_PC17_IDX 81 -#define PIO_PC18_IDX 82 -#define PIO_PC19_IDX 83 -#define PIO_PC20_IDX 84 -#define PIO_PC21_IDX 85 -#define PIO_PC22_IDX 86 -#define PIO_PC23_IDX 87 -#define PIO_PC24_IDX 88 -#define PIO_PC25_IDX 89 -#define PIO_PC26_IDX 90 -#define PIO_PC27_IDX 91 -#define PIO_PC28_IDX 92 -#define PIO_PC29_IDX 93 -#define PIO_PC30_IDX 94 -#define PIO_PC31_IDX 95 -#define PIO_PD0_IDX 96 -#define PIO_PD1_IDX 97 -#define PIO_PD2_IDX 98 -#define PIO_PD3_IDX 99 -#define PIO_PD4_IDX 100 -#define PIO_PD5_IDX 101 -#define PIO_PD6_IDX 102 -#define PIO_PD7_IDX 103 -#define PIO_PD8_IDX 104 -#define PIO_PD9_IDX 105 -#define PIO_PD10_IDX 106 -#define PIO_PD11_IDX 107 -#define PIO_PD12_IDX 108 -#define PIO_PD13_IDX 109 -#define PIO_PD14_IDX 110 -#define PIO_PD15_IDX 111 -#define PIO_PD16_IDX 112 -#define PIO_PD17_IDX 113 -#define PIO_PD18_IDX 114 -#define PIO_PD19_IDX 115 -#define PIO_PD20_IDX 116 -#define PIO_PD21_IDX 117 -#define PIO_PD22_IDX 118 -#define PIO_PD23_IDX 119 -#define PIO_PD24_IDX 120 -#define PIO_PD25_IDX 121 -#define PIO_PD26_IDX 122 -#define PIO_PD27_IDX 123 -#define PIO_PD28_IDX 124 -#define PIO_PD29_IDX 125 -#define PIO_PD30_IDX 126 -#define PIO_PD31_IDX 127 -#define PIO_PE0_IDX 128 -#define PIO_PE1_IDX 129 -#define PIO_PE2_IDX 130 -#define PIO_PE3_IDX 131 -#define PIO_PE4_IDX 132 -#define PIO_PE5_IDX 133 - -#endif /* _SAM4E16C_PIO_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e16e.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e16e.h deleted file mode 100644 index 2036936ef..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e16e.h +++ /dev/null @@ -1,537 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E16E_PIO_ -#define _SAM4E16E_PIO_ - -#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ -#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ -#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ -#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ -#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ -#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ -#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ -#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ -#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ -#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ -#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ -#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ -#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ -#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ -#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ -#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ -#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ -#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ -#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ -#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ -#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ -#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ -#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ -#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ -#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ -#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ -#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ -#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ -#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ -#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ -#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ -#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ -#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ -#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ -#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ -#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ -#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ -#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ -#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ -#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ -#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ -#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ -#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ -#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ -#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ -#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ -#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ -#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ -#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ -#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ -#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ -#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ -#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ -#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ -#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ -#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ -#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ -#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ -#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ -#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ -#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ -#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ -#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ -#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ -#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ -#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ -#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ -#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ -#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ -#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ -#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ -#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ -#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ -#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ -#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ -#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ -#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ -#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ -#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ -#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ -#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ -#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ -#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ -#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ -#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ -#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ -#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ -#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ -#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ -#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ -#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ -#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ -#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ -#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ -#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ -#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ -#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ -#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ -#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ -#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ -#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ -#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ -#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ -#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ -#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ -#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ -#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ -#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ -#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ -#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ -#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ -#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ -#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ -#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ -#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ -#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ -#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ -/* ========== Pio definition for AFEC0 peripheral ========== */ -#define PIO_PA17X1_AFE0_AD0 (1u << 17) /**< \brief Afec0 signal: AFE0_AD0 */ -#define PIO_PA18X1_AFE0_AD1 (1u << 18) /**< \brief Afec0 signal: AFE0_AD1 */ -#define PIO_PC30X1_AFE0_AD10 (1u << 30) /**< \brief Afec0 signal: AFE0_AD10 */ -#define PIO_PC31X1_AFE0_AD11 (1u << 31) /**< \brief Afec0 signal: AFE0_AD11 */ -#define PIO_PC26X1_AFE0_AD12 (1u << 26) /**< \brief Afec0 signal: AFE0_AD12 */ -#define PIO_PC27X1_AFE0_AD13 (1u << 27) /**< \brief Afec0 signal: AFE0_AD13 */ -#define PIO_PC0X1_AFE0_AD14 (1u << 0) /**< \brief Afec0 signal: AFE0_AD14 */ -#define PIO_PA19X1_AFE0_AD2 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ -#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ -#define PIO_PA20X1_AFE0_AD3 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ -#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ -#define PIO_PB0X1_AFE0_AD4 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ -#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ -#define PIO_PB1X1_AFE0_AD5 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ -#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ -#define PIO_PC13X1_AFE0_AD6 (1u << 13) /**< \brief Afec0 signal: AFE0_AD6 */ -#define PIO_PC15X1_AFE0_AD7 (1u << 15) /**< \brief Afec0 signal: AFE0_AD7 */ -#define PIO_PC12X1_AFE0_AD8 (1u << 12) /**< \brief Afec0 signal: AFE0_AD8 */ -#define PIO_PC29X1_AFE0_AD9 (1u << 29) /**< \brief Afec0 signal: AFE0_AD9 */ -#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ -/* ========== Pio definition for AFEC1 peripheral ========== */ -#define PIO_PB2X1_AFE1_AD0 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ -#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ -#define PIO_PB3X1_AFE1_AD1 (1u << 3) /**< \brief Afec1 signal: AFE1_AD1 */ -#define PIO_PA21X1_AFE1_AD2 (1u << 21) /**< \brief Afec1 signal: AFE1_AD2 */ -#define PIO_PA22X1_AFE1_AD3 (1u << 22) /**< \brief Afec1 signal: AFE1_AD3 */ -#define PIO_PC1X1_AFE1_AD4 (1u << 1) /**< \brief Afec1 signal: AFE1_AD4 */ -#define PIO_PC2X1_AFE1_AD5 (1u << 2) /**< \brief Afec1 signal: AFE1_AD5 */ -#define PIO_PC3X1_AFE1_AD6 (1u << 3) /**< \brief Afec1 signal: AFE1_AD6 */ -#define PIO_PC4X1_AFE1_AD7 (1u << 4) /**< \brief Afec1 signal: AFE1_AD7 */ -/* ========== Pio definition for CAN0 peripheral ========== */ -#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Can0 signal: CANRX0 */ -#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Can0 signal: CANTX0 */ -/* ========== Pio definition for CAN1 peripheral ========== */ -#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Can1 signal: CANRX1 */ -#define PIO_PC15C_CANTX1 (1u << 15) /**< \brief Can1 signal: CANTX1 */ -/* ========== Pio definition for DACC peripheral ========== */ -#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ -#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ -#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ -/* ========== Pio definition for EBI peripheral ========== */ -#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0 */ -#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ -#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ -#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ -#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ -#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ -#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ -#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ -#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16 */ -#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17 */ -#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ -#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ -#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ -#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ -#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ -#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ -#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ -#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ -#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ -#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ -#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ -#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ -#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ -#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ -#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ -#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ -#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ -#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ -#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ -#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ -#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ -#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ -#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ -#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ -#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ -#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ -#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ -#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1 */ -#define PIO_PD18A_NCS1 (1u << 18) /**< \brief Ebi signal: NCS1 */ -#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ -#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ -#define PIO_PD19A_NCS3 (1u << 19) /**< \brief Ebi signal: NCS3 */ -#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ -#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ -#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWE */ -/* ========== Pio definition for GMAC peripheral ========== */ -#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ -#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ -#define PIO_PD4A_GCRSDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ -#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ -#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ -#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ -#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ -#define PIO_PD6A_GRX0 (1u << 6) /**< \brief Gmac signal: GRX0 */ -#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ -#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ -#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ -#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ -#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ -#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ -#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ -#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ -#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ -#define PIO_PD0A_GREFCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ -#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ -#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ -/* ========== Pio definition for HSMCI peripheral ========== */ -#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ -#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ -#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ -#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ -#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ -#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ -/* ========== Pio definition for PIOA peripheral ========== */ -#define PIO_PA24X1_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ -#define PIO_PA25X1_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ -#define PIO_PA26X1_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ -#define PIO_PA27X1_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ -#define PIO_PA28X1_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ -#define PIO_PA29X1_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ -#define PIO_PA31X1_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ -#define PIO_PA23X1_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ -#define PIO_PA30X1_WKUP11 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ -#define PIO_PA30X1_PIODC6 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ -#define PIO_PA15X1_WKUP14 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ -#define PIO_PA15X1_PIODCEN1 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ -#define PIO_PA16X1_WKUP15 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ -#define PIO_PA16X1_PIODCEN2 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ -/* ========== Pio definition for PMC peripheral ========== */ -#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ -#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ -#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ -#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ -#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ -#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ -#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ -/* ========== Pio definition for PWM peripheral ========== */ -#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ -#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PD20A_PWMH0 (1u << 20) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PD21A_PWMH1 (1u << 21) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PD22A_PWMH2 (1u << 22) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PD23A_PWMH3 (1u << 23) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ -#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ -#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ -#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ -#define PIO_PD24A_PWML0 (1u << 24) /**< \brief Pwm signal: PWML0 */ -#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ -#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ -#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ -#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ -#define PIO_PD25A_PWML1 (1u << 25) /**< \brief Pwm signal: PWML1 */ -#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ -#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ -#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ -#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ -#define PIO_PD26A_PWML2 (1u << 26) /**< \brief Pwm signal: PWML2 */ -#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ -#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ -#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ -#define PIO_PD27A_PWML3 (1u << 27) /**< \brief Pwm signal: PWML3 */ -/* ========== Pio definition for SPI peripheral ========== */ -#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ -#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ -#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ -#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ -#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ -#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ -#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ -#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ -#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ -#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ -#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ -#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ -#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ -#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ -/* ========== Pio definition for TC0 peripheral ========== */ -#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ -#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ -#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ -#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ -#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ -#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ -#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ -#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ -#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ -/* ========== Pio definition for TC1 peripheral ========== */ -#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ -#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ -#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ -#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ -#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ -#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ -#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ -#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ -#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ -/* ========== Pio definition for TC2 peripheral ========== */ -#define PIO_PC7B_TCLK6 (1u << 7) /**< \brief Tc2 signal: TCLK6 */ -#define PIO_PC10B_TCLK7 (1u << 10) /**< \brief Tc2 signal: TCLK7 */ -#define PIO_PC14B_TCLK8 (1u << 14) /**< \brief Tc2 signal: TCLK8 */ -#define PIO_PC5B_TIOA6 (1u << 5) /**< \brief Tc2 signal: TIOA6 */ -#define PIO_PC8B_TIOA7 (1u << 8) /**< \brief Tc2 signal: TIOA7 */ -#define PIO_PC11B_TIOA8 (1u << 11) /**< \brief Tc2 signal: TIOA8 */ -#define PIO_PC6B_TIOB6 (1u << 6) /**< \brief Tc2 signal: TIOB6 */ -#define PIO_PC9B_TIOB7 (1u << 9) /**< \brief Tc2 signal: TIOB7 */ -#define PIO_PC12B_TIOB8 (1u << 12) /**< \brief Tc2 signal: TIOB8 */ -/* ========== Pio definition for TWI0 peripheral ========== */ -#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ -#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ -/* ========== Pio definition for TWI1 peripheral ========== */ -#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ -#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ -/* ========== Pio definition for UART0 peripheral ========== */ -#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ -#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ -/* ========== Pio definition for UART1 peripheral ========== */ -#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ -#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ -/* ========== Pio definition for USART0 peripheral ========== */ -#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ -#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ -#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ -#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ -#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ -/* ========== Pio definition for USART1 peripheral ========== */ -#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ -#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ -#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ -#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ -#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ -#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ -#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ -#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ -#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ -/* ========== Pio indexes ========== */ -#define PIO_PA0_IDX 0 -#define PIO_PA1_IDX 1 -#define PIO_PA2_IDX 2 -#define PIO_PA3_IDX 3 -#define PIO_PA4_IDX 4 -#define PIO_PA5_IDX 5 -#define PIO_PA6_IDX 6 -#define PIO_PA7_IDX 7 -#define PIO_PA8_IDX 8 -#define PIO_PA9_IDX 9 -#define PIO_PA10_IDX 10 -#define PIO_PA11_IDX 11 -#define PIO_PA12_IDX 12 -#define PIO_PA13_IDX 13 -#define PIO_PA14_IDX 14 -#define PIO_PA15_IDX 15 -#define PIO_PA16_IDX 16 -#define PIO_PA17_IDX 17 -#define PIO_PA18_IDX 18 -#define PIO_PA19_IDX 19 -#define PIO_PA20_IDX 20 -#define PIO_PA21_IDX 21 -#define PIO_PA22_IDX 22 -#define PIO_PA23_IDX 23 -#define PIO_PA24_IDX 24 -#define PIO_PA25_IDX 25 -#define PIO_PA26_IDX 26 -#define PIO_PA27_IDX 27 -#define PIO_PA28_IDX 28 -#define PIO_PA29_IDX 29 -#define PIO_PA30_IDX 30 -#define PIO_PA31_IDX 31 -#define PIO_PB0_IDX 32 -#define PIO_PB1_IDX 33 -#define PIO_PB2_IDX 34 -#define PIO_PB3_IDX 35 -#define PIO_PB4_IDX 36 -#define PIO_PB5_IDX 37 -#define PIO_PB6_IDX 38 -#define PIO_PB7_IDX 39 -#define PIO_PB8_IDX 40 -#define PIO_PB9_IDX 41 -#define PIO_PB10_IDX 42 -#define PIO_PB11_IDX 43 -#define PIO_PB12_IDX 44 -#define PIO_PB13_IDX 45 -#define PIO_PB14_IDX 46 -#define PIO_PC0_IDX 64 -#define PIO_PC1_IDX 65 -#define PIO_PC2_IDX 66 -#define PIO_PC3_IDX 67 -#define PIO_PC4_IDX 68 -#define PIO_PC5_IDX 69 -#define PIO_PC6_IDX 70 -#define PIO_PC7_IDX 71 -#define PIO_PC8_IDX 72 -#define PIO_PC9_IDX 73 -#define PIO_PC10_IDX 74 -#define PIO_PC11_IDX 75 -#define PIO_PC12_IDX 76 -#define PIO_PC13_IDX 77 -#define PIO_PC14_IDX 78 -#define PIO_PC15_IDX 79 -#define PIO_PC16_IDX 80 -#define PIO_PC17_IDX 81 -#define PIO_PC18_IDX 82 -#define PIO_PC19_IDX 83 -#define PIO_PC20_IDX 84 -#define PIO_PC21_IDX 85 -#define PIO_PC22_IDX 86 -#define PIO_PC23_IDX 87 -#define PIO_PC24_IDX 88 -#define PIO_PC25_IDX 89 -#define PIO_PC26_IDX 90 -#define PIO_PC27_IDX 91 -#define PIO_PC28_IDX 92 -#define PIO_PC29_IDX 93 -#define PIO_PC30_IDX 94 -#define PIO_PC31_IDX 95 -#define PIO_PD0_IDX 96 -#define PIO_PD1_IDX 97 -#define PIO_PD2_IDX 98 -#define PIO_PD3_IDX 99 -#define PIO_PD4_IDX 100 -#define PIO_PD5_IDX 101 -#define PIO_PD6_IDX 102 -#define PIO_PD7_IDX 103 -#define PIO_PD8_IDX 104 -#define PIO_PD9_IDX 105 -#define PIO_PD10_IDX 106 -#define PIO_PD11_IDX 107 -#define PIO_PD12_IDX 108 -#define PIO_PD13_IDX 109 -#define PIO_PD14_IDX 110 -#define PIO_PD15_IDX 111 -#define PIO_PD16_IDX 112 -#define PIO_PD17_IDX 113 -#define PIO_PD18_IDX 114 -#define PIO_PD19_IDX 115 -#define PIO_PD20_IDX 116 -#define PIO_PD21_IDX 117 -#define PIO_PD22_IDX 118 -#define PIO_PD23_IDX 119 -#define PIO_PD24_IDX 120 -#define PIO_PD25_IDX 121 -#define PIO_PD26_IDX 122 -#define PIO_PD27_IDX 123 -#define PIO_PD28_IDX 124 -#define PIO_PD29_IDX 125 -#define PIO_PD30_IDX 126 -#define PIO_PD31_IDX 127 -#define PIO_PE0_IDX 128 -#define PIO_PE1_IDX 129 -#define PIO_PE2_IDX 130 -#define PIO_PE3_IDX 131 -#define PIO_PE4_IDX 132 -#define PIO_PE5_IDX 133 - -#endif /* _SAM4E16E_PIO_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e8c.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e8c.h deleted file mode 100644 index 0db996918..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e8c.h +++ /dev/null @@ -1,491 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E8C_PIO_ -#define _SAM4E8C_PIO_ - -#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ -#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ -#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ -#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ -#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ -#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ -#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ -#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ -#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ -#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ -#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ -#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ -#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ -#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ -#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ -#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ -#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ -#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ -#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ -#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ -#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ -#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ -#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ -#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ -#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ -#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ -#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ -#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ -#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ -#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ -#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ -#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ -#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ -#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ -#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ -#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ -#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ -#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ -#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ -#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ -#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ -#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ -#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ -#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ -#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ -#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ -#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ -#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ -#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ -#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ -#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ -#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ -#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ -#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ -#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ -#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ -#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ -#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ -#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ -#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ -#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ -#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ -#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ -#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ -#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ -#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ -#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ -#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ -#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ -#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ -#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ -#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ -#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ -#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ -#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ -#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ -#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ -#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ -#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ -#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ -#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ -#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ -#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ -#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ -#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ -#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ -#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ -#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ -#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ -#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ -#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ -#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ -#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ -#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ -#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ -#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ -#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ -#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ -#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ -#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ -#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ -#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ -#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ -#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ -#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ -#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ -#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ -#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ -#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ -#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ -#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ -#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ -#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ -#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ -#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ -#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ -#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ -/* ========== Pio definition for AFEC0 peripheral ========== */ -#define PIO_PA17X1_AFE0_AD0 (1u << 17) /**< \brief Afec0 signal: AFE0_AD0 */ -#define PIO_PA18X1_AFE0_AD1 (1u << 18) /**< \brief Afec0 signal: AFE0_AD1 */ -#define PIO_PC30X1_AFE0_AD10 (1u << 30) /**< \brief Afec0 signal: AFE0_AD10 */ -#define PIO_PC31X1_AFE0_AD11 (1u << 31) /**< \brief Afec0 signal: AFE0_AD11 */ -#define PIO_PC26X1_AFE0_AD12 (1u << 26) /**< \brief Afec0 signal: AFE0_AD12 */ -#define PIO_PC27X1_AFE0_AD13 (1u << 27) /**< \brief Afec0 signal: AFE0_AD13 */ -#define PIO_PC0X1_AFE0_AD14 (1u << 0) /**< \brief Afec0 signal: AFE0_AD14 */ -#define PIO_PA19X1_AFE0_AD2 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ -#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ -#define PIO_PA20X1_AFE0_AD3 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ -#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ -#define PIO_PB0X1_AFE0_AD4 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ -#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ -#define PIO_PB1X1_AFE0_AD5 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ -#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ -#define PIO_PC13X1_AFE0_AD6 (1u << 13) /**< \brief Afec0 signal: AFE0_AD6 */ -#define PIO_PC15X1_AFE0_AD7 (1u << 15) /**< \brief Afec0 signal: AFE0_AD7 */ -#define PIO_PC12X1_AFE0_AD8 (1u << 12) /**< \brief Afec0 signal: AFE0_AD8 */ -#define PIO_PC29X1_AFE0_AD9 (1u << 29) /**< \brief Afec0 signal: AFE0_AD9 */ -#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ -/* ========== Pio definition for AFEC1 peripheral ========== */ -#define PIO_PB2X1_AFE1_AD0 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ -#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ -#define PIO_PB3X1_AFE1_AD1 (1u << 3) /**< \brief Afec1 signal: AFE1_AD1 */ -#define PIO_PA21X1_AFE1_AD2 (1u << 21) /**< \brief Afec1 signal: AFE1_AD2 */ -#define PIO_PA22X1_AFE1_AD3 (1u << 22) /**< \brief Afec1 signal: AFE1_AD3 */ -#define PIO_PC1X1_AFE1_AD4 (1u << 1) /**< \brief Afec1 signal: AFE1_AD4 */ -#define PIO_PC2X1_AFE1_AD5 (1u << 2) /**< \brief Afec1 signal: AFE1_AD5 */ -#define PIO_PC3X1_AFE1_AD6 (1u << 3) /**< \brief Afec1 signal: AFE1_AD6 */ -#define PIO_PC4X1_AFE1_AD7 (1u << 4) /**< \brief Afec1 signal: AFE1_AD7 */ -/* ========== Pio definition for CAN0 peripheral ========== */ -#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Can0 signal: CANRX0 */ -#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Can0 signal: CANTX0 */ -/* ========== Pio definition for CAN1 peripheral ========== */ -#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Can1 signal: CANRX1 */ -#define PIO_PC15C_CANTX1 (1u << 15) /**< \brief Can1 signal: CANTX1 */ -/* ========== Pio definition for DACC peripheral ========== */ -#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ -#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ -#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ -/* ========== Pio definition for GMAC peripheral ========== */ -#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ -#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ -#define PIO_PD4A_GCRSDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ -#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ -#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ -#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ -#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ -#define PIO_PD6A_GRX0 (1u << 6) /**< \brief Gmac signal: GRX0 */ -#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ -#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ -#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ -#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ -#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ -#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ -#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ -#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ -#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ -#define PIO_PD0A_GREFCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ -#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ -#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ -/* ========== Pio definition for HSMCI peripheral ========== */ -#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ -#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ -#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ -#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ -#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ -#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ -/* ========== Pio definition for PIOA peripheral ========== */ -#define PIO_PA24X1_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ -#define PIO_PA25X1_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ -#define PIO_PA26X1_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ -#define PIO_PA27X1_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ -#define PIO_PA28X1_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ -#define PIO_PA29X1_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ -#define PIO_PA31X1_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ -#define PIO_PA23X1_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ -#define PIO_PA30X1_WKUP11 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ -#define PIO_PA30X1_PIODC6 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ -#define PIO_PA15X1_WKUP14 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ -#define PIO_PA15X1_PIODCEN1 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ -#define PIO_PA16X1_WKUP15 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ -#define PIO_PA16X1_PIODCEN2 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ -/* ========== Pio definition for PMC peripheral ========== */ -#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ -#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ -#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ -#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ -#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ -#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ -#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ -/* ========== Pio definition for PWM peripheral ========== */ -#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ -#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PD20A_PWMH0 (1u << 20) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PD21A_PWMH1 (1u << 21) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PD22A_PWMH2 (1u << 22) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PD23A_PWMH3 (1u << 23) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ -#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ -#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ -#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ -#define PIO_PD24A_PWML0 (1u << 24) /**< \brief Pwm signal: PWML0 */ -#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ -#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ -#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ -#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ -#define PIO_PD25A_PWML1 (1u << 25) /**< \brief Pwm signal: PWML1 */ -#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ -#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ -#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ -#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ -#define PIO_PD26A_PWML2 (1u << 26) /**< \brief Pwm signal: PWML2 */ -#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ -#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ -#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ -#define PIO_PD27A_PWML3 (1u << 27) /**< \brief Pwm signal: PWML3 */ -/* ========== Pio definition for SPI peripheral ========== */ -#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ -#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ -#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ -#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ -#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ -#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ -#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ -#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ -#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ -#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ -#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ -#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ -#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ -#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ -/* ========== Pio definition for TC0 peripheral ========== */ -#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ -#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ -#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ -#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ -#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ -#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ -#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ -#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ -#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ -/* ========== Pio definition for TC1 peripheral ========== */ -#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ -#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ -#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ -#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ -#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ -#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ -#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ -#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ -#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ -/* ========== Pio definition for TC2 peripheral ========== */ -#define PIO_PC7B_TCLK6 (1u << 7) /**< \brief Tc2 signal: TCLK6 */ -#define PIO_PC10B_TCLK7 (1u << 10) /**< \brief Tc2 signal: TCLK7 */ -#define PIO_PC14B_TCLK8 (1u << 14) /**< \brief Tc2 signal: TCLK8 */ -#define PIO_PC5B_TIOA6 (1u << 5) /**< \brief Tc2 signal: TIOA6 */ -#define PIO_PC8B_TIOA7 (1u << 8) /**< \brief Tc2 signal: TIOA7 */ -#define PIO_PC11B_TIOA8 (1u << 11) /**< \brief Tc2 signal: TIOA8 */ -#define PIO_PC6B_TIOB6 (1u << 6) /**< \brief Tc2 signal: TIOB6 */ -#define PIO_PC9B_TIOB7 (1u << 9) /**< \brief Tc2 signal: TIOB7 */ -#define PIO_PC12B_TIOB8 (1u << 12) /**< \brief Tc2 signal: TIOB8 */ -/* ========== Pio definition for TWI0 peripheral ========== */ -#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ -#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ -/* ========== Pio definition for TWI1 peripheral ========== */ -#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ -#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ -/* ========== Pio definition for UART0 peripheral ========== */ -#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ -#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ -/* ========== Pio definition for UART1 peripheral ========== */ -#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ -#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ -/* ========== Pio definition for USART0 peripheral ========== */ -#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ -#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ -#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ -#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ -#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ -/* ========== Pio definition for USART1 peripheral ========== */ -#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ -#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ -#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ -#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ -#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ -#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ -#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ -#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ -#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ -/* ========== Pio indexes ========== */ -#define PIO_PA0_IDX 0 -#define PIO_PA1_IDX 1 -#define PIO_PA2_IDX 2 -#define PIO_PA3_IDX 3 -#define PIO_PA4_IDX 4 -#define PIO_PA5_IDX 5 -#define PIO_PA6_IDX 6 -#define PIO_PA7_IDX 7 -#define PIO_PA8_IDX 8 -#define PIO_PA9_IDX 9 -#define PIO_PA10_IDX 10 -#define PIO_PA11_IDX 11 -#define PIO_PA12_IDX 12 -#define PIO_PA13_IDX 13 -#define PIO_PA14_IDX 14 -#define PIO_PA15_IDX 15 -#define PIO_PA16_IDX 16 -#define PIO_PA17_IDX 17 -#define PIO_PA18_IDX 18 -#define PIO_PA19_IDX 19 -#define PIO_PA20_IDX 20 -#define PIO_PA21_IDX 21 -#define PIO_PA22_IDX 22 -#define PIO_PA23_IDX 23 -#define PIO_PA24_IDX 24 -#define PIO_PA25_IDX 25 -#define PIO_PA26_IDX 26 -#define PIO_PA27_IDX 27 -#define PIO_PA28_IDX 28 -#define PIO_PA29_IDX 29 -#define PIO_PA30_IDX 30 -#define PIO_PA31_IDX 31 -#define PIO_PB0_IDX 32 -#define PIO_PB1_IDX 33 -#define PIO_PB2_IDX 34 -#define PIO_PB3_IDX 35 -#define PIO_PB4_IDX 36 -#define PIO_PB5_IDX 37 -#define PIO_PB6_IDX 38 -#define PIO_PB7_IDX 39 -#define PIO_PB8_IDX 40 -#define PIO_PB9_IDX 41 -#define PIO_PB10_IDX 42 -#define PIO_PB11_IDX 43 -#define PIO_PB12_IDX 44 -#define PIO_PB13_IDX 45 -#define PIO_PB14_IDX 46 -#define PIO_PC0_IDX 64 -#define PIO_PC1_IDX 65 -#define PIO_PC2_IDX 66 -#define PIO_PC3_IDX 67 -#define PIO_PC4_IDX 68 -#define PIO_PC5_IDX 69 -#define PIO_PC6_IDX 70 -#define PIO_PC7_IDX 71 -#define PIO_PC8_IDX 72 -#define PIO_PC9_IDX 73 -#define PIO_PC10_IDX 74 -#define PIO_PC11_IDX 75 -#define PIO_PC12_IDX 76 -#define PIO_PC13_IDX 77 -#define PIO_PC14_IDX 78 -#define PIO_PC15_IDX 79 -#define PIO_PC16_IDX 80 -#define PIO_PC17_IDX 81 -#define PIO_PC18_IDX 82 -#define PIO_PC19_IDX 83 -#define PIO_PC20_IDX 84 -#define PIO_PC21_IDX 85 -#define PIO_PC22_IDX 86 -#define PIO_PC23_IDX 87 -#define PIO_PC24_IDX 88 -#define PIO_PC25_IDX 89 -#define PIO_PC26_IDX 90 -#define PIO_PC27_IDX 91 -#define PIO_PC28_IDX 92 -#define PIO_PC29_IDX 93 -#define PIO_PC30_IDX 94 -#define PIO_PC31_IDX 95 -#define PIO_PD0_IDX 96 -#define PIO_PD1_IDX 97 -#define PIO_PD2_IDX 98 -#define PIO_PD3_IDX 99 -#define PIO_PD4_IDX 100 -#define PIO_PD5_IDX 101 -#define PIO_PD6_IDX 102 -#define PIO_PD7_IDX 103 -#define PIO_PD8_IDX 104 -#define PIO_PD9_IDX 105 -#define PIO_PD10_IDX 106 -#define PIO_PD11_IDX 107 -#define PIO_PD12_IDX 108 -#define PIO_PD13_IDX 109 -#define PIO_PD14_IDX 110 -#define PIO_PD15_IDX 111 -#define PIO_PD16_IDX 112 -#define PIO_PD17_IDX 113 -#define PIO_PD18_IDX 114 -#define PIO_PD19_IDX 115 -#define PIO_PD20_IDX 116 -#define PIO_PD21_IDX 117 -#define PIO_PD22_IDX 118 -#define PIO_PD23_IDX 119 -#define PIO_PD24_IDX 120 -#define PIO_PD25_IDX 121 -#define PIO_PD26_IDX 122 -#define PIO_PD27_IDX 123 -#define PIO_PD28_IDX 124 -#define PIO_PD29_IDX 125 -#define PIO_PD30_IDX 126 -#define PIO_PD31_IDX 127 -#define PIO_PE0_IDX 128 -#define PIO_PE1_IDX 129 -#define PIO_PE2_IDX 130 -#define PIO_PE3_IDX 131 -#define PIO_PE4_IDX 132 -#define PIO_PE5_IDX 133 - -#endif /* _SAM4E8C_PIO_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e8e.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e8e.h deleted file mode 100644 index c9af41d46..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/pio/sam4e8e.h +++ /dev/null @@ -1,537 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E8E_PIO_ -#define _SAM4E8E_PIO_ - -#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ -#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ -#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ -#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ -#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ -#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ -#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ -#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ -#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ -#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ -#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ -#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ -#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ -#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ -#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ -#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ -#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ -#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ -#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ -#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ -#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ -#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ -#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ -#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ -#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ -#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ -#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ -#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ -#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ -#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ -#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ -#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ -#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ -#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ -#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ -#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ -#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ -#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ -#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ -#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ -#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ -#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ -#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ -#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ -#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ -#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ -#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ -#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ -#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ -#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ -#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ -#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ -#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ -#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ -#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ -#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ -#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ -#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ -#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ -#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ -#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ -#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ -#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ -#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ -#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ -#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ -#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ -#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ -#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ -#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ -#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ -#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ -#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ -#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ -#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ -#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ -#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ -#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ -#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ -#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ -#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ -#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ -#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ -#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ -#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ -#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ -#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ -#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ -#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ -#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ -#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ -#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ -#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ -#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ -#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ -#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ -#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ -#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ -#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ -#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ -#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ -#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ -#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ -#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ -#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ -#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ -#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ -#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ -#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ -#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ -#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ -#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ -#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ -#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ -#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ -#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ -#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ -/* ========== Pio definition for AFEC0 peripheral ========== */ -#define PIO_PA17X1_AFE0_AD0 (1u << 17) /**< \brief Afec0 signal: AFE0_AD0 */ -#define PIO_PA18X1_AFE0_AD1 (1u << 18) /**< \brief Afec0 signal: AFE0_AD1 */ -#define PIO_PC30X1_AFE0_AD10 (1u << 30) /**< \brief Afec0 signal: AFE0_AD10 */ -#define PIO_PC31X1_AFE0_AD11 (1u << 31) /**< \brief Afec0 signal: AFE0_AD11 */ -#define PIO_PC26X1_AFE0_AD12 (1u << 26) /**< \brief Afec0 signal: AFE0_AD12 */ -#define PIO_PC27X1_AFE0_AD13 (1u << 27) /**< \brief Afec0 signal: AFE0_AD13 */ -#define PIO_PC0X1_AFE0_AD14 (1u << 0) /**< \brief Afec0 signal: AFE0_AD14 */ -#define PIO_PA19X1_AFE0_AD2 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ -#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD2/WKUP9 */ -#define PIO_PA20X1_AFE0_AD3 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ -#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD3/WKUP10 */ -#define PIO_PB0X1_AFE0_AD4 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ -#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD4/RTCOUT0 */ -#define PIO_PB1X1_AFE0_AD5 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ -#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec0 signal: AFE0_AD5/RTCOUT1 */ -#define PIO_PC13X1_AFE0_AD6 (1u << 13) /**< \brief Afec0 signal: AFE0_AD6 */ -#define PIO_PC15X1_AFE0_AD7 (1u << 15) /**< \brief Afec0 signal: AFE0_AD7 */ -#define PIO_PC12X1_AFE0_AD8 (1u << 12) /**< \brief Afec0 signal: AFE0_AD8 */ -#define PIO_PC29X1_AFE0_AD9 (1u << 29) /**< \brief Afec0 signal: AFE0_AD9 */ -#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ -/* ========== Pio definition for AFEC1 peripheral ========== */ -#define PIO_PB2X1_AFE1_AD0 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ -#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Afec1 signal: AFE1_AD0/WKUP12 */ -#define PIO_PB3X1_AFE1_AD1 (1u << 3) /**< \brief Afec1 signal: AFE1_AD1 */ -#define PIO_PA21X1_AFE1_AD2 (1u << 21) /**< \brief Afec1 signal: AFE1_AD2 */ -#define PIO_PA22X1_AFE1_AD3 (1u << 22) /**< \brief Afec1 signal: AFE1_AD3 */ -#define PIO_PC1X1_AFE1_AD4 (1u << 1) /**< \brief Afec1 signal: AFE1_AD4 */ -#define PIO_PC2X1_AFE1_AD5 (1u << 2) /**< \brief Afec1 signal: AFE1_AD5 */ -#define PIO_PC3X1_AFE1_AD6 (1u << 3) /**< \brief Afec1 signal: AFE1_AD6 */ -#define PIO_PC4X1_AFE1_AD7 (1u << 4) /**< \brief Afec1 signal: AFE1_AD7 */ -/* ========== Pio definition for CAN0 peripheral ========== */ -#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Can0 signal: CANRX0 */ -#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Can0 signal: CANTX0 */ -/* ========== Pio definition for CAN1 peripheral ========== */ -#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Can1 signal: CANRX1 */ -#define PIO_PC15C_CANTX1 (1u << 15) /**< \brief Can1 signal: CANTX1 */ -/* ========== Pio definition for DACC peripheral ========== */ -#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ -#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ -#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ -/* ========== Pio definition for EBI peripheral ========== */ -#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0 */ -#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ -#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ -#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ -#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ -#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ -#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ -#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ -#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16 */ -#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17 */ -#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ -#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ -#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ -#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ -#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ -#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ -#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ -#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ -#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ -#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ -#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ -#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ -#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ -#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ -#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ -#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ -#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ -#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ -#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ -#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ -#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ -#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ -#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ -#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ -#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ -#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ -#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ -#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1 */ -#define PIO_PD18A_NCS1 (1u << 18) /**< \brief Ebi signal: NCS1 */ -#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ -#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ -#define PIO_PD19A_NCS3 (1u << 19) /**< \brief Ebi signal: NCS3 */ -#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ -#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ -#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWE */ -/* ========== Pio definition for GMAC peripheral ========== */ -#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ -#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ -#define PIO_PD4A_GCRSDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ -#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GCRSDV/GRXDV */ -#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ -#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ -#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ -#define PIO_PD6A_GRX0 (1u << 6) /**< \brief Gmac signal: GRX0 */ -#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ -#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ -#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ -#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ -#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ -#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ -#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ -#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ -#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ -#define PIO_PD0A_GREFCK (1u << 0) /**< \brief Gmac signal: GTXCK/GREFCK */ -#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ -#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ -/* ========== Pio definition for HSMCI peripheral ========== */ -#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ -#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ -#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ -#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ -#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ -#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ -/* ========== Pio definition for PIOA peripheral ========== */ -#define PIO_PA24X1_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ -#define PIO_PA25X1_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ -#define PIO_PA26X1_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ -#define PIO_PA27X1_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ -#define PIO_PA28X1_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ -#define PIO_PA29X1_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ -#define PIO_PA31X1_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ -#define PIO_PA23X1_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ -#define PIO_PA30X1_WKUP11 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ -#define PIO_PA30X1_PIODC6 (1u << 30) /**< \brief Pioa signal: WKUP11/PIODC6 */ -#define PIO_PA15X1_WKUP14 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ -#define PIO_PA15X1_PIODCEN1 (1u << 15) /**< \brief Pioa signal: WKUP14/PIODCEN1 */ -#define PIO_PA16X1_WKUP15 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ -#define PIO_PA16X1_PIODCEN2 (1u << 16) /**< \brief Pioa signal: WKUP15/PIODCEN2 */ -/* ========== Pio definition for PMC peripheral ========== */ -#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ -#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ -#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ -#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ -#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ -#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ -#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ -/* ========== Pio definition for PWM peripheral ========== */ -#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ -#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PD20A_PWMH0 (1u << 20) /**< \brief Pwm signal: PWMH0 */ -#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PD21A_PWMH1 (1u << 21) /**< \brief Pwm signal: PWMH1 */ -#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PD22A_PWMH2 (1u << 22) /**< \brief Pwm signal: PWMH2 */ -#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PD23A_PWMH3 (1u << 23) /**< \brief Pwm signal: PWMH3 */ -#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ -#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ -#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ -#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ -#define PIO_PD24A_PWML0 (1u << 24) /**< \brief Pwm signal: PWML0 */ -#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ -#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ -#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ -#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ -#define PIO_PD25A_PWML1 (1u << 25) /**< \brief Pwm signal: PWML1 */ -#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ -#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ -#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ -#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ -#define PIO_PD26A_PWML2 (1u << 26) /**< \brief Pwm signal: PWML2 */ -#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ -#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ -#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ -#define PIO_PD27A_PWML3 (1u << 27) /**< \brief Pwm signal: PWML3 */ -/* ========== Pio definition for SPI peripheral ========== */ -#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ -#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ -#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ -#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ -#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ -#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ -#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ -#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ -#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ -#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ -#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ -#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ -#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ -#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ -/* ========== Pio definition for TC0 peripheral ========== */ -#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ -#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ -#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ -#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ -#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ -#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ -#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ -#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ -#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ -/* ========== Pio definition for TC1 peripheral ========== */ -#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ -#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ -#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ -#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ -#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ -#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ -#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ -#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ -#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ -/* ========== Pio definition for TC2 peripheral ========== */ -#define PIO_PC7B_TCLK6 (1u << 7) /**< \brief Tc2 signal: TCLK6 */ -#define PIO_PC10B_TCLK7 (1u << 10) /**< \brief Tc2 signal: TCLK7 */ -#define PIO_PC14B_TCLK8 (1u << 14) /**< \brief Tc2 signal: TCLK8 */ -#define PIO_PC5B_TIOA6 (1u << 5) /**< \brief Tc2 signal: TIOA6 */ -#define PIO_PC8B_TIOA7 (1u << 8) /**< \brief Tc2 signal: TIOA7 */ -#define PIO_PC11B_TIOA8 (1u << 11) /**< \brief Tc2 signal: TIOA8 */ -#define PIO_PC6B_TIOB6 (1u << 6) /**< \brief Tc2 signal: TIOB6 */ -#define PIO_PC9B_TIOB7 (1u << 9) /**< \brief Tc2 signal: TIOB7 */ -#define PIO_PC12B_TIOB8 (1u << 12) /**< \brief Tc2 signal: TIOB8 */ -/* ========== Pio definition for TWI0 peripheral ========== */ -#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ -#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ -/* ========== Pio definition for TWI1 peripheral ========== */ -#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ -#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ -/* ========== Pio definition for UART0 peripheral ========== */ -#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ -#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ -/* ========== Pio definition for UART1 peripheral ========== */ -#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ -#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ -/* ========== Pio definition for USART0 peripheral ========== */ -#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ -#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ -#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ -#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ -#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ -/* ========== Pio definition for USART1 peripheral ========== */ -#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ -#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ -#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ -#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ -#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ -#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ -#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ -#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ -#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ -/* ========== Pio indexes ========== */ -#define PIO_PA0_IDX 0 -#define PIO_PA1_IDX 1 -#define PIO_PA2_IDX 2 -#define PIO_PA3_IDX 3 -#define PIO_PA4_IDX 4 -#define PIO_PA5_IDX 5 -#define PIO_PA6_IDX 6 -#define PIO_PA7_IDX 7 -#define PIO_PA8_IDX 8 -#define PIO_PA9_IDX 9 -#define PIO_PA10_IDX 10 -#define PIO_PA11_IDX 11 -#define PIO_PA12_IDX 12 -#define PIO_PA13_IDX 13 -#define PIO_PA14_IDX 14 -#define PIO_PA15_IDX 15 -#define PIO_PA16_IDX 16 -#define PIO_PA17_IDX 17 -#define PIO_PA18_IDX 18 -#define PIO_PA19_IDX 19 -#define PIO_PA20_IDX 20 -#define PIO_PA21_IDX 21 -#define PIO_PA22_IDX 22 -#define PIO_PA23_IDX 23 -#define PIO_PA24_IDX 24 -#define PIO_PA25_IDX 25 -#define PIO_PA26_IDX 26 -#define PIO_PA27_IDX 27 -#define PIO_PA28_IDX 28 -#define PIO_PA29_IDX 29 -#define PIO_PA30_IDX 30 -#define PIO_PA31_IDX 31 -#define PIO_PB0_IDX 32 -#define PIO_PB1_IDX 33 -#define PIO_PB2_IDX 34 -#define PIO_PB3_IDX 35 -#define PIO_PB4_IDX 36 -#define PIO_PB5_IDX 37 -#define PIO_PB6_IDX 38 -#define PIO_PB7_IDX 39 -#define PIO_PB8_IDX 40 -#define PIO_PB9_IDX 41 -#define PIO_PB10_IDX 42 -#define PIO_PB11_IDX 43 -#define PIO_PB12_IDX 44 -#define PIO_PB13_IDX 45 -#define PIO_PB14_IDX 46 -#define PIO_PC0_IDX 64 -#define PIO_PC1_IDX 65 -#define PIO_PC2_IDX 66 -#define PIO_PC3_IDX 67 -#define PIO_PC4_IDX 68 -#define PIO_PC5_IDX 69 -#define PIO_PC6_IDX 70 -#define PIO_PC7_IDX 71 -#define PIO_PC8_IDX 72 -#define PIO_PC9_IDX 73 -#define PIO_PC10_IDX 74 -#define PIO_PC11_IDX 75 -#define PIO_PC12_IDX 76 -#define PIO_PC13_IDX 77 -#define PIO_PC14_IDX 78 -#define PIO_PC15_IDX 79 -#define PIO_PC16_IDX 80 -#define PIO_PC17_IDX 81 -#define PIO_PC18_IDX 82 -#define PIO_PC19_IDX 83 -#define PIO_PC20_IDX 84 -#define PIO_PC21_IDX 85 -#define PIO_PC22_IDX 86 -#define PIO_PC23_IDX 87 -#define PIO_PC24_IDX 88 -#define PIO_PC25_IDX 89 -#define PIO_PC26_IDX 90 -#define PIO_PC27_IDX 91 -#define PIO_PC28_IDX 92 -#define PIO_PC29_IDX 93 -#define PIO_PC30_IDX 94 -#define PIO_PC31_IDX 95 -#define PIO_PD0_IDX 96 -#define PIO_PD1_IDX 97 -#define PIO_PD2_IDX 98 -#define PIO_PD3_IDX 99 -#define PIO_PD4_IDX 100 -#define PIO_PD5_IDX 101 -#define PIO_PD6_IDX 102 -#define PIO_PD7_IDX 103 -#define PIO_PD8_IDX 104 -#define PIO_PD9_IDX 105 -#define PIO_PD10_IDX 106 -#define PIO_PD11_IDX 107 -#define PIO_PD12_IDX 108 -#define PIO_PD13_IDX 109 -#define PIO_PD14_IDX 110 -#define PIO_PD15_IDX 111 -#define PIO_PD16_IDX 112 -#define PIO_PD17_IDX 113 -#define PIO_PD18_IDX 114 -#define PIO_PD19_IDX 115 -#define PIO_PD20_IDX 116 -#define PIO_PD21_IDX 117 -#define PIO_PD22_IDX 118 -#define PIO_PD23_IDX 119 -#define PIO_PD24_IDX 120 -#define PIO_PD25_IDX 121 -#define PIO_PD26_IDX 122 -#define PIO_PD27_IDX 123 -#define PIO_PD28_IDX 124 -#define PIO_PD29_IDX 125 -#define PIO_PD30_IDX 126 -#define PIO_PD31_IDX 127 -#define PIO_PE0_IDX 128 -#define PIO_PE1_IDX 129 -#define PIO_PE2_IDX 130 -#define PIO_PE3_IDX 131 -#define PIO_PE4_IDX 132 -#define PIO_PE5_IDX 133 - -#endif /* _SAM4E8E_PIO_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e.h deleted file mode 100644 index 304248ebe..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e.h +++ /dev/null @@ -1,57 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E_ -#define _SAM4E_ - -#if defined __SAM4E8C__ - #include "sam4e8c.h" -#elif defined __SAM4E8E__ - #include "sam4e8e.h" -#elif defined __SAM4E16C__ - #include "sam4e16c.h" -#elif defined __SAM4E16E__ - #include "sam4e16e.h" -#else - #error Library does not support the specified device. -#endif - -#endif /* _SAM4E_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e16c.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e16c.h deleted file mode 100644 index 908b7ca39..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e16c.h +++ /dev/null @@ -1,590 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E16C_ -#define _SAM4E16C_ - -/** \addtogroup SAM4E16C_definitions SAM4E16C definitions - This file defines all structures and symbols for SAM4E16C: - - registers and bitfields - - peripheral base address - - peripheral ID - - PIO definitions -*/ -/*@{*/ - -#ifdef __cplusplus - extern "C" { -#endif - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#include -#ifndef __cplusplus -typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ -#else -typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ -#endif -typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ -typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ -#endif - -/* ************************************************************************** */ -/* CMSIS DEFINITIONS FOR SAM4E16C */ -/* ************************************************************************** */ -/** \addtogroup SAM4E16C_cmsis CMSIS Definitions */ -/*@{*/ - -/**< Interrupt Number Definition */ -typedef enum IRQn -{ -/****** Cortex-M4 Processor Exceptions Numbers ******************************/ - NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ - MemoryManagement_IRQn = -12, /**< 4 Cortex-M4 Memory Management Interrupt */ - BusFault_IRQn = -11, /**< 5 Cortex-M4 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /**< 6 Cortex-M4 Usage Fault Interrupt */ - SVCall_IRQn = -5, /**< 11 Cortex-M4 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /**< 12 Cortex-M4 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /**< 14 Cortex-M4 Pend SV Interrupt */ - SysTick_IRQn = -1, /**< 15 Cortex-M4 System Tick Interrupt */ -/****** SAM4E16C specific Interrupt Numbers *********************************/ - - SUPC_IRQn = 0, /**< 0 SAM4E16C Supply Controller (SUPC) */ - RSTC_IRQn = 1, /**< 1 SAM4E16C Reset Controller (RSTC) */ - RTC_IRQn = 2, /**< 2 SAM4E16C Real Time Clock (RTC) */ - RTT_IRQn = 3, /**< 3 SAM4E16C Real Time Timer (RTT) */ - WDT_IRQn = 4, /**< 4 SAM4E16C Watchdog/Dual Watchdog Timer (WDT) */ - PMC_IRQn = 5, /**< 5 SAM4E16C Power Management Controller (PMC) */ - EFC_IRQn = 6, /**< 6 SAM4E16C Enhanced Embedded Flash Controller (EFC) */ - UART0_IRQn = 7, /**< 7 SAM4E16C UART 0 (UART0) */ - PIOA_IRQn = 9, /**< 9 SAM4E16C Parallel I/O Controller A (PIOA) */ - PIOB_IRQn = 10, /**< 10 SAM4E16C Parallel I/O Controller B (PIOB) */ - PIOC_IRQn = 11, /**< 11 SAM4E16C Parallel I/O Controller C (PIOC) */ - USART0_IRQn = 14, /**< 14 SAM4E16C USART 0 (USART0) */ - USART1_IRQn = 15, /**< 15 SAM4E16C USART 1 (USART1) */ - HSMCI_IRQn = 16, /**< 16 SAM4E16C Multimedia Card Interface (HSMCI) */ - TWI0_IRQn = 17, /**< 17 SAM4E16C Two Wire Interface 0 (TWI0) */ - TWI1_IRQn = 18, /**< 18 SAM4E16C Two Wire Interface 1 (TWI1) */ - SPI_IRQn = 19, /**< 19 SAM4E16C Serial Peripheral Interface (SPI) */ - DMAC_IRQn = 20, /**< 20 SAM4E16C DMAC (DMAC) */ - TC0_IRQn = 21, /**< 21 SAM4E16C Timer/Counter 0 (TC0) */ - TC1_IRQn = 22, /**< 22 SAM4E16C Timer/Counter 1 (TC1) */ - TC2_IRQn = 23, /**< 23 SAM4E16C Timer/Counter 2 (TC2) */ - TC3_IRQn = 24, /**< 24 SAM4E16C Timer/Counter 3 (TC3) */ - TC4_IRQn = 25, /**< 25 SAM4E16C Timer/Counter 4 (TC4) */ - TC5_IRQn = 26, /**< 26 SAM4E16C Timer/Counter 5 (TC5) */ - TC6_IRQn = 27, /**< 27 SAM4E16C Timer/Counter 6 (TC6) */ - TC7_IRQn = 28, /**< 28 SAM4E16C Timer/Counter 7 (TC7) */ - TC8_IRQn = 29, /**< 29 SAM4E16C Timer/Counter 8 (TC8) */ - AFEC0_IRQn = 30, /**< 30 SAM4E16C Analog Front End 0 (AFEC0) */ - AFEC1_IRQn = 31, /**< 31 SAM4E16C Analog Front End 1 (AFEC1) */ - DACC_IRQn = 32, /**< 32 SAM4E16C Digital To Analog Converter (DACC) */ - ACC_IRQn = 33, /**< 33 SAM4E16C Analog Comparator (ACC) */ - ARM_IRQn = 34, /**< 34 SAM4E16C FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ - UDP_IRQn = 35, /**< 35 SAM4E16C USB DEVICE (UDP) */ - PWM_IRQn = 36, /**< 36 SAM4E16C PWM (PWM) */ - CAN0_IRQn = 37, /**< 37 SAM4E16C CAN0 (CAN0) */ - CAN1_IRQn = 38, /**< 38 SAM4E16C CAN1 (CAN1) */ - AES_IRQn = 39, /**< 39 SAM4E16C AES (AES) */ - UART1_IRQn = 45, /**< 45 SAM4E16C UART (UART1) */ - - PERIPH_COUNT_IRQn = 46 /**< Number of peripheral IDs */ -} IRQn_Type; - -typedef struct _DeviceVectors -{ - /* Stack pointer */ - void* pvStack; - - /* Cortex-M handlers */ - void* pfnReset_Handler; - void* pfnNMI_Handler; - void* pfnHardFault_Handler; - void* pfnMemManage_Handler; - void* pfnBusFault_Handler; - void* pfnUsageFault_Handler; - void* pfnReserved1_Handler; - void* pfnReserved2_Handler; - void* pfnReserved3_Handler; - void* pfnReserved4_Handler; - void* pfnSVC_Handler; - void* pfnDebugMon_Handler; - void* pfnReserved5_Handler; - void* pfnPendSV_Handler; - void* pfnSysTick_Handler; - - /* Peripheral handlers */ - void* pfnSUPC_Handler; /* 0 Supply Controller */ - void* pfnRSTC_Handler; /* 1 Reset Controller */ - void* pfnRTC_Handler; /* 2 Real Time Clock */ - void* pfnRTT_Handler; /* 3 Real Time Timer */ - void* pfnWDT_Handler; /* 4 Watchdog/Dual Watchdog Timer */ - void* pfnPMC_Handler; /* 5 Power Management Controller */ - void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ - void* pfnUART0_Handler; /* 7 UART 0 */ - void* pvReserved8; - void* pfnPIOA_Handler; /* 9 Parallel I/O Controller A */ - void* pfnPIOB_Handler; /* 10 Parallel I/O Controller B */ - void* pfnPIOC_Handler; /* 11 Parallel I/O Controller C */ - void* pvReserved12; - void* pvReserved13; - void* pfnUSART0_Handler; /* 14 USART 0 */ - void* pfnUSART1_Handler; /* 15 USART 1 */ - void* pfnHSMCI_Handler; /* 16 Multimedia Card Interface */ - void* pfnTWI0_Handler; /* 17 Two Wire Interface 0 */ - void* pfnTWI1_Handler; /* 18 Two Wire Interface 1 */ - void* pfnSPI_Handler; /* 19 Serial Peripheral Interface */ - void* pfnDMAC_Handler; /* 20 DMAC */ - void* pfnTC0_Handler; /* 21 Timer/Counter 0 */ - void* pfnTC1_Handler; /* 22 Timer/Counter 1 */ - void* pfnTC2_Handler; /* 23 Timer/Counter 2 */ - void* pfnTC3_Handler; /* 24 Timer/Counter 3 */ - void* pfnTC4_Handler; /* 25 Timer/Counter 4 */ - void* pfnTC5_Handler; /* 26 Timer/Counter 5 */ - void* pfnTC6_Handler; /* 27 Timer/Counter 6 */ - void* pfnTC7_Handler; /* 28 Timer/Counter 7 */ - void* pfnTC8_Handler; /* 29 Timer/Counter 8 */ - void* pfnAFEC0_Handler; /* 30 Analog Front End 0 */ - void* pfnAFEC1_Handler; /* 31 Analog Front End 1 */ - void* pfnDACC_Handler; /* 32 Digital To Analog Converter */ - void* pfnACC_Handler; /* 33 Analog Comparator */ - void* pfnARM_Handler; /* 34 FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC */ - void* pfnUDP_Handler; /* 35 USB DEVICE */ - void* pfnPWM_Handler; /* 36 PWM */ - void* pfnCAN0_Handler; /* 37 CAN0 */ - void* pfnCAN1_Handler; /* 38 CAN1 */ - void* pfnAES_Handler; /* 39 AES */ - void* pvReserved40; - void* pvReserved41; - void* pvReserved42; - void* pvReserved43; - void* pvReserved44; - void* pfnUART1_Handler; /* 45 UART */ -} DeviceVectors; - -/* Cortex-M4 core handlers */ -void Reset_Handler ( void ); -void NMI_Handler ( void ); -void HardFault_Handler ( void ); -void MemManage_Handler ( void ); -void BusFault_Handler ( void ); -void UsageFault_Handler ( void ); -void SVC_Handler ( void ); -void DebugMon_Handler ( void ); -void PendSV_Handler ( void ); -void SysTick_Handler ( void ); - -/* Peripherals handlers */ -void ACC_Handler ( void ); -void AES_Handler ( void ); -void AFEC0_Handler ( void ); -void AFEC1_Handler ( void ); -void ARM_Handler ( void ); -void CAN0_Handler ( void ); -void CAN1_Handler ( void ); -void DACC_Handler ( void ); -void DMAC_Handler ( void ); -void EFC_Handler ( void ); -void HSMCI_Handler ( void ); -void PIOA_Handler ( void ); -void PIOB_Handler ( void ); -void PIOC_Handler ( void ); -void PMC_Handler ( void ); -void PWM_Handler ( void ); -void RSTC_Handler ( void ); -void RTC_Handler ( void ); -void RTT_Handler ( void ); -void SPI_Handler ( void ); -void SUPC_Handler ( void ); -void TC0_Handler ( void ); -void TC1_Handler ( void ); -void TC2_Handler ( void ); -void TC3_Handler ( void ); -void TC4_Handler ( void ); -void TC5_Handler ( void ); -void TC6_Handler ( void ); -void TC7_Handler ( void ); -void TC8_Handler ( void ); -void TWI0_Handler ( void ); -void TWI1_Handler ( void ); -void UART0_Handler ( void ); -void UART1_Handler ( void ); -void UDP_Handler ( void ); -void USART0_Handler ( void ); -void USART1_Handler ( void ); -void WDT_Handler ( void ); - -/** - * \brief Configuration of the Cortex-M4 Processor and Core Peripherals - */ - -#define __CM4_REV 0x0000 /**< SAM4E16C core revision number ([15:8] revision number, [7:0] patch number) */ -#define __MPU_PRESENT 0 /**< SAM4E16C does not provide a MPU */ -#define __FPU_PRESENT 1 /**< SAM4E16C does provide a FPU */ -#define __NVIC_PRIO_BITS 4 /**< SAM4E16C uses 4 Bits for the Priority Levels */ -#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ - -/* - * \brief CMSIS includes - */ - -#include -#if !defined DONT_USE_CMSIS_INIT -#include "system_sam4e.h" -#endif /* DONT_USE_CMSIS_INIT */ - -/*@}*/ - -/* ************************************************************************** */ -/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM4E16C */ -/* ************************************************************************** */ -/** \addtogroup SAM4E16C_api Peripheral Software API */ -/*@{*/ - -#include "component/acc.h" -#include "component/aes.h" -#include "component/afec.h" -#include "component/can.h" -#include "component/chipid.h" -#include "component/cmcc.h" -#include "component/crccu.h" -#include "component/dacc.h" -#include "component/dmac.h" -#include "component/efc.h" -#include "component/gpbr.h" -#include "component/hsmci.h" -#include "component/matrix.h" -#include "component/pdc.h" -#include "component/pio.h" -#include "component/pmc.h" -#include "component/pwm.h" -#include "component/rstc.h" -#include "component/rswdt.h" -#include "component/rtc.h" -#include "component/rtt.h" -#include "component/spi.h" -#include "component/supc.h" -#include "component/tc.h" -#include "component/twi.h" -#include "component/uart.h" -#include "component/udp.h" -#include "component/usart.h" -#include "component/wdt.h" -/*@}*/ - -/* ************************************************************************** */ -/* REGISTER ACCESS DEFINITIONS FOR SAM4E16C */ -/* ************************************************************************** */ -/** \addtogroup SAM4E16C_reg Registers Access Definitions */ -/*@{*/ - -#include "instance/pwm.h" -#include "instance/aes.h" -#include "instance/can0.h" -#include "instance/can1.h" -#include "instance/crccu.h" -#include "instance/uart1.h" -#include "instance/hsmci.h" -#include "instance/udp.h" -#include "instance/spi.h" -#include "instance/tc0.h" -#include "instance/tc1.h" -#include "instance/tc2.h" -#include "instance/usart0.h" -#include "instance/usart1.h" -#include "instance/twi0.h" -#include "instance/twi1.h" -#include "instance/afec0.h" -#include "instance/afec1.h" -#include "instance/dacc.h" -#include "instance/acc.h" -#include "instance/dmac.h" -#include "instance/cmcc.h" -#include "instance/matrix.h" -#include "instance/pmc.h" -#include "instance/uart0.h" -#include "instance/chipid.h" -#include "instance/efc.h" -#include "instance/pioa.h" -#include "instance/piob.h" -#include "instance/pioc.h" -#include "instance/rstc.h" -#include "instance/supc.h" -#include "instance/rtt.h" -#include "instance/wdt.h" -#include "instance/rtc.h" -#include "instance/gpbr.h" -#include "instance/rswdt.h" -/*@}*/ - -/* ************************************************************************** */ -/* PERIPHERAL ID DEFINITIONS FOR SAM4E16C */ -/* ************************************************************************** */ -/** \addtogroup SAM4E16C_id Peripheral Ids Definitions */ -/*@{*/ - -#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ -#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ -#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ -#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ -#define ID_WDT ( 4) /**< \brief Watchdog/Dual Watchdog Timer (WDT) */ -#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ -#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ -#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ -#define ID_PIOA ( 9) /**< \brief Parallel I/O Controller A (PIOA) */ -#define ID_PIOB (10) /**< \brief Parallel I/O Controller B (PIOB) */ -#define ID_PIOC (11) /**< \brief Parallel I/O Controller C (PIOC) */ -#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ -#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ -#define ID_HSMCI (16) /**< \brief Multimedia Card Interface (HSMCI) */ -#define ID_TWI0 (17) /**< \brief Two Wire Interface 0 (TWI0) */ -#define ID_TWI1 (18) /**< \brief Two Wire Interface 1 (TWI1) */ -#define ID_SPI (19) /**< \brief Serial Peripheral Interface (SPI) */ -#define ID_DMAC (20) /**< \brief DMAC (DMAC) */ -#define ID_TC0 (21) /**< \brief Timer/Counter 0 (TC0) */ -#define ID_TC1 (22) /**< \brief Timer/Counter 1 (TC1) */ -#define ID_TC2 (23) /**< \brief Timer/Counter 2 (TC2) */ -#define ID_TC3 (24) /**< \brief Timer/Counter 3 (TC3) */ -#define ID_TC4 (25) /**< \brief Timer/Counter 4 (TC4) */ -#define ID_TC5 (26) /**< \brief Timer/Counter 5 (TC5) */ -#define ID_TC6 (27) /**< \brief Timer/Counter 6 (TC6) */ -#define ID_TC7 (28) /**< \brief Timer/Counter 7 (TC7) */ -#define ID_TC8 (29) /**< \brief Timer/Counter 8 (TC8) */ -#define ID_AFEC0 (30) /**< \brief Analog Front End 0 (AFEC0) */ -#define ID_AFEC1 (31) /**< \brief Analog Front End 1 (AFEC1) */ -#define ID_DACC (32) /**< \brief Digital To Analog Converter (DACC) */ -#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ -#define ID_ARM (34) /**< \brief FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ -#define ID_UDP (35) /**< \brief USB DEVICE (UDP) */ -#define ID_PWM (36) /**< \brief PWM (PWM) */ -#define ID_CAN0 (37) /**< \brief CAN0 (CAN0) */ -#define ID_CAN1 (38) /**< \brief CAN1 (CAN1) */ -#define ID_AES (39) /**< \brief AES (AES) */ -#define ID_UART1 (45) /**< \brief UART (UART1) */ - -#define ID_PERIPH_COUNT (46) /**< \brief Number of peripheral IDs */ -/*@}*/ - -/* ************************************************************************** */ -/* BASE ADDRESS DEFINITIONS FOR SAM4E16C */ -/* ************************************************************************** */ -/** \addtogroup SAM4E16C_base Peripheral Base Address Definitions */ -/*@{*/ - -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define PWM (0x40000000U) /**< \brief (PWM ) Base Address */ -#define PDC_PWM (0x40000100U) /**< \brief (PDC_PWM ) Base Address */ -#define AES (0x40004000U) /**< \brief (AES ) Base Address */ -#define CAN0 (0x40010000U) /**< \brief (CAN0 ) Base Address */ -#define CAN1 (0x40014000U) /**< \brief (CAN1 ) Base Address */ -#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ -#define UART1 (0x40060600U) /**< \brief (UART1 ) Base Address */ -#define PDC_UART1 (0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ -#define HSMCI (0x40080000U) /**< \brief (HSMCI ) Base Address */ -#define PDC_HSMCI (0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ -#define UDP (0x40084000U) /**< \brief (UDP ) Base Address */ -#define SPI (0x40088000U) /**< \brief (SPI ) Base Address */ -#define PDC_SPI (0x40088100U) /**< \brief (PDC_SPI ) Base Address */ -#define TC0 (0x40090000U) /**< \brief (TC0 ) Base Address */ -#define PDC_TC0 (0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ -#define TC1 (0x40094000U) /**< \brief (TC1 ) Base Address */ -#define PDC_TC1 (0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ -#define TC2 (0x40098000U) /**< \brief (TC2 ) Base Address */ -#define USART0 (0x400A0000U) /**< \brief (USART0 ) Base Address */ -#define PDC_USART0 (0x400A0100U) /**< \brief (PDC_USART0) Base Address */ -#define USART1 (0x400A4000U) /**< \brief (USART1 ) Base Address */ -#define PDC_USART1 (0x400A4100U) /**< \brief (PDC_USART1) Base Address */ -#define TWI0 (0x400A8000U) /**< \brief (TWI0 ) Base Address */ -#define PDC_TWI0 (0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ -#define TWI1 (0x400AC000U) /**< \brief (TWI1 ) Base Address */ -#define PDC_TWI1 (0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ -#define AFEC0 (0x400B0000U) /**< \brief (AFEC0 ) Base Address */ -#define PDC_AFEC0 (0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ -#define AFEC1 (0x400B4000U) /**< \brief (AFEC1 ) Base Address */ -#define PDC_AFEC1 (0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ -#define DACC (0x400B8000U) /**< \brief (DACC ) Base Address */ -#define PDC_DACC (0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ -#define ACC (0x400BC000U) /**< \brief (ACC ) Base Address */ -#define DMAC (0x400C0000U) /**< \brief (DMAC ) Base Address */ -#define CMCC (0x400C4000U) /**< \brief (CMCC ) Base Address */ -#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ -#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ -#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ -#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ -#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ -#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ -#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ -#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ -#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ -#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ -#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ -#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ -#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ -#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ -#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ -#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ -#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ -#else -#define PWM ((Pwm *)0x40000000U) /**< \brief (PWM ) Base Address */ -#define PDC_PWM ((Pdc *)0x40000100U) /**< \brief (PDC_PWM ) Base Address */ -#define AES ((Aes *)0x40004000U) /**< \brief (AES ) Base Address */ -#define CAN0 ((Can *)0x40010000U) /**< \brief (CAN0 ) Base Address */ -#define CAN1 ((Can *)0x40014000U) /**< \brief (CAN1 ) Base Address */ -#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ -#define UART1 ((Uart *)0x40060600U) /**< \brief (UART1 ) Base Address */ -#define PDC_UART1 ((Pdc *)0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ -#define HSMCI ((Hsmci *)0x40080000U) /**< \brief (HSMCI ) Base Address */ -#define PDC_HSMCI ((Pdc *)0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ -#define UDP ((Udp *)0x40084000U) /**< \brief (UDP ) Base Address */ -#define SPI ((Spi *)0x40088000U) /**< \brief (SPI ) Base Address */ -#define PDC_SPI ((Pdc *)0x40088100U) /**< \brief (PDC_SPI ) Base Address */ -#define TC0 ((Tc *)0x40090000U) /**< \brief (TC0 ) Base Address */ -#define PDC_TC0 ((Pdc *)0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ -#define TC1 ((Tc *)0x40094000U) /**< \brief (TC1 ) Base Address */ -#define PDC_TC1 ((Pdc *)0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ -#define TC2 ((Tc *)0x40098000U) /**< \brief (TC2 ) Base Address */ -#define USART0 ((Usart *)0x400A0000U) /**< \brief (USART0 ) Base Address */ -#define PDC_USART0 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART0) Base Address */ -#define USART1 ((Usart *)0x400A4000U) /**< \brief (USART1 ) Base Address */ -#define PDC_USART1 ((Pdc *)0x400A4100U) /**< \brief (PDC_USART1) Base Address */ -#define TWI0 ((Twi *)0x400A8000U) /**< \brief (TWI0 ) Base Address */ -#define PDC_TWI0 ((Pdc *)0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ -#define TWI1 ((Twi *)0x400AC000U) /**< \brief (TWI1 ) Base Address */ -#define PDC_TWI1 ((Pdc *)0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ -#define AFEC0 ((Afec *)0x400B0000U) /**< \brief (AFEC0 ) Base Address */ -#define PDC_AFEC0 ((Pdc *)0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ -#define AFEC1 ((Afec *)0x400B4000U) /**< \brief (AFEC1 ) Base Address */ -#define PDC_AFEC1 ((Pdc *)0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ -#define DACC ((Dacc *)0x400B8000U) /**< \brief (DACC ) Base Address */ -#define PDC_DACC ((Pdc *)0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ -#define ACC ((Acc *)0x400BC000U) /**< \brief (ACC ) Base Address */ -#define DMAC ((Dmac *)0x400C0000U) /**< \brief (DMAC ) Base Address */ -#define CMCC ((Cmcc *)0x400C4000U) /**< \brief (CMCC ) Base Address */ -#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ -#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ -#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ -#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ -#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ -#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ -#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ -#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ -#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ -#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ -#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ -#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ -#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ -#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ -#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ -#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ -#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/*@}*/ - -/* ************************************************************************** */ -/* PIO DEFINITIONS FOR SAM4E16C */ -/* ************************************************************************** */ -/** \addtogroup SAM4E16C_pio Peripheral Pio Definitions */ -/*@{*/ - -#include "pio/sam4e16c.h" -/*@}*/ - -/* ************************************************************************** */ -/* MEMORY MAPPING DEFINITIONS FOR SAM4E16C */ -/* ************************************************************************** */ - -#define IFLASH_SIZE (0x100000u) -#define IFLASH_PAGE_SIZE (512u) -#define IFLASH_LOCK_REGION_SIZE (8192u) -#define IFLASH_NB_OF_PAGES (2048u) -#define IFLASH_NB_OF_LOCK_BITS (128u) -#define IRAM_SIZE (0x20000u) - -#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ -#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ -#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ -#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ -#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ -#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ -#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ - -/* ************************************************************************** */ -/* MISCELLANEOUS DEFINITIONS FOR SAM4E16C */ -/* ************************************************************************** */ - -#define CHIP_JTAGID (0x05B3703FUL) -#define CHIP_CIDR (0xA3CC0CE0UL) -#define CHIP_EXID (0x00110201UL) -#define NB_CH_AFE0 (6UL) -#define NB_CH_AFE1 (4UL) - -/* ************************************************************************** */ -/* ELECTRICAL DEFINITIONS FOR SAM4E16C */ -/* ************************************************************************** */ - -/* Device characteristics */ -#define CHIP_FREQ_SLCK_RC_MIN (20000UL) -#define CHIP_FREQ_SLCK_RC (32000UL) -#define CHIP_FREQ_SLCK_RC_MAX (44000UL) -#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) -#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) -#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) -#define CHIP_FREQ_CPU_MAX (120000000UL) -#define CHIP_FREQ_XTAL_32K (32768UL) -#define CHIP_FREQ_XTAL_12M (12000000UL) - -/* Embedded Flash Write Wait State */ -#define CHIP_FLASH_WRITE_WAIT_STATE (6U) - -/* Embedded Flash Read Wait State (VDDCORE set at 1.20V) */ -#define CHIP_FREQ_FWS_0 (20000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ -#define CHIP_FREQ_FWS_1 (40000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ -#define CHIP_FREQ_FWS_2 (60000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ -#define CHIP_FREQ_FWS_3 (80000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ -#define CHIP_FREQ_FWS_4 (100000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ -#define CHIP_FREQ_FWS_5 (123000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ - -#ifdef __cplusplus -} -#endif - -/*@}*/ - -#endif /* _SAM4E16C_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e16e.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e16e.h deleted file mode 100644 index 8a1437d3b..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e16e.h +++ /dev/null @@ -1,614 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E16E_ -#define _SAM4E16E_ - -/** \addtogroup SAM4E16E_definitions SAM4E16E definitions - This file defines all structures and symbols for SAM4E16E: - - registers and bitfields - - peripheral base address - - peripheral ID - - PIO definitions -*/ -/*@{*/ - -#ifdef __cplusplus - extern "C" { -#endif - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#include -#ifndef __cplusplus -typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ -#else -typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ -#endif -typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ -typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ -#endif - -/* ************************************************************************** */ -/* CMSIS DEFINITIONS FOR SAM4E16E */ -/* ************************************************************************** */ -/** \addtogroup SAM4E16E_cmsis CMSIS Definitions */ -/*@{*/ - -/**< Interrupt Number Definition */ -typedef enum IRQn -{ -/****** Cortex-M4 Processor Exceptions Numbers ******************************/ - NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ - MemoryManagement_IRQn = -12, /**< 4 Cortex-M4 Memory Management Interrupt */ - BusFault_IRQn = -11, /**< 5 Cortex-M4 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /**< 6 Cortex-M4 Usage Fault Interrupt */ - SVCall_IRQn = -5, /**< 11 Cortex-M4 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /**< 12 Cortex-M4 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /**< 14 Cortex-M4 Pend SV Interrupt */ - SysTick_IRQn = -1, /**< 15 Cortex-M4 System Tick Interrupt */ -/****** SAM4E16E specific Interrupt Numbers *********************************/ - - SUPC_IRQn = 0, /**< 0 SAM4E16E Supply Controller (SUPC) */ - RSTC_IRQn = 1, /**< 1 SAM4E16E Reset Controller (RSTC) */ - RTC_IRQn = 2, /**< 2 SAM4E16E Real Time Clock (RTC) */ - RTT_IRQn = 3, /**< 3 SAM4E16E Real Time Timer (RTT) */ - WDT_IRQn = 4, /**< 4 SAM4E16E Watchdog/Dual Watchdog Timer (WDT) */ - PMC_IRQn = 5, /**< 5 SAM4E16E Power Management Controller (PMC) */ - EFC_IRQn = 6, /**< 6 SAM4E16E Enhanced Embedded Flash Controller (EFC) */ - UART0_IRQn = 7, /**< 7 SAM4E16E UART 0 (UART0) */ - PIOA_IRQn = 9, /**< 9 SAM4E16E Parallel I/O Controller A (PIOA) */ - PIOB_IRQn = 10, /**< 10 SAM4E16E Parallel I/O Controller B (PIOB) */ - PIOC_IRQn = 11, /**< 11 SAM4E16E Parallel I/O Controller C (PIOC) */ - PIOD_IRQn = 12, /**< 12 SAM4E16E Parallel I/O Controller D (PIOD) */ - PIOE_IRQn = 13, /**< 13 SAM4E16E Parallel I/O Controller E (PIOE) */ - USART0_IRQn = 14, /**< 14 SAM4E16E USART 0 (USART0) */ - USART1_IRQn = 15, /**< 15 SAM4E16E USART 1 (USART1) */ - HSMCI_IRQn = 16, /**< 16 SAM4E16E Multimedia Card Interface (HSMCI) */ - TWI0_IRQn = 17, /**< 17 SAM4E16E Two Wire Interface 0 (TWI0) */ - TWI1_IRQn = 18, /**< 18 SAM4E16E Two Wire Interface 1 (TWI1) */ - SPI_IRQn = 19, /**< 19 SAM4E16E Serial Peripheral Interface (SPI) */ - DMAC_IRQn = 20, /**< 20 SAM4E16E DMAC (DMAC) */ - TC0_IRQn = 21, /**< 21 SAM4E16E Timer/Counter 0 (TC0) */ - TC1_IRQn = 22, /**< 22 SAM4E16E Timer/Counter 1 (TC1) */ - TC2_IRQn = 23, /**< 23 SAM4E16E Timer/Counter 2 (TC2) */ - TC3_IRQn = 24, /**< 24 SAM4E16E Timer/Counter 3 (TC3) */ - TC4_IRQn = 25, /**< 25 SAM4E16E Timer/Counter 4 (TC4) */ - TC5_IRQn = 26, /**< 26 SAM4E16E Timer/Counter 5 (TC5) */ - TC6_IRQn = 27, /**< 27 SAM4E16E Timer/Counter 6 (TC6) */ - TC7_IRQn = 28, /**< 28 SAM4E16E Timer/Counter 7 (TC7) */ - TC8_IRQn = 29, /**< 29 SAM4E16E Timer/Counter 8 (TC8) */ - AFEC0_IRQn = 30, /**< 30 SAM4E16E Analog Front End 0 (AFEC0) */ - AFEC1_IRQn = 31, /**< 31 SAM4E16E Analog Front End 1 (AFEC1) */ - DACC_IRQn = 32, /**< 32 SAM4E16E Digital To Analog Converter (DACC) */ - ACC_IRQn = 33, /**< 33 SAM4E16E Analog Comparator (ACC) */ - ARM_IRQn = 34, /**< 34 SAM4E16E FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ - UDP_IRQn = 35, /**< 35 SAM4E16E USB DEVICE (UDP) */ - PWM_IRQn = 36, /**< 36 SAM4E16E PWM (PWM) */ - CAN0_IRQn = 37, /**< 37 SAM4E16E CAN0 (CAN0) */ - CAN1_IRQn = 38, /**< 38 SAM4E16E CAN1 (CAN1) */ - AES_IRQn = 39, /**< 39 SAM4E16E AES (AES) */ - GMAC_IRQn = 44, /**< 44 SAM4E16E EMAC (GMAC) */ - UART1_IRQn = 45, /**< 45 SAM4E16E UART (UART1) */ - - PERIPH_COUNT_IRQn = 46 /**< Number of peripheral IDs */ -} IRQn_Type; - -typedef struct _DeviceVectors -{ - /* Stack pointer */ - void* pvStack; - - /* Cortex-M handlers */ - void* pfnReset_Handler; - void* pfnNMI_Handler; - void* pfnHardFault_Handler; - void* pfnMemManage_Handler; - void* pfnBusFault_Handler; - void* pfnUsageFault_Handler; - void* pfnReserved1_Handler; - void* pfnReserved2_Handler; - void* pfnReserved3_Handler; - void* pfnReserved4_Handler; - void* pfnSVC_Handler; - void* pfnDebugMon_Handler; - void* pfnReserved5_Handler; - void* pfnPendSV_Handler; - void* pfnSysTick_Handler; - - /* Peripheral handlers */ - void* pfnSUPC_Handler; /* 0 Supply Controller */ - void* pfnRSTC_Handler; /* 1 Reset Controller */ - void* pfnRTC_Handler; /* 2 Real Time Clock */ - void* pfnRTT_Handler; /* 3 Real Time Timer */ - void* pfnWDT_Handler; /* 4 Watchdog/Dual Watchdog Timer */ - void* pfnPMC_Handler; /* 5 Power Management Controller */ - void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ - void* pfnUART0_Handler; /* 7 UART 0 */ - void* pvReserved8; - void* pfnPIOA_Handler; /* 9 Parallel I/O Controller A */ - void* pfnPIOB_Handler; /* 10 Parallel I/O Controller B */ - void* pfnPIOC_Handler; /* 11 Parallel I/O Controller C */ - void* pfnPIOD_Handler; /* 12 Parallel I/O Controller D */ - void* pfnPIOE_Handler; /* 13 Parallel I/O Controller E */ - void* pfnUSART0_Handler; /* 14 USART 0 */ - void* pfnUSART1_Handler; /* 15 USART 1 */ - void* pfnHSMCI_Handler; /* 16 Multimedia Card Interface */ - void* pfnTWI0_Handler; /* 17 Two Wire Interface 0 */ - void* pfnTWI1_Handler; /* 18 Two Wire Interface 1 */ - void* pfnSPI_Handler; /* 19 Serial Peripheral Interface */ - void* pfnDMAC_Handler; /* 20 DMAC */ - void* pfnTC0_Handler; /* 21 Timer/Counter 0 */ - void* pfnTC1_Handler; /* 22 Timer/Counter 1 */ - void* pfnTC2_Handler; /* 23 Timer/Counter 2 */ - void* pfnTC3_Handler; /* 24 Timer/Counter 3 */ - void* pfnTC4_Handler; /* 25 Timer/Counter 4 */ - void* pfnTC5_Handler; /* 26 Timer/Counter 5 */ - void* pfnTC6_Handler; /* 27 Timer/Counter 6 */ - void* pfnTC7_Handler; /* 28 Timer/Counter 7 */ - void* pfnTC8_Handler; /* 29 Timer/Counter 8 */ - void* pfnAFEC0_Handler; /* 30 Analog Front End 0 */ - void* pfnAFEC1_Handler; /* 31 Analog Front End 1 */ - void* pfnDACC_Handler; /* 32 Digital To Analog Converter */ - void* pfnACC_Handler; /* 33 Analog Comparator */ - void* pfnARM_Handler; /* 34 FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC */ - void* pfnUDP_Handler; /* 35 USB DEVICE */ - void* pfnPWM_Handler; /* 36 PWM */ - void* pfnCAN0_Handler; /* 37 CAN0 */ - void* pfnCAN1_Handler; /* 38 CAN1 */ - void* pfnAES_Handler; /* 39 AES */ - void* pvReserved40; - void* pvReserved41; - void* pvReserved42; - void* pvReserved43; - void* pfnGMAC_Handler; /* 44 EMAC */ - void* pfnUART1_Handler; /* 45 UART */ -} DeviceVectors; - -/* Cortex-M4 core handlers */ -void Reset_Handler ( void ); -void NMI_Handler ( void ); -void HardFault_Handler ( void ); -void MemManage_Handler ( void ); -void BusFault_Handler ( void ); -void UsageFault_Handler ( void ); -void SVC_Handler ( void ); -void DebugMon_Handler ( void ); -void PendSV_Handler ( void ); -void SysTick_Handler ( void ); - -/* Peripherals handlers */ -void ACC_Handler ( void ); -void AES_Handler ( void ); -void AFEC0_Handler ( void ); -void AFEC1_Handler ( void ); -void ARM_Handler ( void ); -void CAN0_Handler ( void ); -void CAN1_Handler ( void ); -void DACC_Handler ( void ); -void DMAC_Handler ( void ); -void EFC_Handler ( void ); -void GMAC_Handler ( void ); -void HSMCI_Handler ( void ); -void PIOA_Handler ( void ); -void PIOB_Handler ( void ); -void PIOC_Handler ( void ); -void PIOD_Handler ( void ); -void PIOE_Handler ( void ); -void PMC_Handler ( void ); -void PWM_Handler ( void ); -void RSTC_Handler ( void ); -void RTC_Handler ( void ); -void RTT_Handler ( void ); -void SPI_Handler ( void ); -void SUPC_Handler ( void ); -void TC0_Handler ( void ); -void TC1_Handler ( void ); -void TC2_Handler ( void ); -void TC3_Handler ( void ); -void TC4_Handler ( void ); -void TC5_Handler ( void ); -void TC6_Handler ( void ); -void TC7_Handler ( void ); -void TC8_Handler ( void ); -void TWI0_Handler ( void ); -void TWI1_Handler ( void ); -void UART0_Handler ( void ); -void UART1_Handler ( void ); -void UDP_Handler ( void ); -void USART0_Handler ( void ); -void USART1_Handler ( void ); -void WDT_Handler ( void ); - -/** - * \brief Configuration of the Cortex-M4 Processor and Core Peripherals - */ - -#define __CM4_REV 0x0000 /**< SAM4E16E core revision number ([15:8] revision number, [7:0] patch number) */ -#define __MPU_PRESENT 0 /**< SAM4E16E does not provide a MPU */ -#define __FPU_PRESENT 1 /**< SAM4E16E does provide a FPU */ -#define __NVIC_PRIO_BITS 4 /**< SAM4E16E uses 4 Bits for the Priority Levels */ -#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ - -/* - * \brief CMSIS includes - */ - -#include -#if !defined DONT_USE_CMSIS_INIT -#include "system_sam4e.h" -#endif /* DONT_USE_CMSIS_INIT */ - -/*@}*/ - -/* ************************************************************************** */ -/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM4E16E */ -/* ************************************************************************** */ -/** \addtogroup SAM4E16E_api Peripheral Software API */ -/*@{*/ - -#include "component/acc.h" -#include "component/aes.h" -#include "component/afec.h" -#include "component/can.h" -#include "component/chipid.h" -#include "component/cmcc.h" -#include "component/crccu.h" -#include "component/dacc.h" -#include "component/dmac.h" -#include "component/efc.h" -#include "component/gmac.h" -#include "component/gpbr.h" -#include "component/hsmci.h" -#include "component/matrix.h" -#include "component/pdc.h" -#include "component/pio.h" -#include "component/pmc.h" -#include "component/pwm.h" -#include "component/rstc.h" -#include "component/rswdt.h" -#include "component/rtc.h" -#include "component/rtt.h" -#include "component/smc.h" -#include "component/spi.h" -#include "component/supc.h" -#include "component/tc.h" -#include "component/twi.h" -#include "component/uart.h" -#include "component/udp.h" -#include "component/usart.h" -#include "component/wdt.h" -/*@}*/ - -/* ************************************************************************** */ -/* REGISTER ACCESS DEFINITIONS FOR SAM4E16E */ -/* ************************************************************************** */ -/** \addtogroup SAM4E16E_reg Registers Access Definitions */ -/*@{*/ - -#include "instance/pwm.h" -#include "instance/aes.h" -#include "instance/can0.h" -#include "instance/can1.h" -#include "instance/gmac.h" -#include "instance/crccu.h" -#include "instance/smc.h" -#include "instance/uart1.h" -#include "instance/hsmci.h" -#include "instance/udp.h" -#include "instance/spi.h" -#include "instance/tc0.h" -#include "instance/tc1.h" -#include "instance/tc2.h" -#include "instance/usart0.h" -#include "instance/usart1.h" -#include "instance/twi0.h" -#include "instance/twi1.h" -#include "instance/afec0.h" -#include "instance/afec1.h" -#include "instance/dacc.h" -#include "instance/acc.h" -#include "instance/dmac.h" -#include "instance/cmcc.h" -#include "instance/matrix.h" -#include "instance/pmc.h" -#include "instance/uart0.h" -#include "instance/chipid.h" -#include "instance/efc.h" -#include "instance/pioa.h" -#include "instance/piob.h" -#include "instance/pioc.h" -#include "instance/piod.h" -#include "instance/pioe.h" -#include "instance/rstc.h" -#include "instance/supc.h" -#include "instance/rtt.h" -#include "instance/wdt.h" -#include "instance/rtc.h" -#include "instance/gpbr.h" -#include "instance/rswdt.h" -/*@}*/ - -/* ************************************************************************** */ -/* PERIPHERAL ID DEFINITIONS FOR SAM4E16E */ -/* ************************************************************************** */ -/** \addtogroup SAM4E16E_id Peripheral Ids Definitions */ -/*@{*/ - -#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ -#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ -#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ -#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ -#define ID_WDT ( 4) /**< \brief Watchdog/Dual Watchdog Timer (WDT) */ -#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ -#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ -#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ -#define ID_SMC ( 8) /**< \brief Static Memory Controller (SMC) */ -#define ID_PIOA ( 9) /**< \brief Parallel I/O Controller A (PIOA) */ -#define ID_PIOB (10) /**< \brief Parallel I/O Controller B (PIOB) */ -#define ID_PIOC (11) /**< \brief Parallel I/O Controller C (PIOC) */ -#define ID_PIOD (12) /**< \brief Parallel I/O Controller D (PIOD) */ -#define ID_PIOE (13) /**< \brief Parallel I/O Controller E (PIOE) */ -#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ -#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ -#define ID_HSMCI (16) /**< \brief Multimedia Card Interface (HSMCI) */ -#define ID_TWI0 (17) /**< \brief Two Wire Interface 0 (TWI0) */ -#define ID_TWI1 (18) /**< \brief Two Wire Interface 1 (TWI1) */ -#define ID_SPI (19) /**< \brief Serial Peripheral Interface (SPI) */ -#define ID_DMAC (20) /**< \brief DMAC (DMAC) */ -#define ID_TC0 (21) /**< \brief Timer/Counter 0 (TC0) */ -#define ID_TC1 (22) /**< \brief Timer/Counter 1 (TC1) */ -#define ID_TC2 (23) /**< \brief Timer/Counter 2 (TC2) */ -#define ID_TC3 (24) /**< \brief Timer/Counter 3 (TC3) */ -#define ID_TC4 (25) /**< \brief Timer/Counter 4 (TC4) */ -#define ID_TC5 (26) /**< \brief Timer/Counter 5 (TC5) */ -#define ID_TC6 (27) /**< \brief Timer/Counter 6 (TC6) */ -#define ID_TC7 (28) /**< \brief Timer/Counter 7 (TC7) */ -#define ID_TC8 (29) /**< \brief Timer/Counter 8 (TC8) */ -#define ID_AFEC0 (30) /**< \brief Analog Front End 0 (AFEC0) */ -#define ID_AFEC1 (31) /**< \brief Analog Front End 1 (AFEC1) */ -#define ID_DACC (32) /**< \brief Digital To Analog Converter (DACC) */ -#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ -#define ID_ARM (34) /**< \brief FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ -#define ID_UDP (35) /**< \brief USB DEVICE (UDP) */ -#define ID_PWM (36) /**< \brief PWM (PWM) */ -#define ID_CAN0 (37) /**< \brief CAN0 (CAN0) */ -#define ID_CAN1 (38) /**< \brief CAN1 (CAN1) */ -#define ID_AES (39) /**< \brief AES (AES) */ -#define ID_GMAC (44) /**< \brief EMAC (GMAC) */ -#define ID_UART1 (45) /**< \brief UART (UART1) */ - -#define ID_PERIPH_COUNT (46) /**< \brief Number of peripheral IDs */ -/*@}*/ - -/* ************************************************************************** */ -/* BASE ADDRESS DEFINITIONS FOR SAM4E16E */ -/* ************************************************************************** */ -/** \addtogroup SAM4E16E_base Peripheral Base Address Definitions */ -/*@{*/ - -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define PWM (0x40000000U) /**< \brief (PWM ) Base Address */ -#define PDC_PWM (0x40000100U) /**< \brief (PDC_PWM ) Base Address */ -#define AES (0x40004000U) /**< \brief (AES ) Base Address */ -#define CAN0 (0x40010000U) /**< \brief (CAN0 ) Base Address */ -#define CAN1 (0x40014000U) /**< \brief (CAN1 ) Base Address */ -#define GMAC (0x40034000U) /**< \brief (GMAC ) Base Address */ -#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ -#define SMC (0x40060000U) /**< \brief (SMC ) Base Address */ -#define UART1 (0x40060600U) /**< \brief (UART1 ) Base Address */ -#define PDC_UART1 (0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ -#define HSMCI (0x40080000U) /**< \brief (HSMCI ) Base Address */ -#define PDC_HSMCI (0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ -#define UDP (0x40084000U) /**< \brief (UDP ) Base Address */ -#define SPI (0x40088000U) /**< \brief (SPI ) Base Address */ -#define PDC_SPI (0x40088100U) /**< \brief (PDC_SPI ) Base Address */ -#define TC0 (0x40090000U) /**< \brief (TC0 ) Base Address */ -#define PDC_TC0 (0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ -#define TC1 (0x40094000U) /**< \brief (TC1 ) Base Address */ -#define PDC_TC1 (0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ -#define TC2 (0x40098000U) /**< \brief (TC2 ) Base Address */ -#define USART0 (0x400A0000U) /**< \brief (USART0 ) Base Address */ -#define PDC_USART0 (0x400A0100U) /**< \brief (PDC_USART0) Base Address */ -#define USART1 (0x400A4000U) /**< \brief (USART1 ) Base Address */ -#define PDC_USART1 (0x400A4100U) /**< \brief (PDC_USART1) Base Address */ -#define TWI0 (0x400A8000U) /**< \brief (TWI0 ) Base Address */ -#define PDC_TWI0 (0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ -#define TWI1 (0x400AC000U) /**< \brief (TWI1 ) Base Address */ -#define PDC_TWI1 (0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ -#define AFEC0 (0x400B0000U) /**< \brief (AFEC0 ) Base Address */ -#define PDC_AFEC0 (0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ -#define AFEC1 (0x400B4000U) /**< \brief (AFEC1 ) Base Address */ -#define PDC_AFEC1 (0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ -#define DACC (0x400B8000U) /**< \brief (DACC ) Base Address */ -#define PDC_DACC (0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ -#define ACC (0x400BC000U) /**< \brief (ACC ) Base Address */ -#define DMAC (0x400C0000U) /**< \brief (DMAC ) Base Address */ -#define CMCC (0x400C4000U) /**< \brief (CMCC ) Base Address */ -#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ -#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ -#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ -#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ -#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ -#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ -#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ -#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ -#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ -#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ -#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ -#define PIOE (0x400E1600U) /**< \brief (PIOE ) Base Address */ -#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ -#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ -#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ -#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ -#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ -#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ -#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ -#else -#define PWM ((Pwm *)0x40000000U) /**< \brief (PWM ) Base Address */ -#define PDC_PWM ((Pdc *)0x40000100U) /**< \brief (PDC_PWM ) Base Address */ -#define AES ((Aes *)0x40004000U) /**< \brief (AES ) Base Address */ -#define CAN0 ((Can *)0x40010000U) /**< \brief (CAN0 ) Base Address */ -#define CAN1 ((Can *)0x40014000U) /**< \brief (CAN1 ) Base Address */ -#define GMAC ((Gmac *)0x40034000U) /**< \brief (GMAC ) Base Address */ -#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ -#define SMC ((Smc *)0x40060000U) /**< \brief (SMC ) Base Address */ -#define UART1 ((Uart *)0x40060600U) /**< \brief (UART1 ) Base Address */ -#define PDC_UART1 ((Pdc *)0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ -#define HSMCI ((Hsmci *)0x40080000U) /**< \brief (HSMCI ) Base Address */ -#define PDC_HSMCI ((Pdc *)0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ -#define UDP ((Udp *)0x40084000U) /**< \brief (UDP ) Base Address */ -#define SPI ((Spi *)0x40088000U) /**< \brief (SPI ) Base Address */ -#define PDC_SPI ((Pdc *)0x40088100U) /**< \brief (PDC_SPI ) Base Address */ -#define TC0 ((Tc *)0x40090000U) /**< \brief (TC0 ) Base Address */ -#define PDC_TC0 ((Pdc *)0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ -#define TC1 ((Tc *)0x40094000U) /**< \brief (TC1 ) Base Address */ -#define PDC_TC1 ((Pdc *)0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ -#define TC2 ((Tc *)0x40098000U) /**< \brief (TC2 ) Base Address */ -#define USART0 ((Usart *)0x400A0000U) /**< \brief (USART0 ) Base Address */ -#define PDC_USART0 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART0) Base Address */ -#define USART1 ((Usart *)0x400A4000U) /**< \brief (USART1 ) Base Address */ -#define PDC_USART1 ((Pdc *)0x400A4100U) /**< \brief (PDC_USART1) Base Address */ -#define TWI0 ((Twi *)0x400A8000U) /**< \brief (TWI0 ) Base Address */ -#define PDC_TWI0 ((Pdc *)0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ -#define TWI1 ((Twi *)0x400AC000U) /**< \brief (TWI1 ) Base Address */ -#define PDC_TWI1 ((Pdc *)0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ -#define AFEC0 ((Afec *)0x400B0000U) /**< \brief (AFEC0 ) Base Address */ -#define PDC_AFEC0 ((Pdc *)0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ -#define AFEC1 ((Afec *)0x400B4000U) /**< \brief (AFEC1 ) Base Address */ -#define PDC_AFEC1 ((Pdc *)0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ -#define DACC ((Dacc *)0x400B8000U) /**< \brief (DACC ) Base Address */ -#define PDC_DACC ((Pdc *)0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ -#define ACC ((Acc *)0x400BC000U) /**< \brief (ACC ) Base Address */ -#define DMAC ((Dmac *)0x400C0000U) /**< \brief (DMAC ) Base Address */ -#define CMCC ((Cmcc *)0x400C4000U) /**< \brief (CMCC ) Base Address */ -#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ -#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ -#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ -#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ -#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ -#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ -#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ -#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ -#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ -#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ -#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ -#define PIOE ((Pio *)0x400E1600U) /**< \brief (PIOE ) Base Address */ -#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ -#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ -#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ -#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ -#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ -#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ -#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/*@}*/ - -/* ************************************************************************** */ -/* PIO DEFINITIONS FOR SAM4E16E */ -/* ************************************************************************** */ -/** \addtogroup SAM4E16E_pio Peripheral Pio Definitions */ -/*@{*/ - -#include "pio/sam4e16e.h" -/*@}*/ - -/* ************************************************************************** */ -/* MEMORY MAPPING DEFINITIONS FOR SAM4E16E */ -/* ************************************************************************** */ - -#define IFLASH_SIZE (0x100000u) -#define IFLASH_PAGE_SIZE (512u) -#define IFLASH_LOCK_REGION_SIZE (8192u) -#define IFLASH_NB_OF_PAGES (2048u) -#define IFLASH_NB_OF_LOCK_BITS (128u) -#define IRAM_SIZE (0x20000u) - -#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ -#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ -#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ -#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ -#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ -#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ -#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ - -/* ************************************************************************** */ -/* MISCELLANEOUS DEFINITIONS FOR SAM4E16E */ -/* ************************************************************************** */ - -#define CHIP_JTAGID (0x05B3703FUL) -#define CHIP_CIDR (0xA3CC0CE0UL) -#define CHIP_EXID (0x00120200UL) -#define NB_CH_AFE0 (16UL) -#define NB_CH_AFE1 (8UL) - -/* ************************************************************************** */ -/* ELECTRICAL DEFINITIONS FOR SAM4E16E */ -/* ************************************************************************** */ - -/* Device characteristics */ -#define CHIP_FREQ_SLCK_RC_MIN (20000UL) -#define CHIP_FREQ_SLCK_RC (32000UL) -#define CHIP_FREQ_SLCK_RC_MAX (44000UL) -#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) -#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) -#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) -#define CHIP_FREQ_CPU_MAX (120000000UL) -#define CHIP_FREQ_XTAL_32K (32768UL) -#define CHIP_FREQ_XTAL_12M (12000000UL) - -/* Embedded Flash Write Wait State */ -#define CHIP_FLASH_WRITE_WAIT_STATE (6U) - -/* Embedded Flash Read Wait State (VDDCORE set at 1.20V) */ -#define CHIP_FREQ_FWS_0 (20000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ -#define CHIP_FREQ_FWS_1 (40000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ -#define CHIP_FREQ_FWS_2 (60000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ -#define CHIP_FREQ_FWS_3 (80000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ -#define CHIP_FREQ_FWS_4 (100000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ -#define CHIP_FREQ_FWS_5 (123000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ - -#ifdef __cplusplus -} -#endif - -/*@}*/ - -#endif /* _SAM4E16E_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e8c.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e8c.h deleted file mode 100644 index c1e34cab2..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e8c.h +++ /dev/null @@ -1,590 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E8C_ -#define _SAM4E8C_ - -/** \addtogroup SAM4E8C_definitions SAM4E8C definitions - This file defines all structures and symbols for SAM4E8C: - - registers and bitfields - - peripheral base address - - peripheral ID - - PIO definitions -*/ -/*@{*/ - -#ifdef __cplusplus - extern "C" { -#endif - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#include -#ifndef __cplusplus -typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ -#else -typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ -#endif -typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ -typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ -#endif - -/* ************************************************************************** */ -/* CMSIS DEFINITIONS FOR SAM4E8C */ -/* ************************************************************************** */ -/** \addtogroup SAM4E8C_cmsis CMSIS Definitions */ -/*@{*/ - -/**< Interrupt Number Definition */ -typedef enum IRQn -{ -/****** Cortex-M4 Processor Exceptions Numbers ******************************/ - NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ - MemoryManagement_IRQn = -12, /**< 4 Cortex-M4 Memory Management Interrupt */ - BusFault_IRQn = -11, /**< 5 Cortex-M4 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /**< 6 Cortex-M4 Usage Fault Interrupt */ - SVCall_IRQn = -5, /**< 11 Cortex-M4 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /**< 12 Cortex-M4 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /**< 14 Cortex-M4 Pend SV Interrupt */ - SysTick_IRQn = -1, /**< 15 Cortex-M4 System Tick Interrupt */ -/****** SAM4E8C specific Interrupt Numbers *********************************/ - - SUPC_IRQn = 0, /**< 0 SAM4E8C Supply Controller (SUPC) */ - RSTC_IRQn = 1, /**< 1 SAM4E8C Reset Controller (RSTC) */ - RTC_IRQn = 2, /**< 2 SAM4E8C Real Time Clock (RTC) */ - RTT_IRQn = 3, /**< 3 SAM4E8C Real Time Timer (RTT) */ - WDT_IRQn = 4, /**< 4 SAM4E8C Watchdog/Dual Watchdog Timer (WDT) */ - PMC_IRQn = 5, /**< 5 SAM4E8C Power Management Controller (PMC) */ - EFC_IRQn = 6, /**< 6 SAM4E8C Enhanced Embedded Flash Controller (EFC) */ - UART0_IRQn = 7, /**< 7 SAM4E8C UART 0 (UART0) */ - PIOA_IRQn = 9, /**< 9 SAM4E8C Parallel I/O Controller A (PIOA) */ - PIOB_IRQn = 10, /**< 10 SAM4E8C Parallel I/O Controller B (PIOB) */ - PIOC_IRQn = 11, /**< 11 SAM4E8C Parallel I/O Controller C (PIOC) */ - USART0_IRQn = 14, /**< 14 SAM4E8C USART 0 (USART0) */ - USART1_IRQn = 15, /**< 15 SAM4E8C USART 1 (USART1) */ - HSMCI_IRQn = 16, /**< 16 SAM4E8C Multimedia Card Interface (HSMCI) */ - TWI0_IRQn = 17, /**< 17 SAM4E8C Two Wire Interface 0 (TWI0) */ - TWI1_IRQn = 18, /**< 18 SAM4E8C Two Wire Interface 1 (TWI1) */ - SPI_IRQn = 19, /**< 19 SAM4E8C Serial Peripheral Interface (SPI) */ - DMAC_IRQn = 20, /**< 20 SAM4E8C DMAC (DMAC) */ - TC0_IRQn = 21, /**< 21 SAM4E8C Timer/Counter 0 (TC0) */ - TC1_IRQn = 22, /**< 22 SAM4E8C Timer/Counter 1 (TC1) */ - TC2_IRQn = 23, /**< 23 SAM4E8C Timer/Counter 2 (TC2) */ - TC3_IRQn = 24, /**< 24 SAM4E8C Timer/Counter 3 (TC3) */ - TC4_IRQn = 25, /**< 25 SAM4E8C Timer/Counter 4 (TC4) */ - TC5_IRQn = 26, /**< 26 SAM4E8C Timer/Counter 5 (TC5) */ - TC6_IRQn = 27, /**< 27 SAM4E8C Timer/Counter 6 (TC6) */ - TC7_IRQn = 28, /**< 28 SAM4E8C Timer/Counter 7 (TC7) */ - TC8_IRQn = 29, /**< 29 SAM4E8C Timer/Counter 8 (TC8) */ - AFEC0_IRQn = 30, /**< 30 SAM4E8C Analog Front End 0 (AFEC0) */ - AFEC1_IRQn = 31, /**< 31 SAM4E8C Analog Front End 1 (AFEC1) */ - DACC_IRQn = 32, /**< 32 SAM4E8C Digital To Analog Converter (DACC) */ - ACC_IRQn = 33, /**< 33 SAM4E8C Analog Comparator (ACC) */ - ARM_IRQn = 34, /**< 34 SAM4E8C FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ - UDP_IRQn = 35, /**< 35 SAM4E8C USB DEVICE (UDP) */ - PWM_IRQn = 36, /**< 36 SAM4E8C PWM (PWM) */ - CAN0_IRQn = 37, /**< 37 SAM4E8C CAN0 (CAN0) */ - CAN1_IRQn = 38, /**< 38 SAM4E8C CAN1 (CAN1) */ - AES_IRQn = 39, /**< 39 SAM4E8C AES (AES) */ - UART1_IRQn = 45, /**< 45 SAM4E8C UART (UART1) */ - - PERIPH_COUNT_IRQn = 46 /**< Number of peripheral IDs */ -} IRQn_Type; - -typedef struct _DeviceVectors -{ - /* Stack pointer */ - void* pvStack; - - /* Cortex-M handlers */ - void* pfnReset_Handler; - void* pfnNMI_Handler; - void* pfnHardFault_Handler; - void* pfnMemManage_Handler; - void* pfnBusFault_Handler; - void* pfnUsageFault_Handler; - void* pfnReserved1_Handler; - void* pfnReserved2_Handler; - void* pfnReserved3_Handler; - void* pfnReserved4_Handler; - void* pfnSVC_Handler; - void* pfnDebugMon_Handler; - void* pfnReserved5_Handler; - void* pfnPendSV_Handler; - void* pfnSysTick_Handler; - - /* Peripheral handlers */ - void* pfnSUPC_Handler; /* 0 Supply Controller */ - void* pfnRSTC_Handler; /* 1 Reset Controller */ - void* pfnRTC_Handler; /* 2 Real Time Clock */ - void* pfnRTT_Handler; /* 3 Real Time Timer */ - void* pfnWDT_Handler; /* 4 Watchdog/Dual Watchdog Timer */ - void* pfnPMC_Handler; /* 5 Power Management Controller */ - void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ - void* pfnUART0_Handler; /* 7 UART 0 */ - void* pvReserved8; - void* pfnPIOA_Handler; /* 9 Parallel I/O Controller A */ - void* pfnPIOB_Handler; /* 10 Parallel I/O Controller B */ - void* pfnPIOC_Handler; /* 11 Parallel I/O Controller C */ - void* pvReserved12; - void* pvReserved13; - void* pfnUSART0_Handler; /* 14 USART 0 */ - void* pfnUSART1_Handler; /* 15 USART 1 */ - void* pfnHSMCI_Handler; /* 16 Multimedia Card Interface */ - void* pfnTWI0_Handler; /* 17 Two Wire Interface 0 */ - void* pfnTWI1_Handler; /* 18 Two Wire Interface 1 */ - void* pfnSPI_Handler; /* 19 Serial Peripheral Interface */ - void* pfnDMAC_Handler; /* 20 DMAC */ - void* pfnTC0_Handler; /* 21 Timer/Counter 0 */ - void* pfnTC1_Handler; /* 22 Timer/Counter 1 */ - void* pfnTC2_Handler; /* 23 Timer/Counter 2 */ - void* pfnTC3_Handler; /* 24 Timer/Counter 3 */ - void* pfnTC4_Handler; /* 25 Timer/Counter 4 */ - void* pfnTC5_Handler; /* 26 Timer/Counter 5 */ - void* pfnTC6_Handler; /* 27 Timer/Counter 6 */ - void* pfnTC7_Handler; /* 28 Timer/Counter 7 */ - void* pfnTC8_Handler; /* 29 Timer/Counter 8 */ - void* pfnAFEC0_Handler; /* 30 Analog Front End 0 */ - void* pfnAFEC1_Handler; /* 31 Analog Front End 1 */ - void* pfnDACC_Handler; /* 32 Digital To Analog Converter */ - void* pfnACC_Handler; /* 33 Analog Comparator */ - void* pfnARM_Handler; /* 34 FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC */ - void* pfnUDP_Handler; /* 35 USB DEVICE */ - void* pfnPWM_Handler; /* 36 PWM */ - void* pfnCAN0_Handler; /* 37 CAN0 */ - void* pfnCAN1_Handler; /* 38 CAN1 */ - void* pfnAES_Handler; /* 39 AES */ - void* pvReserved40; - void* pvReserved41; - void* pvReserved42; - void* pvReserved43; - void* pvReserved44; - void* pfnUART1_Handler; /* 45 UART */ -} DeviceVectors; - -/* Cortex-M4 core handlers */ -void Reset_Handler ( void ); -void NMI_Handler ( void ); -void HardFault_Handler ( void ); -void MemManage_Handler ( void ); -void BusFault_Handler ( void ); -void UsageFault_Handler ( void ); -void SVC_Handler ( void ); -void DebugMon_Handler ( void ); -void PendSV_Handler ( void ); -void SysTick_Handler ( void ); - -/* Peripherals handlers */ -void ACC_Handler ( void ); -void AES_Handler ( void ); -void AFEC0_Handler ( void ); -void AFEC1_Handler ( void ); -void ARM_Handler ( void ); -void CAN0_Handler ( void ); -void CAN1_Handler ( void ); -void DACC_Handler ( void ); -void DMAC_Handler ( void ); -void EFC_Handler ( void ); -void HSMCI_Handler ( void ); -void PIOA_Handler ( void ); -void PIOB_Handler ( void ); -void PIOC_Handler ( void ); -void PMC_Handler ( void ); -void PWM_Handler ( void ); -void RSTC_Handler ( void ); -void RTC_Handler ( void ); -void RTT_Handler ( void ); -void SPI_Handler ( void ); -void SUPC_Handler ( void ); -void TC0_Handler ( void ); -void TC1_Handler ( void ); -void TC2_Handler ( void ); -void TC3_Handler ( void ); -void TC4_Handler ( void ); -void TC5_Handler ( void ); -void TC6_Handler ( void ); -void TC7_Handler ( void ); -void TC8_Handler ( void ); -void TWI0_Handler ( void ); -void TWI1_Handler ( void ); -void UART0_Handler ( void ); -void UART1_Handler ( void ); -void UDP_Handler ( void ); -void USART0_Handler ( void ); -void USART1_Handler ( void ); -void WDT_Handler ( void ); - -/** - * \brief Configuration of the Cortex-M4 Processor and Core Peripherals - */ - -#define __CM4_REV 0x0000 /**< SAM4E8C core revision number ([15:8] revision number, [7:0] patch number) */ -#define __MPU_PRESENT 0 /**< SAM4E8C does not provide a MPU */ -#define __FPU_PRESENT 1 /**< SAM4E8C does provide a FPU */ -#define __NVIC_PRIO_BITS 4 /**< SAM4E8C uses 4 Bits for the Priority Levels */ -#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ - -/* - * \brief CMSIS includes - */ - -#include -#if !defined DONT_USE_CMSIS_INIT -#include "system_sam4e.h" -#endif /* DONT_USE_CMSIS_INIT */ - -/*@}*/ - -/* ************************************************************************** */ -/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM4E8C */ -/* ************************************************************************** */ -/** \addtogroup SAM4E8C_api Peripheral Software API */ -/*@{*/ - -#include "component/acc.h" -#include "component/aes.h" -#include "component/afec.h" -#include "component/can.h" -#include "component/chipid.h" -#include "component/cmcc.h" -#include "component/crccu.h" -#include "component/dacc.h" -#include "component/dmac.h" -#include "component/efc.h" -#include "component/gpbr.h" -#include "component/hsmci.h" -#include "component/matrix.h" -#include "component/pdc.h" -#include "component/pio.h" -#include "component/pmc.h" -#include "component/pwm.h" -#include "component/rstc.h" -#include "component/rswdt.h" -#include "component/rtc.h" -#include "component/rtt.h" -#include "component/spi.h" -#include "component/supc.h" -#include "component/tc.h" -#include "component/twi.h" -#include "component/uart.h" -#include "component/udp.h" -#include "component/usart.h" -#include "component/wdt.h" -/*@}*/ - -/* ************************************************************************** */ -/* REGISTER ACCESS DEFINITIONS FOR SAM4E8C */ -/* ************************************************************************** */ -/** \addtogroup SAM4E8C_reg Registers Access Definitions */ -/*@{*/ - -#include "instance/pwm.h" -#include "instance/aes.h" -#include "instance/can0.h" -#include "instance/can1.h" -#include "instance/crccu.h" -#include "instance/uart1.h" -#include "instance/hsmci.h" -#include "instance/udp.h" -#include "instance/spi.h" -#include "instance/tc0.h" -#include "instance/tc1.h" -#include "instance/tc2.h" -#include "instance/usart0.h" -#include "instance/usart1.h" -#include "instance/twi0.h" -#include "instance/twi1.h" -#include "instance/afec0.h" -#include "instance/afec1.h" -#include "instance/dacc.h" -#include "instance/acc.h" -#include "instance/dmac.h" -#include "instance/cmcc.h" -#include "instance/matrix.h" -#include "instance/pmc.h" -#include "instance/uart0.h" -#include "instance/chipid.h" -#include "instance/efc.h" -#include "instance/pioa.h" -#include "instance/piob.h" -#include "instance/pioc.h" -#include "instance/rstc.h" -#include "instance/supc.h" -#include "instance/rtt.h" -#include "instance/wdt.h" -#include "instance/rtc.h" -#include "instance/gpbr.h" -#include "instance/rswdt.h" -/*@}*/ - -/* ************************************************************************** */ -/* PERIPHERAL ID DEFINITIONS FOR SAM4E8C */ -/* ************************************************************************** */ -/** \addtogroup SAM4E8C_id Peripheral Ids Definitions */ -/*@{*/ - -#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ -#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ -#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ -#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ -#define ID_WDT ( 4) /**< \brief Watchdog/Dual Watchdog Timer (WDT) */ -#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ -#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ -#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ -#define ID_PIOA ( 9) /**< \brief Parallel I/O Controller A (PIOA) */ -#define ID_PIOB (10) /**< \brief Parallel I/O Controller B (PIOB) */ -#define ID_PIOC (11) /**< \brief Parallel I/O Controller C (PIOC) */ -#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ -#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ -#define ID_HSMCI (16) /**< \brief Multimedia Card Interface (HSMCI) */ -#define ID_TWI0 (17) /**< \brief Two Wire Interface 0 (TWI0) */ -#define ID_TWI1 (18) /**< \brief Two Wire Interface 1 (TWI1) */ -#define ID_SPI (19) /**< \brief Serial Peripheral Interface (SPI) */ -#define ID_DMAC (20) /**< \brief DMAC (DMAC) */ -#define ID_TC0 (21) /**< \brief Timer/Counter 0 (TC0) */ -#define ID_TC1 (22) /**< \brief Timer/Counter 1 (TC1) */ -#define ID_TC2 (23) /**< \brief Timer/Counter 2 (TC2) */ -#define ID_TC3 (24) /**< \brief Timer/Counter 3 (TC3) */ -#define ID_TC4 (25) /**< \brief Timer/Counter 4 (TC4) */ -#define ID_TC5 (26) /**< \brief Timer/Counter 5 (TC5) */ -#define ID_TC6 (27) /**< \brief Timer/Counter 6 (TC6) */ -#define ID_TC7 (28) /**< \brief Timer/Counter 7 (TC7) */ -#define ID_TC8 (29) /**< \brief Timer/Counter 8 (TC8) */ -#define ID_AFEC0 (30) /**< \brief Analog Front End 0 (AFEC0) */ -#define ID_AFEC1 (31) /**< \brief Analog Front End 1 (AFEC1) */ -#define ID_DACC (32) /**< \brief Digital To Analog Converter (DACC) */ -#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ -#define ID_ARM (34) /**< \brief FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ -#define ID_UDP (35) /**< \brief USB DEVICE (UDP) */ -#define ID_PWM (36) /**< \brief PWM (PWM) */ -#define ID_CAN0 (37) /**< \brief CAN0 (CAN0) */ -#define ID_CAN1 (38) /**< \brief CAN1 (CAN1) */ -#define ID_AES (39) /**< \brief AES (AES) */ -#define ID_UART1 (45) /**< \brief UART (UART1) */ - -#define ID_PERIPH_COUNT (46) /**< \brief Number of peripheral IDs */ -/*@}*/ - -/* ************************************************************************** */ -/* BASE ADDRESS DEFINITIONS FOR SAM4E8C */ -/* ************************************************************************** */ -/** \addtogroup SAM4E8C_base Peripheral Base Address Definitions */ -/*@{*/ - -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define PWM (0x40000000U) /**< \brief (PWM ) Base Address */ -#define PDC_PWM (0x40000100U) /**< \brief (PDC_PWM ) Base Address */ -#define AES (0x40004000U) /**< \brief (AES ) Base Address */ -#define CAN0 (0x40010000U) /**< \brief (CAN0 ) Base Address */ -#define CAN1 (0x40014000U) /**< \brief (CAN1 ) Base Address */ -#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ -#define UART1 (0x40060600U) /**< \brief (UART1 ) Base Address */ -#define PDC_UART1 (0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ -#define HSMCI (0x40080000U) /**< \brief (HSMCI ) Base Address */ -#define PDC_HSMCI (0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ -#define UDP (0x40084000U) /**< \brief (UDP ) Base Address */ -#define SPI (0x40088000U) /**< \brief (SPI ) Base Address */ -#define PDC_SPI (0x40088100U) /**< \brief (PDC_SPI ) Base Address */ -#define TC0 (0x40090000U) /**< \brief (TC0 ) Base Address */ -#define PDC_TC0 (0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ -#define TC1 (0x40094000U) /**< \brief (TC1 ) Base Address */ -#define PDC_TC1 (0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ -#define TC2 (0x40098000U) /**< \brief (TC2 ) Base Address */ -#define USART0 (0x400A0000U) /**< \brief (USART0 ) Base Address */ -#define PDC_USART0 (0x400A0100U) /**< \brief (PDC_USART0) Base Address */ -#define USART1 (0x400A4000U) /**< \brief (USART1 ) Base Address */ -#define PDC_USART1 (0x400A4100U) /**< \brief (PDC_USART1) Base Address */ -#define TWI0 (0x400A8000U) /**< \brief (TWI0 ) Base Address */ -#define PDC_TWI0 (0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ -#define TWI1 (0x400AC000U) /**< \brief (TWI1 ) Base Address */ -#define PDC_TWI1 (0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ -#define AFEC0 (0x400B0000U) /**< \brief (AFEC0 ) Base Address */ -#define PDC_AFEC0 (0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ -#define AFEC1 (0x400B4000U) /**< \brief (AFEC1 ) Base Address */ -#define PDC_AFEC1 (0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ -#define DACC (0x400B8000U) /**< \brief (DACC ) Base Address */ -#define PDC_DACC (0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ -#define ACC (0x400BC000U) /**< \brief (ACC ) Base Address */ -#define DMAC (0x400C0000U) /**< \brief (DMAC ) Base Address */ -#define CMCC (0x400C4000U) /**< \brief (CMCC ) Base Address */ -#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ -#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ -#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ -#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ -#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ -#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ -#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ -#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ -#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ -#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ -#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ -#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ -#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ -#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ -#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ -#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ -#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ -#else -#define PWM ((Pwm *)0x40000000U) /**< \brief (PWM ) Base Address */ -#define PDC_PWM ((Pdc *)0x40000100U) /**< \brief (PDC_PWM ) Base Address */ -#define AES ((Aes *)0x40004000U) /**< \brief (AES ) Base Address */ -#define CAN0 ((Can *)0x40010000U) /**< \brief (CAN0 ) Base Address */ -#define CAN1 ((Can *)0x40014000U) /**< \brief (CAN1 ) Base Address */ -#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ -#define UART1 ((Uart *)0x40060600U) /**< \brief (UART1 ) Base Address */ -#define PDC_UART1 ((Pdc *)0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ -#define HSMCI ((Hsmci *)0x40080000U) /**< \brief (HSMCI ) Base Address */ -#define PDC_HSMCI ((Pdc *)0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ -#define UDP ((Udp *)0x40084000U) /**< \brief (UDP ) Base Address */ -#define SPI ((Spi *)0x40088000U) /**< \brief (SPI ) Base Address */ -#define PDC_SPI ((Pdc *)0x40088100U) /**< \brief (PDC_SPI ) Base Address */ -#define TC0 ((Tc *)0x40090000U) /**< \brief (TC0 ) Base Address */ -#define PDC_TC0 ((Pdc *)0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ -#define TC1 ((Tc *)0x40094000U) /**< \brief (TC1 ) Base Address */ -#define PDC_TC1 ((Pdc *)0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ -#define TC2 ((Tc *)0x40098000U) /**< \brief (TC2 ) Base Address */ -#define USART0 ((Usart *)0x400A0000U) /**< \brief (USART0 ) Base Address */ -#define PDC_USART0 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART0) Base Address */ -#define USART1 ((Usart *)0x400A4000U) /**< \brief (USART1 ) Base Address */ -#define PDC_USART1 ((Pdc *)0x400A4100U) /**< \brief (PDC_USART1) Base Address */ -#define TWI0 ((Twi *)0x400A8000U) /**< \brief (TWI0 ) Base Address */ -#define PDC_TWI0 ((Pdc *)0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ -#define TWI1 ((Twi *)0x400AC000U) /**< \brief (TWI1 ) Base Address */ -#define PDC_TWI1 ((Pdc *)0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ -#define AFEC0 ((Afec *)0x400B0000U) /**< \brief (AFEC0 ) Base Address */ -#define PDC_AFEC0 ((Pdc *)0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ -#define AFEC1 ((Afec *)0x400B4000U) /**< \brief (AFEC1 ) Base Address */ -#define PDC_AFEC1 ((Pdc *)0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ -#define DACC ((Dacc *)0x400B8000U) /**< \brief (DACC ) Base Address */ -#define PDC_DACC ((Pdc *)0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ -#define ACC ((Acc *)0x400BC000U) /**< \brief (ACC ) Base Address */ -#define DMAC ((Dmac *)0x400C0000U) /**< \brief (DMAC ) Base Address */ -#define CMCC ((Cmcc *)0x400C4000U) /**< \brief (CMCC ) Base Address */ -#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ -#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ -#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ -#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ -#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ -#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ -#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ -#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ -#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ -#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ -#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ -#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ -#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ -#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ -#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ -#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ -#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/*@}*/ - -/* ************************************************************************** */ -/* PIO DEFINITIONS FOR SAM4E8C */ -/* ************************************************************************** */ -/** \addtogroup SAM4E8C_pio Peripheral Pio Definitions */ -/*@{*/ - -#include "pio/sam4e8c.h" -/*@}*/ - -/* ************************************************************************** */ -/* MEMORY MAPPING DEFINITIONS FOR SAM4E8C */ -/* ************************************************************************** */ - -#define IFLASH_SIZE (0x80000u) -#define IFLASH_PAGE_SIZE (512u) -#define IFLASH_LOCK_REGION_SIZE (8192u) -#define IFLASH_NB_OF_PAGES (1024u) -#define IFLASH_NB_OF_LOCK_BITS (128u) -#define IRAM_SIZE (0x20000u) - -#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ -#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ -#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ -#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ -#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ -#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ -#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ - -/* ************************************************************************** */ -/* MISCELLANEOUS DEFINITIONS FOR SAM4E8C */ -/* ************************************************************************** */ - -#define CHIP_JTAGID (0x05B3703FUL) -#define CHIP_CIDR (0xA3CC0CE0UL) -#define CHIP_EXID (0x00110209UL) -#define NB_CH_AFE0 (6UL) -#define NB_CH_AFE1 (4UL) - -/* ************************************************************************** */ -/* ELECTRICAL DEFINITIONS FOR SAM4E8C */ -/* ************************************************************************** */ - -/* Device characteristics */ -#define CHIP_FREQ_SLCK_RC_MIN (20000UL) -#define CHIP_FREQ_SLCK_RC (32000UL) -#define CHIP_FREQ_SLCK_RC_MAX (44000UL) -#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) -#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) -#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) -#define CHIP_FREQ_CPU_MAX (120000000UL) -#define CHIP_FREQ_XTAL_32K (32768UL) -#define CHIP_FREQ_XTAL_12M (12000000UL) - -/* Embedded Flash Write Wait State */ -#define CHIP_FLASH_WRITE_WAIT_STATE (6U) - -/* Embedded Flash Read Wait State (VDDCORE set at 1.20V) */ -#define CHIP_FREQ_FWS_0 (20000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ -#define CHIP_FREQ_FWS_1 (40000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ -#define CHIP_FREQ_FWS_2 (60000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ -#define CHIP_FREQ_FWS_3 (80000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ -#define CHIP_FREQ_FWS_4 (100000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ -#define CHIP_FREQ_FWS_5 (123000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ - -#ifdef __cplusplus -} -#endif - -/*@}*/ - -#endif /* _SAM4E8C_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e8e.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e8e.h deleted file mode 100644 index add9c353b..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/include/sam4e8e.h +++ /dev/null @@ -1,614 +0,0 @@ -/** - * \file - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM4E8E_ -#define _SAM4E8E_ - -/** \addtogroup SAM4E8E_definitions SAM4E8E definitions - This file defines all structures and symbols for SAM4E8E: - - registers and bitfields - - peripheral base address - - peripheral ID - - PIO definitions -*/ -/*@{*/ - -#ifdef __cplusplus - extern "C" { -#endif - -#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#include -#ifndef __cplusplus -typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ -#else -typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ -#endif -typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ -typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ -#endif - -/* ************************************************************************** */ -/* CMSIS DEFINITIONS FOR SAM4E8E */ -/* ************************************************************************** */ -/** \addtogroup SAM4E8E_cmsis CMSIS Definitions */ -/*@{*/ - -/**< Interrupt Number Definition */ -typedef enum IRQn -{ -/****** Cortex-M4 Processor Exceptions Numbers ******************************/ - NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ - MemoryManagement_IRQn = -12, /**< 4 Cortex-M4 Memory Management Interrupt */ - BusFault_IRQn = -11, /**< 5 Cortex-M4 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /**< 6 Cortex-M4 Usage Fault Interrupt */ - SVCall_IRQn = -5, /**< 11 Cortex-M4 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /**< 12 Cortex-M4 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /**< 14 Cortex-M4 Pend SV Interrupt */ - SysTick_IRQn = -1, /**< 15 Cortex-M4 System Tick Interrupt */ -/****** SAM4E8E specific Interrupt Numbers *********************************/ - - SUPC_IRQn = 0, /**< 0 SAM4E8E Supply Controller (SUPC) */ - RSTC_IRQn = 1, /**< 1 SAM4E8E Reset Controller (RSTC) */ - RTC_IRQn = 2, /**< 2 SAM4E8E Real Time Clock (RTC) */ - RTT_IRQn = 3, /**< 3 SAM4E8E Real Time Timer (RTT) */ - WDT_IRQn = 4, /**< 4 SAM4E8E Watchdog/Dual Watchdog Timer (WDT) */ - PMC_IRQn = 5, /**< 5 SAM4E8E Power Management Controller (PMC) */ - EFC_IRQn = 6, /**< 6 SAM4E8E Enhanced Embedded Flash Controller (EFC) */ - UART0_IRQn = 7, /**< 7 SAM4E8E UART 0 (UART0) */ - PIOA_IRQn = 9, /**< 9 SAM4E8E Parallel I/O Controller A (PIOA) */ - PIOB_IRQn = 10, /**< 10 SAM4E8E Parallel I/O Controller B (PIOB) */ - PIOC_IRQn = 11, /**< 11 SAM4E8E Parallel I/O Controller C (PIOC) */ - PIOD_IRQn = 12, /**< 12 SAM4E8E Parallel I/O Controller D (PIOD) */ - PIOE_IRQn = 13, /**< 13 SAM4E8E Parallel I/O Controller E (PIOE) */ - USART0_IRQn = 14, /**< 14 SAM4E8E USART 0 (USART0) */ - USART1_IRQn = 15, /**< 15 SAM4E8E USART 1 (USART1) */ - HSMCI_IRQn = 16, /**< 16 SAM4E8E Multimedia Card Interface (HSMCI) */ - TWI0_IRQn = 17, /**< 17 SAM4E8E Two Wire Interface 0 (TWI0) */ - TWI1_IRQn = 18, /**< 18 SAM4E8E Two Wire Interface 1 (TWI1) */ - SPI_IRQn = 19, /**< 19 SAM4E8E Serial Peripheral Interface (SPI) */ - DMAC_IRQn = 20, /**< 20 SAM4E8E DMAC (DMAC) */ - TC0_IRQn = 21, /**< 21 SAM4E8E Timer/Counter 0 (TC0) */ - TC1_IRQn = 22, /**< 22 SAM4E8E Timer/Counter 1 (TC1) */ - TC2_IRQn = 23, /**< 23 SAM4E8E Timer/Counter 2 (TC2) */ - TC3_IRQn = 24, /**< 24 SAM4E8E Timer/Counter 3 (TC3) */ - TC4_IRQn = 25, /**< 25 SAM4E8E Timer/Counter 4 (TC4) */ - TC5_IRQn = 26, /**< 26 SAM4E8E Timer/Counter 5 (TC5) */ - TC6_IRQn = 27, /**< 27 SAM4E8E Timer/Counter 6 (TC6) */ - TC7_IRQn = 28, /**< 28 SAM4E8E Timer/Counter 7 (TC7) */ - TC8_IRQn = 29, /**< 29 SAM4E8E Timer/Counter 8 (TC8) */ - AFEC0_IRQn = 30, /**< 30 SAM4E8E Analog Front End 0 (AFEC0) */ - AFEC1_IRQn = 31, /**< 31 SAM4E8E Analog Front End 1 (AFEC1) */ - DACC_IRQn = 32, /**< 32 SAM4E8E Digital To Analog Converter (DACC) */ - ACC_IRQn = 33, /**< 33 SAM4E8E Analog Comparator (ACC) */ - ARM_IRQn = 34, /**< 34 SAM4E8E FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ - UDP_IRQn = 35, /**< 35 SAM4E8E USB DEVICE (UDP) */ - PWM_IRQn = 36, /**< 36 SAM4E8E PWM (PWM) */ - CAN0_IRQn = 37, /**< 37 SAM4E8E CAN0 (CAN0) */ - CAN1_IRQn = 38, /**< 38 SAM4E8E CAN1 (CAN1) */ - AES_IRQn = 39, /**< 39 SAM4E8E AES (AES) */ - GMAC_IRQn = 44, /**< 44 SAM4E8E EMAC (GMAC) */ - UART1_IRQn = 45, /**< 45 SAM4E8E UART (UART1) */ - - PERIPH_COUNT_IRQn = 46 /**< Number of peripheral IDs */ -} IRQn_Type; - -typedef struct _DeviceVectors -{ - /* Stack pointer */ - void* pvStack; - - /* Cortex-M handlers */ - void* pfnReset_Handler; - void* pfnNMI_Handler; - void* pfnHardFault_Handler; - void* pfnMemManage_Handler; - void* pfnBusFault_Handler; - void* pfnUsageFault_Handler; - void* pfnReserved1_Handler; - void* pfnReserved2_Handler; - void* pfnReserved3_Handler; - void* pfnReserved4_Handler; - void* pfnSVC_Handler; - void* pfnDebugMon_Handler; - void* pfnReserved5_Handler; - void* pfnPendSV_Handler; - void* pfnSysTick_Handler; - - /* Peripheral handlers */ - void* pfnSUPC_Handler; /* 0 Supply Controller */ - void* pfnRSTC_Handler; /* 1 Reset Controller */ - void* pfnRTC_Handler; /* 2 Real Time Clock */ - void* pfnRTT_Handler; /* 3 Real Time Timer */ - void* pfnWDT_Handler; /* 4 Watchdog/Dual Watchdog Timer */ - void* pfnPMC_Handler; /* 5 Power Management Controller */ - void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ - void* pfnUART0_Handler; /* 7 UART 0 */ - void* pvReserved8; - void* pfnPIOA_Handler; /* 9 Parallel I/O Controller A */ - void* pfnPIOB_Handler; /* 10 Parallel I/O Controller B */ - void* pfnPIOC_Handler; /* 11 Parallel I/O Controller C */ - void* pfnPIOD_Handler; /* 12 Parallel I/O Controller D */ - void* pfnPIOE_Handler; /* 13 Parallel I/O Controller E */ - void* pfnUSART0_Handler; /* 14 USART 0 */ - void* pfnUSART1_Handler; /* 15 USART 1 */ - void* pfnHSMCI_Handler; /* 16 Multimedia Card Interface */ - void* pfnTWI0_Handler; /* 17 Two Wire Interface 0 */ - void* pfnTWI1_Handler; /* 18 Two Wire Interface 1 */ - void* pfnSPI_Handler; /* 19 Serial Peripheral Interface */ - void* pfnDMAC_Handler; /* 20 DMAC */ - void* pfnTC0_Handler; /* 21 Timer/Counter 0 */ - void* pfnTC1_Handler; /* 22 Timer/Counter 1 */ - void* pfnTC2_Handler; /* 23 Timer/Counter 2 */ - void* pfnTC3_Handler; /* 24 Timer/Counter 3 */ - void* pfnTC4_Handler; /* 25 Timer/Counter 4 */ - void* pfnTC5_Handler; /* 26 Timer/Counter 5 */ - void* pfnTC6_Handler; /* 27 Timer/Counter 6 */ - void* pfnTC7_Handler; /* 28 Timer/Counter 7 */ - void* pfnTC8_Handler; /* 29 Timer/Counter 8 */ - void* pfnAFEC0_Handler; /* 30 Analog Front End 0 */ - void* pfnAFEC1_Handler; /* 31 Analog Front End 1 */ - void* pfnDACC_Handler; /* 32 Digital To Analog Converter */ - void* pfnACC_Handler; /* 33 Analog Comparator */ - void* pfnARM_Handler; /* 34 FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC */ - void* pfnUDP_Handler; /* 35 USB DEVICE */ - void* pfnPWM_Handler; /* 36 PWM */ - void* pfnCAN0_Handler; /* 37 CAN0 */ - void* pfnCAN1_Handler; /* 38 CAN1 */ - void* pfnAES_Handler; /* 39 AES */ - void* pvReserved40; - void* pvReserved41; - void* pvReserved42; - void* pvReserved43; - void* pfnGMAC_Handler; /* 44 EMAC */ - void* pfnUART1_Handler; /* 45 UART */ -} DeviceVectors; - -/* Cortex-M4 core handlers */ -void Reset_Handler ( void ); -void NMI_Handler ( void ); -void HardFault_Handler ( void ); -void MemManage_Handler ( void ); -void BusFault_Handler ( void ); -void UsageFault_Handler ( void ); -void SVC_Handler ( void ); -void DebugMon_Handler ( void ); -void PendSV_Handler ( void ); -void SysTick_Handler ( void ); - -/* Peripherals handlers */ -void ACC_Handler ( void ); -void AES_Handler ( void ); -void AFEC0_Handler ( void ); -void AFEC1_Handler ( void ); -void ARM_Handler ( void ); -void CAN0_Handler ( void ); -void CAN1_Handler ( void ); -void DACC_Handler ( void ); -void DMAC_Handler ( void ); -void EFC_Handler ( void ); -void GMAC_Handler ( void ); -void HSMCI_Handler ( void ); -void PIOA_Handler ( void ); -void PIOB_Handler ( void ); -void PIOC_Handler ( void ); -void PIOD_Handler ( void ); -void PIOE_Handler ( void ); -void PMC_Handler ( void ); -void PWM_Handler ( void ); -void RSTC_Handler ( void ); -void RTC_Handler ( void ); -void RTT_Handler ( void ); -void SPI_Handler ( void ); -void SUPC_Handler ( void ); -void TC0_Handler ( void ); -void TC1_Handler ( void ); -void TC2_Handler ( void ); -void TC3_Handler ( void ); -void TC4_Handler ( void ); -void TC5_Handler ( void ); -void TC6_Handler ( void ); -void TC7_Handler ( void ); -void TC8_Handler ( void ); -void TWI0_Handler ( void ); -void TWI1_Handler ( void ); -void UART0_Handler ( void ); -void UART1_Handler ( void ); -void UDP_Handler ( void ); -void USART0_Handler ( void ); -void USART1_Handler ( void ); -void WDT_Handler ( void ); - -/** - * \brief Configuration of the Cortex-M4 Processor and Core Peripherals - */ - -#define __CM4_REV 0x0000 /**< SAM4E8E core revision number ([15:8] revision number, [7:0] patch number) */ -#define __MPU_PRESENT 0 /**< SAM4E8E does not provide a MPU */ -#define __FPU_PRESENT 1 /**< SAM4E8E does provide a FPU */ -#define __NVIC_PRIO_BITS 4 /**< SAM4E8E uses 4 Bits for the Priority Levels */ -#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ - -/* - * \brief CMSIS includes - */ - -#include -#if !defined DONT_USE_CMSIS_INIT -#include "system_sam4e.h" -#endif /* DONT_USE_CMSIS_INIT */ - -/*@}*/ - -/* ************************************************************************** */ -/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM4E8E */ -/* ************************************************************************** */ -/** \addtogroup SAM4E8E_api Peripheral Software API */ -/*@{*/ - -#include "component/acc.h" -#include "component/aes.h" -#include "component/afec.h" -#include "component/can.h" -#include "component/chipid.h" -#include "component/cmcc.h" -#include "component/crccu.h" -#include "component/dacc.h" -#include "component/dmac.h" -#include "component/efc.h" -#include "component/gmac.h" -#include "component/gpbr.h" -#include "component/hsmci.h" -#include "component/matrix.h" -#include "component/pdc.h" -#include "component/pio.h" -#include "component/pmc.h" -#include "component/pwm.h" -#include "component/rstc.h" -#include "component/rswdt.h" -#include "component/rtc.h" -#include "component/rtt.h" -#include "component/smc.h" -#include "component/spi.h" -#include "component/supc.h" -#include "component/tc.h" -#include "component/twi.h" -#include "component/uart.h" -#include "component/udp.h" -#include "component/usart.h" -#include "component/wdt.h" -/*@}*/ - -/* ************************************************************************** */ -/* REGISTER ACCESS DEFINITIONS FOR SAM4E8E */ -/* ************************************************************************** */ -/** \addtogroup SAM4E8E_reg Registers Access Definitions */ -/*@{*/ - -#include "instance/pwm.h" -#include "instance/aes.h" -#include "instance/can0.h" -#include "instance/can1.h" -#include "instance/gmac.h" -#include "instance/crccu.h" -#include "instance/smc.h" -#include "instance/uart1.h" -#include "instance/hsmci.h" -#include "instance/udp.h" -#include "instance/spi.h" -#include "instance/tc0.h" -#include "instance/tc1.h" -#include "instance/tc2.h" -#include "instance/usart0.h" -#include "instance/usart1.h" -#include "instance/twi0.h" -#include "instance/twi1.h" -#include "instance/afec0.h" -#include "instance/afec1.h" -#include "instance/dacc.h" -#include "instance/acc.h" -#include "instance/dmac.h" -#include "instance/cmcc.h" -#include "instance/matrix.h" -#include "instance/pmc.h" -#include "instance/uart0.h" -#include "instance/chipid.h" -#include "instance/efc.h" -#include "instance/pioa.h" -#include "instance/piob.h" -#include "instance/pioc.h" -#include "instance/piod.h" -#include "instance/pioe.h" -#include "instance/rstc.h" -#include "instance/supc.h" -#include "instance/rtt.h" -#include "instance/wdt.h" -#include "instance/rtc.h" -#include "instance/gpbr.h" -#include "instance/rswdt.h" -/*@}*/ - -/* ************************************************************************** */ -/* PERIPHERAL ID DEFINITIONS FOR SAM4E8E */ -/* ************************************************************************** */ -/** \addtogroup SAM4E8E_id Peripheral Ids Definitions */ -/*@{*/ - -#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ -#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ -#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ -#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ -#define ID_WDT ( 4) /**< \brief Watchdog/Dual Watchdog Timer (WDT) */ -#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ -#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ -#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ -#define ID_SMC ( 8) /**< \brief Static Memory Controller (SMC) */ -#define ID_PIOA ( 9) /**< \brief Parallel I/O Controller A (PIOA) */ -#define ID_PIOB (10) /**< \brief Parallel I/O Controller B (PIOB) */ -#define ID_PIOC (11) /**< \brief Parallel I/O Controller C (PIOC) */ -#define ID_PIOD (12) /**< \brief Parallel I/O Controller D (PIOD) */ -#define ID_PIOE (13) /**< \brief Parallel I/O Controller E (PIOE) */ -#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ -#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ -#define ID_HSMCI (16) /**< \brief Multimedia Card Interface (HSMCI) */ -#define ID_TWI0 (17) /**< \brief Two Wire Interface 0 (TWI0) */ -#define ID_TWI1 (18) /**< \brief Two Wire Interface 1 (TWI1) */ -#define ID_SPI (19) /**< \brief Serial Peripheral Interface (SPI) */ -#define ID_DMAC (20) /**< \brief DMAC (DMAC) */ -#define ID_TC0 (21) /**< \brief Timer/Counter 0 (TC0) */ -#define ID_TC1 (22) /**< \brief Timer/Counter 1 (TC1) */ -#define ID_TC2 (23) /**< \brief Timer/Counter 2 (TC2) */ -#define ID_TC3 (24) /**< \brief Timer/Counter 3 (TC3) */ -#define ID_TC4 (25) /**< \brief Timer/Counter 4 (TC4) */ -#define ID_TC5 (26) /**< \brief Timer/Counter 5 (TC5) */ -#define ID_TC6 (27) /**< \brief Timer/Counter 6 (TC6) */ -#define ID_TC7 (28) /**< \brief Timer/Counter 7 (TC7) */ -#define ID_TC8 (29) /**< \brief Timer/Counter 8 (TC8) */ -#define ID_AFEC0 (30) /**< \brief Analog Front End 0 (AFEC0) */ -#define ID_AFEC1 (31) /**< \brief Analog Front End 1 (AFEC1) */ -#define ID_DACC (32) /**< \brief Digital To Analog Converter (DACC) */ -#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ -#define ID_ARM (34) /**< \brief FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC (ARM) */ -#define ID_UDP (35) /**< \brief USB DEVICE (UDP) */ -#define ID_PWM (36) /**< \brief PWM (PWM) */ -#define ID_CAN0 (37) /**< \brief CAN0 (CAN0) */ -#define ID_CAN1 (38) /**< \brief CAN1 (CAN1) */ -#define ID_AES (39) /**< \brief AES (AES) */ -#define ID_GMAC (44) /**< \brief EMAC (GMAC) */ -#define ID_UART1 (45) /**< \brief UART (UART1) */ - -#define ID_PERIPH_COUNT (46) /**< \brief Number of peripheral IDs */ -/*@}*/ - -/* ************************************************************************** */ -/* BASE ADDRESS DEFINITIONS FOR SAM4E8E */ -/* ************************************************************************** */ -/** \addtogroup SAM4E8E_base Peripheral Base Address Definitions */ -/*@{*/ - -#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) -#define PWM (0x40000000U) /**< \brief (PWM ) Base Address */ -#define PDC_PWM (0x40000100U) /**< \brief (PDC_PWM ) Base Address */ -#define AES (0x40004000U) /**< \brief (AES ) Base Address */ -#define CAN0 (0x40010000U) /**< \brief (CAN0 ) Base Address */ -#define CAN1 (0x40014000U) /**< \brief (CAN1 ) Base Address */ -#define GMAC (0x40034000U) /**< \brief (GMAC ) Base Address */ -#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ -#define SMC (0x40060000U) /**< \brief (SMC ) Base Address */ -#define UART1 (0x40060600U) /**< \brief (UART1 ) Base Address */ -#define PDC_UART1 (0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ -#define HSMCI (0x40080000U) /**< \brief (HSMCI ) Base Address */ -#define PDC_HSMCI (0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ -#define UDP (0x40084000U) /**< \brief (UDP ) Base Address */ -#define SPI (0x40088000U) /**< \brief (SPI ) Base Address */ -#define PDC_SPI (0x40088100U) /**< \brief (PDC_SPI ) Base Address */ -#define TC0 (0x40090000U) /**< \brief (TC0 ) Base Address */ -#define PDC_TC0 (0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ -#define TC1 (0x40094000U) /**< \brief (TC1 ) Base Address */ -#define PDC_TC1 (0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ -#define TC2 (0x40098000U) /**< \brief (TC2 ) Base Address */ -#define USART0 (0x400A0000U) /**< \brief (USART0 ) Base Address */ -#define PDC_USART0 (0x400A0100U) /**< \brief (PDC_USART0) Base Address */ -#define USART1 (0x400A4000U) /**< \brief (USART1 ) Base Address */ -#define PDC_USART1 (0x400A4100U) /**< \brief (PDC_USART1) Base Address */ -#define TWI0 (0x400A8000U) /**< \brief (TWI0 ) Base Address */ -#define PDC_TWI0 (0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ -#define TWI1 (0x400AC000U) /**< \brief (TWI1 ) Base Address */ -#define PDC_TWI1 (0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ -#define AFEC0 (0x400B0000U) /**< \brief (AFEC0 ) Base Address */ -#define PDC_AFEC0 (0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ -#define AFEC1 (0x400B4000U) /**< \brief (AFEC1 ) Base Address */ -#define PDC_AFEC1 (0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ -#define DACC (0x400B8000U) /**< \brief (DACC ) Base Address */ -#define PDC_DACC (0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ -#define ACC (0x400BC000U) /**< \brief (ACC ) Base Address */ -#define DMAC (0x400C0000U) /**< \brief (DMAC ) Base Address */ -#define CMCC (0x400C4000U) /**< \brief (CMCC ) Base Address */ -#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ -#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ -#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ -#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ -#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ -#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ -#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ -#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ -#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ -#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ -#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ -#define PIOE (0x400E1600U) /**< \brief (PIOE ) Base Address */ -#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ -#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ -#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ -#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ -#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ -#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ -#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ -#else -#define PWM ((Pwm *)0x40000000U) /**< \brief (PWM ) Base Address */ -#define PDC_PWM ((Pdc *)0x40000100U) /**< \brief (PDC_PWM ) Base Address */ -#define AES ((Aes *)0x40004000U) /**< \brief (AES ) Base Address */ -#define CAN0 ((Can *)0x40010000U) /**< \brief (CAN0 ) Base Address */ -#define CAN1 ((Can *)0x40014000U) /**< \brief (CAN1 ) Base Address */ -#define GMAC ((Gmac *)0x40034000U) /**< \brief (GMAC ) Base Address */ -#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ -#define SMC ((Smc *)0x40060000U) /**< \brief (SMC ) Base Address */ -#define UART1 ((Uart *)0x40060600U) /**< \brief (UART1 ) Base Address */ -#define PDC_UART1 ((Pdc *)0x40060700U) /**< \brief (PDC_UART1 ) Base Address */ -#define HSMCI ((Hsmci *)0x40080000U) /**< \brief (HSMCI ) Base Address */ -#define PDC_HSMCI ((Pdc *)0x40080100U) /**< \brief (PDC_HSMCI ) Base Address */ -#define UDP ((Udp *)0x40084000U) /**< \brief (UDP ) Base Address */ -#define SPI ((Spi *)0x40088000U) /**< \brief (SPI ) Base Address */ -#define PDC_SPI ((Pdc *)0x40088100U) /**< \brief (PDC_SPI ) Base Address */ -#define TC0 ((Tc *)0x40090000U) /**< \brief (TC0 ) Base Address */ -#define PDC_TC0 ((Pdc *)0x40090100U) /**< \brief (PDC_TC0 ) Base Address */ -#define TC1 ((Tc *)0x40094000U) /**< \brief (TC1 ) Base Address */ -#define PDC_TC1 ((Pdc *)0x40094100U) /**< \brief (PDC_TC1 ) Base Address */ -#define TC2 ((Tc *)0x40098000U) /**< \brief (TC2 ) Base Address */ -#define USART0 ((Usart *)0x400A0000U) /**< \brief (USART0 ) Base Address */ -#define PDC_USART0 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART0) Base Address */ -#define USART1 ((Usart *)0x400A4000U) /**< \brief (USART1 ) Base Address */ -#define PDC_USART1 ((Pdc *)0x400A4100U) /**< \brief (PDC_USART1) Base Address */ -#define TWI0 ((Twi *)0x400A8000U) /**< \brief (TWI0 ) Base Address */ -#define PDC_TWI0 ((Pdc *)0x400A8100U) /**< \brief (PDC_TWI0 ) Base Address */ -#define TWI1 ((Twi *)0x400AC000U) /**< \brief (TWI1 ) Base Address */ -#define PDC_TWI1 ((Pdc *)0x400AC100U) /**< \brief (PDC_TWI1 ) Base Address */ -#define AFEC0 ((Afec *)0x400B0000U) /**< \brief (AFEC0 ) Base Address */ -#define PDC_AFEC0 ((Pdc *)0x400B0100U) /**< \brief (PDC_AFEC0 ) Base Address */ -#define AFEC1 ((Afec *)0x400B4000U) /**< \brief (AFEC1 ) Base Address */ -#define PDC_AFEC1 ((Pdc *)0x400B4100U) /**< \brief (PDC_AFEC1 ) Base Address */ -#define DACC ((Dacc *)0x400B8000U) /**< \brief (DACC ) Base Address */ -#define PDC_DACC ((Pdc *)0x400B8100U) /**< \brief (PDC_DACC ) Base Address */ -#define ACC ((Acc *)0x400BC000U) /**< \brief (ACC ) Base Address */ -#define DMAC ((Dmac *)0x400C0000U) /**< \brief (DMAC ) Base Address */ -#define CMCC ((Cmcc *)0x400C4000U) /**< \brief (CMCC ) Base Address */ -#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ -#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ -#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ -#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ -#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ -#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ -#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ -#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ -#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ -#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ -#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ -#define PIOE ((Pio *)0x400E1600U) /**< \brief (PIOE ) Base Address */ -#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ -#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ -#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ -#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ -#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ -#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ -#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ -#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ -/*@}*/ - -/* ************************************************************************** */ -/* PIO DEFINITIONS FOR SAM4E8E */ -/* ************************************************************************** */ -/** \addtogroup SAM4E8E_pio Peripheral Pio Definitions */ -/*@{*/ - -#include "pio/sam4e8e.h" -/*@}*/ - -/* ************************************************************************** */ -/* MEMORY MAPPING DEFINITIONS FOR SAM4E8E */ -/* ************************************************************************** */ - -#define IFLASH_SIZE (0x80000u) -#define IFLASH_PAGE_SIZE (512u) -#define IFLASH_LOCK_REGION_SIZE (8192u) -#define IFLASH_NB_OF_PAGES (1024u) -#define IFLASH_NB_OF_LOCK_BITS (128u) -#define IRAM_SIZE (0x20000u) - -#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ -#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ -#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ -#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ -#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ -#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ -#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ - -/* ************************************************************************** */ -/* MISCELLANEOUS DEFINITIONS FOR SAM4E8E */ -/* ************************************************************************** */ - -#define CHIP_JTAGID (0x05B3703FUL) -#define CHIP_CIDR (0xA3CC0CE0UL) -#define CHIP_EXID (0x00120208UL) -#define NB_CH_AFE0 (16UL) -#define NB_CH_AFE1 (8UL) - -/* ************************************************************************** */ -/* ELECTRICAL DEFINITIONS FOR SAM4E8E */ -/* ************************************************************************** */ - -/* Device characteristics */ -#define CHIP_FREQ_SLCK_RC_MIN (20000UL) -#define CHIP_FREQ_SLCK_RC (32000UL) -#define CHIP_FREQ_SLCK_RC_MAX (44000UL) -#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) -#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) -#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) -#define CHIP_FREQ_CPU_MAX (120000000UL) -#define CHIP_FREQ_XTAL_32K (32768UL) -#define CHIP_FREQ_XTAL_12M (12000000UL) - -/* Embedded Flash Write Wait State */ -#define CHIP_FLASH_WRITE_WAIT_STATE (6U) - -/* Embedded Flash Read Wait State (VDDCORE set at 1.20V) */ -#define CHIP_FREQ_FWS_0 (20000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ -#define CHIP_FREQ_FWS_1 (40000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ -#define CHIP_FREQ_FWS_2 (60000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ -#define CHIP_FREQ_FWS_3 (80000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ -#define CHIP_FREQ_FWS_4 (100000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ -#define CHIP_FREQ_FWS_5 (123000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ - -#ifdef __cplusplus -} -#endif - -/*@}*/ - -#endif /* _SAM4E8E_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/exceptions.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/exceptions.c deleted file mode 100644 index 57990ba5a..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/exceptions.c +++ /dev/null @@ -1,202 +0,0 @@ -/** - * \file - * - * \brief This file contains the default exception handlers. - * - * Copyright (c) 2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - * \par Purpose - * - * This file provides basic support for Cortex-M processor based - * microcontrollers. - * - * \note - * The exception handler has weak aliases. - * As they are weak aliases, any function with the same name will override - * this definition. - * - */ - -#include "exceptions.h" - -/* @cond 0 */ -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/* @endcond */ - -#ifdef __GNUC__ -void Dummy_Hardfault_Handler( void ); -/* Cortex-M4 core handlers */ -void Reset_Handler (void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void NMI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Hardfault_Handler"))); -void MemManage_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void BusFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void UsageFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void SVC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void DebugMon_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); - -/* Peripherals handlers */ -void SUPC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void RSTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void RTT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void PMC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void EFC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void UART0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void SMC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void PIOA_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void PIOB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void PIOC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void PIOD_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void PIOE_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void USART0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void USART1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void HSMCI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void TWI0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void TWI1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void SPI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void TC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void TC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void TC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void TC8_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void AFEC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void AFEC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void DACC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void ACC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void ARM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void UDP_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void PWM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void CAN0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void CAN1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void AES_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void GMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -void UART1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); -#endif /* __GNUC__ */ - -#ifdef __ICCARM__ -/* Cortex-M4 core handlers */ -#pragma weak Reset_Handler=Dummy_Handler -#pragma weak NMI_Handler=Dummy_Handler -#pragma weak HardFault_Handler=Dummy_Handler -#pragma weak MemManage_Handler=Dummy_Handler -#pragma weak BusFault_Handler=Dummy_Handler -#pragma weak UsageFault_Handler=Dummy_Handler -#pragma weak SVC_Handler=Dummy_Handler -#pragma weak DebugMon_Handler=Dummy_Handler -#pragma weak PendSV_Handler=Dummy_Handler -#pragma weak SysTick_Handler=Dummy_Handler - -/* Peripherals handlers */ -#pragma weak SUPC_Handler=Dummy_Handler -#pragma weak RSTC_Handler=Dummy_Handler -#pragma weak RTC_Handler=Dummy_Handler -#pragma weak RTT_Handler=Dummy_Handler -#pragma weak WDT_Handler=Dummy_Handler -#pragma weak PMC_Handler=Dummy_Handler -#pragma weak EFC_Handler=Dummy_Handler -#pragma weak UART0_Handler=Dummy_Handler -#pragma weak SMC_Handler=Dummy_Handler -#pragma weak PIOA_Handler=Dummy_Handler -#pragma weak PIOB_Handler=Dummy_Handler -#pragma weak PIOC_Handler=Dummy_Handler -#pragma weak PIOD_Handler=Dummy_Handler -#pragma weak PIOE_Handler=Dummy_Handler -#pragma weak USART0_Handler=Dummy_Handler -#pragma weak USART1_Handler=Dummy_Handler -#pragma weak HSMCI_Handler=Dummy_Handler -#pragma weak TWI0_Handler=Dummy_Handler -#pragma weak TWI1_Handler=Dummy_Handler -#pragma weak SPI_Handler=Dummy_Handler -#pragma weak DMAC_Handler=Dummy_Handler -#pragma weak TC0_Handler=Dummy_Handler -#pragma weak TC1_Handler=Dummy_Handler -#pragma weak TC2_Handler=Dummy_Handler -#pragma weak TC3_Handler=Dummy_Handler -#pragma weak TC4_Handler=Dummy_Handler -#pragma weak TC5_Handler=Dummy_Handler -#pragma weak TC6_Handler=Dummy_Handler -#pragma weak TC7_Handler=Dummy_Handler -#pragma weak TC8_Handler=Dummy_Handler -#pragma weak AFEC0_Handler=Dummy_Handler -#pragma weak AFEC1_Handler=Dummy_Handler -#pragma weak DACC_Handler=Dummy_Handler -#pragma weak ACC_Handler=Dummy_Handler -#pragma weak ARM_Handler=Dummy_Handler -#pragma weak UDP_Handler=Dummy_Handler -#pragma weak PWM_Handler=Dummy_Handler -#pragma weak CAN0_Handler=Dummy_Handler -#pragma weak CAN1_Handler=Dummy_Handler -#pragma weak AES_Handler=Dummy_Handler -#pragma weak GMAC_Handler=Dummy_Handler -#pragma weak UART1_Handler=Dummy_Handler -#endif /* __ICCARM__ */ - -/** - * \brief Default interrupt handler for unused IRQs. - */ -void Dummy_Handler(void) -{ - while (1) { - } -} - -void Dummy_Hardfault_Handler(void) -{ - while (1) { - } -} - -/* @cond 0 */ -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/* @endcond */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/exceptions.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/exceptions.h deleted file mode 100644 index 5682a29fd..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/exceptions.h +++ /dev/null @@ -1,71 +0,0 @@ -/** - * \file - * - * \brief This file contains the interface for default exception handlers. - * - * Copyright (c) 2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef EXCEPTIONS_H_INCLUDED -#define EXCEPTIONS_H_INCLUDED - -#include "sam4e.h" - -/* @cond 0 */ -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/* @endcond */ - -/* Function prototype for exception table items (interrupt handler). */ -typedef void (*IntFunc) (void); - -/* Default empty handler */ -void Dummy_Handler(void); - -/* @cond 0 */ -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/* @endcond */ - -#endif /* EXCEPTIONS_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/gcc/startup_sam4e.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/gcc/startup_sam4e.c deleted file mode 100644 index 56ee3ec82..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/gcc/startup_sam4e.c +++ /dev/null @@ -1,191 +0,0 @@ -/** - * \file - * - * \brief Startup file for SAM4E. - * - * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#include "sam4e.h" -#include "exceptions.h" -#include "system_sam4e.h" -#if __FPU_USED /* CMSIS defined value to indicate usage of FPU */ -#include "fpu.h" -#endif - -/* Initialize segments */ -extern uint32_t _sfixed; -extern uint32_t _efixed; -extern uint32_t _etext; -extern uint32_t _srelocate; -extern uint32_t _erelocate; -extern uint32_t _szero; -extern uint32_t _ezero; -extern uint32_t _sstack; -extern uint32_t _estack; - -/** \cond DOXYGEN_SHOULD_SKIP_THIS */ -int main(void); -/** \endcond */ - -void __libc_init_array(void); - -/* Exception Table */ -__attribute__ ((section(".vectors"))) -const DeviceVectors exception_table = { - - /* Configure Initial Stack Pointer, using linker-generated symbols */ - (void*) (&_estack), - - (void*) Reset_Handler, - (void*) NMI_Handler, - (void*) HardFault_Handler, - (void*) MemManage_Handler, - (void*) BusFault_Handler, - (void*) UsageFault_Handler, - (void*) (0UL), /* Reserved */ - (void*) (0UL), /* Reserved */ - (void*) (0UL), /* Reserved */ - (void*) (0UL), /* Reserved */ - (void*) SVC_Handler, - (void*) DebugMon_Handler, - (void*) (0UL), /* Reserved */ - (void*) PendSV_Handler, - (void*) SysTick_Handler, - - /* Configurable interrupts */ - (void*) SUPC_Handler, /* 0 Supply Controller */ - (void*) RSTC_Handler, /* 1 Reset Controller */ - (void*) RTC_Handler, /* 2 Real Time Clock */ - (void*) RTT_Handler, /* 3 Real Time Timer */ - (void*) WDT_Handler, /* 4 Watchdog/Dual Watchdog Timer */ - (void*) PMC_Handler, /* 5 Power Management Controller */ - (void*) EFC_Handler, /* 6 Enhanced Embedded Flash Controller */ - (void*) UART0_Handler, /* 7 UART 0 */ - (void*) Dummy_Handler, - (void*) PIOA_Handler, /* 9 Parallel I/O Controller A */ - (void*) PIOB_Handler, /* 10 Parallel I/O Controller B */ - (void*) PIOC_Handler, /* 11 Parallel I/O Controller C */ -#ifdef _SAM4E_PIOD_INSTANCE_ - (void*) PIOD_Handler, /* 12 Parallel I/O Controller D */ -#else - (void*) Dummy_Handler, -#endif -#ifdef _SAM4E_PIOE_INSTANCE_ - (void*) PIOE_Handler, /* 13 Parallel I/O Controller E */ -#else - (void*) Dummy_Handler, -#endif - (void*) USART0_Handler, /* 14 USART 0 */ - (void*) USART1_Handler, /* 15 USART 1 */ - (void*) HSMCI_Handler, /* 16 Multimedia Card Interface */ - (void*) TWI0_Handler, /* 17 Two Wire Interface 0 */ - (void*) TWI1_Handler, /* 18 Two Wire Interface 1 */ - (void*) SPI_Handler, /* 19 Serial Peripheral Interface */ - (void*) DMAC_Handler, /* 20 DMAC */ - (void*) TC0_Handler, /* 21 Timer/Counter 0 */ - (void*) TC1_Handler, /* 22 Timer/Counter 1 */ - (void*) TC2_Handler, /* 23 Timer/Counter 2 */ - (void*) TC3_Handler, /* 24 Timer/Counter 3 */ - (void*) TC4_Handler, /* 25 Timer/Counter 4 */ - (void*) TC5_Handler, /* 26 Timer/Counter 5 */ - (void*) TC6_Handler, /* 27 Timer/Counter 6 */ - (void*) TC7_Handler, /* 28 Timer/Counter 7 */ - (void*) TC8_Handler, /* 29 Timer/Counter 8 */ - (void*) AFEC0_Handler, /* 30 Analog Front End 0 */ - (void*) AFEC1_Handler, /* 31 Analog Front End 1 */ - (void*) DACC_Handler, /* 32 Digital To Analog Converter */ - (void*) ACC_Handler, /* 33 Analog Comparator */ - (void*) ARM_Handler, /* 34 FPU signals : FPIXC, FPOFC, FPUFC, FPIOC, FPDZC, FPIDC, FPIXC */ - (void*) UDP_Handler, /* 35 USB DEVICE */ - (void*) PWM_Handler, /* 36 PWM */ - (void*) CAN0_Handler, /* 37 CAN0 */ - (void*) CAN1_Handler, /* 38 CAN1 */ - (void*) AES_Handler, /* 39 AES */ - (void*) Dummy_Handler, - (void*) Dummy_Handler, - (void*) Dummy_Handler, - (void*) Dummy_Handler, -#ifdef _SAM4E_GMAC_INSTANCE_ - (void*) GMAC_Handler, /* 44 EMAC */ -#else - (void*) Dummy_Handler, -#endif - (void*) UART1_Handler /* 45 UART */ -}; - -/** - * \brief This is the code that gets called on processor reset. - * To initialize the device, and call the main() routine. - */ -void Reset_Handler(void) -{ - uint32_t *pSrc, *pDest; - - /* Initialize the relocate segment */ - pSrc = &_etext; - pDest = &_srelocate; - - if (pSrc != pDest) { - for (; pDest < &_erelocate;) { - *pDest++ = *pSrc++; - } - } - - /* Clear the zero segment */ - for (pDest = &_szero; pDest < &_ezero;) { - *pDest++ = 0; - } - - /* Set the vector table base address */ - pSrc = (uint32_t *) & _sfixed; - SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); - -#if __FPU_USED - fpu_enable(); -#endif - - /* Initialize the C library */ - __libc_init_array(); - - /* Branch to main function */ - main(); - - /* Infinite loop */ - while (1); -} diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/system_sam4e.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/system_sam4e.c deleted file mode 100644 index 906ed98c2..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/system_sam4e.c +++ /dev/null @@ -1,231 +0,0 @@ -/** - * \file - * - * \brief Provides the low-level initialization functions that called - * on chip startup. - * - * Copyright (c) 2011 - 2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#include "sam4e.h" - -/* @cond 0 */ -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/* @endcond */ - -/* Clock Settings (120MHz) */ -#define SYS_BOARD_OSCOUNT (CKGR_MOR_MOSCXTST(0x8U)) -#define SYS_BOARD_PLLAR (CKGR_PLLAR_ONE \ - | CKGR_PLLAR_MULA(0x13U) \ - | CKGR_PLLAR_PLLACOUNT(0x3fU) \ - | CKGR_PLLAR_DIVA(0x1U)) -#define SYS_BOARD_MCKR (PMC_MCKR_PRES_CLK_2 | PMC_MCKR_CSS_PLLA_CLK) - -#define SYS_CKGR_MOR_KEY_VALUE CKGR_MOR_KEY(0x37) /* Key to unlock MOR register */ - -uint32_t SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; - -/** - * \brief Setup the microcontroller system. - * Initialize the System and update the SystemFrequency variable. - */ -void SystemInit( void ) -{ - /* Set FWS according to SYS_BOARD_MCKR configuration */ - EFC->EEFC_FMR = EEFC_FMR_FWS(5); - - /* Initialize main oscillator */ - if ( !(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) ) { - PMC->CKGR_MOR = SYS_CKGR_MOR_KEY_VALUE | SYS_BOARD_OSCOUNT | - CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN; - - while ( !(PMC->PMC_SR & PMC_SR_MOSCXTS) ) { - } - } - - /* Switch to 3-20MHz Xtal oscillator */ - PMC->CKGR_MOR = SYS_CKGR_MOR_KEY_VALUE | SYS_BOARD_OSCOUNT | - CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN | - CKGR_MOR_MOSCSEL; - - while ( !(PMC->PMC_SR & PMC_SR_MOSCSELS) ) { - } - - PMC->PMC_MCKR = (PMC->PMC_MCKR & ~(uint32_t)PMC_MCKR_CSS_Msk) | - PMC_MCKR_CSS_MAIN_CLK; - - while ( !(PMC->PMC_SR & PMC_SR_MCKRDY) ) { - } - - /* Initialize PLLA */ - PMC->CKGR_PLLAR = SYS_BOARD_PLLAR; - while ( !(PMC->PMC_SR & PMC_SR_LOCKA) ) { - } - - /* Switch to main clock */ - PMC->PMC_MCKR = (SYS_BOARD_MCKR & ~PMC_MCKR_CSS_Msk) | - PMC_MCKR_CSS_MAIN_CLK; - while ( !(PMC->PMC_SR & PMC_SR_MCKRDY) ) { - } - - /* Switch to PLLA */ - PMC->PMC_MCKR = SYS_BOARD_MCKR; - while ( !(PMC->PMC_SR & PMC_SR_MCKRDY) ) { - } - - SystemCoreClock = CHIP_FREQ_CPU_MAX; -} - -void SystemCoreClockUpdate( void ) -{ - /* Determine clock frequency according to clock register values */ - switch (PMC->PMC_MCKR & (uint32_t) PMC_MCKR_CSS_Msk) { - case PMC_MCKR_CSS_SLOW_CLK: /* Slow clock */ - if ( SUPC->SUPC_SR & SUPC_SR_OSCSEL ) { - SystemCoreClock = CHIP_FREQ_XTAL_32K; - } else { - SystemCoreClock = CHIP_FREQ_SLCK_RC; - } - break; - - case PMC_MCKR_CSS_MAIN_CLK: /* Main clock */ - if ( PMC->CKGR_MOR & CKGR_MOR_MOSCSEL ) { - SystemCoreClock = CHIP_FREQ_XTAL_12M; - } else { - SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; - - switch ( PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk ) { - case CKGR_MOR_MOSCRCF_4_MHz: - break; - - case CKGR_MOR_MOSCRCF_8_MHz: - SystemCoreClock *= 2U; - break; - - case CKGR_MOR_MOSCRCF_12_MHz: - SystemCoreClock *= 3U; - break; - - default: - break; - } - } - break; - - case PMC_MCKR_CSS_PLLA_CLK: /* PLLA clock */ - if ( PMC->CKGR_MOR & CKGR_MOR_MOSCSEL ) { - SystemCoreClock = CHIP_FREQ_XTAL_12M ; - } else { - SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; - - switch ( PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk ) { - case CKGR_MOR_MOSCRCF_4_MHz: - break; - - case CKGR_MOR_MOSCRCF_8_MHz: - SystemCoreClock *= 2U; - break; - - case CKGR_MOR_MOSCRCF_12_MHz: - SystemCoreClock *= 3U; - break; - - default: - break; - } - } - - if ((uint32_t) (PMC->PMC_MCKR & (uint32_t) PMC_MCKR_CSS_Msk) == PMC_MCKR_CSS_PLLA_CLK) - { - SystemCoreClock *= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_MULA_Msk) >> CKGR_PLLAR_MULA_Pos) + 1U); - SystemCoreClock /= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_DIVA_Msk) >> CKGR_PLLAR_DIVA_Pos)); - } - break; - - default: - break; - } - - if ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) == PMC_MCKR_PRES_CLK_3) { - SystemCoreClock /= 3U; - } else { - SystemCoreClock >>= ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) >> - PMC_MCKR_PRES_Pos); - } -} - -/** - * Initialize flash. - */ -void system_init_flash( uint32_t ul_clk ) -{ - /* Set FWS for embedded Flash access according to operating frequency */ - if ( ul_clk < CHIP_FREQ_FWS_0 ) { - EFC->EEFC_FMR = EEFC_FMR_FWS(0); - } else { - if (ul_clk < CHIP_FREQ_FWS_1) { - EFC->EEFC_FMR = EEFC_FMR_FWS(1); - } else { - if (ul_clk < CHIP_FREQ_FWS_2) { - EFC->EEFC_FMR = EEFC_FMR_FWS(2); - } else { - if ( ul_clk < CHIP_FREQ_FWS_3 ) { - EFC->EEFC_FMR = EEFC_FMR_FWS(3); - } else { - if ( ul_clk < CHIP_FREQ_FWS_4 ) { - EFC->EEFC_FMR = EEFC_FMR_FWS(4); - } else { - EFC->EEFC_FMR = EEFC_FMR_FWS(5); - } - } - } - } - } -} - -/* @cond 0 */ -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/* @endcond */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/system_sam4e.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/system_sam4e.h deleted file mode 100644 index d1238d602..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/cmsis/sam4e/source/templates/system_sam4e.h +++ /dev/null @@ -1,85 +0,0 @@ -/** - * \file - * - * \brief Provides the low-level initialization functions that called - * on chip startup. - * - * Copyright (c) 2011 - 2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef SYSTEM_SAM4E_H_INCLUDED -#define SYSTEM_SAM4E_H_INCLUDED - -/* @cond 0 */ -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/* @endcond */ - -#include - -extern uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock) */ - -/** - * @brief Setup the microcontroller system. - * Initialize the System and update the SystemCoreClock variable. - */ -void SystemInit(void); - -/** - * @brief Updates the SystemCoreClock with current core Clock - * retrieved from cpu registers. - */ -void SystemCoreClockUpdate(void); - -/** - * Initialize flash. - */ -void system_init_flash(uint32_t dw_clk); - -/* @cond 0 */ -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/* @endcond */ - -#endif /* SYSTEM_SAM4E_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/compiler.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/compiler.h deleted file mode 100644 index 8c9a5e4c6..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/compiler.h +++ /dev/null @@ -1,1161 +0,0 @@ -/** - * \file - * - * \brief Commonly used includes, types and macros. - * - * Copyright (c) 2010-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef UTILS_COMPILER_H -#define UTILS_COMPILER_H - -/** - * \defgroup group_sam_utils Compiler abstraction layer and code utilities - * - * Compiler abstraction layer and code utilities for AT91SAM. - * This module provides various abstraction layers and utilities to make code compatible between different compilers. - * - * \{ - */ -#include - -#if (defined __ICCARM__) -# include -#endif - -#include -#include "preprocessor.h" - -#include - -//_____ D E C L A R A T I O N S ____________________________________________ - -#ifndef __ASSEMBLY__ // Not defined for assembling. - -#include -#include -#include -#include - -#ifdef __ICCARM__ -/*! \name Compiler Keywords - * - * Port of some keywords from GCC to IAR Embedded Workbench. - */ -//! @{ -#define __asm__ asm -#define __inline__ inline -#define __volatile__ -//! @} - -#endif - -#define FUNC_PTR void * -/** - * \def UNUSED - * \brief Marking \a v as a unused parameter or value. - */ -#define UNUSED(v) (void)(v) - -/** - * \def unused - * \brief Marking \a v as a unused parameter or value. - */ -#define unused(v) do { (void)(v); } while(0) - -/** - * \def barrier - * \brief Memory barrier - */ -#define barrier() __DMB() - -/** - * \brief Emit the compiler pragma \a arg. - * - * \param arg The pragma directive as it would appear after \e \#pragma - * (i.e. not stringified). - */ -#define COMPILER_PRAGMA(arg) _Pragma(#arg) - -/** - * \def COMPILER_PACK_SET(alignment) - * \brief Set maximum alignment for subsequent struct and union - * definitions to \a alignment. - */ -#define COMPILER_PACK_SET(alignment) COMPILER_PRAGMA(pack(alignment)) - -/** - * \def COMPILER_PACK_RESET() - * \brief Set default alignment for subsequent struct and union - * definitions. - */ -#define COMPILER_PACK_RESET() COMPILER_PRAGMA(pack()) - - -/** - * \brief Set aligned boundary. - */ -#if (defined __GNUC__) || (defined __CC_ARM) -# define COMPILER_ALIGNED(a) __attribute__((__aligned__(a))) -#elif (defined __ICCARM__) -# define COMPILER_ALIGNED(a) COMPILER_PRAGMA(data_alignment = a) -#endif - -/** - * \brief Set word-aligned boundary. - */ -#if (defined __GNUC__) || defined(__CC_ARM) -#define COMPILER_WORD_ALIGNED __attribute__((__aligned__(4))) -#elif (defined __ICCARM__) -#define COMPILER_WORD_ALIGNED COMPILER_PRAGMA(data_alignment = 4) -#endif - -/** - * \def __always_inline - * \brief The function should always be inlined. - * - * This annotation instructs the compiler to ignore its inlining - * heuristics and inline the function no matter how big it thinks it - * becomes. - */ -#if defined(__CC_ARM) -# define __always_inline __forceinline -#elif (defined __GNUC__) -# define __always_inline inline __attribute__((__always_inline__)) -#elif (defined __ICCARM__) -# define __always_inline _Pragma("inline=forced") -#endif - -/*! \brief This macro is used to test fatal errors. - * - * The macro tests if the expression is false. If it is, a fatal error is - * detected and the application hangs up. If TEST_SUITE_DEFINE_ASSERT_MACRO - * is defined, a unit test version of the macro is used, to allow execution - * of further tests after a false expression. - * - * \param expr Expression to evaluate and supposed to be nonzero. - */ -#if defined(_ASSERT_ENABLE_) -# if defined(TEST_SUITE_DEFINE_ASSERT_MACRO) - // Assert() is defined in unit_test/suite.h -# include "unit_test/suite.h" -# else -#undef TEST_SUITE_DEFINE_ASSERT_MACRO -# define Assert(expr) \ - {\ - if (!(expr)) while (true);\ - } -# endif -#else -# define Assert(expr) ((void) 0) -#endif - -/* Define WEAK attribute */ -#if defined ( __CC_ARM ) /* Keil µVision 4 */ -# define WEAK __attribute__ ((weak)) -#elif defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ -# define WEAK __weak -#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ -# define WEAK __attribute__ ((weak)) -#endif - -/* Define NO_INIT attribute */ -#if defined ( __CC_ARM ) -# define NO_INIT __attribute__((zero_init)) -#elif defined ( __ICCARM__ ) -# define NO_INIT __no_init -#elif defined ( __GNUC__ ) -# define NO_INIT __attribute__((section(".no_init"))) -#endif - -/* Define RAMFUNC attribute */ -#if defined ( __CC_ARM ) /* Keil µVision 4 */ -# define RAMFUNC __attribute__ ((section(".ramfunc"))) -#elif defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ -# define RAMFUNC __ramfunc -#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ -# define RAMFUNC __attribute__ ((section(".ramfunc"))) -#endif - -/* Define OPTIMIZE_HIGH attribute */ -#if defined ( __CC_ARM ) /* Keil µVision 4 */ -# define OPTIMIZE_HIGH _Pragma("O3") -#elif defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ -# define OPTIMIZE_HIGH _Pragma("optimize=high") -#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ -# define OPTIMIZE_HIGH __attribute__((optimize(s))) -#endif - -#include "interrupt.h" - -/*! \name Usual Types - */ -//! @{ -typedef unsigned char Bool; //!< Boolean. -#ifndef __cplusplus -#if !defined(__bool_true_false_are_defined) -typedef unsigned char bool; //!< Boolean. -#endif -#endif -typedef int8_t S8 ; //!< 8-bit signed integer. -typedef uint8_t U8 ; //!< 8-bit unsigned integer. -typedef int16_t S16; //!< 16-bit signed integer. -typedef uint16_t U16; //!< 16-bit unsigned integer. -typedef uint16_t le16_t; -typedef uint16_t be16_t; -typedef int32_t S32; //!< 32-bit signed integer. -typedef uint32_t U32; //!< 32-bit unsigned integer. -typedef uint32_t le32_t; -typedef uint32_t be32_t; -typedef int64_t S64; //!< 64-bit signed integer. -typedef uint64_t U64; //!< 64-bit unsigned integer. -typedef float F32; //!< 32-bit floating-point number. -typedef double F64; //!< 64-bit floating-point number. -typedef uint32_t iram_size_t; -//! @} - - -/*! \name Status Types - */ -//! @{ -typedef bool Status_bool_t; //!< Boolean status. -typedef U8 Status_t; //!< 8-bit-coded status. -//! @} - - -/*! \name Aliasing Aggregate Types - */ -//! @{ - -//! 16-bit union. -typedef union -{ - S16 s16 ; - U16 u16 ; - S8 s8 [2]; - U8 u8 [2]; -} Union16; - -//! 32-bit union. -typedef union -{ - S32 s32 ; - U32 u32 ; - S16 s16[2]; - U16 u16[2]; - S8 s8 [4]; - U8 u8 [4]; -} Union32; - -//! 64-bit union. -typedef union -{ - S64 s64 ; - U64 u64 ; - S32 s32[2]; - U32 u32[2]; - S16 s16[4]; - U16 u16[4]; - S8 s8 [8]; - U8 u8 [8]; -} Union64; - -//! Union of pointers to 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - S64 *s64ptr; - U64 *u64ptr; - S32 *s32ptr; - U32 *u32ptr; - S16 *s16ptr; - U16 *u16ptr; - S8 *s8ptr ; - U8 *u8ptr ; -} UnionPtr; - -//! Union of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - volatile S64 *s64ptr; - volatile U64 *u64ptr; - volatile S32 *s32ptr; - volatile U32 *u32ptr; - volatile S16 *s16ptr; - volatile U16 *u16ptr; - volatile S8 *s8ptr ; - volatile U8 *u8ptr ; -} UnionVPtr; - -//! Union of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - const S64 *s64ptr; - const U64 *u64ptr; - const S32 *s32ptr; - const U32 *u32ptr; - const S16 *s16ptr; - const U16 *u16ptr; - const S8 *s8ptr ; - const U8 *u8ptr ; -} UnionCPtr; - -//! Union of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - const volatile S64 *s64ptr; - const volatile U64 *u64ptr; - const volatile S32 *s32ptr; - const volatile U32 *u32ptr; - const volatile S16 *s16ptr; - const volatile U16 *u16ptr; - const volatile S8 *s8ptr ; - const volatile U8 *u8ptr ; -} UnionCVPtr; - -//! Structure of pointers to 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - S64 *s64ptr; - U64 *u64ptr; - S32 *s32ptr; - U32 *u32ptr; - S16 *s16ptr; - U16 *u16ptr; - S8 *s8ptr ; - U8 *u8ptr ; -} StructPtr; - -//! Structure of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - volatile S64 *s64ptr; - volatile U64 *u64ptr; - volatile S32 *s32ptr; - volatile U32 *u32ptr; - volatile S16 *s16ptr; - volatile U16 *u16ptr; - volatile S8 *s8ptr ; - volatile U8 *u8ptr ; -} StructVPtr; - -//! Structure of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - const S64 *s64ptr; - const U64 *u64ptr; - const S32 *s32ptr; - const U32 *u32ptr; - const S16 *s16ptr; - const U16 *u16ptr; - const S8 *s8ptr ; - const U8 *u8ptr ; -} StructCPtr; - -//! Structure of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - const volatile S64 *s64ptr; - const volatile U64 *u64ptr; - const volatile S32 *s32ptr; - const volatile U32 *u32ptr; - const volatile S16 *s16ptr; - const volatile U16 *u16ptr; - const volatile S8 *s8ptr ; - const volatile U8 *u8ptr ; -} StructCVPtr; - -//! @} - -#endif // #ifndef __ASSEMBLY__ - -/*! \name Usual Constants - */ -//! @{ -#define DISABLE 0 -#define ENABLE 1 -#ifndef __cplusplus -#if !defined(__bool_true_false_are_defined) -#define false 0 -#define true 1 -#endif -#endif -#define PASS 0 -#define FAIL 1 -#define LOW 0 -#define HIGH 1 -//! @} - - -#ifndef __ASSEMBLY__ // not for assembling. - -//! \name Optimization Control -//@{ - -/** - * \def likely(exp) - * \brief The expression \a exp is likely to be true - */ -#ifndef likely -# define likely(exp) (exp) -#endif - -/** - * \def unlikely(exp) - * \brief The expression \a exp is unlikely to be true - */ -#ifndef unlikely -# define unlikely(exp) (exp) -#endif - -/** - * \def is_constant(exp) - * \brief Determine if an expression evaluates to a constant value. - * - * \param exp Any expression - * - * \return true if \a exp is constant, false otherwise. - */ -#if (defined __GNUC__) || (defined __CC_ARM) -# define is_constant(exp) __builtin_constant_p(exp) -#else -# define is_constant(exp) (0) -#endif - -//! @} - -/*! \name Bit-Field Handling - */ -//! @{ - -/*! \brief Reads the bits of a value specified by a given bit-mask. - * - * \param value Value to read bits from. - * \param mask Bit-mask indicating bits to read. - * - * \return Read bits. - */ -#define Rd_bits( value, mask) ((value) & (mask)) - -/*! \brief Writes the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue to write bits to. - * \param mask Bit-mask indicating bits to write. - * \param bits Bits to write. - * - * \return Resulting value with written bits. - */ -#define Wr_bits(lvalue, mask, bits) ((lvalue) = ((lvalue) & ~(mask)) |\ - ((bits ) & (mask))) - -/*! \brief Tests the bits of a value specified by a given bit-mask. - * - * \param value Value of which to test bits. - * \param mask Bit-mask indicating bits to test. - * - * \return \c 1 if at least one of the tested bits is set, else \c 0. - */ -#define Tst_bits( value, mask) (Rd_bits(value, mask) != 0) - -/*! \brief Clears the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to clear bits. - * \param mask Bit-mask indicating bits to clear. - * - * \return Resulting value with cleared bits. - */ -#define Clr_bits(lvalue, mask) ((lvalue) &= ~(mask)) - -/*! \brief Sets the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to set bits. - * \param mask Bit-mask indicating bits to set. - * - * \return Resulting value with set bits. - */ -#define Set_bits(lvalue, mask) ((lvalue) |= (mask)) - -/*! \brief Toggles the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to toggle bits. - * \param mask Bit-mask indicating bits to toggle. - * - * \return Resulting value with toggled bits. - */ -#define Tgl_bits(lvalue, mask) ((lvalue) ^= (mask)) - -/*! \brief Reads the bit-field of a value specified by a given bit-mask. - * - * \param value Value to read a bit-field from. - * \param mask Bit-mask indicating the bit-field to read. - * - * \return Read bit-field. - */ -#define Rd_bitfield( value, mask) (Rd_bits( value, mask) >> ctz(mask)) - -/*! \brief Writes the bit-field of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue to write a bit-field to. - * \param mask Bit-mask indicating the bit-field to write. - * \param bitfield Bit-field to write. - * - * \return Resulting value with written bit-field. - */ -#define Wr_bitfield(lvalue, mask, bitfield) (Wr_bits(lvalue, mask, (U32)(bitfield) << ctz(mask))) - -//! @} - - -/*! \name Zero-Bit Counting - * - * Under GCC, __builtin_clz and __builtin_ctz behave like macros when - * applied to constant expressions (values known at compile time), so they are - * more optimized than the use of the corresponding assembly instructions and - * they can be used as constant expressions e.g. to initialize objects having - * static storage duration, and like the corresponding assembly instructions - * when applied to non-constant expressions (values unknown at compile time), so - * they are more optimized than an assembly periphrasis. Hence, clz and ctz - * ensure a possible and optimized behavior for both constant and non-constant - * expressions. - */ -//! @{ - -/*! \brief Counts the leading zero bits of the given value considered as a 32-bit integer. - * - * \param u Value of which to count the leading zero bits. - * - * \return The count of leading zero bits in \a u. - */ -#if (defined __GNUC__) || (defined __CC_ARM) -# define clz(u) __builtin_clz(u) -#elif (defined __ICCARM__) -# define clz(u) __CLZ(u) -#else -# define clz(u) (((u) == 0) ? 32 : \ - ((u) & (1ul << 31)) ? 0 : \ - ((u) & (1ul << 30)) ? 1 : \ - ((u) & (1ul << 29)) ? 2 : \ - ((u) & (1ul << 28)) ? 3 : \ - ((u) & (1ul << 27)) ? 4 : \ - ((u) & (1ul << 26)) ? 5 : \ - ((u) & (1ul << 25)) ? 6 : \ - ((u) & (1ul << 24)) ? 7 : \ - ((u) & (1ul << 23)) ? 8 : \ - ((u) & (1ul << 22)) ? 9 : \ - ((u) & (1ul << 21)) ? 10 : \ - ((u) & (1ul << 20)) ? 11 : \ - ((u) & (1ul << 19)) ? 12 : \ - ((u) & (1ul << 18)) ? 13 : \ - ((u) & (1ul << 17)) ? 14 : \ - ((u) & (1ul << 16)) ? 15 : \ - ((u) & (1ul << 15)) ? 16 : \ - ((u) & (1ul << 14)) ? 17 : \ - ((u) & (1ul << 13)) ? 18 : \ - ((u) & (1ul << 12)) ? 19 : \ - ((u) & (1ul << 11)) ? 20 : \ - ((u) & (1ul << 10)) ? 21 : \ - ((u) & (1ul << 9)) ? 22 : \ - ((u) & (1ul << 8)) ? 23 : \ - ((u) & (1ul << 7)) ? 24 : \ - ((u) & (1ul << 6)) ? 25 : \ - ((u) & (1ul << 5)) ? 26 : \ - ((u) & (1ul << 4)) ? 27 : \ - ((u) & (1ul << 3)) ? 28 : \ - ((u) & (1ul << 2)) ? 29 : \ - ((u) & (1ul << 1)) ? 30 : \ - 31) -#endif - -/*! \brief Counts the trailing zero bits of the given value considered as a 32-bit integer. - * - * \param u Value of which to count the trailing zero bits. - * - * \return The count of trailing zero bits in \a u. - */ -#if (defined __GNUC__) || (defined __CC_ARM) -# define ctz(u) __builtin_ctz(u) -#else -# define ctz(u) ((u) & (1ul << 0) ? 0 : \ - (u) & (1ul << 1) ? 1 : \ - (u) & (1ul << 2) ? 2 : \ - (u) & (1ul << 3) ? 3 : \ - (u) & (1ul << 4) ? 4 : \ - (u) & (1ul << 5) ? 5 : \ - (u) & (1ul << 6) ? 6 : \ - (u) & (1ul << 7) ? 7 : \ - (u) & (1ul << 8) ? 8 : \ - (u) & (1ul << 9) ? 9 : \ - (u) & (1ul << 10) ? 10 : \ - (u) & (1ul << 11) ? 11 : \ - (u) & (1ul << 12) ? 12 : \ - (u) & (1ul << 13) ? 13 : \ - (u) & (1ul << 14) ? 14 : \ - (u) & (1ul << 15) ? 15 : \ - (u) & (1ul << 16) ? 16 : \ - (u) & (1ul << 17) ? 17 : \ - (u) & (1ul << 18) ? 18 : \ - (u) & (1ul << 19) ? 19 : \ - (u) & (1ul << 20) ? 20 : \ - (u) & (1ul << 21) ? 21 : \ - (u) & (1ul << 22) ? 22 : \ - (u) & (1ul << 23) ? 23 : \ - (u) & (1ul << 24) ? 24 : \ - (u) & (1ul << 25) ? 25 : \ - (u) & (1ul << 26) ? 26 : \ - (u) & (1ul << 27) ? 27 : \ - (u) & (1ul << 28) ? 28 : \ - (u) & (1ul << 29) ? 29 : \ - (u) & (1ul << 30) ? 30 : \ - (u) & (1ul << 31) ? 31 : \ - 32) -#endif - -//! @} - - -/*! \name Bit Reversing - */ -//! @{ - -/*! \brief Reverses the bits of \a u8. - * - * \param u8 U8 of which to reverse the bits. - * - * \return Value resulting from \a u8 with reversed bits. - */ -#define bit_reverse8(u8) ((U8)(bit_reverse32((U8)(u8)) >> 24)) - -/*! \brief Reverses the bits of \a u16. - * - * \param u16 U16 of which to reverse the bits. - * - * \return Value resulting from \a u16 with reversed bits. - */ -#define bit_reverse16(u16) ((U16)(bit_reverse32((U16)(u16)) >> 16)) - -/*! \brief Reverses the bits of \a u32. - * - * \param u32 U32 of which to reverse the bits. - * - * \return Value resulting from \a u32 with reversed bits. - */ -#define bit_reverse32(u32) __RBIT(u32) - -/*! \brief Reverses the bits of \a u64. - * - * \param u64 U64 of which to reverse the bits. - * - * \return Value resulting from \a u64 with reversed bits. - */ -#define bit_reverse64(u64) ((U64)(((U64)bit_reverse32((U64)(u64) >> 32)) |\ - ((U64)bit_reverse32((U64)(u64)) << 32))) - -//! @} - - -/*! \name Alignment - */ -//! @{ - -/*! \brief Tests alignment of the number \a val with the \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return \c 1 if the number \a val is aligned with the \a n boundary, else \c 0. - */ -#define Test_align(val, n ) (!Tst_bits( val, (n) - 1 ) ) - -/*! \brief Gets alignment of the number \a val with respect to the \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Alignment of the number \a val with respect to the \a n boundary. - */ -#define Get_align( val, n ) ( Rd_bits( val, (n) - 1 ) ) - -/*! \brief Sets alignment of the lvalue number \a lval to \a alg with respect to the \a n boundary. - * - * \param lval Input/output lvalue. - * \param n Boundary. - * \param alg Alignment. - * - * \return New value of \a lval resulting from its alignment set to \a alg with respect to the \a n boundary. - */ -#define Set_align(lval, n, alg) ( Wr_bits(lval, (n) - 1, alg) ) - -/*! \brief Aligns the number \a val with the upper \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Value resulting from the number \a val aligned with the upper \a n boundary. - */ -#define Align_up( val, n ) (((val) + ((n) - 1)) & ~((n) - 1)) - -/*! \brief Aligns the number \a val with the lower \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Value resulting from the number \a val aligned with the lower \a n boundary. - */ -#define Align_down(val, n ) ( (val) & ~((n) - 1)) - -//! @} - - -/*! \name Mathematics - * - * The same considerations as for clz and ctz apply here but GCC does not - * provide built-in functions to access the assembly instructions abs, min and - * max and it does not produce them by itself in most cases, so two sets of - * macros are defined here: - * - Abs, Min and Max to apply to constant expressions (values known at - * compile time); - * - abs, min and max to apply to non-constant expressions (values unknown at - * compile time), abs is found in stdlib.h. - */ -//! @{ - -/*! \brief Takes the absolute value of \a a. - * - * \param a Input value. - * - * \return Absolute value of \a a. - * - * \note More optimized if only used with values known at compile time. - */ -#define Abs(a) (((a) < 0 ) ? -(a) : (a)) - -/*! \brief Takes the minimal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Minimal value of \a a and \a b. - * - * \note More optimized if only used with values known at compile time. - */ -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -/*! \brief Takes the maximal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Maximal value of \a a and \a b. - * - * \note More optimized if only used with values known at compile time. - */ -#define Max(a, b) (((a) > (b)) ? (a) : (b)) - -// abs() is already defined by stdlib.h - -/*! \brief Takes the minimal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Minimal value of \a a and \a b. - * - * \note More optimized if only used with values unknown at compile time. - */ -#define min(a, b) Min(a, b) - -/*! \brief Takes the maximal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Maximal value of \a a and \a b. - * - * \note More optimized if only used with values unknown at compile time. - */ -#define max(a, b) Max(a, b) - -//! @} - - -/*! \brief Calls the routine at address \a addr. - * - * It generates a long call opcode. - * - * For example, `Long_call(0x80000000)' generates a software reset on a UC3 if - * it is invoked from the CPU supervisor mode. - * - * \param addr Address of the routine to call. - * - * \note It may be used as a long jump opcode in some special cases. - */ -#define Long_call(addr) ((*(void (*)(void))(addr))()) - - -/*! \name MCU Endianism Handling - * ARM is MCU little endianism. - */ -//! @{ -#define MSB(u16) (((U8 *)&(u16))[1]) //!< Most significant byte of \a u16. -#define LSB(u16) (((U8 *)&(u16))[0]) //!< Least significant byte of \a u16. - -#define MSH(u32) (((U16 *)&(u32))[1]) //!< Most significant half-word of \a u32. -#define LSH(u32) (((U16 *)&(u32))[0]) //!< Least significant half-word of \a u32. -#define MSB0W(u32) (((U8 *)&(u32))[3]) //!< Most significant byte of 1st rank of \a u32. -#define MSB1W(u32) (((U8 *)&(u32))[2]) //!< Most significant byte of 2nd rank of \a u32. -#define MSB2W(u32) (((U8 *)&(u32))[1]) //!< Most significant byte of 3rd rank of \a u32. -#define MSB3W(u32) (((U8 *)&(u32))[0]) //!< Most significant byte of 4th rank of \a u32. -#define LSB3W(u32) MSB0W(u32) //!< Least significant byte of 4th rank of \a u32. -#define LSB2W(u32) MSB1W(u32) //!< Least significant byte of 3rd rank of \a u32. -#define LSB1W(u32) MSB2W(u32) //!< Least significant byte of 2nd rank of \a u32. -#define LSB0W(u32) MSB3W(u32) //!< Least significant byte of 1st rank of \a u32. - -#define MSW(u64) (((U32 *)&(u64))[1]) //!< Most significant word of \a u64. -#define LSW(u64) (((U32 *)&(u64))[0]) //!< Least significant word of \a u64. -#define MSH0(u64) (((U16 *)&(u64))[3]) //!< Most significant half-word of 1st rank of \a u64. -#define MSH1(u64) (((U16 *)&(u64))[2]) //!< Most significant half-word of 2nd rank of \a u64. -#define MSH2(u64) (((U16 *)&(u64))[1]) //!< Most significant half-word of 3rd rank of \a u64. -#define MSH3(u64) (((U16 *)&(u64))[0]) //!< Most significant half-word of 4th rank of \a u64. -#define LSH3(u64) MSH0(u64) //!< Least significant half-word of 4th rank of \a u64. -#define LSH2(u64) MSH1(u64) //!< Least significant half-word of 3rd rank of \a u64. -#define LSH1(u64) MSH2(u64) //!< Least significant half-word of 2nd rank of \a u64. -#define LSH0(u64) MSH3(u64) //!< Least significant half-word of 1st rank of \a u64. -#define MSB0D(u64) (((U8 *)&(u64))[7]) //!< Most significant byte of 1st rank of \a u64. -#define MSB1D(u64) (((U8 *)&(u64))[6]) //!< Most significant byte of 2nd rank of \a u64. -#define MSB2D(u64) (((U8 *)&(u64))[5]) //!< Most significant byte of 3rd rank of \a u64. -#define MSB3D(u64) (((U8 *)&(u64))[4]) //!< Most significant byte of 4th rank of \a u64. -#define MSB4D(u64) (((U8 *)&(u64))[3]) //!< Most significant byte of 5th rank of \a u64. -#define MSB5D(u64) (((U8 *)&(u64))[2]) //!< Most significant byte of 6th rank of \a u64. -#define MSB6D(u64) (((U8 *)&(u64))[1]) //!< Most significant byte of 7th rank of \a u64. -#define MSB7D(u64) (((U8 *)&(u64))[0]) //!< Most significant byte of 8th rank of \a u64. -#define LSB7D(u64) MSB0D(u64) //!< Least significant byte of 8th rank of \a u64. -#define LSB6D(u64) MSB1D(u64) //!< Least significant byte of 7th rank of \a u64. -#define LSB5D(u64) MSB2D(u64) //!< Least significant byte of 6th rank of \a u64. -#define LSB4D(u64) MSB3D(u64) //!< Least significant byte of 5th rank of \a u64. -#define LSB3D(u64) MSB4D(u64) //!< Least significant byte of 4th rank of \a u64. -#define LSB2D(u64) MSB5D(u64) //!< Least significant byte of 3rd rank of \a u64. -#define LSB1D(u64) MSB6D(u64) //!< Least significant byte of 2nd rank of \a u64. -#define LSB0D(u64) MSB7D(u64) //!< Least significant byte of 1st rank of \a u64. - -#define BE16(x) Swap16(x) -#define LE16(x) (x) - -#define le16_to_cpu(x) (x) -#define cpu_to_le16(x) (x) -#define LE16_TO_CPU(x) (x) -#define CPU_TO_LE16(x) (x) - -#define be16_to_cpu(x) Swap16(x) -#define cpu_to_be16(x) Swap16(x) -#define BE16_TO_CPU(x) Swap16(x) -#define CPU_TO_BE16(x) Swap16(x) - -#define le32_to_cpu(x) (x) -#define cpu_to_le32(x) (x) -#define LE32_TO_CPU(x) (x) -#define CPU_TO_LE32(x) (x) - -#define be32_to_cpu(x) swap32(x) -#define cpu_to_be32(x) swap32(x) -#define BE32_TO_CPU(x) swap32(x) -#define CPU_TO_BE32(x) swap32(x) -//! @} - - -/*! \name Endianism Conversion - * - * The same considerations as for clz and ctz apply here but GCC's - * __builtin_bswap_32 and __builtin_bswap_64 do not behave like macros when - * applied to constant expressions, so two sets of macros are defined here: - * - Swap16, Swap32 and Swap64 to apply to constant expressions (values known - * at compile time); - * - swap16, swap32 and swap64 to apply to non-constant expressions (values - * unknown at compile time). - */ -//! @{ - -/*! \brief Toggles the endianism of \a u16 (by swapping its bytes). - * - * \param u16 U16 of which to toggle the endianism. - * - * \return Value resulting from \a u16 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap16(u16) ((U16)(((U16)(u16) >> 8) |\ - ((U16)(u16) << 8))) - -/*! \brief Toggles the endianism of \a u32 (by swapping its bytes). - * - * \param u32 U32 of which to toggle the endianism. - * - * \return Value resulting from \a u32 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap32(u32) ((U32)(((U32)Swap16((U32)(u32) >> 16)) |\ - ((U32)Swap16((U32)(u32)) << 16))) - -/*! \brief Toggles the endianism of \a u64 (by swapping its bytes). - * - * \param u64 U64 of which to toggle the endianism. - * - * \return Value resulting from \a u64 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap64(u64) ((U64)(((U64)Swap32((U64)(u64) >> 32)) |\ - ((U64)Swap32((U64)(u64)) << 32))) - -/*! \brief Toggles the endianism of \a u16 (by swapping its bytes). - * - * \param u16 U16 of which to toggle the endianism. - * - * \return Value resulting from \a u16 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#define swap16(u16) Swap16(u16) - -/*! \brief Toggles the endianism of \a u32 (by swapping its bytes). - * - * \param u32 U32 of which to toggle the endianism. - * - * \return Value resulting from \a u32 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) -# define swap32(u32) ((U32)__builtin_bswap32((U32)(u32))) -#else -# define swap32(u32) Swap32(u32) -#endif - -/*! \brief Toggles the endianism of \a u64 (by swapping its bytes). - * - * \param u64 U64 of which to toggle the endianism. - * - * \return Value resulting from \a u64 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) -# define swap64(u64) ((U64)__builtin_bswap64((U64)(u64))) -#else -# define swap64(u64) ((U64)(((U64)swap32((U64)(u64) >> 32)) |\ - ((U64)swap32((U64)(u64)) << 32))) -#endif - -//! @} - - -/*! \name Target Abstraction - */ -//! @{ - -#define _GLOBEXT_ extern //!< extern storage-class specifier. -#define _CONST_TYPE_ const //!< const type qualifier. -#define _MEM_TYPE_SLOW_ //!< Slow memory type. -#define _MEM_TYPE_MEDFAST_ //!< Fairly fast memory type. -#define _MEM_TYPE_FAST_ //!< Fast memory type. - -typedef U8 Byte; //!< 8-bit unsigned integer. - -#define memcmp_ram2ram memcmp //!< Target-specific memcmp of RAM to RAM. -#define memcmp_code2ram memcmp //!< Target-specific memcmp of RAM to NVRAM. -#define memcpy_ram2ram memcpy //!< Target-specific memcpy from RAM to RAM. -#define memcpy_code2ram memcpy //!< Target-specific memcpy from NVRAM to RAM. - -#define LSB0(u32) LSB0W(u32) //!< Least significant byte of 1st rank of \a u32. -#define LSB1(u32) LSB1W(u32) //!< Least significant byte of 2nd rank of \a u32. -#define LSB2(u32) LSB2W(u32) //!< Least significant byte of 3rd rank of \a u32. -#define LSB3(u32) LSB3W(u32) //!< Least significant byte of 4th rank of \a u32. -#define MSB3(u32) MSB3W(u32) //!< Most significant byte of 4th rank of \a u32. -#define MSB2(u32) MSB2W(u32) //!< Most significant byte of 3rd rank of \a u32. -#define MSB1(u32) MSB1W(u32) //!< Most significant byte of 2nd rank of \a u32. -#define MSB0(u32) MSB0W(u32) //!< Most significant byte of 1st rank of \a u32. - -//! @} - -/** - * \brief Calculate \f$ \left\lceil \frac{a}{b} \right\rceil \f$ using - * integer arithmetic. - * - * \param a An integer - * \param b Another integer - * - * \return (\a a / \a b) rounded up to the nearest integer. - */ -#define div_ceil(a, b) (((a) + (b) - 1) / (b)) - -#endif // #ifndef __ASSEMBLY__ - - -#if defined(__ICCARM__) -#define SHORTENUM __packed -#elif defined(__GNUC__) -#define SHORTENUM __attribute__((packed)) -#endif - -/* No operation */ -#if defined(__ICCARM__) -#define nop() __no_operation() -#elif defined(__GNUC__) -#define nop() (__NOP()) -#endif - -#define FLASH_DECLARE(x) const x -#define FLASH_EXTERN(x) extern const x -#define PGM_READ_BYTE(x) *(x) -#define PGM_READ_WORD(x) *(x) -#define MEMCPY_ENDIAN memcpy -#define PGM_READ_BLOCK(dst, src, len) memcpy((dst), (src), (len)) - -/*Defines the Flash Storage for the request and response of MAC*/ -#define CMD_ID_OCTET (0) - -/* Converting of values from CPU endian to little endian. */ -#define CPU_ENDIAN_TO_LE16(x) (x) -#define CPU_ENDIAN_TO_LE32(x) (x) -#define CPU_ENDIAN_TO_LE64(x) (x) - -/* Converting of values from little endian to CPU endian. */ -#define LE16_TO_CPU_ENDIAN(x) (x) -#define LE32_TO_CPU_ENDIAN(x) (x) -#define LE64_TO_CPU_ENDIAN(x) (x) - -/* Converting of constants from little endian to CPU endian. */ -#define CLE16_TO_CPU_ENDIAN(x) (x) -#define CLE32_TO_CPU_ENDIAN(x) (x) -#define CLE64_TO_CPU_ENDIAN(x) (x) - -/* Converting of constants from CPU endian to little endian. */ -#define CCPU_ENDIAN_TO_LE16(x) (x) -#define CCPU_ENDIAN_TO_LE32(x) (x) -#define CCPU_ENDIAN_TO_LE64(x) (x) - -#define ADDR_COPY_DST_SRC_16(dst, src) ((dst) = (src)) -#define ADDR_COPY_DST_SRC_64(dst, src) ((dst) = (src)) - -/** - * @brief Converts a 64-Bit value into a 8 Byte array - * - * @param[in] value 64-Bit value - * @param[out] data Pointer to the 8 Byte array to be updated with 64-Bit value - * @ingroup apiPalApi - */ -static inline void convert_64_bit_to_byte_array(uint64_t value, uint8_t *data) -{ - uint8_t val_index = 0; - - while (val_index < 8) - { - data[val_index++] = value & 0xFF; - value = value >> 8; - } -} - -/** - * @brief Converts a 16-Bit value into a 2 Byte array - * - * @param[in] value 16-Bit value - * @param[out] data Pointer to the 2 Byte array to be updated with 16-Bit value - * @ingroup apiPalApi - */ -static inline void convert_16_bit_to_byte_array(uint16_t value, uint8_t *data) -{ - data[0] = value & 0xFF; - data[1] = (value >> 8) & 0xFF; -} - -/* Converts a 16-Bit value into a 2 Byte array */ -static inline void convert_spec_16_bit_to_byte_array(uint16_t value, uint8_t *data) -{ - data[0] = value & 0xFF; - data[1] = (value >> 8) & 0xFF; -} - -/* Converts a 16-Bit value into a 2 Byte array */ -static inline void convert_16_bit_to_byte_address(uint16_t value, uint8_t *data) -{ - data[0] = value & 0xFF; - data[1] = (value >> 8) & 0xFF; -} - -/* - * @brief Converts a 2 Byte array into a 16-Bit value - * - * @param data Specifies the pointer to the 2 Byte array - * - * @return 16-Bit value - * @ingroup apiPalApi - */ -static inline uint16_t convert_byte_array_to_16_bit(uint8_t *data) -{ - return (data[0] | ((uint16_t)data[1] << 8)); -} - -/** - * @brief Converts a 8 Byte array into a 64-Bit value - * - * @param data Specifies the pointer to the 8 Byte array - * - * @return 64-Bit value - * @ingroup apiPalApi - */ -static inline uint64_t convert_byte_array_to_64_bit(uint8_t *data) -{ - union - { - uint64_t u64; - uint8_t u8[8]; - } long_addr; - - uint8_t val_index; - - for (val_index = 0; val_index < 8; val_index++) - { - long_addr.u8[val_index] = *data++; - } - - return long_addr.u64; -} -/** - * \} - */ - -#endif /* UTILS_COMPILER_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/fpu/fpu.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/fpu/fpu.h deleted file mode 100644 index c28c39a9b..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/fpu/fpu.h +++ /dev/null @@ -1,89 +0,0 @@ -/** - * \file - * - * \brief FPU support for SAM. - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _FPU_H_INCLUDED_ -#define _FPU_H_INCLUDED_ - -#include - -/** Address for ARM CPACR */ -#define ADDR_CPACR 0xE000ED88 - -/** CPACR Register */ -#define REG_CPACR (*((volatile uint32_t *)ADDR_CPACR)) - -/** - * Enable FPU - */ -__always_inline static void fpu_enable(void) -{ - irqflags_t flags; - flags = cpu_irq_save(); - REG_CPACR |= (0xFu << 20); - __DSB(); - __ISB(); - cpu_irq_restore(flags); -} - -/** - * Disable FPU - */ -__always_inline static void fpu_disable(void) -{ - irqflags_t flags; - flags = cpu_irq_save(); - REG_CPACR &= ~(0xFu << 20); - __DSB(); - __ISB(); - cpu_irq_restore(flags); -} - -/** - * Check if FPU is enabled - */ -__always_inline static bool fpu_is_enabled(void) -{ - return (REG_CPACR & (0xFu << 20)); -} - -#endif /* _FPU_H_INCLUDED_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/header_files/io.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/header_files/io.h deleted file mode 100644 index b0fbd29ca..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/header_files/io.h +++ /dev/null @@ -1,95 +0,0 @@ -/** - * \file - * - * \brief Arch file for SAM. - * - * This file defines common SAM series. - * - * Copyright (c) 2011 - 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _SAM_IO_ -#define _SAM_IO_ - -/* SAM3 family */ - -/* SAM3S series */ -#if (SAM3S) -# if (SAM3S8 || SAM3SD8) -# include "sam3s8.h" -# else -# include "sam3s.h" -# endif -#endif - -/* SAM3U series */ -#if (SAM3U) -# include "sam3u.h" -#endif - -/* SAM3N series */ -#if (SAM3N) -# include "sam3n.h" -#endif - -/* SAM3XA series */ -#if (SAM3XA) -# include "sam3xa.h" -#endif - -/* SAM4S series */ -#if (SAM4S) -# include "sam4s.h" -#endif - -/* SAM4L series */ -#if (SAM4L) -# include "sam4l.h" -#endif - -/* SAM4E series */ -#if (SAM4E) -# include "sam4e.h" -#endif - -/* SAM4N series */ -#if (SAM4N) -# include "sam4n.h" -#endif - -#endif /* _SAM_IO_ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/linker_scripts/sam4e/sam4e16e/gcc/flash.ld b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/linker_scripts/sam4e/sam4e16e/gcc/flash.ld deleted file mode 100644 index d01ef3ef3..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/linker_scripts/sam4e/sam4e16e/gcc/flash.ld +++ /dev/null @@ -1,153 +0,0 @@ -/** - * \file - * - * \brief Flash Linker script for SAM. - * - * Copyright (c) 2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") -OUTPUT_ARCH(arm) -SEARCH_DIR(.) - -/* Memory Spaces Definitions */ -MEMORY -{ - rom (rx) : ORIGIN = 0x00400000, LENGTH = 0x00100000 - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00020000 -} - -/* The stack size used by the application. NOTE: you need to adjust according to your application. */ -STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : 0x3000; - -SECTIONS -{ - .text : - { - . = ALIGN(4); - _sfixed = .; - KEEP(*(.vectors .vectors.*)) - *(.text .text.* .gnu.linkonce.t.*) - *(.glue_7t) *(.glue_7) - *(.rodata .rodata* .gnu.linkonce.r.*) - *(.ARM.extab* .gnu.linkonce.armextab.*) - - /* Support C constructors, and C destructors in both user code - and the C library. This also provides support for C++ code. */ - . = ALIGN(4); - KEEP(*(.init)) - . = ALIGN(4); - __preinit_array_start = .; - KEEP (*(.preinit_array)) - __preinit_array_end = .; - - . = ALIGN(4); - __init_array_start = .; - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - __init_array_end = .; - - . = ALIGN(0x4); - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*crtend.o(.ctors)) - - . = ALIGN(4); - KEEP(*(.fini)) - - . = ALIGN(4); - __fini_array_start = .; - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - __fini_array_end = .; - - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*crtend.o(.dtors)) - - . = ALIGN(4); - _efixed = .; /* End of text section */ - } > rom - - /* .ARM.exidx is sorted, so has to go in its own output section. */ - PROVIDE_HIDDEN (__exidx_start = .); - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } > rom - PROVIDE_HIDDEN (__exidx_end = .); - - . = ALIGN(4); - _etext = .; - - .relocate : AT (_etext) - { - . = ALIGN(4); - _srelocate = .; - *(.ramfunc .ramfunc.*); - *(.data .data.*); - . = ALIGN(4); - _erelocate = .; - } > ram - - /* .bss section which is used for uninitialized data */ - .bss (NOLOAD) : - { - . = ALIGN(4); - _sbss = . ; - _szero = .; - *(.bss .bss.*) - *(COMMON) - . = ALIGN(4); - _ebss = . ; - _ezero = .; - } > ram - - /* stack section */ - .stack (NOLOAD): - { - . = ALIGN(8); - _sstack = .; - . = . + STACK_SIZE; - . = ALIGN(8); - _estack = .; - } > ram - - . = ALIGN(4); - _end = . ; -} diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/make/Makefile.sam.in b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/make/Makefile.sam.in deleted file mode 100644 index 2dd582d6c..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/make/Makefile.sam.in +++ /dev/null @@ -1,482 +0,0 @@ -# List of available make goals: -# -# all Default target, builds the project -# clean Clean up the project -# rebuild Rebuild the project -# debug_flash Builds the project and debug in flash -# debug_sram Builds the project and debug in sram -# -# doc Build the documentation -# cleandoc Clean up the documentation -# rebuilddoc Rebuild the documentation -# -# \file -# -# Copyright (c) 2011 - 2013 Atmel Corporation. All rights reserved. -# -# \asf_license_start -# -# \page License -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# 2. 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. -# -# 3. The name of Atmel may not be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# 4. This software may only be redistributed and used in connection with an -# Atmel microcontroller product. -# -# THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE -# EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. -# -# \asf_license_stop -# - -# Include the config.mk file from the current working path, e.g., where the -# user called make. -include config.mk - -# Tool to use to generate documentation from the source code -DOCGEN ?= doxygen - -# Look for source files relative to the top-level source directory -VPATH := $(PRJ_PATH) - -# Output target file -project_type := $(PROJECT_TYPE) - -# Output target file -ifeq ($(project_type),flash) -target := $(TARGET_FLASH) -linker_script := $(PRJ_PATH)/$(LINKER_SCRIPT_FLASH) -debug_script := $(PRJ_PATH)/$(DEBUG_SCRIPT_FLASH) -else -target := $(TARGET_SRAM) -linker_script := $(PRJ_PATH)/$(LINKER_SCRIPT_SRAM) -debug_script := $(PRJ_PATH)/$(DEBUG_SCRIPT_SRAM) -endif - -# Output project name (target name minus suffix) -project := $(basename $(target)) - -# Output target file (typically ELF or static library) -ifeq ($(suffix $(target)),.a) -target_type := lib -else -ifeq ($(suffix $(target)),.elf) -target_type := elf -else -$(error "Target type $(target_type) is not supported") -endif -endif - -# Allow override of operating system detection. The user can add OS=Linux or -# OS=Windows on the command line to explicit set the host OS. -# -# This allows to work around broken uname utility on certain systems. -ifdef OS - ifeq ($(strip $(OS)), Linux) - os_type := Linux - endif - ifeq ($(strip $(OS)), Windows) - os_type := windows32_64 - endif -endif - -os_type ?= $(strip $(shell uname)) - -ifeq ($(os_type),windows32) -os := Windows -else -ifeq ($(os_type),windows64) -os := Windows -else -ifeq ($(os_type),windows32_64) -os ?= Windows -else -ifeq ($(os_type),) -os := Windows -else -# Default to Linux style operating system. Both Cygwin and mingw are fully -# compatible (for this Makefile) with Linux. -os := Linux -endif -endif -endif -endif - -# Output documentation directory and configuration file. -docdir := ../doxygen/html -doccfg := ../doxygen/doxyfile.doxygen - -CROSS ?= arm-none-eabi- -AR := $(CROSS)ar -AS := $(CROSS)as -CC := $(CROSS)gcc -CPP := $(CROSS)gcc -E -CXX := $(CROSS)g++ -LD := $(CROSS)g++ -NM := $(CROSS)nm -OBJCOPY := $(CROSS)objcopy -OBJDUMP := $(CROSS)objdump -SIZE := $(CROSS)size -GDB := $(CROSS)gdb - -RM := rm -ifeq ($(os),Windows) -RMDIR := rmdir /S /Q -else -RMDIR := rmdir -p --ignore-fail-on-non-empty -endif - -# On Windows, we need to override the shell to force the use of cmd.exe -ifeq ($(os),Windows) -SHELL := cmd -endif - -# Strings for beautifying output -MSG_CLEAN_FILES = "RM *.o *.d" -MSG_CLEAN_DIRS = "RMDIR $(strip $(clean-dirs))" -MSG_CLEAN_DOC = "RMDIR $(docdir)" -MSG_MKDIR = "MKDIR $(dir $@)" - -MSG_INFO = "INFO " - -MSG_ARCHIVING = "AR $@" -MSG_ASSEMBLING = "AS $@" -MSG_BINARY_IMAGE = "OBJCOPY $@" -MSG_COMPILING = "CC $@" -MSG_COMPILING_CXX = "CXX $@" -MSG_EXTENDED_LISTING = "OBJDUMP $@" -MSG_IHEX_IMAGE = "OBJCOPY $@" -MSG_LINKING = "LN $@" -MSG_PREPROCESSING = "CPP $@" -MSG_SIZE = "SIZE $@" -MSG_SYMBOL_TABLE = "NM $@" - -MSG_GENERATING_DOC = "DOXYGEN $(docdir)" - -# Don't use make's built-in rules and variables -MAKEFLAGS += -rR - -# Don't print 'Entering directory ...' -MAKEFLAGS += --no-print-directory - -# Function for reversing the order of a list -reverse = $(if $(1),$(call reverse,$(wordlist 2,$(words $(1)),$(1)))) $(firstword $(1)) - -# Hide command output by default, but allow the user to override this -# by adding V=1 on the command line. -# -# This is inspired by the Kbuild system used by the Linux kernel. -ifdef V - ifeq ("$(origin V)", "command line") - VERBOSE = $(V) - endif -endif -ifndef VERBOSE - VERBOSE = 0 -endif - -ifeq ($(VERBOSE), 1) - Q = -else - Q = @ -endif - -arflags-gnu-y := $(ARFLAGS) -asflags-gnu-y := $(ASFLAGS) -cflags-gnu-y := $(CFLAGS) -cxxflags-gnu-y := $(CXXFLAGS) -cppflags-gnu-y := $(CPPFLAGS) -cpuflags-gnu-y := -dbgflags-gnu-y := $(DBGFLAGS) -libflags-gnu-y := $(foreach LIB,$(LIBS),-l$(LIB)) -ldflags-gnu-y := $(LDFLAGS) -flashflags-gnu-y := -clean-files := -clean-dirs := - -clean-files += $(wildcard $(target) $(project).map) -clean-files += $(wildcard $(project).hex $(project).bin) -clean-files += $(wildcard $(project).lss $(project).sym) -clean-files += $(wildcard $(build)) - -# Use pipes instead of temporary files for communication between processes -cflags-gnu-y += -pipe -asflags-gnu-y += -pipe -ldflags-gnu-y += -pipe - -# Archiver flags. -arflags-gnu-y += rcs - -# Always enable warnings. And be very careful about implicit -# declarations. -cflags-gnu-y += -Wall -Wstrict-prototypes -Wmissing-prototypes -cflags-gnu-y += -Werror-implicit-function-declaration -cxxflags-gnu-y += -Wall -# IAR doesn't allow arithmetic on void pointers, so warn about that. -cflags-gnu-y += -Wpointer-arith -cxxflags-gnu-y += -Wpointer-arith - -# Preprocessor flags. -cppflags-gnu-y += $(foreach INC,$(addprefix $(PRJ_PATH)/,$(INC_PATH)),-I$(INC)) -asflags-gnu-y += $(foreach INC,$(addprefix $(PRJ_PATH)/,$(INC_PATH)),'-Wa,-I$(INC)') - -# CPU specific flags. -cpuflags-gnu-y += -mcpu=$(ARCH) -mthumb -D=__$(PART)__ - -# Dependency file flags. -depflags = -MD -MP -MQ $@ - -# Debug specific flags. -ifdef BUILD_DEBUG_LEVEL -dbgflags-gnu-y += -g$(BUILD_DEBUG_LEVEL) -else -dbgflags-gnu-y += -g3 -endif - -# Optimization specific flags. -ifdef BUILD_OPTIMIZATION -optflags-gnu-y = -O$(BUILD_OPTIMIZATION) -else -optflags-gnu-y = $(OPTIMIZATION) -endif - -# Always preprocess assembler files. -asflags-gnu-y += -x assembler-with-cpp -# Compile C files using the GNU99 standard. -cflags-gnu-y += -std=gnu99 -# Compile C++ files using the GNU++98 standard. -cxxflags-gnu-y += -std=gnu++98 - -# Don't use strict aliasing (very common in embedded applications). -cflags-gnu-y += -fno-strict-aliasing -cxxflags-gnu-y += -fno-strict-aliasing - -# Separate each function and data into its own separate section to allow -# garbage collection of unused sections. -cflags-gnu-y += -ffunction-sections -fdata-sections -cxxflags-gnu-y += -ffunction-sections -fdata-sections - -# Various cflags. -cflags-gnu-y += -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int -cflags-gnu-y += -Wmain -Wparentheses -cflags-gnu-y += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused -cflags-gnu-y += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef -cflags-gnu-y += -Wshadow -Wbad-function-cast -Wwrite-strings -cflags-gnu-y += -Wsign-compare -Waggregate-return -cflags-gnu-y += -Wmissing-declarations -cflags-gnu-y += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations -cflags-gnu-y += -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long -cflags-gnu-y += -Wunreachable-code -cflags-gnu-y += -Wcast-align -cflags-gnu-y += --param max-inline-insns-single=500 - -# Garbage collect unreferred sections when linking. -ldflags-gnu-y += -Wl,--gc-sections - -# Use the linker script if provided by the project. -ifneq ($(strip $(linker_script)),) -ldflags-gnu-y += -Wl,-T $(linker_script) -endif - -# Output a link map file and a cross reference table -ldflags-gnu-y += -Wl,-Map=$(project).map,--cref - -# Add library search paths relative to the top level directory. -ldflags-gnu-y += $(foreach _LIB_PATH,$(addprefix $(PRJ_PATH)/,$(LIB_PATH)),-L$(_LIB_PATH)) - -a_flags = $(cpuflags-gnu-y) $(depflags) $(cppflags-gnu-y) $(asflags-gnu-y) -D__ASSEMBLY__ -c_flags = $(cpuflags-gnu-y) $(dbgflags-gnu-y) $(depflags) $(optflags-gnu-y) $(cppflags-gnu-y) $(cflags-gnu-y) -cxx_flags= $(cpuflags-gnu-y) $(dbgflags-gnu-y) $(depflags) $(optflags-gnu-y) $(cppflags-gnu-y) $(cxxflags-gnu-y) -l_flags = -Wl,--entry=Reset_Handler -Wl,--cref $(cpuflags-gnu-y) $(optflags-gnu-y) $(ldflags-gnu-y) -ar_flags = $(arflags-gnu-y) - -# Source files list and part informations must already be included before -# running this makefile - -# If a custom build directory is specified, use it -- force trailing / in directory name. -ifdef BUILD_DIR - build-dir := $(dir $(BUILD_DIR))$(if $(notdir $(BUILD_DIR)),$(notdir $(BUILD_DIR))/) -else - build-dir = -endif - -# Create object files list from source files list. -obj-y := $(addprefix $(build-dir), $(addsuffix .o,$(basename $(CSRCS) $(ASSRCS)))) -# Create dependency files list from source files list. -dep-files := $(wildcard $(foreach f,$(obj-y),$(basename $(f)).d)) - -clean-files += $(wildcard $(obj-y)) -clean-files += $(dep-files) - -clean-dirs += $(call reverse,$(sort $(wildcard $(dir $(obj-y))))) - -# Default target. -.PHONY: all -ifeq ($(project_type),all) -all: - $(MAKE) all PROJECT_TYPE=flash - $(MAKE) all PROJECT_TYPE=sram -else -ifeq ($(target_type),lib) -all: $(target) $(project).lss $(project).sym -else -ifeq ($(target_type),elf) -all: $(target) $(project).lss $(project).sym $(project).hex $(project).bin -endif -endif -endif - -# Clean up the project. -.PHONY: clean -clean: - @$(if $(strip $(clean-files)),echo $(MSG_CLEAN_FILES)) - $(if $(strip $(clean-files)),$(Q)$(RM) $(clean-files),) - @$(if $(strip $(clean-dirs)),echo $(MSG_CLEAN_DIRS)) -# Remove created directories, and make sure we only remove existing -# directories, since recursive rmdir might help us a bit on the way. -ifeq ($(os),Windows) - $(Q)$(if $(strip $(clean-dirs)), \ - $(RMDIR) $(strip $(subst /,\,$(clean-dirs)))) -else - $(Q)$(if $(strip $(clean-dirs)), \ - for directory in $(strip $(clean-dirs)); do \ - if [ -d "$$directory" ]; then \ - $(RMDIR) $$directory; \ - fi \ - done \ - ) -endif - -# Rebuild the project. -.PHONY: rebuild -rebuild: clean all - -# Debug the project in flash. -.PHONY: debug_flash -debug_flash: all - $(GDB) -x "$(PRJ_PATH)/$(DEBUG_SCRIPT_FLASH)" -ex "reset" -readnow -se $(TARGET_FLASH) - -# Debug the project in sram. -.PHONY: debug_sram -debug_sram: all - $(GDB) -x "$(PRJ_PATH)/$(DEBUG_SCRIPT_SRAM)" -ex "reset" -readnow -se $(TARGET_SRAM) - -.PHONY: objfiles -objfiles: $(obj-y) - -# Create object files from C source files. -$(build-dir)%.o: %.c $(MAKEFILE_PATH) config.mk - $(Q)test -d $(dir $@) || echo $(MSG_MKDIR) -ifeq ($(os),Windows) - $(Q)test -d $(patsubst %/,%,$(dir $@)) || mkdir $(subst /,\,$(dir $@)) -else - $(Q)test -d $(dir $@) || mkdir -p $(dir $@) -endif - @echo $(MSG_COMPILING) - $(Q)$(CC) $(c_flags) -c $< -o $@ - -# Create object files from C++ source files. -$(build-dir)%.o: %.cpp $(MAKEFILE_PATH) config.mk - $(Q)test -d $(dir $@) || echo $(MSG_MKDIR) -ifeq ($(os),Windows) - $(Q)test -d $(patsubst %/,%,$(dir $@)) || mkdir $(subst /,\,$(dir $@)) -else - $(Q)test -d $(dir $@) || mkdir -p $(dir $@) -endif - @echo $(MSG_COMPILING_CXX) - $(Q)$(CXX) $(cxx_flags) -c $< -o $@ - -# Preprocess and assemble: create object files from assembler source files. -$(build-dir)%.o: %.S $(MAKEFILE_PATH) config.mk - $(Q)test -d $(dir $@) || echo $(MSG_MKDIR) -ifeq ($(os),Windows) - $(Q)test -d $(patsubst %/,%,$(dir $@)) || mkdir $(subst /,\,$(dir $@)) -else - $(Q)test -d $(dir $@) || mkdir -p $(dir $@) -endif - @echo $(MSG_ASSEMBLING) - $(Q)$(CC) $(a_flags) -c $< -o $@ - -# Include all dependency files to add depedency to all header files in use. -include $(dep-files) - -ifeq ($(target_type),lib) -# Archive object files into an archive -$(target): $(MAKEFILE_PATH) config.mk $(obj-y) - @echo $(MSG_ARCHIVING) - $(Q)$(AR) $(ar_flags) $@ $(obj-y) - @echo $(MSG_SIZE) - $(Q)$(SIZE) -Bxt $@ -else -ifeq ($(target_type),elf) -# Link the object files into an ELF file. Also make sure the target is rebuilt -# if the common Makefile.sam.in or project config.mk is changed. -$(target): $(linker_script) $(MAKEFILE_PATH) config.mk $(obj-y) - @echo $(MSG_LINKING) - $(Q)$(LD) $(l_flags) $(obj-y) $(libflags-gnu-y) -o $@ - @echo $(MSG_SIZE) - $(Q)$(SIZE) -Ax $@ - $(Q)$(SIZE) -Bx $@ -endif -endif - -# Create extended function listing from target output file. -%.lss: $(target) - @echo $(MSG_EXTENDED_LISTING) - $(Q)$(OBJDUMP) -h -S $< > $@ - -# Create symbol table from target output file. -%.sym: $(target) - @echo $(MSG_SYMBOL_TABLE) - $(Q)$(NM) -n $< > $@ - -# Create Intel HEX image from ELF output file. -%.hex: $(target) - @echo $(MSG_IHEX_IMAGE) - $(Q)$(OBJCOPY) -O ihex $(flashflags-gnu-y) $< $@ - -# Create binary image from ELF output file. -%.bin: $(target) - @echo $(MSG_BINARY_IMAGE) - $(Q)$(OBJCOPY) -O binary $< $@ - -# Provide information about the detected host operating system. -.SECONDARY: info-os -info-os: - @echo $(MSG_INFO)$(os) build host detected - -# Build Doxygen generated documentation. -.PHONY: doc -doc: - @echo $(MSG_GENERATING_DOC) - $(Q)cd $(dir $(doccfg)) && $(DOCGEN) $(notdir $(doccfg)) - -# Clean Doxygen generated documentation. -.PHONY: cleandoc -cleandoc: - @$(if $(wildcard $(docdir)),echo $(MSG_CLEAN_DOC)) - $(Q)$(if $(wildcard $(docdir)),$(RM) --recursive $(docdir)) - -# Rebuild the Doxygen generated documentation. -.PHONY: rebuilddoc -rebuilddoc: cleandoc doc diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/mrepeat.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/mrepeat.h deleted file mode 100644 index 954dd5f02..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/mrepeat.h +++ /dev/null @@ -1,336 +0,0 @@ -/** - * \file - * - * \brief Preprocessor macro repeating utils. - * - * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _MREPEAT_H_ -#define _MREPEAT_H_ - -/** - * \defgroup group_sam_utils_mrepeat Preprocessor - Macro Repeat - * - * \ingroup group_sam_utils - * - * \{ - */ - -#include "preprocessor.h" - - -//! Maximal number of repetitions supported by MREPEAT. -#define MREPEAT_LIMIT 256 - -/*! \brief Macro repeat. - * - * This macro represents a horizontal repetition construct. - * - * \param count The number of repetitious calls to macro. Valid values range from 0 to MREPEAT_LIMIT. - * \param macro A binary operation of the form macro(n, data). This macro is expanded by MREPEAT with - * the current repetition number and the auxiliary data argument. - * \param data Auxiliary data passed to macro. - * - * \return macro(0, data) macro(1, data) ... macro(count - 1, data) - */ -#define MREPEAT(count, macro, data) TPASTE2(MREPEAT, count)(macro, data) - -#define MREPEAT0( macro, data) -#define MREPEAT1( macro, data) MREPEAT0( macro, data) macro( 0, data) -#define MREPEAT2( macro, data) MREPEAT1( macro, data) macro( 1, data) -#define MREPEAT3( macro, data) MREPEAT2( macro, data) macro( 2, data) -#define MREPEAT4( macro, data) MREPEAT3( macro, data) macro( 3, data) -#define MREPEAT5( macro, data) MREPEAT4( macro, data) macro( 4, data) -#define MREPEAT6( macro, data) MREPEAT5( macro, data) macro( 5, data) -#define MREPEAT7( macro, data) MREPEAT6( macro, data) macro( 6, data) -#define MREPEAT8( macro, data) MREPEAT7( macro, data) macro( 7, data) -#define MREPEAT9( macro, data) MREPEAT8( macro, data) macro( 8, data) -#define MREPEAT10( macro, data) MREPEAT9( macro, data) macro( 9, data) -#define MREPEAT11( macro, data) MREPEAT10( macro, data) macro( 10, data) -#define MREPEAT12( macro, data) MREPEAT11( macro, data) macro( 11, data) -#define MREPEAT13( macro, data) MREPEAT12( macro, data) macro( 12, data) -#define MREPEAT14( macro, data) MREPEAT13( macro, data) macro( 13, data) -#define MREPEAT15( macro, data) MREPEAT14( macro, data) macro( 14, data) -#define MREPEAT16( macro, data) MREPEAT15( macro, data) macro( 15, data) -#define MREPEAT17( macro, data) MREPEAT16( macro, data) macro( 16, data) -#define MREPEAT18( macro, data) MREPEAT17( macro, data) macro( 17, data) -#define MREPEAT19( macro, data) MREPEAT18( macro, data) macro( 18, data) -#define MREPEAT20( macro, data) MREPEAT19( macro, data) macro( 19, data) -#define MREPEAT21( macro, data) MREPEAT20( macro, data) macro( 20, data) -#define MREPEAT22( macro, data) MREPEAT21( macro, data) macro( 21, data) -#define MREPEAT23( macro, data) MREPEAT22( macro, data) macro( 22, data) -#define MREPEAT24( macro, data) MREPEAT23( macro, data) macro( 23, data) -#define MREPEAT25( macro, data) MREPEAT24( macro, data) macro( 24, data) -#define MREPEAT26( macro, data) MREPEAT25( macro, data) macro( 25, data) -#define MREPEAT27( macro, data) MREPEAT26( macro, data) macro( 26, data) -#define MREPEAT28( macro, data) MREPEAT27( macro, data) macro( 27, data) -#define MREPEAT29( macro, data) MREPEAT28( macro, data) macro( 28, data) -#define MREPEAT30( macro, data) MREPEAT29( macro, data) macro( 29, data) -#define MREPEAT31( macro, data) MREPEAT30( macro, data) macro( 30, data) -#define MREPEAT32( macro, data) MREPEAT31( macro, data) macro( 31, data) -#define MREPEAT33( macro, data) MREPEAT32( macro, data) macro( 32, data) -#define MREPEAT34( macro, data) MREPEAT33( macro, data) macro( 33, data) -#define MREPEAT35( macro, data) MREPEAT34( macro, data) macro( 34, data) -#define MREPEAT36( macro, data) MREPEAT35( macro, data) macro( 35, data) -#define MREPEAT37( macro, data) MREPEAT36( macro, data) macro( 36, data) -#define MREPEAT38( macro, data) MREPEAT37( macro, data) macro( 37, data) -#define MREPEAT39( macro, data) MREPEAT38( macro, data) macro( 38, data) -#define MREPEAT40( macro, data) MREPEAT39( macro, data) macro( 39, data) -#define MREPEAT41( macro, data) MREPEAT40( macro, data) macro( 40, data) -#define MREPEAT42( macro, data) MREPEAT41( macro, data) macro( 41, data) -#define MREPEAT43( macro, data) MREPEAT42( macro, data) macro( 42, data) -#define MREPEAT44( macro, data) MREPEAT43( macro, data) macro( 43, data) -#define MREPEAT45( macro, data) MREPEAT44( macro, data) macro( 44, data) -#define MREPEAT46( macro, data) MREPEAT45( macro, data) macro( 45, data) -#define MREPEAT47( macro, data) MREPEAT46( macro, data) macro( 46, data) -#define MREPEAT48( macro, data) MREPEAT47( macro, data) macro( 47, data) -#define MREPEAT49( macro, data) MREPEAT48( macro, data) macro( 48, data) -#define MREPEAT50( macro, data) MREPEAT49( macro, data) macro( 49, data) -#define MREPEAT51( macro, data) MREPEAT50( macro, data) macro( 50, data) -#define MREPEAT52( macro, data) MREPEAT51( macro, data) macro( 51, data) -#define MREPEAT53( macro, data) MREPEAT52( macro, data) macro( 52, data) -#define MREPEAT54( macro, data) MREPEAT53( macro, data) macro( 53, data) -#define MREPEAT55( macro, data) MREPEAT54( macro, data) macro( 54, data) -#define MREPEAT56( macro, data) MREPEAT55( macro, data) macro( 55, data) -#define MREPEAT57( macro, data) MREPEAT56( macro, data) macro( 56, data) -#define MREPEAT58( macro, data) MREPEAT57( macro, data) macro( 57, data) -#define MREPEAT59( macro, data) MREPEAT58( macro, data) macro( 58, data) -#define MREPEAT60( macro, data) MREPEAT59( macro, data) macro( 59, data) -#define MREPEAT61( macro, data) MREPEAT60( macro, data) macro( 60, data) -#define MREPEAT62( macro, data) MREPEAT61( macro, data) macro( 61, data) -#define MREPEAT63( macro, data) MREPEAT62( macro, data) macro( 62, data) -#define MREPEAT64( macro, data) MREPEAT63( macro, data) macro( 63, data) -#define MREPEAT65( macro, data) MREPEAT64( macro, data) macro( 64, data) -#define MREPEAT66( macro, data) MREPEAT65( macro, data) macro( 65, data) -#define MREPEAT67( macro, data) MREPEAT66( macro, data) macro( 66, data) -#define MREPEAT68( macro, data) MREPEAT67( macro, data) macro( 67, data) -#define MREPEAT69( macro, data) MREPEAT68( macro, data) macro( 68, data) -#define MREPEAT70( macro, data) MREPEAT69( macro, data) macro( 69, data) -#define MREPEAT71( macro, data) MREPEAT70( macro, data) macro( 70, data) -#define MREPEAT72( macro, data) MREPEAT71( macro, data) macro( 71, data) -#define MREPEAT73( macro, data) MREPEAT72( macro, data) macro( 72, data) -#define MREPEAT74( macro, data) MREPEAT73( macro, data) macro( 73, data) -#define MREPEAT75( macro, data) MREPEAT74( macro, data) macro( 74, data) -#define MREPEAT76( macro, data) MREPEAT75( macro, data) macro( 75, data) -#define MREPEAT77( macro, data) MREPEAT76( macro, data) macro( 76, data) -#define MREPEAT78( macro, data) MREPEAT77( macro, data) macro( 77, data) -#define MREPEAT79( macro, data) MREPEAT78( macro, data) macro( 78, data) -#define MREPEAT80( macro, data) MREPEAT79( macro, data) macro( 79, data) -#define MREPEAT81( macro, data) MREPEAT80( macro, data) macro( 80, data) -#define MREPEAT82( macro, data) MREPEAT81( macro, data) macro( 81, data) -#define MREPEAT83( macro, data) MREPEAT82( macro, data) macro( 82, data) -#define MREPEAT84( macro, data) MREPEAT83( macro, data) macro( 83, data) -#define MREPEAT85( macro, data) MREPEAT84( macro, data) macro( 84, data) -#define MREPEAT86( macro, data) MREPEAT85( macro, data) macro( 85, data) -#define MREPEAT87( macro, data) MREPEAT86( macro, data) macro( 86, data) -#define MREPEAT88( macro, data) MREPEAT87( macro, data) macro( 87, data) -#define MREPEAT89( macro, data) MREPEAT88( macro, data) macro( 88, data) -#define MREPEAT90( macro, data) MREPEAT89( macro, data) macro( 89, data) -#define MREPEAT91( macro, data) MREPEAT90( macro, data) macro( 90, data) -#define MREPEAT92( macro, data) MREPEAT91( macro, data) macro( 91, data) -#define MREPEAT93( macro, data) MREPEAT92( macro, data) macro( 92, data) -#define MREPEAT94( macro, data) MREPEAT93( macro, data) macro( 93, data) -#define MREPEAT95( macro, data) MREPEAT94( macro, data) macro( 94, data) -#define MREPEAT96( macro, data) MREPEAT95( macro, data) macro( 95, data) -#define MREPEAT97( macro, data) MREPEAT96( macro, data) macro( 96, data) -#define MREPEAT98( macro, data) MREPEAT97( macro, data) macro( 97, data) -#define MREPEAT99( macro, data) MREPEAT98( macro, data) macro( 98, data) -#define MREPEAT100(macro, data) MREPEAT99( macro, data) macro( 99, data) -#define MREPEAT101(macro, data) MREPEAT100(macro, data) macro(100, data) -#define MREPEAT102(macro, data) MREPEAT101(macro, data) macro(101, data) -#define MREPEAT103(macro, data) MREPEAT102(macro, data) macro(102, data) -#define MREPEAT104(macro, data) MREPEAT103(macro, data) macro(103, data) -#define MREPEAT105(macro, data) MREPEAT104(macro, data) macro(104, data) -#define MREPEAT106(macro, data) MREPEAT105(macro, data) macro(105, data) -#define MREPEAT107(macro, data) MREPEAT106(macro, data) macro(106, data) -#define MREPEAT108(macro, data) MREPEAT107(macro, data) macro(107, data) -#define MREPEAT109(macro, data) MREPEAT108(macro, data) macro(108, data) -#define MREPEAT110(macro, data) MREPEAT109(macro, data) macro(109, data) -#define MREPEAT111(macro, data) MREPEAT110(macro, data) macro(110, data) -#define MREPEAT112(macro, data) MREPEAT111(macro, data) macro(111, data) -#define MREPEAT113(macro, data) MREPEAT112(macro, data) macro(112, data) -#define MREPEAT114(macro, data) MREPEAT113(macro, data) macro(113, data) -#define MREPEAT115(macro, data) MREPEAT114(macro, data) macro(114, data) -#define MREPEAT116(macro, data) MREPEAT115(macro, data) macro(115, data) -#define MREPEAT117(macro, data) MREPEAT116(macro, data) macro(116, data) -#define MREPEAT118(macro, data) MREPEAT117(macro, data) macro(117, data) -#define MREPEAT119(macro, data) MREPEAT118(macro, data) macro(118, data) -#define MREPEAT120(macro, data) MREPEAT119(macro, data) macro(119, data) -#define MREPEAT121(macro, data) MREPEAT120(macro, data) macro(120, data) -#define MREPEAT122(macro, data) MREPEAT121(macro, data) macro(121, data) -#define MREPEAT123(macro, data) MREPEAT122(macro, data) macro(122, data) -#define MREPEAT124(macro, data) MREPEAT123(macro, data) macro(123, data) -#define MREPEAT125(macro, data) MREPEAT124(macro, data) macro(124, data) -#define MREPEAT126(macro, data) MREPEAT125(macro, data) macro(125, data) -#define MREPEAT127(macro, data) MREPEAT126(macro, data) macro(126, data) -#define MREPEAT128(macro, data) MREPEAT127(macro, data) macro(127, data) -#define MREPEAT129(macro, data) MREPEAT128(macro, data) macro(128, data) -#define MREPEAT130(macro, data) MREPEAT129(macro, data) macro(129, data) -#define MREPEAT131(macro, data) MREPEAT130(macro, data) macro(130, data) -#define MREPEAT132(macro, data) MREPEAT131(macro, data) macro(131, data) -#define MREPEAT133(macro, data) MREPEAT132(macro, data) macro(132, data) -#define MREPEAT134(macro, data) MREPEAT133(macro, data) macro(133, data) -#define MREPEAT135(macro, data) MREPEAT134(macro, data) macro(134, data) -#define MREPEAT136(macro, data) MREPEAT135(macro, data) macro(135, data) -#define MREPEAT137(macro, data) MREPEAT136(macro, data) macro(136, data) -#define MREPEAT138(macro, data) MREPEAT137(macro, data) macro(137, data) -#define MREPEAT139(macro, data) MREPEAT138(macro, data) macro(138, data) -#define MREPEAT140(macro, data) MREPEAT139(macro, data) macro(139, data) -#define MREPEAT141(macro, data) MREPEAT140(macro, data) macro(140, data) -#define MREPEAT142(macro, data) MREPEAT141(macro, data) macro(141, data) -#define MREPEAT143(macro, data) MREPEAT142(macro, data) macro(142, data) -#define MREPEAT144(macro, data) MREPEAT143(macro, data) macro(143, data) -#define MREPEAT145(macro, data) MREPEAT144(macro, data) macro(144, data) -#define MREPEAT146(macro, data) MREPEAT145(macro, data) macro(145, data) -#define MREPEAT147(macro, data) MREPEAT146(macro, data) macro(146, data) -#define MREPEAT148(macro, data) MREPEAT147(macro, data) macro(147, data) -#define MREPEAT149(macro, data) MREPEAT148(macro, data) macro(148, data) -#define MREPEAT150(macro, data) MREPEAT149(macro, data) macro(149, data) -#define MREPEAT151(macro, data) MREPEAT150(macro, data) macro(150, data) -#define MREPEAT152(macro, data) MREPEAT151(macro, data) macro(151, data) -#define MREPEAT153(macro, data) MREPEAT152(macro, data) macro(152, data) -#define MREPEAT154(macro, data) MREPEAT153(macro, data) macro(153, data) -#define MREPEAT155(macro, data) MREPEAT154(macro, data) macro(154, data) -#define MREPEAT156(macro, data) MREPEAT155(macro, data) macro(155, data) -#define MREPEAT157(macro, data) MREPEAT156(macro, data) macro(156, data) -#define MREPEAT158(macro, data) MREPEAT157(macro, data) macro(157, data) -#define MREPEAT159(macro, data) MREPEAT158(macro, data) macro(158, data) -#define MREPEAT160(macro, data) MREPEAT159(macro, data) macro(159, data) -#define MREPEAT161(macro, data) MREPEAT160(macro, data) macro(160, data) -#define MREPEAT162(macro, data) MREPEAT161(macro, data) macro(161, data) -#define MREPEAT163(macro, data) MREPEAT162(macro, data) macro(162, data) -#define MREPEAT164(macro, data) MREPEAT163(macro, data) macro(163, data) -#define MREPEAT165(macro, data) MREPEAT164(macro, data) macro(164, data) -#define MREPEAT166(macro, data) MREPEAT165(macro, data) macro(165, data) -#define MREPEAT167(macro, data) MREPEAT166(macro, data) macro(166, data) -#define MREPEAT168(macro, data) MREPEAT167(macro, data) macro(167, data) -#define MREPEAT169(macro, data) MREPEAT168(macro, data) macro(168, data) -#define MREPEAT170(macro, data) MREPEAT169(macro, data) macro(169, data) -#define MREPEAT171(macro, data) MREPEAT170(macro, data) macro(170, data) -#define MREPEAT172(macro, data) MREPEAT171(macro, data) macro(171, data) -#define MREPEAT173(macro, data) MREPEAT172(macro, data) macro(172, data) -#define MREPEAT174(macro, data) MREPEAT173(macro, data) macro(173, data) -#define MREPEAT175(macro, data) MREPEAT174(macro, data) macro(174, data) -#define MREPEAT176(macro, data) MREPEAT175(macro, data) macro(175, data) -#define MREPEAT177(macro, data) MREPEAT176(macro, data) macro(176, data) -#define MREPEAT178(macro, data) MREPEAT177(macro, data) macro(177, data) -#define MREPEAT179(macro, data) MREPEAT178(macro, data) macro(178, data) -#define MREPEAT180(macro, data) MREPEAT179(macro, data) macro(179, data) -#define MREPEAT181(macro, data) MREPEAT180(macro, data) macro(180, data) -#define MREPEAT182(macro, data) MREPEAT181(macro, data) macro(181, data) -#define MREPEAT183(macro, data) MREPEAT182(macro, data) macro(182, data) -#define MREPEAT184(macro, data) MREPEAT183(macro, data) macro(183, data) -#define MREPEAT185(macro, data) MREPEAT184(macro, data) macro(184, data) -#define MREPEAT186(macro, data) MREPEAT185(macro, data) macro(185, data) -#define MREPEAT187(macro, data) MREPEAT186(macro, data) macro(186, data) -#define MREPEAT188(macro, data) MREPEAT187(macro, data) macro(187, data) -#define MREPEAT189(macro, data) MREPEAT188(macro, data) macro(188, data) -#define MREPEAT190(macro, data) MREPEAT189(macro, data) macro(189, data) -#define MREPEAT191(macro, data) MREPEAT190(macro, data) macro(190, data) -#define MREPEAT192(macro, data) MREPEAT191(macro, data) macro(191, data) -#define MREPEAT193(macro, data) MREPEAT192(macro, data) macro(192, data) -#define MREPEAT194(macro, data) MREPEAT193(macro, data) macro(193, data) -#define MREPEAT195(macro, data) MREPEAT194(macro, data) macro(194, data) -#define MREPEAT196(macro, data) MREPEAT195(macro, data) macro(195, data) -#define MREPEAT197(macro, data) MREPEAT196(macro, data) macro(196, data) -#define MREPEAT198(macro, data) MREPEAT197(macro, data) macro(197, data) -#define MREPEAT199(macro, data) MREPEAT198(macro, data) macro(198, data) -#define MREPEAT200(macro, data) MREPEAT199(macro, data) macro(199, data) -#define MREPEAT201(macro, data) MREPEAT200(macro, data) macro(200, data) -#define MREPEAT202(macro, data) MREPEAT201(macro, data) macro(201, data) -#define MREPEAT203(macro, data) MREPEAT202(macro, data) macro(202, data) -#define MREPEAT204(macro, data) MREPEAT203(macro, data) macro(203, data) -#define MREPEAT205(macro, data) MREPEAT204(macro, data) macro(204, data) -#define MREPEAT206(macro, data) MREPEAT205(macro, data) macro(205, data) -#define MREPEAT207(macro, data) MREPEAT206(macro, data) macro(206, data) -#define MREPEAT208(macro, data) MREPEAT207(macro, data) macro(207, data) -#define MREPEAT209(macro, data) MREPEAT208(macro, data) macro(208, data) -#define MREPEAT210(macro, data) MREPEAT209(macro, data) macro(209, data) -#define MREPEAT211(macro, data) MREPEAT210(macro, data) macro(210, data) -#define MREPEAT212(macro, data) MREPEAT211(macro, data) macro(211, data) -#define MREPEAT213(macro, data) MREPEAT212(macro, data) macro(212, data) -#define MREPEAT214(macro, data) MREPEAT213(macro, data) macro(213, data) -#define MREPEAT215(macro, data) MREPEAT214(macro, data) macro(214, data) -#define MREPEAT216(macro, data) MREPEAT215(macro, data) macro(215, data) -#define MREPEAT217(macro, data) MREPEAT216(macro, data) macro(216, data) -#define MREPEAT218(macro, data) MREPEAT217(macro, data) macro(217, data) -#define MREPEAT219(macro, data) MREPEAT218(macro, data) macro(218, data) -#define MREPEAT220(macro, data) MREPEAT219(macro, data) macro(219, data) -#define MREPEAT221(macro, data) MREPEAT220(macro, data) macro(220, data) -#define MREPEAT222(macro, data) MREPEAT221(macro, data) macro(221, data) -#define MREPEAT223(macro, data) MREPEAT222(macro, data) macro(222, data) -#define MREPEAT224(macro, data) MREPEAT223(macro, data) macro(223, data) -#define MREPEAT225(macro, data) MREPEAT224(macro, data) macro(224, data) -#define MREPEAT226(macro, data) MREPEAT225(macro, data) macro(225, data) -#define MREPEAT227(macro, data) MREPEAT226(macro, data) macro(226, data) -#define MREPEAT228(macro, data) MREPEAT227(macro, data) macro(227, data) -#define MREPEAT229(macro, data) MREPEAT228(macro, data) macro(228, data) -#define MREPEAT230(macro, data) MREPEAT229(macro, data) macro(229, data) -#define MREPEAT231(macro, data) MREPEAT230(macro, data) macro(230, data) -#define MREPEAT232(macro, data) MREPEAT231(macro, data) macro(231, data) -#define MREPEAT233(macro, data) MREPEAT232(macro, data) macro(232, data) -#define MREPEAT234(macro, data) MREPEAT233(macro, data) macro(233, data) -#define MREPEAT235(macro, data) MREPEAT234(macro, data) macro(234, data) -#define MREPEAT236(macro, data) MREPEAT235(macro, data) macro(235, data) -#define MREPEAT237(macro, data) MREPEAT236(macro, data) macro(236, data) -#define MREPEAT238(macro, data) MREPEAT237(macro, data) macro(237, data) -#define MREPEAT239(macro, data) MREPEAT238(macro, data) macro(238, data) -#define MREPEAT240(macro, data) MREPEAT239(macro, data) macro(239, data) -#define MREPEAT241(macro, data) MREPEAT240(macro, data) macro(240, data) -#define MREPEAT242(macro, data) MREPEAT241(macro, data) macro(241, data) -#define MREPEAT243(macro, data) MREPEAT242(macro, data) macro(242, data) -#define MREPEAT244(macro, data) MREPEAT243(macro, data) macro(243, data) -#define MREPEAT245(macro, data) MREPEAT244(macro, data) macro(244, data) -#define MREPEAT246(macro, data) MREPEAT245(macro, data) macro(245, data) -#define MREPEAT247(macro, data) MREPEAT246(macro, data) macro(246, data) -#define MREPEAT248(macro, data) MREPEAT247(macro, data) macro(247, data) -#define MREPEAT249(macro, data) MREPEAT248(macro, data) macro(248, data) -#define MREPEAT250(macro, data) MREPEAT249(macro, data) macro(249, data) -#define MREPEAT251(macro, data) MREPEAT250(macro, data) macro(250, data) -#define MREPEAT252(macro, data) MREPEAT251(macro, data) macro(251, data) -#define MREPEAT253(macro, data) MREPEAT252(macro, data) macro(252, data) -#define MREPEAT254(macro, data) MREPEAT253(macro, data) macro(253, data) -#define MREPEAT255(macro, data) MREPEAT254(macro, data) macro(254, data) -#define MREPEAT256(macro, data) MREPEAT255(macro, data) macro(255, data) - -/** - * \} - */ - -#endif // _MREPEAT_H_ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/preprocessor.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/preprocessor.h deleted file mode 100644 index fd544e3e6..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/preprocessor.h +++ /dev/null @@ -1,52 +0,0 @@ -/** - * \file - * - * \brief Preprocessor utils. - * - * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _PREPROCESSOR_H_ -#define _PREPROCESSOR_H_ - -#include "tpaste.h" -#include "stringz.h" -#include "mrepeat.h" - - -#endif // _PREPROCESSOR_H_ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/stringz.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/stringz.h deleted file mode 100644 index 063b94447..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/stringz.h +++ /dev/null @@ -1,82 +0,0 @@ -/** - * \file - * - * \brief Preprocessor stringizing utils. - * - * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _STRINGZ_H_ -#define _STRINGZ_H_ - -/** - * \defgroup group_sam_utils_stringz Preprocessor - Stringize - * - * \ingroup group_sam_utils - * - * \{ - */ - -/*! \brief Stringize. - * - * Stringize a preprocessing token, this token being allowed to be \#defined. - * - * May be used only within macros with the token passed as an argument if the token is \#defined. - * - * For example, writing STRINGZ(PIN) within a macro \#defined by PIN_NAME(PIN) - * and invoked as PIN_NAME(PIN0) with PIN0 \#defined as A0 is equivalent to - * writing "A0". - */ -#define STRINGZ(x) #x - -/*! \brief Absolute stringize. - * - * Stringize a preprocessing token, this token being allowed to be \#defined. - * - * No restriction of use if the token is \#defined. - * - * For example, writing ASTRINGZ(PIN0) anywhere with PIN0 \#defined as A0 is - * equivalent to writing "A0". - */ -#define ASTRINGZ(x) STRINGZ(x) - -/** - * \} - */ - -#endif // _STRINGZ_H_ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/tpaste.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/tpaste.h deleted file mode 100644 index 8894ba659..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/preprocessor/tpaste.h +++ /dev/null @@ -1,102 +0,0 @@ -/** - * \file - * - * \brief Preprocessor token pasting utils. - * - * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef _TPASTE_H_ -#define _TPASTE_H_ - -/** - * \defgroup group_sam_utils_tpaste Preprocessor - Token Paste - * - * \ingroup group_sam_utils - * - * \{ - */ - -/*! \name Token Paste - * - * Paste N preprocessing tokens together, these tokens being allowed to be \#defined. - * - * May be used only within macros with the tokens passed as arguments if the tokens are \#defined. - * - * For example, writing TPASTE2(U, WIDTH) within a macro \#defined by - * UTYPE(WIDTH) and invoked as UTYPE(UL_WIDTH) with UL_WIDTH \#defined as 32 is - * equivalent to writing U32. - */ -//! @{ -#define TPASTE2( a, b) a##b -#define TPASTE3( a, b, c) a##b##c -#define TPASTE4( a, b, c, d) a##b##c##d -#define TPASTE5( a, b, c, d, e) a##b##c##d##e -#define TPASTE6( a, b, c, d, e, f) a##b##c##d##e##f -#define TPASTE7( a, b, c, d, e, f, g) a##b##c##d##e##f##g -#define TPASTE8( a, b, c, d, e, f, g, h) a##b##c##d##e##f##g##h -#define TPASTE9( a, b, c, d, e, f, g, h, i) a##b##c##d##e##f##g##h##i -#define TPASTE10(a, b, c, d, e, f, g, h, i, j) a##b##c##d##e##f##g##h##i##j -//! @} - -/*! \name Absolute Token Paste - * - * Paste N preprocessing tokens together, these tokens being allowed to be \#defined. - * - * No restriction of use if the tokens are \#defined. - * - * For example, writing ATPASTE2(U, UL_WIDTH) anywhere with UL_WIDTH \#defined - * as 32 is equivalent to writing U32. - */ -//! @{ -#define ATPASTE2( a, b) TPASTE2( a, b) -#define ATPASTE3( a, b, c) TPASTE3( a, b, c) -#define ATPASTE4( a, b, c, d) TPASTE4( a, b, c, d) -#define ATPASTE5( a, b, c, d, e) TPASTE5( a, b, c, d, e) -#define ATPASTE6( a, b, c, d, e, f) TPASTE6( a, b, c, d, e, f) -#define ATPASTE7( a, b, c, d, e, f, g) TPASTE7( a, b, c, d, e, f, g) -#define ATPASTE8( a, b, c, d, e, f, g, h) TPASTE8( a, b, c, d, e, f, g, h) -#define ATPASTE9( a, b, c, d, e, f, g, h, i) TPASTE9( a, b, c, d, e, f, g, h, i) -#define ATPASTE10(a, b, c, d, e, f, g, h, i, j) TPASTE10(a, b, c, d, e, f, g, h, i, j) -//! @} - -/** - * \} - */ - -#endif // _TPASTE_H_ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/status_codes.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/status_codes.h deleted file mode 100644 index 3b99dfcad..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/status_codes.h +++ /dev/null @@ -1,110 +0,0 @@ -/** - * \file - * - * \brief Status code definitions. - * - * This file defines various status codes returned by functions, - * indicating success or failure as well as what kind of failure. - * - * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef STATUS_CODES_H_INCLUDED -#define STATUS_CODES_H_INCLUDED - -/* Note: this is a local workaround to avoid a pre-processor clash due to the - * lwIP macro ERR_TIMEOUT. */ -#if defined(__LWIP_ERR_H__) && defined(ERR_TIMEOUT) -#if (ERR_TIMEOUT != -3) - -/* Internal check to make sure that the later restore of lwIP's ERR_TIMEOUT - * macro is set to the correct value. Note that it is highly improbable that - * this value ever changes in lwIP. */ -#error ASF developers: check lwip err.h new value for ERR_TIMEOUT -#endif -#undef ERR_TIMEOUT -#endif - -/** - * Status code that may be returned by shell commands and protocol - * implementations. - * - * \note Any change to these status codes and the corresponding - * message strings is strictly forbidden. New codes can be added, - * however, but make sure that any message string tables are updated - * at the same time. - */ -enum status_code { - STATUS_OK = 0, //!< Success - STATUS_ERR_BUSY = 0x19, - STATUS_ERR_DENIED = 0x1C, - STATUS_ERR_TIMEOUT = 0x12, - ERR_IO_ERROR = -1, //!< I/O error - ERR_FLUSHED = -2, //!< Request flushed from queue - ERR_TIMEOUT = -3, //!< Operation timed out - ERR_BAD_DATA = -4, //!< Data integrity check failed - ERR_PROTOCOL = -5, //!< Protocol error - ERR_UNSUPPORTED_DEV = -6, //!< Unsupported device - ERR_NO_MEMORY = -7, //!< Insufficient memory - ERR_INVALID_ARG = -8, //!< Invalid argument - ERR_BAD_ADDRESS = -9, //!< Bad address - ERR_BUSY = -10, //!< Resource is busy - ERR_BAD_FORMAT = -11, //!< Data format not recognized - ERR_NO_TIMER = -12, //!< No timer available - ERR_TIMER_ALREADY_RUNNING = -13, //!< Timer already running - ERR_TIMER_NOT_RUNNING = -14, //!< Timer not running - - /** - * \brief Operation in progress - * - * This status code is for driver-internal use when an operation - * is currently being performed. - * - * \note Drivers should never return this status code to any - * callers. It is strictly for internal use. - */ - OPERATION_IN_PROGRESS = -128, -}; - -typedef enum status_code status_code_t; - -#if defined(__LWIP_ERR_H__) -#define ERR_TIMEOUT -3 -#endif - -#endif /* STATUS_CODES_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/syscalls/gcc/syscalls.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/syscalls/gcc/syscalls.c deleted file mode 100644 index b23b999a0..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/sam/utils/syscalls/gcc/syscalls.c +++ /dev/null @@ -1,147 +0,0 @@ -/** - * \file - * - * \brief Syscalls for SAM (GCC). - * - * Copyright (c) 2011-2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#include -#include -#include -#include - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -#undef errno -extern int errno; -extern int _end; - -extern caddr_t _sbrk(int incr); -extern int link(char *old, char *new); -extern int _close(int file); -extern int _fstat(int file, struct stat *st); -extern int _isatty(int file); -extern int _lseek(int file, int ptr, int dir); -extern void _exit(int status); -extern void _kill(int pid, int sig); -extern int _getpid(void); - -extern caddr_t _sbrk(int incr) -{ - static unsigned char *heap = NULL; - unsigned char *prev_heap; - - if (heap == NULL) { - heap = (unsigned char *)&_end; - } - prev_heap = heap; - - heap += incr; - - return (caddr_t) prev_heap; -} - -extern int link(char *old, char *new) -{ - ( void ) old; - ( void ) new; - return -1; -} - -extern int _close(int file) -{ - ( void ) file; - return -1; -} - -extern int _fstat(int file, struct stat *st) -{ - ( void ) file; - ( void ) st; - st->st_mode = S_IFCHR; - - return 0; -} - -extern int _isatty(int file) -{ - ( void ) file; - return 1; -} - -extern int _lseek(int file, int ptr, int dir) -{ - ( void ) file; - ( void ) ptr; - ( void ) dir; - return 0; -} - -extern void _exit(int status) -{ - printf("Exiting with status %d.\n", status); - - for (;;); -} - -extern void _kill(int pid, int sig) -{ - ( void ) pid; - ( void ) sig; - return; -} - -extern int _getpid(void) -{ - return -1; -} - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/arm_math.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/arm_math.h deleted file mode 100644 index b01681c63..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/arm_math.h +++ /dev/null @@ -1,7057 +0,0 @@ -/* ---------------------------------------------------------------------- - * Copyright (C) 2010-2011 ARM Limited. All rights reserved. - * - * $Date: 15. July 2011 - * $Revision: V1.0.10 - * - * Project: CMSIS DSP Library - * Title: arm_math.h - * - * Description: Public header file for CMSIS DSP Library - * - * Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 - * - * Version 1.0.10 2011/7/15 - * Big Endian support added and Merged M0 and M3/M4 Source code. - * - * Version 1.0.3 2010/11/29 - * Re-organized the CMSIS folders and updated documentation. - * - * Version 1.0.2 2010/11/11 - * Documentation updated. - * - * Version 1.0.1 2010/10/05 - * Production release and review comments incorporated. - * - * Version 1.0.0 2010/09/20 - * Production release and review comments incorporated. - * -------------------------------------------------------------------- */ - -/** - \mainpage CMSIS DSP Software Library - * - * Introduction - * - * This user manual describes the CMSIS DSP software library, - * a suite of common signal processing functions for use on Cortex-M processor based devices. - * - * The library is divided into a number of modules 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. - * - * Processor Support - * - * The library is completely written in C and is fully CMSIS compliant. - * High performance is achieved through maximum use of Cortex-M4 intrinsics. - * - * The supplied library source code also builds and runs on the Cortex-M3 and Cortex-M0 processor, - * with the DSP intrinsics being emulated through software. - * - * - * Toolchain Support - * - * The library has been developed and tested with MDK-ARM version 4.21. - * The library is being tested in GCC and IAR toolchains and updates on this activity will be made available shortly. - * - * Using the Library - * - * The library installer contains prebuilt versions of the libraries in the Lib folder. - * - arm_cortexM4lf_math.lib (Little endian and Floating Point Unit on Cortex-M4) - * - arm_cortexM4bf_math.lib (Big endian and Floating Point Unit on Cortex-M4) - * - arm_cortexM4l_math.lib (Little endian on Cortex-M4) - * - arm_cortexM4b_math.lib (Big endian on Cortex-M4) - * - arm_cortexM3l_math.lib (Little endian on Cortex-M3) - * - arm_cortexM3b_math.lib (Big endian on Cortex-M3) - * - arm_cortexM0l_math.lib (Little endian on Cortex-M0) - * - arm_cortexM0b_math.lib (Big endian on Cortex-M3) - * - * The library functions are declared in the public file arm_math.h which is placed in the Include folder. - * Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single - * public header file arm_math.h for Cortex-M4/M3/M0 with little endian and big endian. Same header file will be used for floating point unit(FPU) variants. - * Define the appropriate pre processor MACRO ARM_MATH_CM4 or ARM_MATH_CM3 or - * ARM_MATH_CM0 depending on the target processor in the application. - * - * Examples - * - * The library ships with a number of examples which demonstrate how to use the library functions. - * - * Building the Library - * - * The library installer contains project files to re build libraries on MDK Tool chain in the CMSIS\\DSP_Lib\\Source\\ARM folder. - * - arm_cortexM0b_math.uvproj - * - arm_cortexM0l_math.uvproj - * - arm_cortexM3b_math.uvproj - * - arm_cortexM3l_math.uvproj - * - arm_cortexM4b_math.uvproj - * - arm_cortexM4l_math.uvproj - * - arm_cortexM4bf_math.uvproj - * - arm_cortexM4lf_math.uvproj - * - * Each library project have differant pre-processor macros. - * - * 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_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 for checking on the input and output sizes of matrices - * - * ARM_MATH_ROUNDING: - * Define macro for rounding on support functions - * - * __FPU_PRESENT: - * Initialize macro __FPU_PRESENT = 1 when building on FPU supported Targets. Enable this macro for M4bf and M4lf libraries - * - * - * The project can be built by opening the appropriate project in MDK-ARM 4.21 chain and defining the optional pre processor MACROs detailed above. - * - * Copyright Notice - * - * Copyright (C) 2010 ARM Limited. All rights reserved. - */ - - -/** - * @defgroup groupMath Basic Math Functions - */ - -/** - * @defgroup groupFastMath Fast Math Functions - * This set of functions provides a fast approximation to sine, cosine, and square root. - * As compared to most of the other functions in the CMSIS math library, the fast math functions - * operate on individual values and not arrays. - * There are separate functions for Q15, Q31, and floating-point data. - * - */ - -/** - * @defgroup groupCmplxMath Complex Math Functions - * This set of functions operates on complex data vectors. - * The data in the complex arrays is stored in an interleaved fashion - * (real, imag, real, imag, ...). - * In the API functions, the number of samples in a complex array refers - * to the number of complex values; the array contains twice this number of - * real values. - */ - -/** - * @defgroup groupFilters Filtering Functions - */ - -/** - * @defgroup groupMatrix Matrix Functions - * - * This set of functions provides basic matrix math operations. - * The functions operate on matrix data structures. For example, - * the type - * definition for the floating-point matrix structure is shown - * below: - *
- *     typedef struct
- *     {
- *       uint16_t numRows;     // number of rows of the matrix.
- *       uint16_t numCols;     // number of columns of the matrix.
- *       float32_t *pData;     // points to the data of the matrix.
- *     } arm_matrix_instance_f32;
- * 
- * There are similar definitions for Q15 and Q31 data types. - * - * The structure specifies the size of the matrix and then points to - * an array of data. The array is of size numRows X numCols - * and the values are arranged in row order. That is, the - * matrix element (i, j) is stored at: - *
- *     pData[i*numCols + j]
- * 
- * - * \par Init Functions - * There is an associated initialization function for each type of matrix - * data structure. - * The initialization function sets the values of the internal structure fields. - * Refer to the function arm_mat_init_f32(), arm_mat_init_q31() - * and arm_mat_init_q15() for floating-point, Q31 and Q15 types, respectively. - * - * \par - * Use of the initialization function is optional. However, if initialization function is used - * then the instance structure cannot be placed into a const data section. - * To place the instance structure in a const data - * section, manually initialize the data structure. For example: - *
- * arm_matrix_instance_f32 S = {nRows, nColumns, pData};
- * arm_matrix_instance_q31 S = {nRows, nColumns, pData};
- * arm_matrix_instance_q15 S = {nRows, nColumns, pData};
- * 
- * where nRows specifies the number of rows, nColumns - * specifies the number of columns, and pData points to the - * data array. - * - * \par Size Checking - * By default all of the matrix functions perform size checking on the input and - * output matrices. For example, the matrix addition function verifies that the - * two input matrices and the output matrix all have the same number of rows and - * columns. If the size check fails the functions return: - *
- *     ARM_MATH_SIZE_MISMATCH
- * 
- * Otherwise the functions return - *
- *     ARM_MATH_SUCCESS
- * 
- * There is some overhead associated with this matrix size checking. - * The matrix size checking is enabled via the \#define - *
- *     ARM_MATH_MATRIX_CHECK
- * 
- * within the library project settings. By default this macro is defined - * and size checking is enabled. By changing the project settings and - * undefining this macro size checking is eliminated and the functions - * run a bit faster. With size checking disabled the functions always - * return ARM_MATH_SUCCESS. - */ - -/** - * @defgroup groupTransforms Transform Functions - */ - -/** - * @defgroup groupController Controller Functions - */ - -/** - * @defgroup groupStats Statistics Functions - */ -/** - * @defgroup groupSupport Support Functions - */ - -/** - * @defgroup groupInterpolation Interpolation Functions - * These functions perform 1- and 2-dimensional interpolation of data. - * Linear interpolation is used for 1-dimensional data and - * bilinear interpolation is used for 2-dimensional data. - */ - -/** - * @defgroup groupExamples Examples - */ -#ifndef _ARM_MATH_H -#define _ARM_MATH_H - -#define __CMSIS_GENERIC /* disable NVIC and Systick functions */ - -#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" -#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 -#define PI 3.14159265358979f - - /** - * @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 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. - */ -#define __SIMD32(addr) (*(int32_t **) & (addr)) - -#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0) - /** - * @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) ) - -#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) && defined ( __CC_ARM ) -#define __CLZ __clz -#endif - -#if defined (ARM_MATH_CM0) && defined ( __TASKING__ ) -/* No need to redefine __CLZ */ -#endif - -#if defined (ARM_MATH_CM0) && ((defined (__ICCARM__)) ||(defined (__GNUC__)) ) - - __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) - - __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 */ - - - - /* - * @brief C custom defined intrinsic function for M3 and M0 processors - */ -#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0) - - /* - * @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 = (char) x; - s = (char) 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 = (char) x; - s = (char) 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))); - } - - - - -#endif /* (ARM_MATH_CM3) || defined (ARM_MATH_CM0) */ - - - /** - * @brief Instance structure for the Q7 FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of filter coefficients in the filter. */ - q7_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - } arm_fir_instance_q7; - - /** - * @brief Instance structure for the Q15 FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of filter coefficients in the filter. */ - q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - } arm_fir_instance_q15; - - /** - * @brief Instance structure for the Q31 FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of filter coefficients in the filter. */ - q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - } arm_fir_instance_q31; - - /** - * @brief Instance structure for the floating-point FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of filter coefficients in the filter. */ - float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - } arm_fir_instance_f32; - - - /** - * @brief Processing function for the Q7 FIR filter. - * @param[in] *S points to an instance of the Q7 FIR filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - void arm_fir_q7( - const arm_fir_instance_q7 * S, - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q7 FIR filter. - * @param[in,out] *S points to an instance of the Q7 FIR structure. - * @param[in] numTaps Number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of samples that are processed. - * @return none - */ - void arm_fir_init_q7( - arm_fir_instance_q7 * S, - uint16_t numTaps, - q7_t * pCoeffs, - q7_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q15 FIR filter. - * @param[in] *S points to an instance of the Q15 FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - void arm_fir_q15( - const arm_fir_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Processing function for the fast Q15 FIR filter for Cortex-M3 and Cortex-M4. - * @param[in] *S points to an instance of the Q15 FIR filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - void arm_fir_fast_q15( - const arm_fir_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q15 FIR filter. - * @param[in,out] *S points to an instance of the Q15 FIR filter structure. - * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of samples that are processed at a time. - * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_ARGUMENT_ERROR if - * numTaps is not a supported value. - */ - - arm_status arm_fir_init_q15( - arm_fir_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - uint32_t blockSize); - - /** - * @brief Processing function for the Q31 FIR filter. - * @param[in] *S points to an instance of the Q31 FIR filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - void arm_fir_q31( - const arm_fir_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Processing function for the fast Q31 FIR filter for Cortex-M3 and Cortex-M4. - * @param[in] *S points to an instance of the Q31 FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - void arm_fir_fast_q31( - const arm_fir_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q31 FIR filter. - * @param[in,out] *S points to an instance of the Q31 FIR structure. - * @param[in] numTaps Number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of samples that are processed at a time. - * @return none. - */ - void arm_fir_init_q31( - arm_fir_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - uint32_t blockSize); - - /** - * @brief Processing function for the floating-point FIR filter. - * @param[in] *S points to an instance of the floating-point FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - void arm_fir_f32( - const arm_fir_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the floating-point FIR filter. - * @param[in,out] *S points to an instance of the floating-point FIR filter structure. - * @param[in] numTaps Number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of samples that are processed at a time. - * @return none. - */ - void arm_fir_init_f32( - arm_fir_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - uint32_t blockSize); - - - /** - * @brief Instance structure for the Q15 Biquad cascade filter. - */ - typedef struct - { - int8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - q15_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ - q15_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ - int8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ - - } arm_biquad_casd_df1_inst_q15; - - - /** - * @brief Instance structure for the Q31 Biquad cascade filter. - */ - typedef struct - { - uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - q31_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ - q31_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ - uint8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ - - } arm_biquad_casd_df1_inst_q31; - - /** - * @brief Instance structure for the floating-point Biquad cascade filter. - */ - typedef struct - { - uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - float32_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ - float32_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ - - - } arm_biquad_casd_df1_inst_f32; - - - - /** - * @brief Processing function for the Q15 Biquad cascade filter. - * @param[in] *S points to an instance of the Q15 Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_biquad_cascade_df1_q15( - const arm_biquad_casd_df1_inst_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q15 Biquad cascade filter. - * @param[in,out] *S points to an instance of the Q15 Biquad cascade structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format - * @return none - */ - - void arm_biquad_cascade_df1_init_q15( - arm_biquad_casd_df1_inst_q15 * S, - uint8_t numStages, - q15_t * pCoeffs, - q15_t * pState, - int8_t postShift); - - - /** - * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4. - * @param[in] *S points to an instance of the Q15 Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_biquad_cascade_df1_fast_q15( - const arm_biquad_casd_df1_inst_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q31 Biquad cascade filter - * @param[in] *S points to an instance of the Q31 Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_biquad_cascade_df1_q31( - const arm_biquad_casd_df1_inst_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4. - * @param[in] *S points to an instance of the Q31 Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_biquad_cascade_df1_fast_q31( - const arm_biquad_casd_df1_inst_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q31 Biquad cascade filter. - * @param[in,out] *S points to an instance of the Q31 Biquad cascade structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format - * @return none - */ - - void arm_biquad_cascade_df1_init_q31( - arm_biquad_casd_df1_inst_q31 * S, - uint8_t numStages, - q31_t * pCoeffs, - q31_t * pState, - int8_t postShift); - - /** - * @brief Processing function for the floating-point Biquad cascade filter. - * @param[in] *S points to an instance of the floating-point Biquad cascade structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_biquad_cascade_df1_f32( - const arm_biquad_casd_df1_inst_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the floating-point Biquad cascade filter. - * @param[in,out] *S points to an instance of the floating-point Biquad cascade structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @return none - */ - - void arm_biquad_cascade_df1_init_f32( - arm_biquad_casd_df1_inst_f32 * S, - uint8_t numStages, - float32_t * pCoeffs, - float32_t * pState); - - - /** - * @brief Instance structure for the floating-point matrix structure. - */ - - typedef struct - { - uint16_t numRows; /**< number of rows of the matrix. */ - uint16_t numCols; /**< number of columns of the matrix. */ - float32_t *pData; /**< points to the data of the matrix. */ - } arm_matrix_instance_f32; - - /** - * @brief Instance structure for the Q15 matrix structure. - */ - - typedef struct - { - uint16_t numRows; /**< number of rows of the matrix. */ - uint16_t numCols; /**< number of columns of the matrix. */ - q15_t *pData; /**< points to the data of the matrix. */ - - } arm_matrix_instance_q15; - - /** - * @brief Instance structure for the Q31 matrix structure. - */ - - typedef struct - { - uint16_t numRows; /**< number of rows of the matrix. */ - uint16_t numCols; /**< number of columns of the matrix. */ - q31_t *pData; /**< points to the data of the matrix. */ - - } arm_matrix_instance_q31; - - - - /** - * @brief Floating-point matrix addition. - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_add_f32( - const arm_matrix_instance_f32 * pSrcA, - const arm_matrix_instance_f32 * pSrcB, - arm_matrix_instance_f32 * pDst); - - /** - * @brief Q15 matrix addition. - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_add_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst); - - /** - * @brief Q31 matrix addition. - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_add_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Floating-point matrix transpose. - * @param[in] *pSrc points to the input matrix - * @param[out] *pDst points to the output matrix - * @return The function returns either ARM_MATH_SIZE_MISMATCH - * or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_trans_f32( - const arm_matrix_instance_f32 * pSrc, - arm_matrix_instance_f32 * pDst); - - - /** - * @brief Q15 matrix transpose. - * @param[in] *pSrc points to the input matrix - * @param[out] *pDst points to the output matrix - * @return The function returns either ARM_MATH_SIZE_MISMATCH - * or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_trans_q15( - const arm_matrix_instance_q15 * pSrc, - arm_matrix_instance_q15 * pDst); - - /** - * @brief Q31 matrix transpose. - * @param[in] *pSrc points to the input matrix - * @param[out] *pDst points to the output matrix - * @return The function returns either ARM_MATH_SIZE_MISMATCH - * or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_trans_q31( - const arm_matrix_instance_q31 * pSrc, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Floating-point matrix multiplication - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_mult_f32( - const arm_matrix_instance_f32 * pSrcA, - const arm_matrix_instance_f32 * pSrcB, - arm_matrix_instance_f32 * pDst); - - /** - * @brief Q15 matrix multiplication - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_mult_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst, - q15_t * pState); - - /** - * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @param[in] *pState points to the array for storing intermediate results - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_mult_fast_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst, - q15_t * pState); - - /** - * @brief Q31 matrix multiplication - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_mult_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst); - - /** - * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_mult_fast_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Floating-point matrix subtraction - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_sub_f32( - const arm_matrix_instance_f32 * pSrcA, - const arm_matrix_instance_f32 * pSrcB, - arm_matrix_instance_f32 * pDst); - - /** - * @brief Q15 matrix subtraction - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_sub_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst); - - /** - * @brief Q31 matrix subtraction - * @param[in] *pSrcA points to the first input matrix structure - * @param[in] *pSrcB points to the second input matrix structure - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_sub_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst); - - /** - * @brief Floating-point matrix scaling. - * @param[in] *pSrc points to the input matrix - * @param[in] scale scale factor - * @param[out] *pDst points to the output matrix - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_scale_f32( - const arm_matrix_instance_f32 * pSrc, - float32_t scale, - arm_matrix_instance_f32 * pDst); - - /** - * @brief Q15 matrix scaling. - * @param[in] *pSrc points to input matrix - * @param[in] scaleFract fractional portion of the scale factor - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to output matrix - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_scale_q15( - const arm_matrix_instance_q15 * pSrc, - q15_t scaleFract, - int32_t shift, - arm_matrix_instance_q15 * pDst); - - /** - * @brief Q31 matrix scaling. - * @param[in] *pSrc points to input matrix - * @param[in] scaleFract fractional portion of the scale factor - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - - arm_status arm_mat_scale_q31( - const arm_matrix_instance_q31 * pSrc, - q31_t scaleFract, - int32_t shift, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Q31 matrix initialization. - * @param[in,out] *S points to an instance of the floating-point matrix structure. - * @param[in] nRows number of rows in the matrix. - * @param[in] nColumns number of columns in the matrix. - * @param[in] *pData points to the matrix data array. - * @return none - */ - - void arm_mat_init_q31( - arm_matrix_instance_q31 * S, - uint16_t nRows, - uint16_t nColumns, - q31_t *pData); - - /** - * @brief Q15 matrix initialization. - * @param[in,out] *S points to an instance of the floating-point matrix structure. - * @param[in] nRows number of rows in the matrix. - * @param[in] nColumns number of columns in the matrix. - * @param[in] *pData points to the matrix data array. - * @return none - */ - - void arm_mat_init_q15( - arm_matrix_instance_q15 * S, - uint16_t nRows, - uint16_t nColumns, - q15_t *pData); - - /** - * @brief Floating-point matrix initialization. - * @param[in,out] *S points to an instance of the floating-point matrix structure. - * @param[in] nRows number of rows in the matrix. - * @param[in] nColumns number of columns in the matrix. - * @param[in] *pData points to the matrix data array. - * @return none - */ - - void arm_mat_init_f32( - arm_matrix_instance_f32 * S, - uint16_t nRows, - uint16_t nColumns, - float32_t *pData); - - - - /** - * @brief Instance structure for the Q15 PID Control. - */ - typedef struct - { - q15_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ - #ifdef ARM_MATH_CM0 - 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 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; - - /** - * @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; - - /** - * @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; - - /** - * @brief Processing function for the Q15 CFFT/CIFFT. - * @param[in] *S points to an instance of the Q15 CFFT/CIFFT structure. - * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place. - * @return none. - */ - - void arm_cfft_radix4_q15( - const arm_cfft_radix4_instance_q15 * S, - q15_t * pSrc); - - /** - * @brief Initialization function for the Q15 CFFT/CIFFT. - * @param[in,out] *S points to an instance of the Q15 CFFT/CIFFT structure. - * @param[in] fftLen length of the FFT. - * @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. - * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. - * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. - */ - - arm_status arm_cfft_radix4_init_q15( - arm_cfft_radix4_instance_q15 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - - /** - * @brief Processing function for the Q31 CFFT/CIFFT. - * @param[in] *S points to an instance of the Q31 CFFT/CIFFT structure. - * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place. - * @return none. - */ - - void arm_cfft_radix4_q31( - const arm_cfft_radix4_instance_q31 * S, - q31_t * pSrc); - - /** - * @brief Initialization function for the Q31 CFFT/CIFFT. - * @param[in,out] *S points to an instance of the Q31 CFFT/CIFFT structure. - * @param[in] fftLen length of the FFT. - * @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. - * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. - * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. - */ - - arm_status arm_cfft_radix4_init_q31( - arm_cfft_radix4_instance_q31 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - - /** - * @brief Processing function for the floating-point CFFT/CIFFT. - * @param[in] *S points to an instance of the floating-point CFFT/CIFFT structure. - * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place. - * @return none. - */ - - void arm_cfft_radix4_f32( - const arm_cfft_radix4_instance_f32 * S, - float32_t * pSrc); - - /** - * @brief Initialization function for the floating-point CFFT/CIFFT. - * @param[in,out] *S points to an instance of the floating-point CFFT/CIFFT structure. - * @param[in] fftLen length of the FFT. - * @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. - * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. - */ - - arm_status arm_cfft_radix4_init_f32( - arm_cfft_radix4_instance_f32 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - - - - /*---------------------------------------------------------------------- - * Internal functions prototypes FFT function - ----------------------------------------------------------------------*/ - - /** - * @brief Core function for the floating-point CFFT butterfly process. - * @param[in, out] *pSrc points to the in-place buffer of floating-point data type. - * @param[in] fftLen length of the FFT. - * @param[in] *pCoef points to the twiddle coefficient buffer. - * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. - * @return none. - */ - - void arm_radix4_butterfly_f32( - float32_t * pSrc, - uint16_t fftLen, - float32_t * pCoef, - uint16_t twidCoefModifier); - - /** - * @brief Core function for the floating-point CIFFT butterfly process. - * @param[in, out] *pSrc points to the in-place buffer of floating-point data type. - * @param[in] fftLen length of the FFT. - * @param[in] *pCoef points to twiddle coefficient buffer. - * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. - * @param[in] onebyfftLen value of 1/fftLen. - * @return none. - */ - - void arm_radix4_butterfly_inverse_f32( - float32_t * pSrc, - uint16_t fftLen, - float32_t * pCoef, - uint16_t twidCoefModifier, - float32_t onebyfftLen); - - /** - * @brief In-place bit reversal function. - * @param[in, out] *pSrc points to the in-place buffer of floating-point data type. - * @param[in] fftSize length of the FFT. - * @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table. - * @param[in] *pBitRevTab points to the bit reversal table. - * @return none. - */ - - void arm_bitreversal_f32( - float32_t *pSrc, - uint16_t fftSize, - uint16_t bitRevFactor, - uint16_t *pBitRevTab); - - /** - * @brief Core function for the Q31 CFFT butterfly process. - * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. - * @param[in] fftLen length of the FFT. - * @param[in] *pCoef points to twiddle coefficient buffer. - * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. - * @return none. - */ - - void arm_radix4_butterfly_q31( - q31_t *pSrc, - uint32_t fftLen, - q31_t *pCoef, - uint32_t twidCoefModifier); - - /** - * @brief Core function for the Q31 CIFFT butterfly process. - * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. - * @param[in] fftLen length of the FFT. - * @param[in] *pCoef points to twiddle coefficient buffer. - * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. - * @return none. - */ - - void arm_radix4_butterfly_inverse_q31( - q31_t * pSrc, - uint32_t fftLen, - q31_t * pCoef, - uint32_t twidCoefModifier); - - /** - * @brief In-place bit reversal function. - * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. - * @param[in] fftLen length of the FFT. - * @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table - * @param[in] *pBitRevTab points to bit reversal table. - * @return none. - */ - - void arm_bitreversal_q31( - q31_t * pSrc, - uint32_t fftLen, - uint16_t bitRevFactor, - uint16_t *pBitRevTab); - - /** - * @brief Core function for the Q15 CFFT butterfly process. - * @param[in, out] *pSrc16 points to the in-place buffer of Q15 data type. - * @param[in] fftLen length of the FFT. - * @param[in] *pCoef16 points to twiddle coefficient buffer. - * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. - * @return none. - */ - - void arm_radix4_butterfly_q15( - q15_t *pSrc16, - uint32_t fftLen, - q15_t *pCoef16, - uint32_t twidCoefModifier); - - /** - * @brief Core function for the Q15 CIFFT butterfly process. - * @param[in, out] *pSrc16 points to the in-place buffer of Q15 data type. - * @param[in] fftLen length of the FFT. - * @param[in] *pCoef16 points to twiddle coefficient buffer. - * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. - * @return none. - */ - - void arm_radix4_butterfly_inverse_q15( - q15_t *pSrc16, - uint32_t fftLen, - q15_t *pCoef16, - uint32_t twidCoefModifier); - - /** - * @brief In-place bit reversal function. - * @param[in, out] *pSrc points to the in-place buffer of Q15 data type. - * @param[in] fftLen length of the FFT. - * @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table - * @param[in] *pBitRevTab points to bit reversal table. - * @return none. - */ - - void arm_bitreversal_q15( - q15_t * pSrc, - uint32_t fftLen, - uint16_t bitRevFactor, - uint16_t *pBitRevTab); - - /** - * @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; - - /** - * @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; - - /** - * @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; - - /** - * @brief Processing function for the Q15 RFFT/RIFFT. - * @param[in] *S points to an instance of the Q15 RFFT/RIFFT structure. - * @param[in] *pSrc points to the input buffer. - * @param[out] *pDst points to the output buffer. - * @return none. - */ - - void arm_rfft_q15( - const arm_rfft_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst); - - /** - * @brief Initialization function for the Q15 RFFT/RIFFT. - * @param[in, out] *S points to an instance of the Q15 RFFT/RIFFT structure. - * @param[in] *S_CFFT points to an instance of the Q15 CFFT/CIFFT structure. - * @param[in] fftLenReal length of the FFT. - * @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. - * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. - */ - - 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); - - /** - * @brief Processing function for the Q31 RFFT/RIFFT. - * @param[in] *S points to an instance of the Q31 RFFT/RIFFT structure. - * @param[in] *pSrc points to the input buffer. - * @param[out] *pDst points to the output buffer. - * @return none. - */ - - void arm_rfft_q31( - const arm_rfft_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst); - - /** - * @brief Initialization function for the Q31 RFFT/RIFFT. - * @param[in, out] *S points to an instance of the Q31 RFFT/RIFFT structure. - * @param[in, out] *S_CFFT points to an instance of the Q31 CFFT/CIFFT structure. - * @param[in] fftLenReal length of the FFT. - * @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. - * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. - */ - - 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); - - /** - * @brief Initialization function for the floating-point RFFT/RIFFT. - * @param[in,out] *S points to an instance of the floating-point RFFT/RIFFT structure. - * @param[in,out] *S_CFFT points to an instance of the floating-point CFFT/CIFFT structure. - * @param[in] fftLenReal length of the FFT. - * @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. - * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. - */ - - 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); - - /** - * @brief Processing function for the floating-point RFFT/RIFFT. - * @param[in] *S points to an instance of the floating-point RFFT/RIFFT structure. - * @param[in] *pSrc points to the input buffer. - * @param[out] *pDst points to the output buffer. - * @return none. - */ - - void arm_rfft_f32( - const arm_rfft_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst); - - /** - * @brief Instance structure for the floating-point DCT4/IDCT4 function. - */ - - typedef struct - { - uint16_t N; /**< length of the DCT4. */ - uint16_t Nby2; /**< half of the length of the DCT4. */ - float32_t normalize; /**< normalizing factor. */ - float32_t *pTwiddle; /**< points to the twiddle factor table. */ - float32_t *pCosFactor; /**< points to the cosFactor table. */ - arm_rfft_instance_f32 *pRfft; /**< points to the real FFT instance. */ - arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ - } arm_dct4_instance_f32; - - /** - * @brief Initialization function for the floating-point DCT4/IDCT4. - * @param[in,out] *S points to an instance of floating-point DCT4/IDCT4 structure. - * @param[in] *S_RFFT points to an instance of floating-point RFFT/RIFFT structure. - * @param[in] *S_CFFT points to an instance of floating-point CFFT/CIFFT structure. - * @param[in] N length of the DCT4. - * @param[in] Nby2 half of the length of the DCT4. - * @param[in] normalize normalizing factor. - * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported transform length. - */ - - arm_status arm_dct4_init_f32( - arm_dct4_instance_f32 * S, - arm_rfft_instance_f32 * S_RFFT, - arm_cfft_radix4_instance_f32 * S_CFFT, - uint16_t N, - uint16_t Nby2, - float32_t normalize); - - /** - * @brief Processing function for the floating-point DCT4/IDCT4. - * @param[in] *S points to an instance of the floating-point DCT4/IDCT4 structure. - * @param[in] *pState points to state buffer. - * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. - * @return none. - */ - - void arm_dct4_f32( - const arm_dct4_instance_f32 * S, - float32_t * pState, - float32_t * pInlineBuffer); - - /** - * @brief Instance structure for the Q31 DCT4/IDCT4 function. - */ - - typedef struct - { - uint16_t N; /**< length of the DCT4. */ - uint16_t Nby2; /**< half of the length of the DCT4. */ - q31_t normalize; /**< normalizing factor. */ - q31_t *pTwiddle; /**< points to the twiddle factor table. */ - q31_t *pCosFactor; /**< points to the cosFactor table. */ - arm_rfft_instance_q31 *pRfft; /**< points to the real FFT instance. */ - arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */ - } arm_dct4_instance_q31; - - /** - * @brief Initialization function for the Q31 DCT4/IDCT4. - * @param[in,out] *S points to an instance of Q31 DCT4/IDCT4 structure. - * @param[in] *S_RFFT points to an instance of Q31 RFFT/RIFFT structure - * @param[in] *S_CFFT points to an instance of Q31 CFFT/CIFFT structure - * @param[in] N length of the DCT4. - * @param[in] Nby2 half of the length of the DCT4. - * @param[in] normalize normalizing factor. - * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. - */ - - arm_status arm_dct4_init_q31( - arm_dct4_instance_q31 * S, - arm_rfft_instance_q31 * S_RFFT, - arm_cfft_radix4_instance_q31 * S_CFFT, - uint16_t N, - uint16_t Nby2, - q31_t normalize); - - /** - * @brief Processing function for the Q31 DCT4/IDCT4. - * @param[in] *S points to an instance of the Q31 DCT4 structure. - * @param[in] *pState points to state buffer. - * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. - * @return none. - */ - - void arm_dct4_q31( - const arm_dct4_instance_q31 * S, - q31_t * pState, - q31_t * pInlineBuffer); - - /** - * @brief Instance structure for the Q15 DCT4/IDCT4 function. - */ - - typedef struct - { - uint16_t N; /**< length of the DCT4. */ - uint16_t Nby2; /**< half of the length of the DCT4. */ - q15_t normalize; /**< normalizing factor. */ - q15_t *pTwiddle; /**< points to the twiddle factor table. */ - q15_t *pCosFactor; /**< points to the cosFactor table. */ - arm_rfft_instance_q15 *pRfft; /**< points to the real FFT instance. */ - arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */ - } arm_dct4_instance_q15; - - /** - * @brief Initialization function for the Q15 DCT4/IDCT4. - * @param[in,out] *S points to an instance of Q15 DCT4/IDCT4 structure. - * @param[in] *S_RFFT points to an instance of Q15 RFFT/RIFFT structure. - * @param[in] *S_CFFT points to an instance of Q15 CFFT/CIFFT structure. - * @param[in] N length of the DCT4. - * @param[in] Nby2 half of the length of the DCT4. - * @param[in] normalize normalizing factor. - * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. - */ - - arm_status arm_dct4_init_q15( - arm_dct4_instance_q15 * S, - arm_rfft_instance_q15 * S_RFFT, - arm_cfft_radix4_instance_q15 * S_CFFT, - uint16_t N, - uint16_t Nby2, - q15_t normalize); - - /** - * @brief Processing function for the Q15 DCT4/IDCT4. - * @param[in] *S points to an instance of the Q15 DCT4 structure. - * @param[in] *pState points to state buffer. - * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. - * @return none. - */ - - void arm_dct4_q15( - const arm_dct4_instance_q15 * S, - q15_t * pState, - q15_t * pInlineBuffer); - - /** - * @brief Floating-point vector addition. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_add_f32( - float32_t * pSrcA, - float32_t * pSrcB, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Q7 vector addition. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_add_q7( - q7_t * pSrcA, - q7_t * pSrcB, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Q15 vector addition. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_add_q15( - q15_t * pSrcA, - q15_t * pSrcB, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Q31 vector addition. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_add_q31( - q31_t * pSrcA, - q31_t * pSrcB, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Floating-point vector subtraction. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_sub_f32( - float32_t * pSrcA, - float32_t * pSrcB, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Q7 vector subtraction. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_sub_q7( - q7_t * pSrcA, - q7_t * pSrcB, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Q15 vector subtraction. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_sub_q15( - q15_t * pSrcA, - q15_t * pSrcB, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Q31 vector subtraction. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_sub_q31( - q31_t * pSrcA, - q31_t * pSrcB, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Multiplies a floating-point vector by a scalar. - * @param[in] *pSrc points to the input vector - * @param[in] scale scale factor to be applied - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_scale_f32( - float32_t * pSrc, - float32_t scale, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Multiplies a Q7 vector by a scalar. - * @param[in] *pSrc points to the input vector - * @param[in] scaleFract fractional portion of the scale value - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_scale_q7( - q7_t * pSrc, - q7_t scaleFract, - int8_t shift, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Multiplies a Q15 vector by a scalar. - * @param[in] *pSrc points to the input vector - * @param[in] scaleFract fractional portion of the scale value - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_scale_q15( - q15_t * pSrc, - q15_t scaleFract, - int8_t shift, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Multiplies a Q31 vector by a scalar. - * @param[in] *pSrc points to the input vector - * @param[in] scaleFract fractional portion of the scale value - * @param[in] shift number of bits to shift the result by - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_scale_q31( - q31_t * pSrc, - q31_t scaleFract, - int8_t shift, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Q7 vector absolute value. - * @param[in] *pSrc points to the input buffer - * @param[out] *pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_abs_q7( - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Floating-point vector absolute value. - * @param[in] *pSrc points to the input buffer - * @param[out] *pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_abs_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Q15 vector absolute value. - * @param[in] *pSrc points to the input buffer - * @param[out] *pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_abs_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Q31 vector absolute value. - * @param[in] *pSrc points to the input buffer - * @param[out] *pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - * @return none. - */ - - void arm_abs_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Dot product of floating-point vectors. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] *result output result returned here - * @return none. - */ - - void arm_dot_prod_f32( - float32_t * pSrcA, - float32_t * pSrcB, - uint32_t blockSize, - float32_t * result); - - /** - * @brief Dot product of Q7 vectors. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] *result output result returned here - * @return none. - */ - - void arm_dot_prod_q7( - q7_t * pSrcA, - q7_t * pSrcB, - uint32_t blockSize, - q31_t * result); - - /** - * @brief Dot product of Q15 vectors. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] *result output result returned here - * @return none. - */ - - void arm_dot_prod_q15( - q15_t * pSrcA, - q15_t * pSrcB, - uint32_t blockSize, - q63_t * result); - - /** - * @brief Dot product of Q31 vectors. - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] *result output result returned here - * @return none. - */ - - void arm_dot_prod_q31( - q31_t * pSrcA, - q31_t * pSrcB, - uint32_t blockSize, - q63_t * result); - - /** - * @brief Shifts the elements of a Q7 vector a specified number of bits. - * @param[in] *pSrc points to the input vector - * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_shift_q7( - q7_t * pSrc, - int8_t shiftBits, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Shifts the elements of a Q15 vector a specified number of bits. - * @param[in] *pSrc points to the input vector - * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_shift_q15( - q15_t * pSrc, - int8_t shiftBits, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Shifts the elements of a Q31 vector a specified number of bits. - * @param[in] *pSrc points to the input vector - * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_shift_q31( - q31_t * pSrc, - int8_t shiftBits, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Adds a constant offset to a floating-point vector. - * @param[in] *pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_offset_f32( - float32_t * pSrc, - float32_t offset, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Adds a constant offset to a Q7 vector. - * @param[in] *pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_offset_q7( - q7_t * pSrc, - q7_t offset, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Adds a constant offset to a Q15 vector. - * @param[in] *pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_offset_q15( - q15_t * pSrc, - q15_t offset, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Adds a constant offset to a Q31 vector. - * @param[in] *pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_offset_q31( - q31_t * pSrc, - q31_t offset, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Negates the elements of a floating-point vector. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_negate_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Negates the elements of a Q7 vector. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_negate_q7( - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Negates the elements of a Q15 vector. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_negate_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Negates the elements of a Q31 vector. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] blockSize number of samples in the vector - * @return none. - */ - - void arm_negate_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - /** - * @brief Copies the elements of a floating-point vector. - * @param[in] *pSrc input pointer - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_copy_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Copies the elements of a Q7 vector. - * @param[in] *pSrc input pointer - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_copy_q7( - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Copies the elements of a Q15 vector. - * @param[in] *pSrc input pointer - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_copy_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Copies the elements of a Q31 vector. - * @param[in] *pSrc input pointer - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_copy_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - /** - * @brief Fills a constant value into a floating-point vector. - * @param[in] value input value to be filled - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_fill_f32( - float32_t value, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Fills a constant value into a Q7 vector. - * @param[in] value input value to be filled - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_fill_q7( - q7_t value, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Fills a constant value into a Q15 vector. - * @param[in] value input value to be filled - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_fill_q15( - q15_t value, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Fills a constant value into a Q31 vector. - * @param[in] value input value to be filled - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_fill_q31( - q31_t value, - q31_t * pDst, - uint32_t blockSize); - -/** - * @brief Convolution of floating-point sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. - * @return none. - */ - - void arm_conv_f32( - float32_t * pSrcA, - uint32_t srcALen, - float32_t * pSrcB, - uint32_t srcBLen, - float32_t * pDst); - -/** - * @brief Convolution of Q15 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the 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 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. - * @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. - * @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 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. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - - arm_status arm_conv_partial_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst, - uint32_t firstIndex, - uint32_t numPoints); - - - /** - * @brief Instance structure for the Q15 FIR decimator. - */ - - typedef struct - { - uint8_t M; /**< decimation factor. */ - uint16_t numTaps; /**< number of coefficients in the filter. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - } arm_fir_decimate_instance_q15; - - /** - * @brief Instance structure for the Q31 FIR decimator. - */ - - typedef struct - { - uint8_t M; /**< decimation factor. */ - uint16_t numTaps; /**< number of coefficients in the filter. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - - } arm_fir_decimate_instance_q31; - - /** - * @brief Instance structure for the floating-point FIR decimator. - */ - - typedef struct - { - uint8_t M; /**< decimation factor. */ - uint16_t numTaps; /**< number of coefficients in the filter. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - - } arm_fir_decimate_instance_f32; - - - - /** - * @brief Processing function for the floating-point FIR decimator. - * @param[in] *S points to an instance of the floating-point FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - * @return none - */ - - void arm_fir_decimate_f32( - const arm_fir_decimate_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the floating-point FIR decimator. - * @param[in,out] *S points to an instance of the floating-point FIR decimator structure. - * @param[in] numTaps number of coefficients in the filter. - * @param[in] M decimation factor. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * blockSize is not a multiple of M. - */ - - arm_status arm_fir_decimate_init_f32( - arm_fir_decimate_instance_f32 * S, - uint16_t numTaps, - uint8_t M, - float32_t * pCoeffs, - float32_t * pState, - uint32_t blockSize); - - /** - * @brief Processing function for the Q15 FIR decimator. - * @param[in] *S points to an instance of the Q15 FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - * @return none - */ - - void arm_fir_decimate_q15( - const arm_fir_decimate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. - * @param[in] *S points to an instance of the Q15 FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - * @return none - */ - - void arm_fir_decimate_fast_q15( - const arm_fir_decimate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - - /** - * @brief Initialization function for the Q15 FIR decimator. - * @param[in,out] *S points to an instance of the Q15 FIR decimator structure. - * @param[in] numTaps number of coefficients in the filter. - * @param[in] M decimation factor. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * blockSize is not a multiple of M. - */ - - arm_status arm_fir_decimate_init_q15( - arm_fir_decimate_instance_q15 * S, - uint16_t numTaps, - uint8_t M, - q15_t * pCoeffs, - q15_t * pState, - uint32_t blockSize); - - /** - * @brief Processing function for the Q31 FIR decimator. - * @param[in] *S points to an instance of the Q31 FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - * @return none - */ - - void arm_fir_decimate_q31( - const arm_fir_decimate_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. - * @param[in] *S points to an instance of the Q31 FIR decimator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - * @return none - */ - - void arm_fir_decimate_fast_q31( - arm_fir_decimate_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q31 FIR decimator. - * @param[in,out] *S points to an instance of the Q31 FIR decimator structure. - * @param[in] numTaps number of coefficients in the filter. - * @param[in] M decimation factor. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * blockSize is not a multiple of M. - */ - - arm_status arm_fir_decimate_init_q31( - arm_fir_decimate_instance_q31 * S, - uint16_t numTaps, - uint8_t M, - q31_t * pCoeffs, - q31_t * pState, - uint32_t blockSize); - - - - /** - * @brief Instance structure for the Q15 FIR interpolator. - */ - - typedef struct - { - uint8_t L; /**< upsample factor. */ - uint16_t phaseLength; /**< length of each polyphase filter component. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ - q15_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ - } arm_fir_interpolate_instance_q15; - - /** - * @brief Instance structure for the Q31 FIR interpolator. - */ - - typedef struct - { - uint8_t L; /**< upsample factor. */ - uint16_t phaseLength; /**< length of each polyphase filter component. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ - q31_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ - } arm_fir_interpolate_instance_q31; - - /** - * @brief Instance structure for the floating-point FIR interpolator. - */ - - typedef struct - { - uint8_t L; /**< upsample factor. */ - uint16_t phaseLength; /**< length of each polyphase filter component. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ - float32_t *pState; /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */ - } arm_fir_interpolate_instance_f32; - - - /** - * @brief Processing function for the Q15 FIR interpolator. - * @param[in] *S points to an instance of the Q15 FIR interpolator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - - void arm_fir_interpolate_q15( - const arm_fir_interpolate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q15 FIR interpolator. - * @param[in,out] *S points to an instance of the Q15 FIR interpolator structure. - * @param[in] L upsample factor. - * @param[in] numTaps number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficient buffer. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * the filter length numTaps is not a multiple of the interpolation factor L. - */ - - arm_status arm_fir_interpolate_init_q15( - arm_fir_interpolate_instance_q15 * S, - uint8_t L, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - uint32_t blockSize); - - /** - * @brief Processing function for the Q31 FIR interpolator. - * @param[in] *S points to an instance of the Q15 FIR interpolator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - - void arm_fir_interpolate_q31( - const arm_fir_interpolate_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q31 FIR interpolator. - * @param[in,out] *S points to an instance of the Q31 FIR interpolator structure. - * @param[in] L upsample factor. - * @param[in] numTaps number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficient buffer. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * the filter length numTaps is not a multiple of the interpolation factor L. - */ - - arm_status arm_fir_interpolate_init_q31( - arm_fir_interpolate_instance_q31 * S, - uint8_t L, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the floating-point FIR interpolator. - * @param[in] *S points to an instance of the floating-point FIR interpolator structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - - void arm_fir_interpolate_f32( - const arm_fir_interpolate_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the floating-point FIR interpolator. - * @param[in,out] *S points to an instance of the floating-point FIR interpolator structure. - * @param[in] L upsample factor. - * @param[in] numTaps number of filter coefficients in the filter. - * @param[in] *pCoeffs points to the filter coefficient buffer. - * @param[in] *pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * the filter length numTaps is not a multiple of the interpolation factor L. - */ - - arm_status arm_fir_interpolate_init_f32( - arm_fir_interpolate_instance_f32 * S, - uint8_t L, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - uint32_t blockSize); - - /** - * @brief Instance structure for the high precision Q31 Biquad cascade filter. - */ - - typedef struct - { - uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - q63_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ - q31_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ - uint8_t postShift; /**< additional shift, in bits, applied to each output sample. */ - - } arm_biquad_cas_df1_32x64_ins_q31; - - - /** - * @param[in] *S points to an instance of the high precision Q31 Biquad cascade filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_biquad_cas_df1_32x64_q31( - const arm_biquad_cas_df1_32x64_ins_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @param[in,out] *S points to an instance of the high precision Q31 Biquad cascade filter structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] postShift shift to be applied to the output. Varies according to the coefficients format - * @return none - */ - - void arm_biquad_cas_df1_32x64_init_q31( - arm_biquad_cas_df1_32x64_ins_q31 * S, - uint8_t numStages, - q31_t * pCoeffs, - q63_t * pState, - uint8_t postShift); - - - - /** - * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. - */ - - typedef struct - { - uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - float32_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ - float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ - } arm_biquad_cascade_df2T_instance_f32; - - - /** - * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. - * @param[in] *S points to an instance of the filter data structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_biquad_cascade_df2T_f32( - const arm_biquad_cascade_df2T_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. - * @param[in,out] *S points to an instance of the filter data structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] *pCoeffs points to the filter coefficients. - * @param[in] *pState points to the state buffer. - * @return none - */ - - void arm_biquad_cascade_df2T_init_f32( - arm_biquad_cascade_df2T_instance_f32 * S, - uint8_t numStages, - float32_t * pCoeffs, - float32_t * pState); - - - - /** - * @brief Instance structure for the Q15 FIR lattice filter. - */ - - typedef struct - { - uint16_t numStages; /**< number of filter stages. */ - q15_t *pState; /**< points to the state variable array. The array is of length numStages. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ - } arm_fir_lattice_instance_q15; - - /** - * @brief Instance structure for the Q31 FIR lattice filter. - */ - - typedef struct - { - uint16_t numStages; /**< number of filter stages. */ - q31_t *pState; /**< points to the state variable array. The array is of length numStages. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ - } arm_fir_lattice_instance_q31; - - /** - * @brief Instance structure for the floating-point FIR lattice filter. - */ - - typedef struct - { - uint16_t numStages; /**< number of filter stages. */ - float32_t *pState; /**< points to the state variable array. The array is of length numStages. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ - } arm_fir_lattice_instance_f32; - - /** - * @brief Initialization function for the Q15 FIR lattice filter. - * @param[in] *S points to an instance of the Q15 FIR lattice structure. - * @param[in] numStages number of filter stages. - * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. - * @param[in] *pState points to the state buffer. The array is of length numStages. - * @return none. - */ - - void arm_fir_lattice_init_q15( - arm_fir_lattice_instance_q15 * S, - uint16_t numStages, - q15_t * pCoeffs, - q15_t * pState); - - - /** - * @brief Processing function for the Q15 FIR lattice filter. - * @param[in] *S points to an instance of the Q15 FIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - void arm_fir_lattice_q15( - const arm_fir_lattice_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q31 FIR lattice filter. - * @param[in] *S points to an instance of the Q31 FIR lattice structure. - * @param[in] numStages number of filter stages. - * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. - * @param[in] *pState points to the state buffer. The array is of length numStages. - * @return none. - */ - - void arm_fir_lattice_init_q31( - arm_fir_lattice_instance_q31 * S, - uint16_t numStages, - q31_t * pCoeffs, - q31_t * pState); - - - /** - * @brief Processing function for the Q31 FIR lattice filter. - * @param[in] *S points to an instance of the Q31 FIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_fir_lattice_q31( - const arm_fir_lattice_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - -/** - * @brief Initialization function for the floating-point FIR lattice filter. - * @param[in] *S points to an instance of the floating-point FIR lattice structure. - * @param[in] numStages number of filter stages. - * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. - * @param[in] *pState points to the state buffer. The array is of length numStages. - * @return none. - */ - - void arm_fir_lattice_init_f32( - arm_fir_lattice_instance_f32 * S, - uint16_t numStages, - float32_t * pCoeffs, - float32_t * pState); - - /** - * @brief Processing function for the floating-point FIR lattice filter. - * @param[in] *S points to an instance of the floating-point FIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_fir_lattice_f32( - const arm_fir_lattice_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Instance structure for the Q15 IIR lattice filter. - */ - typedef struct - { - uint16_t numStages; /**< number of stages in the filter. */ - q15_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ - q15_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ - q15_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ - } arm_iir_lattice_instance_q15; - - /** - * @brief Instance structure for the Q31 IIR lattice filter. - */ - typedef struct - { - uint16_t numStages; /**< number of stages in the filter. */ - q31_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ - q31_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ - q31_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ - } arm_iir_lattice_instance_q31; - - /** - * @brief Instance structure for the floating-point IIR lattice filter. - */ - typedef struct - { - uint16_t numStages; /**< number of stages in the filter. */ - float32_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ - float32_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ - float32_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ - } arm_iir_lattice_instance_f32; - - /** - * @brief Processing function for the floating-point IIR lattice filter. - * @param[in] *S points to an instance of the floating-point IIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_iir_lattice_f32( - const arm_iir_lattice_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @brief Initialization function for the floating-point IIR lattice filter. - * @param[in] *S points to an instance of the floating-point IIR lattice structure. - * @param[in] numStages number of stages in the filter. - * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. - * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. - * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize-1. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_iir_lattice_init_f32( - arm_iir_lattice_instance_f32 * S, - uint16_t numStages, - float32_t *pkCoeffs, - float32_t *pvCoeffs, - float32_t *pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q31 IIR lattice filter. - * @param[in] *S points to an instance of the Q31 IIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_iir_lattice_q31( - const arm_iir_lattice_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q31 IIR lattice filter. - * @param[in] *S points to an instance of the Q31 IIR lattice structure. - * @param[in] numStages number of stages in the filter. - * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. - * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. - * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_iir_lattice_init_q31( - arm_iir_lattice_instance_q31 * S, - uint16_t numStages, - q31_t *pkCoeffs, - q31_t *pvCoeffs, - q31_t *pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q15 IIR lattice filter. - * @param[in] *S points to an instance of the Q15 IIR lattice structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_iir_lattice_q15( - const arm_iir_lattice_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - -/** - * @brief Initialization function for the Q15 IIR lattice filter. - * @param[in] *S points to an instance of the fixed-point Q15 IIR lattice structure. - * @param[in] numStages number of stages in the filter. - * @param[in] *pkCoeffs points to reflection coefficient buffer. The array is of length numStages. - * @param[in] *pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1. - * @param[in] *pState points to state buffer. The array is of length numStages+blockSize. - * @param[in] blockSize number of samples to process per call. - * @return none. - */ - - void arm_iir_lattice_init_q15( - arm_iir_lattice_instance_q15 * S, - uint16_t numStages, - q15_t *pkCoeffs, - q15_t *pvCoeffs, - q15_t *pState, - uint32_t blockSize); - - /** - * @brief Instance structure for the floating-point LMS filter. - */ - - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - float32_t mu; /**< step size that controls filter coefficient updates. */ - } arm_lms_instance_f32; - - /** - * @brief Processing function for floating-point LMS filter. - * @param[in] *S points to an instance of the floating-point LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_f32( - const arm_lms_instance_f32 * S, - float32_t * pSrc, - float32_t * pRef, - float32_t * pOut, - float32_t * pErr, - uint32_t blockSize); - - /** - * @brief Initialization function for floating-point LMS filter. - * @param[in] *S points to an instance of the floating-point LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to the coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_init_f32( - arm_lms_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - float32_t mu, - uint32_t blockSize); - - /** - * @brief Instance structure for the Q15 LMS filter. - */ - - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - q15_t mu; /**< step size that controls filter coefficient updates. */ - uint32_t postShift; /**< bit shift applied to coefficients. */ - } arm_lms_instance_q15; - - - /** - * @brief Initialization function for the Q15 LMS filter. - * @param[in] *S points to an instance of the Q15 LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to the coefficient buffer. - * @param[in] *pState points to the state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - * @return none. - */ - - void arm_lms_init_q15( - arm_lms_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - q15_t mu, - uint32_t blockSize, - uint32_t postShift); - - /** - * @brief Processing function for Q15 LMS filter. - * @param[in] *S points to an instance of the Q15 LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_q15( - const arm_lms_instance_q15 * S, - q15_t * pSrc, - q15_t * pRef, - q15_t * pOut, - q15_t * pErr, - uint32_t blockSize); - - - /** - * @brief Instance structure for the Q31 LMS filter. - */ - - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - q31_t mu; /**< step size that controls filter coefficient updates. */ - uint32_t postShift; /**< bit shift applied to coefficients. */ - - } arm_lms_instance_q31; - - /** - * @brief Processing function for Q31 LMS filter. - * @param[in] *S points to an instance of the Q15 LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_q31( - const arm_lms_instance_q31 * S, - q31_t * pSrc, - q31_t * pRef, - q31_t * pOut, - q31_t * pErr, - uint32_t blockSize); - - /** - * @brief Initialization function for Q31 LMS filter. - * @param[in] *S points to an instance of the Q31 LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - * @return none. - */ - - void arm_lms_init_q31( - arm_lms_instance_q31 * S, - uint16_t numTaps, - q31_t *pCoeffs, - q31_t *pState, - q31_t mu, - uint32_t blockSize, - uint32_t postShift); - - /** - * @brief Instance structure for the floating-point normalized LMS filter. - */ - - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - float32_t mu; /**< step size that control filter coefficient updates. */ - float32_t energy; /**< saves previous frame energy. */ - float32_t x0; /**< saves previous input sample. */ - } arm_lms_norm_instance_f32; - - /** - * @brief Processing function for floating-point normalized LMS filter. - * @param[in] *S points to an instance of the floating-point normalized LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_norm_f32( - arm_lms_norm_instance_f32 * S, - float32_t * pSrc, - float32_t * pRef, - float32_t * pOut, - float32_t * pErr, - uint32_t blockSize); - - /** - * @brief Initialization function for floating-point normalized LMS filter. - * @param[in] *S points to an instance of the floating-point LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_norm_init_f32( - arm_lms_norm_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - float32_t mu, - uint32_t blockSize); - - - /** - * @brief Instance structure for the Q31 normalized LMS filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - q31_t mu; /**< step size that controls filter coefficient updates. */ - uint8_t postShift; /**< bit shift applied to coefficients. */ - q31_t *recipTable; /**< points to the reciprocal initial value table. */ - q31_t energy; /**< saves previous frame energy. */ - q31_t x0; /**< saves previous input sample. */ - } arm_lms_norm_instance_q31; - - /** - * @brief Processing function for Q31 normalized LMS filter. - * @param[in] *S points to an instance of the Q31 normalized LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_norm_q31( - arm_lms_norm_instance_q31 * S, - q31_t * pSrc, - q31_t * pRef, - q31_t * pOut, - q31_t * pErr, - uint32_t blockSize); - - /** - * @brief Initialization function for Q31 normalized LMS filter. - * @param[in] *S points to an instance of the Q31 normalized LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - * @return none. - */ - - void arm_lms_norm_init_q31( - arm_lms_norm_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - q31_t mu, - uint32_t blockSize, - uint8_t postShift); - - /** - * @brief Instance structure for the Q15 normalized LMS filter. - */ - - typedef struct - { - uint16_t numTaps; /**< Number of coefficients in the filter. */ - q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - q15_t mu; /**< step size that controls filter coefficient updates. */ - uint8_t postShift; /**< bit shift applied to coefficients. */ - q15_t *recipTable; /**< Points to the reciprocal initial value table. */ - q15_t energy; /**< saves previous frame energy. */ - q15_t x0; /**< saves previous input sample. */ - } arm_lms_norm_instance_q15; - - /** - * @brief Processing function for Q15 normalized LMS filter. - * @param[in] *S points to an instance of the Q15 normalized LMS filter structure. - * @param[in] *pSrc points to the block of input data. - * @param[in] *pRef points to the block of reference data. - * @param[out] *pOut points to the block of output data. - * @param[out] *pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - * @return none. - */ - - void arm_lms_norm_q15( - arm_lms_norm_instance_q15 * S, - q15_t * pSrc, - q15_t * pRef, - q15_t * pOut, - q15_t * pErr, - uint32_t blockSize); - - - /** - * @brief Initialization function for Q15 normalized LMS filter. - * @param[in] *S points to an instance of the Q15 normalized LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] *pCoeffs points to coefficient buffer. - * @param[in] *pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - * @return none. - */ - - void arm_lms_norm_init_q15( - arm_lms_norm_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - q15_t mu, - uint32_t blockSize, - uint8_t postShift); - - /** - * @brief Correlation of floating-point sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - * @return none. - */ - - void arm_correlate_f32( - float32_t * pSrcA, - uint32_t srcALen, - float32_t * pSrcB, - uint32_t srcBLen, - float32_t * pDst); - - /** - * @brief Correlation of Q15 sequences. - * @param[in] *pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] *pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - * @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 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. - * @return none. - */ - - void arm_correlate_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst); - - /** - * @brief Instance structure for the floating-point sparse FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ - float32_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ - int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ - } arm_fir_sparse_instance_f32; - - /** - * @brief Instance structure for the Q31 sparse FIR filter. - */ - - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ - q31_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ - int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ - } arm_fir_sparse_instance_q31; - - /** - * @brief Instance structure for the Q15 sparse FIR filter. - */ - - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ - q15_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ - int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ - } arm_fir_sparse_instance_q15; - - /** - * @brief Instance structure for the Q7 sparse FIR filter. - */ - - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ - q7_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ - q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ - int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ - } arm_fir_sparse_instance_q7; - - /** - * @brief Processing function for the floating-point sparse FIR filter. - * @param[in] *S points to an instance of the floating-point sparse FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] *pScratchIn points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - - void arm_fir_sparse_f32( - arm_fir_sparse_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - float32_t * pScratchIn, - uint32_t blockSize); - - /** - * @brief Initialization function for the floating-point sparse FIR filter. - * @param[in,out] *S points to an instance of the floating-point sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] *pCoeffs points to the array of filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] *pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - * @return none - */ - - void arm_fir_sparse_init_f32( - arm_fir_sparse_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize); - - /** - * @brief Processing function for the Q31 sparse FIR filter. - * @param[in] *S points to an instance of the Q31 sparse FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] *pScratchIn points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - - void arm_fir_sparse_q31( - arm_fir_sparse_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - q31_t * pScratchIn, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q31 sparse FIR filter. - * @param[in,out] *S points to an instance of the Q31 sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] *pCoeffs points to the array of filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] *pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - * @return none - */ - - void arm_fir_sparse_init_q31( - arm_fir_sparse_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize); - - /** - * @brief Processing function for the Q15 sparse FIR filter. - * @param[in] *S points to an instance of the Q15 sparse FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] *pScratchIn points to a temporary buffer of size blockSize. - * @param[in] *pScratchOut points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - - void arm_fir_sparse_q15( - arm_fir_sparse_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - q15_t * pScratchIn, - q31_t * pScratchOut, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q15 sparse FIR filter. - * @param[in,out] *S points to an instance of the Q15 sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] *pCoeffs points to the array of filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] *pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - * @return none - */ - - void arm_fir_sparse_init_q15( - arm_fir_sparse_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize); - - /** - * @brief Processing function for the Q7 sparse FIR filter. - * @param[in] *S points to an instance of the Q7 sparse FIR structure. - * @param[in] *pSrc points to the block of input data. - * @param[out] *pDst points to the block of output data - * @param[in] *pScratchIn points to a temporary buffer of size blockSize. - * @param[in] *pScratchOut points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - * @return none. - */ - - void arm_fir_sparse_q7( - arm_fir_sparse_instance_q7 * S, - q7_t * pSrc, - q7_t * pDst, - q7_t * pScratchIn, - q31_t * pScratchOut, - uint32_t blockSize); - - /** - * @brief Initialization function for the Q7 sparse FIR filter. - * @param[in,out] *S points to an instance of the Q7 sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] *pCoeffs points to the array of filter coefficients. - * @param[in] *pState points to the state buffer. - * @param[in] *pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - * @return none - */ - - void arm_fir_sparse_init_q7( - arm_fir_sparse_instance_q7 * S, - uint16_t numTaps, - q7_t * pCoeffs, - q7_t * pState, - int32_t *pTapDelay, - uint16_t maxDelay, - uint32_t blockSize); - - - /* - * @brief Floating-point sin_cos function. - * @param[in] theta input value in degrees - * @param[out] *pSinVal points to the processed sine output. - * @param[out] *pCosVal points to the processed cos output. - * @return none. - */ - - void arm_sin_cos_f32( - float32_t theta, - float32_t *pSinVal, - float32_t *pCcosVal); - - /* - * @brief Q31 sin_cos function. - * @param[in] theta scaled input value in degrees - * @param[out] *pSinVal points to the processed sine output. - * @param[out] *pCosVal points to the processed cosine output. - * @return none. - */ - - void arm_sin_cos_q31( - q31_t theta, - q31_t *pSinVal, - q31_t *pCosVal); - - - /** - * @brief Floating-point complex conjugate. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - * @return none. - */ - - void arm_cmplx_conj_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t numSamples); - - /** - * @brief Q31 complex conjugate. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - * @return none. - */ - - void arm_cmplx_conj_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t numSamples); - - /** - * @brief Q15 complex conjugate. - * @param[in] *pSrc points to the input vector - * @param[out] *pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - * @return none. - */ - - void arm_cmplx_conj_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t numSamples); - - - - /** - * @brief Floating-point complex magnitude squared - * @param[in] *pSrc points to the complex input vector - * @param[out] *pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - * @return none. - */ - - void arm_cmplx_mag_squared_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t numSamples); - - /** - * @brief Q31 complex magnitude squared - * @param[in] *pSrc points to the complex input vector - * @param[out] *pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - * @return none. - */ - - void arm_cmplx_mag_squared_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t numSamples); - - /** - * @brief Q15 complex magnitude squared - * @param[in] *pSrc points to the complex input vector - * @param[out] *pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - * @return none. - */ - - void arm_cmplx_mag_squared_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t numSamples); - - - /** - * @ingroup groupController - */ - - /** - * @defgroup PID PID Motor Control - * - * A Proportional Integral Derivative (PID) controller is a generic feedback control - * loop mechanism widely used in industrial control systems. - * A PID controller is the most commonly used type of feedback controller. - * - * This set of functions implements (PID) controllers - * for Q15, Q31, and floating-point data types. The functions operate on a single sample - * of data and each call to the function returns a single processed value. - * S points to an instance of the PID control data structure. in - * is the input sample value. The functions return the output value. - * - * \par Algorithm: - *
-   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
-   *    A0 = Kp + Ki + Kd
-   *    A1 = (-Kp ) - (2 * Kd )
-   *    A2 = Kd  
- * - * \par - * where \c Kp is proportional constant, \c Ki is Integral constant and \c Kd is Derivative constant - * - * \par - * \image html PID.gif "Proportional Integral Derivative Controller" - * - * \par - * The PID controller calculates an "error" value as the difference between - * the measured output and the reference input. - * The controller attempts to minimize the error by adjusting the process control inputs. - * The proportional value determines the reaction to the current error, - * the integral value determines the reaction based on the sum of recent errors, - * and the derivative value determines the reaction based on the rate at which the error has been changing. - * - * \par Instance Structure - * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure. - * A separate instance structure must be defined for each PID Controller. - * There are separate instance structure declarations for each of the 3 supported data types. - * - * \par Reset Functions - * There is also an associated reset function for each data type which clears the state array. - * - * \par Initialization Functions - * There is also an associated initialization function for each data type. - * The initialization function performs the following operations: - * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains. - * - Zeros out the values in the state buffer. - * - * \par - * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function. - * - * \par Fixed-Point Behavior - * Care must be taken when using the fixed-point versions of the PID Controller functions. - * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup PID - * @{ - */ - - /** - * @brief Process function for the floating-point PID Control. - * @param[in,out] *S is an instance of the floating-point PID Control structure - * @param[in] in input sample to process - * @return out processed output sample. - */ - - - __STATIC_INLINE float32_t arm_pid_f32( - arm_pid_instance_f32 * S, - float32_t in) - { - float32_t out; - - /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2] */ - out = (S->A0 * in) + - (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]); - - /* Update state */ - S->state[1] = S->state[0]; - S->state[0] = in; - S->state[2] = out; - - /* return to application */ - return (out); - - } - - /** - * @brief Process function for the Q31 PID Control. - * @param[in,out] *S points to an instance of the Q31 PID Control structure - * @param[in] in input sample to process - * @return out processed output sample. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 64-bit accumulator. - * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * Thus, if the accumulator result overflows it wraps around rather than clip. - * In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions. - * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. - */ - - __STATIC_INLINE q31_t arm_pid_q31( - arm_pid_instance_q31 * S, - q31_t in) - { - q63_t acc; - q31_t out; - - /* acc = A0 * x[n] */ - acc = (q63_t) S->A0 * in; - - /* acc += A1 * x[n-1] */ - acc += (q63_t) S->A1 * S->state[0]; - - /* acc += A2 * x[n-2] */ - acc += (q63_t) S->A2 * S->state[1]; - - /* convert output to 1.31 format to add y[n-1] */ - out = (q31_t) (acc >> 31u); - - /* out += y[n-1] */ - out += S->state[2]; - - /* Update state */ - S->state[1] = S->state[0]; - S->state[0] = in; - S->state[2] = out; - - /* return to application */ - return (out); - - } - - /** - * @brief Process function for the Q15 PID Control. - * @param[in,out] *S points to an instance of the Q15 PID Control structure - * @param[in] in input sample to process - * @return out processed output sample. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using a 64-bit internal accumulator. - * Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. - * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. - * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. - * Lastly, the accumulator is saturated to yield a result in 1.15 format. - */ - - __STATIC_INLINE q15_t arm_pid_q15( - arm_pid_instance_q15 * S, - q15_t in) - { - q63_t acc; - q15_t out; - - /* Implementation of PID controller */ - - #ifdef ARM_MATH_CM0 - - /* acc = A0 * x[n] */ - acc = ((q31_t) S->A0 )* in ; - - #else - - /* acc = A0 * x[n] */ - acc = (q31_t) __SMUAD(S->A0, in); - - #endif - - #ifdef ARM_MATH_CM0 - - /* 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] ; - - #else - - /* acc += A1 * x[n-1] + A2 * x[n-2] */ - acc = __SMLALD(S->A1, (q31_t)__SIMD32(S->state), acc); - - #endif - - /* acc += y[n-1] */ - acc += (q31_t) S->state[2] << 15; - - /* saturate the output */ - out = (q15_t) (__SSAT((acc >> 15), 16)); - - /* Update state */ - S->state[1] = S->state[0]; - S->state[0] = in; - S->state[2] = out; - - /* return to application */ - return (out); - - } - - /** - * @} end of PID group - */ - - - /** - * @brief Floating-point matrix inverse. - * @param[in] *src points to the instance of the input floating-point matrix structure. - * @param[out] *dst points to the instance of the output floating-point matrix structure. - * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. - * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. - */ - - arm_status arm_mat_inverse_f32( - const arm_matrix_instance_f32 * src, - arm_matrix_instance_f32 * dst); - - - - /** - * @ingroup groupController - */ - - - /** - * @defgroup clarke Vector Clarke Transform - * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector. - * Generally the Clarke transform uses three-phase currents Ia, Ib and Ic to calculate currents - * in the two-phase orthogonal stator axis Ialpha and Ibeta. - * When Ialpha is superposed with Ia as shown in the figure below - * \image html clarke.gif Stator current space vector and its components in (a,b). - * and Ia + Ib + Ic = 0, in this condition Ialpha and Ibeta - * can be calculated using only Ia and Ib. - * - * The function operates on a single sample of data and each call to the function returns the processed output. - * The library provides separate functions for Q31 and floating-point data types. - * \par Algorithm - * \image html clarkeFormula.gif - * where Ia and Ib are the instantaneous stator phases and - * pIalpha and pIbeta are the two coordinates of time invariant vector. - * \par Fixed-Point Behavior - * Care must be taken when using the Q31 version of the Clarke transform. - * In particular, the overflow and saturation behavior of the accumulator used must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup clarke - * @{ - */ - - /** - * - * @brief Floating-point Clarke transform - * @param[in] Ia input three-phase coordinate a - * @param[in] Ib input three-phase coordinate b - * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha - * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta - * @return none. - */ - - __STATIC_INLINE void arm_clarke_f32( - float32_t Ia, - float32_t Ib, - float32_t * pIalpha, - float32_t * pIbeta) - { - /* Calculate pIalpha using the equation, pIalpha = Ia */ - *pIalpha = Ia; - - /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */ - *pIbeta = ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib); - - } - - /** - * @brief Clarke transform for Q31 version - * @param[in] Ia input three-phase coordinate a - * @param[in] Ib input three-phase coordinate b - * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha - * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 32-bit accumulator. - * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. - * There is saturation on the addition, hence there is no risk of overflow. - */ - - __STATIC_INLINE void arm_clarke_q31( - q31_t Ia, - q31_t Ib, - q31_t * pIalpha, - q31_t * pIbeta) - { - q31_t product1, product2; /* Temporary variables used to store intermediate results */ - - /* Calculating pIalpha from Ia by equation pIalpha = Ia */ - *pIalpha = Ia; - - /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */ - product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30); - - /* Intermediate product is calculated by (2/sqrt(3) * Ib) */ - product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30); - - /* pIbeta is calculated by adding the intermediate products */ - *pIbeta = __QADD(product1, product2); - } - - /** - * @} end of clarke group - */ - - /** - * @brief Converts the elements of the Q7 vector to Q31 vector. - * @param[in] *pSrc input pointer - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_q7_to_q31( - q7_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - - - /** - * @ingroup groupController - */ - - /** - * @defgroup inv_clarke Vector Inverse Clarke Transform - * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases. - * - * The function operates on a single sample of data and each call to the function returns the processed output. - * The library provides separate functions for Q31 and floating-point data types. - * \par Algorithm - * \image html clarkeInvFormula.gif - * where pIa and pIb are the instantaneous stator phases and - * Ialpha and Ibeta are the two coordinates of time invariant vector. - * \par Fixed-Point Behavior - * Care must be taken when using the Q31 version of the Clarke transform. - * In particular, the overflow and saturation behavior of the accumulator used must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup inv_clarke - * @{ - */ - - /** - * @brief Floating-point Inverse Clarke transform - * @param[in] Ialpha input two-phase orthogonal vector axis alpha - * @param[in] Ibeta input two-phase orthogonal vector axis beta - * @param[out] *pIa points to output three-phase coordinate a - * @param[out] *pIb points to output three-phase coordinate b - * @return none. - */ - - - __STATIC_INLINE void arm_inv_clarke_f32( - float32_t Ialpha, - float32_t Ibeta, - float32_t * pIa, - float32_t * pIb) - { - /* Calculating pIa from Ialpha by equation pIa = Ialpha */ - *pIa = Ialpha; - - /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */ - *pIb = -0.5 * Ialpha + (float32_t) 0.8660254039 *Ibeta; - - } - - /** - * @brief Inverse Clarke transform for Q31 version - * @param[in] Ialpha input two-phase orthogonal vector axis alpha - * @param[in] Ibeta input two-phase orthogonal vector axis beta - * @param[out] *pIa points to output three-phase coordinate a - * @param[out] *pIb points to output three-phase coordinate b - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 32-bit accumulator. - * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. - * There is saturation on the subtraction, hence there is no risk of overflow. - */ - - __STATIC_INLINE void arm_inv_clarke_q31( - q31_t Ialpha, - q31_t Ibeta, - q31_t * pIa, - q31_t * pIb) - { - q31_t product1, product2; /* Temporary variables used to store intermediate results */ - - /* Calculating pIa from Ialpha by equation pIa = Ialpha */ - *pIa = Ialpha; - - /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */ - product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31); - - /* Intermediate product is calculated by (1/sqrt(3) * pIb) */ - product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31); - - /* pIb is calculated by subtracting the products */ - *pIb = __QSUB(product2, product1); - - } - - /** - * @} end of inv_clarke group - */ - - /** - * @brief Converts the elements of the Q7 vector to Q15 vector. - * @param[in] *pSrc input pointer - * @param[out] *pDst output pointer - * @param[in] blockSize number of samples to process - * @return none. - */ - void arm_q7_to_q15( - q7_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - - /** - * @ingroup groupController - */ - - /** - * @defgroup park Vector Park Transform - * - * Forward Park transform converts the input two-coordinate vector to flux and torque components. - * The Park transform can be used to realize the transformation of the Ialpha and the Ibeta currents - * from the stationary to the moving reference frame and control the spatial relationship between - * the stator vector current and rotor flux vector. - * If we consider the d axis aligned with the rotor flux, the diagram below shows the - * current vector and the relationship from the two reference frames: - * \image html park.gif "Stator current space vector and its component in (a,b) and in the d,q rotating reference frame" - * - * The function operates on a single sample of data and each call to the function returns the processed output. - * The library provides separate functions for Q31 and floating-point data types. - * \par Algorithm - * \image html parkFormula.gif - * where Ialpha and Ibeta are the stator vector components, - * pId and pIq are rotor vector components and cosVal and sinVal are the - * cosine and sine values of theta (rotor flux position). - * \par Fixed-Point Behavior - * Care must be taken when using the Q31 version of the Park transform. - * In particular, the overflow and saturation behavior of the accumulator used must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup park - * @{ - */ - - /** - * @brief Floating-point Park transform - * @param[in] Ialpha input two-phase vector coordinate alpha - * @param[in] Ibeta input two-phase vector coordinate beta - * @param[out] *pId points to output rotor reference frame d - * @param[out] *pIq points to output rotor reference frame q - * @param[in] sinVal sine value of rotation angle theta - * @param[in] cosVal cosine value of rotation angle theta - * @return none. - * - * The function implements the forward Park transform. - * - */ - - __STATIC_INLINE void arm_park_f32( - float32_t Ialpha, - float32_t Ibeta, - float32_t * pId, - float32_t * pIq, - float32_t sinVal, - float32_t cosVal) - { - /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */ - *pId = Ialpha * cosVal + Ibeta * sinVal; - - /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */ - *pIq = -Ialpha * sinVal + Ibeta * cosVal; - - } - - /** - * @brief Park transform for Q31 version - * @param[in] Ialpha input two-phase vector coordinate alpha - * @param[in] Ibeta input two-phase vector coordinate beta - * @param[out] *pId points to output rotor reference frame d - * @param[out] *pIq points to output rotor reference frame q - * @param[in] sinVal sine value of rotation angle theta - * @param[in] cosVal cosine value of rotation angle theta - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 32-bit accumulator. - * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. - * There is saturation on the addition and subtraction, hence there is no risk of overflow. - */ - - - __STATIC_INLINE void arm_park_q31( - q31_t Ialpha, - q31_t Ibeta, - q31_t * pId, - q31_t * pIq, - q31_t sinVal, - q31_t cosVal) - { - q31_t product1, product2; /* Temporary variables used to store intermediate results */ - q31_t product3, product4; /* Temporary variables used to store intermediate results */ - - /* Intermediate product is calculated by (Ialpha * cosVal) */ - product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31); - - /* Intermediate product is calculated by (Ibeta * sinVal) */ - product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31); - - - /* Intermediate product is calculated by (Ialpha * sinVal) */ - product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31); - - /* Intermediate product is calculated by (Ibeta * cosVal) */ - product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31); - - /* Calculate pId by adding the two intermediate products 1 and 2 */ - *pId = __QADD(product1, product2); - - /* Calculate pIq by subtracting the two intermediate products 3 from 4 */ - *pIq = __QSUB(product4, product3); - } - - /** - * @} end of park group - */ - - /** - * @brief Converts the elements of the Q7 vector to floating-point vector. - * @param[in] *pSrc is input pointer - * @param[out] *pDst is output pointer - * @param[in] blockSize is the number of samples to process - * @return none. - */ - void arm_q7_to_float( - q7_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @ingroup groupController - */ - - /** - * @defgroup inv_park Vector Inverse Park transform - * Inverse Park transform converts the input flux and torque components to two-coordinate vector. - * - * The function operates on a single sample of data and each call to the function returns the processed output. - * The library provides separate functions for Q31 and floating-point data types. - * \par Algorithm - * \image html parkInvFormula.gif - * where pIalpha and pIbeta are the stator vector components, - * Id and Iq are rotor vector components and cosVal and sinVal are the - * cosine and sine values of theta (rotor flux position). - * \par Fixed-Point Behavior - * Care must be taken when using the Q31 version of the Park transform. - * In particular, the overflow and saturation behavior of the accumulator used must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup inv_park - * @{ - */ - - /** - * @brief Floating-point Inverse Park transform - * @param[in] Id input coordinate of rotor reference frame d - * @param[in] Iq input coordinate of rotor reference frame q - * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha - * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta - * @param[in] sinVal sine value of rotation angle theta - * @param[in] cosVal cosine value of rotation angle theta - * @return none. - */ - - __STATIC_INLINE void arm_inv_park_f32( - float32_t Id, - float32_t Iq, - float32_t * pIalpha, - float32_t * pIbeta, - float32_t sinVal, - float32_t cosVal) - { - /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */ - *pIalpha = Id * cosVal - Iq * sinVal; - - /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */ - *pIbeta = Id * sinVal + Iq * cosVal; - - } - - - /** - * @brief Inverse Park transform for Q31 version - * @param[in] Id input coordinate of rotor reference frame d - * @param[in] Iq input coordinate of rotor reference frame q - * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha - * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta - * @param[in] sinVal sine value of rotation angle theta - * @param[in] cosVal cosine value of rotation angle theta - * @return none. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 32-bit accumulator. - * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. - * There is saturation on the addition, hence there is no risk of overflow. - */ - - - __STATIC_INLINE void arm_inv_park_q31( - q31_t Id, - q31_t Iq, - q31_t * pIalpha, - q31_t * pIbeta, - q31_t sinVal, - q31_t cosVal) - { - q31_t product1, product2; /* Temporary variables used to store intermediate results */ - q31_t product3, product4; /* Temporary variables used to store intermediate results */ - - /* Intermediate product is calculated by (Id * cosVal) */ - product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31); - - /* Intermediate product is calculated by (Iq * sinVal) */ - product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31); - - - /* Intermediate product is calculated by (Id * sinVal) */ - product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31); - - /* Intermediate product is calculated by (Iq * cosVal) */ - product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31); - - /* Calculate pIalpha by using the two intermediate products 1 and 2 */ - *pIalpha = __QSUB(product1, product2); - - /* Calculate pIbeta by using the two intermediate products 3 and 4 */ - *pIbeta = __QADD(product4, product3); - - } - - /** - * @} end of Inverse park group - */ - - - /** - * @brief Converts the elements of the Q31 vector to floating-point vector. - * @param[in] *pSrc is input pointer - * @param[out] *pDst is output pointer - * @param[in] blockSize is the number of samples to process - * @return none. - */ - void arm_q31_to_float( - q31_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @ingroup groupInterpolation - */ - - /** - * @defgroup LinearInterpolate Linear Interpolation - * - * Linear interpolation is a method of curve fitting using linear polynomials. - * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line - * - * \par - * \image html LinearInterp.gif "Linear interpolation" - * - * \par - * A Linear Interpolate function calculates an output value(y), for the input(x) - * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values) - * - * \par Algorithm: - *
-   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
-   *       where x0, x1 are nearest values of input x
-   *             y0, y1 are nearest values to output y
-   * 
- * - * \par - * This set of functions implements Linear interpolation process - * for Q7, Q15, Q31, and floating-point data types. The functions operate on a single - * sample of data and each call to the function returns a single processed value. - * S points to an instance of the Linear Interpolate function data structure. - * x is the input sample value. The functions returns the output value. - * - * \par - * if x is outside of the table boundary, Linear interpolation returns first value of the table - * if x is below input range and returns last value of table if x is above range. - */ - - /** - * @addtogroup LinearInterpolate - * @{ - */ - - /** - * @brief Process function for the floating-point Linear Interpolation Function. - * @param[in,out] *S is an instance of the floating-point Linear Interpolation structure - * @param[in] x input sample to process - * @return y processed output sample. - * - */ - - __STATIC_INLINE float32_t arm_linear_interp_f32( - arm_linear_interp_instance_f32 * S, - float32_t x) - { - - float32_t y; - float32_t x0, x1; /* Nearest input values */ - float32_t y0, y1; /* Nearest output values */ - float32_t xSpacing = S->xSpacing; /* spacing between input values */ - int32_t i; /* Index variable */ - float32_t *pYData = S->pYData; /* pointer to output table */ - - /* Calculation of index */ - i = (x - S->x1) / xSpacing; - - if(i < 0) - { - /* Iniatilize output for below specified range as least output value of table */ - y = pYData[0]; - } - else if(i >= S->nValues) - { - /* Iniatilize output for above specified range as last output value of table */ - y = pYData[S->nValues-1]; - } - else - { - /* Calculation of nearest input values */ - x0 = S->x1 + i * xSpacing; - x1 = S->x1 + (i +1) * xSpacing; - - /* Read of nearest output values */ - y0 = pYData[i]; - y1 = pYData[i + 1]; - - /* Calculation of output */ - y = y0 + (x - x0) * ((y1 - y0)/(x1-x0)); - - } - - /* returns output value */ - return (y); - } - - /** - * - * @brief Process function for the Q31 Linear Interpolation Function. - * @param[in] *pYData pointer to Q31 Linear Interpolation table - * @param[in] x input sample to process - * @param[in] nValues number of table values - * @return y processed output sample. - * - * \par - * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. - * This function can support maximum of table size 2^12. - * - */ - - - __STATIC_INLINE q31_t arm_linear_interp_q31(q31_t *pYData, - q31_t x, uint32_t nValues) - { - q31_t y; /* output */ - q31_t y0, y1; /* Nearest output values */ - q31_t fract; /* fractional part */ - int32_t index; /* Index to read nearest output values */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - index = ((x & 0xFFF00000) >> 20); - - if(index >= (nValues - 1)) - { - return(pYData[nValues - 1]); - } - else if(index < 0) - { - return(pYData[0]); - } - else - { - - /* 20 bits for the fractional part */ - /* shift left by 11 to keep fract in 1.31 format */ - fract = (x & 0x000FFFFF) << 11; - - /* Read two nearest output values from the index in 1.31(q31) format */ - y0 = pYData[index]; - y1 = pYData[index + 1u]; - - /* Calculation of y0 * (1-fract) and y is in 2.30 format */ - y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32)); - - /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */ - y += ((q31_t) (((q63_t) y1 * fract) >> 32)); - - /* Convert y to 1.31 format */ - return (y << 1u); - - } - - } - - /** - * - * @brief Process function for the Q15 Linear Interpolation Function. - * @param[in] *pYData pointer to Q15 Linear Interpolation table - * @param[in] x input sample to process - * @param[in] nValues number of table values - * @return y processed output sample. - * - * \par - * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. - * This function can support maximum of table size 2^12. - * - */ - - - __STATIC_INLINE q15_t arm_linear_interp_q15(q15_t *pYData, q31_t x, uint32_t nValues) - { - q63_t y; /* output */ - q15_t y0, y1; /* Nearest output values */ - q31_t fract; /* fractional part */ - int32_t index; /* Index to read nearest output values */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - index = ((x & 0xFFF00000) >> 20u); - - if(index >= (nValues - 1)) - { - return(pYData[nValues - 1]); - } - else if(index < 0) - { - return(pYData[0]); - } - else - { - /* 20 bits for the fractional part */ - /* fract is in 12.20 format */ - fract = (x & 0x000FFFFF); - - /* Read two nearest output values from the index */ - y0 = pYData[index]; - y1 = pYData[index + 1u]; - - /* Calculation of y0 * (1-fract) and y is in 13.35 format */ - y = ((q63_t) y0 * (0xFFFFF - fract)); - - /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */ - y += ((q63_t) y1 * (fract)); - - /* convert y to 1.15 format */ - return (y >> 20); - } - - - } - - /** - * - * @brief Process function for the Q7 Linear Interpolation Function. - * @param[in] *pYData pointer to Q7 Linear Interpolation table - * @param[in] x input sample to process - * @param[in] nValues number of table values - * @return y processed output sample. - * - * \par - * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. - * This function can support maximum of table size 2^12. - */ - - - __STATIC_INLINE q7_t arm_linear_interp_q7(q7_t *pYData, q31_t x, uint32_t nValues) - { - q31_t y; /* output */ - q7_t y0, y1; /* Nearest output values */ - q31_t fract; /* fractional part */ - 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 >= (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 and are in 1.7(q7) format */ - y0 = pYData[index]; - y1 = pYData[index + 1u]; - - /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */ - y = ((y0 * (0xFFFFF - fract))); - - /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */ - y += (y1 * fract); - - /* convert y to 1.7(q7) format */ - return (y >> 20u); - - } - - } - /** - * @} end of LinearInterpolate group - */ - - /** - * @brief Fast approximation to the trigonometric sine function for floating-point data. - * @param[in] x input value in radians. - * @return sin(x). - */ - - float32_t arm_sin_f32( - float32_t x); - - /** - * @brief Fast approximation to the trigonometric sine function for Q31 data. - * @param[in] x Scaled input value in radians. - * @return sin(x). - */ - - q31_t arm_sin_q31( - q31_t x); - - /** - * @brief Fast approximation to the trigonometric sine function for Q15 data. - * @param[in] x Scaled input value in radians. - * @return sin(x). - */ - - q15_t arm_sin_q15( - q15_t x); - - /** - * @brief Fast approximation to the trigonometric cosine function for floating-point data. - * @param[in] x input value in radians. - * @return cos(x). - */ - - float32_t arm_cos_f32( - float32_t x); - - /** - * @brief Fast approximation to the trigonometric cosine function for Q31 data. - * @param[in] x Scaled input value in radians. - * @return cos(x). - */ - - q31_t arm_cos_q31( - q31_t x); - - /** - * @brief Fast approximation to the trigonometric cosine function for Q15 data. - * @param[in] x Scaled input value in radians. - * @return cos(x). - */ - - q15_t arm_cos_q15( - q15_t x); - - - /** - * @ingroup groupFastMath - */ - - - /** - * @defgroup SQRT Square Root - * - * Computes the square root of a number. - * There are separate functions for Q15, Q31, and floating-point data types. - * The square root function is computed using the Newton-Raphson algorithm. - * This is an iterative algorithm of the form: - *
-   *      x1 = x0 - f(x0)/f'(x0)
-   * 
- * where x1 is the current estimate, - * x0 is the previous estimate and - * f'(x0) is the derivative of f() evaluated at x0. - * For the square root function, the algorithm reduces to: - *
-   *     x0 = in/2                         [initial guess]
-   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
-   * 
- */ - - - /** - * @addtogroup SQRT - * @{ - */ - - /** - * @brief Floating-point square root function. - * @param[in] in input value. - * @param[out] *pOut square root of input value. - * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if - * in is negative value and returns zero output for negative values. - */ - - __STATIC_INLINE arm_status arm_sqrt_f32( - float32_t in, float32_t *pOut) - { - if(in > 0) - { - -// #if __FPU_USED - #if (__FPU_USED == 1) && defined ( __CC_ARM ) - *pOut = __sqrtf(in); - #elif (__FPU_USED == 1) && defined ( __TMS_740 ) - *pOut = __builtin_sqrtf(in); - #else - *pOut = sqrtf(in); - #endif - - return (ARM_MATH_SUCCESS); - } - else - { - *pOut = 0.0f; - return (ARM_MATH_ARGUMENT_ERROR); - } - - } - - - /** - * @brief Q31 square root function. - * @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF. - * @param[out] *pOut square root of input value. - * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if - * in is negative value and returns zero output for negative values. - */ - arm_status arm_sqrt_q31( - q31_t in, q31_t *pOut); - - /** - * @brief Q15 square root function. - * @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF. - * @param[out] *pOut square root of input value. - * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if - * in is negative value and returns zero output for negative values. - */ - arm_status arm_sqrt_q15( - q15_t in, q15_t *pOut); - - /** - * @} end of SQRT group - */ - - - - - - - /** - * @brief floating-point Circular write function. - */ - - __STATIC_INLINE void arm_circularWrite_f32( - int32_t * circBuffer, - int32_t L, - uint16_t * writeOffset, - int32_t bufferInc, - const int32_t * src, - int32_t srcInc, - uint32_t blockSize) - { - uint32_t i = 0u; - int32_t wOffset; - - /* Copy the value of Index pointer that points - * to the current location where the input samples to be copied */ - wOffset = *writeOffset; - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the input sample to the circular buffer */ - circBuffer[wOffset] = *src; - - /* Update the input pointer */ - src += srcInc; - - /* Circularly update wOffset. Watch out for positive and negative value */ - wOffset += bufferInc; - if(wOffset >= L) - wOffset -= L; - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *writeOffset = wOffset; - } - - - - /** - * @brief floating-point Circular Read function. - */ - __STATIC_INLINE void arm_circularRead_f32( - int32_t * circBuffer, - int32_t L, - int32_t * readOffset, - int32_t bufferInc, - int32_t * dst, - int32_t * dst_base, - int32_t dst_length, - int32_t dstInc, - uint32_t blockSize) - { - uint32_t i = 0u; - int32_t rOffset, dst_end; - - /* Copy the value of Index pointer that points - * to the current location from where the input samples to be read */ - rOffset = *readOffset; - dst_end = (int32_t) (dst_base + dst_length); - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the sample from the circular buffer to the destination buffer */ - *dst = circBuffer[rOffset]; - - /* Update the input pointer */ - dst += dstInc; - - if(dst == (int32_t *) dst_end) - { - dst = dst_base; - } - - /* Circularly update rOffset. Watch out for positive and negative value */ - rOffset += bufferInc; - - if(rOffset >= L) - { - rOffset -= L; - } - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *readOffset = rOffset; - } - - /** - * @brief Q15 Circular write function. - */ - - __STATIC_INLINE void arm_circularWrite_q15( - q15_t * circBuffer, - int32_t L, - uint16_t * writeOffset, - int32_t bufferInc, - const q15_t * src, - int32_t srcInc, - uint32_t blockSize) - { - uint32_t i = 0u; - int32_t wOffset; - - /* Copy the value of Index pointer that points - * to the current location where the input samples to be copied */ - wOffset = *writeOffset; - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the input sample to the circular buffer */ - circBuffer[wOffset] = *src; - - /* Update the input pointer */ - src += srcInc; - - /* Circularly update wOffset. Watch out for positive and negative value */ - wOffset += bufferInc; - if(wOffset >= L) - wOffset -= L; - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *writeOffset = wOffset; - } - - - - /** - * @brief Q15 Circular Read function. - */ - __STATIC_INLINE void arm_circularRead_q15( - q15_t * circBuffer, - int32_t L, - int32_t * readOffset, - int32_t bufferInc, - q15_t * dst, - q15_t * dst_base, - int32_t dst_length, - int32_t dstInc, - uint32_t blockSize) - { - uint32_t i = 0; - int32_t rOffset, dst_end; - - /* Copy the value of Index pointer that points - * to the current location from where the input samples to be read */ - rOffset = *readOffset; - - dst_end = (int32_t) (dst_base + dst_length); - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the sample from the circular buffer to the destination buffer */ - *dst = circBuffer[rOffset]; - - /* Update the input pointer */ - dst += dstInc; - - if(dst == (q15_t *) dst_end) - { - dst = dst_base; - } - - /* Circularly update wOffset. Watch out for positive and negative value */ - rOffset += bufferInc; - - if(rOffset >= L) - { - rOffset -= L; - } - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *readOffset = rOffset; - } - - - /** - * @brief Q7 Circular write function. - */ - - __STATIC_INLINE void arm_circularWrite_q7( - q7_t * circBuffer, - int32_t L, - uint16_t * writeOffset, - int32_t bufferInc, - const q7_t * src, - int32_t srcInc, - uint32_t blockSize) - { - uint32_t i = 0u; - int32_t wOffset; - - /* Copy the value of Index pointer that points - * to the current location where the input samples to be copied */ - wOffset = *writeOffset; - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the input sample to the circular buffer */ - circBuffer[wOffset] = *src; - - /* Update the input pointer */ - src += srcInc; - - /* Circularly update wOffset. Watch out for positive and negative value */ - wOffset += bufferInc; - if(wOffset >= L) - wOffset -= L; - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *writeOffset = wOffset; - } - - - - /** - * @brief Q7 Circular Read function. - */ - __STATIC_INLINE void arm_circularRead_q7( - q7_t * circBuffer, - int32_t L, - int32_t * readOffset, - int32_t bufferInc, - q7_t * dst, - q7_t * dst_base, - int32_t dst_length, - int32_t dstInc, - uint32_t blockSize) - { - uint32_t i = 0; - int32_t rOffset, dst_end; - - /* Copy the value of Index pointer that points - * to the current location from where the input samples to be read */ - rOffset = *readOffset; - - dst_end = (int32_t) (dst_base + dst_length); - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the sample from the circular buffer to the destination buffer */ - *dst = circBuffer[rOffset]; - - /* Update the input pointer */ - dst += dstInc; - - if(dst == (q7_t *) dst_end) - { - dst = dst_base; - } - - /* Circularly update rOffset. Watch out for positive and negative value */ - rOffset += bufferInc; - - if(rOffset >= L) - { - rOffset -= L; - } - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *readOffset = rOffset; - } - - - /** - * @brief Sum of the squares of the elements of a Q31 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_power_q31( - q31_t * pSrc, - uint32_t blockSize, - q63_t * pResult); - - /** - * @brief Sum of the squares of the elements of a floating-point vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_power_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - /** - * @brief Sum of the squares of the elements of a Q15 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_power_q15( - q15_t * pSrc, - uint32_t blockSize, - q63_t * pResult); - - /** - * @brief Sum of the squares of the elements of a Q7 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_power_q7( - q7_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - /** - * @brief Mean value of a Q7 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_mean_q7( - q7_t * pSrc, - uint32_t blockSize, - q7_t * pResult); - - /** - * @brief Mean value of a Q15 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - void arm_mean_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult); - - /** - * @brief Mean value of a Q31 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - void arm_mean_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - /** - * @brief Mean value of a floating-point vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - void arm_mean_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - /** - * @brief Variance of the elements of a floating-point vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_var_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - /** - * @brief Variance of the elements of a Q31 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_var_q31( - q31_t * pSrc, - uint32_t blockSize, - q63_t * pResult); - - /** - * @brief Variance of the elements of a Q15 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_var_q15( - q15_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - /** - * @brief Root Mean Square of the elements of a floating-point vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_rms_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - /** - * @brief Root Mean Square of the elements of a Q31 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_rms_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - /** - * @brief Root Mean Square of the elements of a Q15 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_rms_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult); - - /** - * @brief Standard deviation of the elements of a floating-point vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_std_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - /** - * @brief Standard deviation of the elements of a Q31 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_std_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - /** - * @brief Standard deviation of the elements of a Q15 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output value. - * @return none. - */ - - void arm_std_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult); - - /** - * @brief Floating-point complex magnitude - * @param[in] *pSrc points to the complex input vector - * @param[out] *pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - * @return none. - */ - - void arm_cmplx_mag_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t numSamples); - - /** - * @brief Q31 complex magnitude - * @param[in] *pSrc points to the complex input vector - * @param[out] *pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - * @return none. - */ - - void arm_cmplx_mag_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t numSamples); - - /** - * @brief Q15 complex magnitude - * @param[in] *pSrc points to the complex input vector - * @param[out] *pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - * @return none. - */ - - void arm_cmplx_mag_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t numSamples); - - /** - * @brief Q15 complex dot product - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] numSamples number of complex samples in each vector - * @param[out] *realResult real part of the result returned here - * @param[out] *imagResult imaginary part of the result returned here - * @return none. - */ - - void arm_cmplx_dot_prod_q15( - q15_t * pSrcA, - q15_t * pSrcB, - uint32_t numSamples, - q31_t * realResult, - q31_t * imagResult); - - /** - * @brief Q31 complex dot product - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] numSamples number of complex samples in each vector - * @param[out] *realResult real part of the result returned here - * @param[out] *imagResult imaginary part of the result returned here - * @return none. - */ - - void arm_cmplx_dot_prod_q31( - q31_t * pSrcA, - q31_t * pSrcB, - uint32_t numSamples, - q63_t * realResult, - q63_t * imagResult); - - /** - * @brief Floating-point complex dot product - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[in] numSamples number of complex samples in each vector - * @param[out] *realResult real part of the result returned here - * @param[out] *imagResult imaginary part of the result returned here - * @return none. - */ - - void arm_cmplx_dot_prod_f32( - float32_t * pSrcA, - float32_t * pSrcB, - uint32_t numSamples, - float32_t * realResult, - float32_t * imagResult); - - /** - * @brief Q15 complex-by-real multiplication - * @param[in] *pSrcCmplx points to the complex input vector - * @param[in] *pSrcReal points to the real input vector - * @param[out] *pCmplxDst points to the complex output vector - * @param[in] numSamples number of samples in each vector - * @return none. - */ - - void arm_cmplx_mult_real_q15( - q15_t * pSrcCmplx, - q15_t * pSrcReal, - q15_t * pCmplxDst, - uint32_t numSamples); - - /** - * @brief Q31 complex-by-real multiplication - * @param[in] *pSrcCmplx points to the complex input vector - * @param[in] *pSrcReal points to the real input vector - * @param[out] *pCmplxDst points to the complex output vector - * @param[in] numSamples number of samples in each vector - * @return none. - */ - - void arm_cmplx_mult_real_q31( - q31_t * pSrcCmplx, - q31_t * pSrcReal, - q31_t * pCmplxDst, - uint32_t numSamples); - - /** - * @brief Floating-point complex-by-real multiplication - * @param[in] *pSrcCmplx points to the complex input vector - * @param[in] *pSrcReal points to the real input vector - * @param[out] *pCmplxDst points to the complex output vector - * @param[in] numSamples number of samples in each vector - * @return none. - */ - - void arm_cmplx_mult_real_f32( - float32_t * pSrcCmplx, - float32_t * pSrcReal, - float32_t * pCmplxDst, - uint32_t numSamples); - - /** - * @brief Minimum value of a Q7 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *result is output pointer - * @param[in] index is the array index of the minimum value in the input buffer. - * @return none. - */ - - void arm_min_q7( - q7_t * pSrc, - uint32_t blockSize, - q7_t * result, - uint32_t * index); - - /** - * @brief Minimum value of a Q15 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output pointer - * @param[in] *pIndex is the array index of the minimum value in the input buffer. - * @return none. - */ - - void arm_min_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult, - uint32_t * pIndex); - - /** - * @brief Minimum value of a Q31 vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output pointer - * @param[out] *pIndex is the array index of the minimum value in the input buffer. - * @return none. - */ - void arm_min_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult, - uint32_t * pIndex); - - /** - * @brief Minimum value of a floating-point vector. - * @param[in] *pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] *pResult is output pointer - * @param[out] *pIndex is the array index of the minimum value in the input buffer. - * @return none. - */ - - void arm_min_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult, - uint32_t * pIndex); - -/** - * @brief Maximum value of a Q7 vector. - * @param[in] *pSrc points to the input buffer - * @param[in] blockSize length of the input vector - * @param[out] *pResult maximum value returned here - * @param[out] *pIndex index of maximum value returned here - * @return none. - */ - - void arm_max_q7( - q7_t * pSrc, - uint32_t blockSize, - q7_t * pResult, - uint32_t * pIndex); - -/** - * @brief Maximum value of a Q15 vector. - * @param[in] *pSrc points to the input buffer - * @param[in] blockSize length of the input vector - * @param[out] *pResult maximum value returned here - * @param[out] *pIndex index of maximum value returned here - * @return none. - */ - - void arm_max_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult, - uint32_t * pIndex); - -/** - * @brief Maximum value of a Q31 vector. - * @param[in] *pSrc points to the input buffer - * @param[in] blockSize length of the input vector - * @param[out] *pResult maximum value returned here - * @param[out] *pIndex index of maximum value returned here - * @return none. - */ - - void arm_max_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult, - uint32_t * pIndex); - -/** - * @brief Maximum value of a floating-point vector. - * @param[in] *pSrc points to the input buffer - * @param[in] blockSize length of the input vector - * @param[out] *pResult maximum value returned here - * @param[out] *pIndex index of maximum value returned here - * @return none. - */ - - void arm_max_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult, - uint32_t * pIndex); - - /** - * @brief Q15 complex-by-complex multiplication - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - * @return none. - */ - - void arm_cmplx_mult_cmplx_q15( - q15_t * pSrcA, - q15_t * pSrcB, - q15_t * pDst, - uint32_t numSamples); - - /** - * @brief Q31 complex-by-complex multiplication - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - * @return none. - */ - - void arm_cmplx_mult_cmplx_q31( - q31_t * pSrcA, - q31_t * pSrcB, - q31_t * pDst, - uint32_t numSamples); - - /** - * @brief Floating-point complex-by-complex multiplication - * @param[in] *pSrcA points to the first input vector - * @param[in] *pSrcB points to the second input vector - * @param[out] *pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - * @return none. - */ - - void arm_cmplx_mult_cmplx_f32( - float32_t * pSrcA, - float32_t * pSrcB, - float32_t * pDst, - uint32_t numSamples); - - /** - * @brief Converts the elements of the floating-point vector to Q31 vector. - * @param[in] *pSrc points to the floating-point input vector - * @param[out] *pDst points to the Q31 output vector - * @param[in] blockSize length of the input vector - * @return none. - */ - void arm_float_to_q31( - float32_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Converts the elements of the floating-point vector to Q15 vector. - * @param[in] *pSrc points to the floating-point input vector - * @param[out] *pDst points to the Q15 output vector - * @param[in] blockSize length of the input vector - * @return none - */ - void arm_float_to_q15( - float32_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Converts the elements of the floating-point vector to Q7 vector. - * @param[in] *pSrc points to the floating-point input vector - * @param[out] *pDst points to the Q7 output vector - * @param[in] blockSize length of the input vector - * @return none - */ - void arm_float_to_q7( - float32_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Converts the elements of the Q31 vector to Q15 vector. - * @param[in] *pSrc is input pointer - * @param[out] *pDst is output pointer - * @param[in] blockSize is the number of samples to process - * @return none. - */ - void arm_q31_to_q15( - q31_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - /** - * @brief Converts the elements of the Q31 vector to Q7 vector. - * @param[in] *pSrc is input pointer - * @param[out] *pDst is output pointer - * @param[in] blockSize is the number of samples to process - * @return none. - */ - void arm_q31_to_q7( - q31_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - /** - * @brief Converts the elements of the Q15 vector to floating-point vector. - * @param[in] *pSrc is input pointer - * @param[out] *pDst is output pointer - * @param[in] blockSize is the number of samples to process - * @return none. - */ - void arm_q15_to_float( - q15_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Converts the elements of the Q15 vector to Q31 vector. - * @param[in] *pSrc is input pointer - * @param[out] *pDst is output pointer - * @param[in] blockSize is the number of samples to process - * @return none. - */ - void arm_q15_to_q31( - q15_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Converts the elements of the Q15 vector to Q7 vector. - * @param[in] *pSrc is input pointer - * @param[out] *pDst is output pointer - * @param[in] blockSize is the number of samples to process - * @return none. - */ - void arm_q15_to_q7( - q15_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @ingroup groupInterpolation - */ - - /** - * @defgroup BilinearInterpolate Bilinear Interpolation - * - * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid. - * The underlying function f(x, y) is sampled on a regular grid and the interpolation process - * determines values between the grid points. - * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension. - * Bilinear interpolation is often used in image processing to rescale images. - * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types. - * - * Algorithm - * \par - * The instance structure used by the bilinear interpolation functions describes a two dimensional data table. - * For floating-point, the instance structure is defined as: - *
-   *   typedef struct
-   *   {
-   *     uint16_t numRows;
-   *     uint16_t numCols;
-   *     float32_t *pData;
-   * } arm_bilinear_interp_instance_f32;
-   * 
- * - * \par - * where numRows specifies the number of rows in the table; - * numCols specifies the number of columns in the table; - * and pData points to an array of size numRows*numCols values. - * The data table pTable is organized in row order and the supplied data values fall on integer indexes. - * That is, table element (x,y) is located at pTable[x + y*numCols] where x and y are integers. - * - * \par - * Let (x, y) specify the desired interpolation point. Then define: - *
-   *     XF = floor(x)
-   *     YF = floor(y)
-   * 
- * \par - * The interpolated output point is computed as: - *
-   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
-   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))
-   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)
-   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)
-   * 
- * Note that the coordinates (x, y) contain integer and fractional components. - * The integer components specify which portion of the table to use while the - * fractional components control the interpolation processor. - * - * \par - * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output. - */ - - /** - * @addtogroup BilinearInterpolate - * @{ - */ - - /** - * - * @brief Floating-point bilinear interpolation. - * @param[in,out] *S points to an instance of the interpolation structure. - * @param[in] X interpolation coordinate. - * @param[in] Y interpolation coordinate. - * @return out interpolated value. - */ - - - __STATIC_INLINE float32_t arm_bilinear_interp_f32( - const arm_bilinear_interp_instance_f32 * S, - float32_t X, - float32_t Y) - { - float32_t out; - float32_t f00, f01, f10, f11; - float32_t *pData = S->pData; - int32_t xIndex, yIndex, index; - float32_t xdiff, ydiff; - float32_t b1, b2, b3, b4; - - xIndex = (int32_t) X; - yIndex = (int32_t) Y; - - /* Care taken for table outside boundary */ - /* Returns zero output when values are outside table boundary */ - if(xIndex < 0 || xIndex > (S->numRows-1) || yIndex < 0 || yIndex > ( S->numCols-1)) - { - return(0); - } - - /* Calculation of index for two nearest points in X-direction */ - index = (xIndex - 1) + (yIndex-1) * S->numCols ; - - - /* Read two nearest points in X-direction */ - f00 = pData[index]; - f01 = pData[index + 1]; - - /* Calculation of index for two nearest points in Y-direction */ - index = (xIndex-1) + (yIndex) * S->numCols; - - - /* Read two nearest points in Y-direction */ - f10 = pData[index]; - f11 = pData[index + 1]; - - /* Calculation of intermediate values */ - b1 = f00; - b2 = f01 - f00; - b3 = f10 - f00; - b4 = f00 - f01 - f10 + f11; - - /* Calculation of fractional part in X */ - xdiff = X - xIndex; - - /* Calculation of fractional part in Y */ - ydiff = Y - yIndex; - - /* Calculation of bi-linear interpolated output */ - out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff; - - /* return to application */ - return (out); - - } - - /** - * - * @brief Q31 bilinear interpolation. - * @param[in,out] *S points to an instance of the interpolation structure. - * @param[in] X interpolation coordinate in 12.20 format. - * @param[in] Y interpolation coordinate in 12.20 format. - * @return out interpolated value. - */ - - __STATIC_INLINE q31_t arm_bilinear_interp_q31( - arm_bilinear_interp_instance_q31 * S, - q31_t X, - q31_t Y) - { - q31_t out; /* Temporary output */ - q31_t acc = 0; /* output */ - q31_t xfract, yfract; /* X, Y fractional parts */ - q31_t x1, x2, y1, y2; /* Nearest output values */ - int32_t rI, cI; /* Row and column indices */ - q31_t *pYData = S->pData; /* pointer to output table values */ - uint32_t nCols = S->numCols; /* num of rows */ - - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - rI = ((X & 0xFFF00000) >> 20u); - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - cI = ((Y & 0xFFF00000) >> 20u); - - /* Care taken for table outside boundary */ - /* Returns zero output when values are outside table boundary */ - if(rI < 0 || rI > (S->numRows-1) || cI < 0 || cI > ( S->numCols-1)) - { - return(0); - } - - /* 20 bits for the fractional part */ - /* shift left xfract by 11 to keep 1.31 format */ - xfract = (X & 0x000FFFFF) << 11u; - - /* Read two nearest output values from the index */ - x1 = pYData[(rI) + nCols * (cI)]; - x2 = pYData[(rI) + nCols * (cI) + 1u]; - - /* 20 bits for the fractional part */ - /* shift left yfract by 11 to keep 1.31 format */ - yfract = (Y & 0x000FFFFF) << 11u; - - /* Read two nearest output values from the index */ - y1 = pYData[(rI) + nCols * (cI + 1)]; - y2 = pYData[(rI) + nCols * (cI + 1) + 1u]; - - /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */ - out = ((q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32)); - acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32)); - - /* x2 * (xfract) * (1-yfract) in 3.29(q29) and adding to acc */ - out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32)); - acc += ((q31_t) ((q63_t) out * (xfract) >> 32)); - - /* y1 * (1 - xfract) * (yfract) in 3.29(q29) and adding to acc */ - out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32)); - acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); - - /* y2 * (xfract) * (yfract) in 3.29(q29) and adding to acc */ - out = ((q31_t) ((q63_t) y2 * (xfract) >> 32)); - acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); - - /* Convert acc to 1.31(q31) format */ - return (acc << 2u); - - } - - /** - * @brief Q15 bilinear interpolation. - * @param[in,out] *S points to an instance of the interpolation structure. - * @param[in] X interpolation coordinate in 12.20 format. - * @param[in] Y interpolation coordinate in 12.20 format. - * @return out interpolated value. - */ - - __STATIC_INLINE q15_t arm_bilinear_interp_q15( - arm_bilinear_interp_instance_q15 * S, - q31_t X, - q31_t Y) - { - q63_t acc = 0; /* output */ - q31_t out; /* Temporary output */ - q15_t x1, x2, y1, y2; /* Nearest output values */ - q31_t xfract, yfract; /* X, Y fractional parts */ - int32_t rI, cI; /* Row and column indices */ - q15_t *pYData = S->pData; /* pointer to output table values */ - uint32_t nCols = S->numCols; /* num of rows */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - rI = ((X & 0xFFF00000) >> 20); - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - cI = ((Y & 0xFFF00000) >> 20); - - /* Care taken for table outside boundary */ - /* Returns zero output when values are outside table boundary */ - if(rI < 0 || rI > (S->numRows-1) || cI < 0 || cI > ( S->numCols-1)) - { - return(0); - } - - /* 20 bits for the fractional part */ - /* xfract should be in 12.20 format */ - xfract = (X & 0x000FFFFF); - - /* Read two nearest output values from the index */ - x1 = pYData[(rI) + nCols * (cI)]; - x2 = pYData[(rI) + nCols * (cI) + 1u]; - - - /* 20 bits for the fractional part */ - /* yfract should be in 12.20 format */ - yfract = (Y & 0x000FFFFF); - - /* Read two nearest output values from the index */ - y1 = pYData[(rI) + nCols * (cI + 1)]; - y2 = pYData[(rI) + nCols * (cI + 1) + 1u]; - - /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */ - - /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */ - /* convert 13.35 to 13.31 by right shifting and out is in 1.31 */ - out = (q31_t) (((q63_t) x1 * (0xFFFFF - xfract)) >> 4u); - acc = ((q63_t) out * (0xFFFFF - yfract)); - - /* x2 * (xfract) * (1-yfract) in 1.51 and adding to acc */ - out = (q31_t) (((q63_t) x2 * (0xFFFFF - yfract)) >> 4u); - acc += ((q63_t) out * (xfract)); - - /* y1 * (1 - xfract) * (yfract) in 1.51 and adding to acc */ - out = (q31_t) (((q63_t) y1 * (0xFFFFF - xfract)) >> 4u); - acc += ((q63_t) out * (yfract)); - - /* y2 * (xfract) * (yfract) in 1.51 and adding to acc */ - out = (q31_t) (((q63_t) y2 * (xfract)) >> 4u); - acc += ((q63_t) out * (yfract)); - - /* acc is in 13.51 format and down shift acc by 36 times */ - /* Convert out to 1.15 format */ - return (acc >> 36); - - } - - /** - * @brief Q7 bilinear interpolation. - * @param[in,out] *S points to an instance of the interpolation structure. - * @param[in] X interpolation coordinate in 12.20 format. - * @param[in] Y interpolation coordinate in 12.20 format. - * @return out interpolated value. - */ - - __STATIC_INLINE q7_t arm_bilinear_interp_q7( - arm_bilinear_interp_instance_q7 * S, - q31_t X, - q31_t Y) - { - q63_t acc = 0; /* output */ - q31_t out; /* Temporary output */ - q31_t xfract, yfract; /* X, Y fractional parts */ - q7_t x1, x2, y1, y2; /* Nearest output values */ - int32_t rI, cI; /* Row and column indices */ - q7_t *pYData = S->pData; /* pointer to output table values */ - uint32_t nCols = S->numCols; /* num of rows */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - rI = ((X & 0xFFF00000) >> 20); - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - cI = ((Y & 0xFFF00000) >> 20); - - /* Care taken for table outside boundary */ - /* Returns zero output when values are outside table boundary */ - if(rI < 0 || rI > (S->numRows-1) || cI < 0 || cI > ( S->numCols-1)) - { - return(0); - } - - /* 20 bits for the fractional part */ - /* xfract should be in 12.20 format */ - xfract = (X & 0x000FFFFF); - - /* Read two nearest output values from the index */ - x1 = pYData[(rI) + nCols * (cI)]; - x2 = pYData[(rI) + nCols * (cI) + 1u]; - - - /* 20 bits for the fractional part */ - /* yfract should be in 12.20 format */ - yfract = (Y & 0x000FFFFF); - - /* Read two nearest output values from the index */ - y1 = pYData[(rI) + nCols * (cI + 1)]; - y2 = pYData[(rI) + nCols * (cI + 1) + 1u]; - - /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */ - out = ((x1 * (0xFFFFF - xfract))); - acc = (((q63_t) out * (0xFFFFF - yfract))); - - /* x2 * (xfract) * (1-yfract) in 2.22 and adding to acc */ - out = ((x2 * (0xFFFFF - yfract))); - acc += (((q63_t) out * (xfract))); - - /* y1 * (1 - xfract) * (yfract) in 2.22 and adding to acc */ - out = ((y1 * (0xFFFFF - xfract))); - acc += (((q63_t) out * (yfract))); - - /* y2 * (xfract) * (yfract) in 2.22 and adding to acc */ - out = ((y2 * (yfract))); - acc += (((q63_t) out * (xfract))); - - /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */ - return (acc >> 40); - - } - - /** - * @} end of BilinearInterpolate group - */ - - - - - - -#ifdef __cplusplus -} -#endif - - -#endif /* _ARM_MATH_H */ - - -/** - * - * End of file. - */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cm4.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cm4.h deleted file mode 100644 index ef818e4d1..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cm4.h +++ /dev/null @@ -1,1689 +0,0 @@ -/**************************************************************************//** - * @file core_cm4.h - * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File - * @version V3.00 - * @date 03. February 2012 - * - * @note - * Copyright (C) 2009-2012 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ -#if defined ( __ICCARM__ ) - #pragma system_include /* treat file as system include file for MISRA check */ -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -#ifndef __CORE_CM4_H_GENERIC -#define __CORE_CM4_H_GENERIC - -/** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions - CMSIS violates the following MISRA-C:2004 rules: - - \li Required Rule 8.5, object/function definition in header file.
- Function definitions in header files are used to allow 'inlining'. - - \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
- Unions are used for effective representation of core registers. - - \li Advisory Rule 19.7, Function-like macro defined.
- Function-like macros are used to allow more efficient code. - */ - - -/******************************************************************************* - * CMSIS definitions - ******************************************************************************/ -/** \ingroup Cortex_M4 - @{ - */ - -/* CMSIS CM4 definitions */ -#define __CM4_CMSIS_VERSION_MAIN (0x03) /*!< [31:16] CMSIS HAL main version */ -#define __CM4_CMSIS_VERSION_SUB (0x00) /*!< [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__ ) - /* add preprocessor checks to define __FPU_USED */ - #define __FPU_USED 0 -#endif - -#include /* standard types definitions */ -#include /* Core Instruction Access */ -#include /* Core Function Access */ -#include /* Compiler specific SIMD Intrinsics */ - -#endif /* __CORE_CM4_H_GENERIC */ - -#ifndef __CMSIS_GENERIC - -#ifndef __CORE_CM4_H_DEPENDANT -#define __CORE_CM4_H_DEPENDANT - -/* check device defines and use defaults */ -#if defined __CHECK_DEVICE_DEFINES - #ifndef __CM4_REV - #define __CM4_REV 0x0000 - #warning "__CM4_REV not defined in device header file; using default!" - #endif - - #ifndef __FPU_PRESENT - #define __FPU_PRESENT 0 - #warning "__FPU_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __MPU_PRESENT - #define __MPU_PRESENT 0 - #warning "__MPU_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __NVIC_PRIO_BITS - #define __NVIC_PRIO_BITS 4 - #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" - #endif - - #ifndef __Vendor_SysTickConfig - #define __Vendor_SysTickConfig 0 - #warning "__Vendor_SysTickConfig not defined in device header file; using default!" - #endif -#endif - -/* IO definitions (access restrictions to peripheral registers) */ -/** - \defgroup CMSIS_glob_defs CMSIS Global Defines - - IO Type Qualifiers are used - \li to specify the access to peripheral variables. - \li for automatic generation of peripheral register debug information. -*/ -#ifdef __cplusplus - #define __I volatile /*!< Defines 'read only' permissions */ -#else - #define __I volatile const /*!< Defines 'read only' permissions */ -#endif -#define __O volatile /*!< Defines 'write only' permissions */ -#define __IO volatile /*!< Defines 'read / write' permissions */ - -/*@} end of group Cortex_M4 */ - - - -/******************************************************************************* - * Register Abstraction - Core Register contain: - - Core Register - - Core NVIC Register - - Core SCB Register - - Core SysTick Register - - Core Debug Register - - Core MPU Register - - Core FPU Register - ******************************************************************************/ -/** \defgroup CMSIS_core_register Defines and Type Definitions - \brief Type definitions and defines for Cortex-M processor based devices. -*/ - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_CORE Status and Control Registers - \brief Core Register type definitions. - @{ - */ - -/** \brief Union type to access the Application Program Status Register (APSR). - */ -typedef union -{ - struct - { -#if (__CORTEX_M != 0x04) - uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ -#else - uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ - uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ - uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ -#endif - uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ - uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ - uint32_t C:1; /*!< bit: 29 Carry condition code flag */ - uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ - uint32_t N:1; /*!< bit: 31 Negative condition code flag */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} APSR_Type; - - -/** \brief Union type to access the Interrupt Program Status Register (IPSR). - */ -typedef union -{ - struct - { - uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ - uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} IPSR_Type; - - -/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). - */ -typedef union -{ - struct - { - uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ -#if (__CORTEX_M != 0x04) - uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ -#else - uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ - uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ - uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ -#endif - uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ - uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ - uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ - uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ - uint32_t C:1; /*!< bit: 29 Carry condition code flag */ - uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ - uint32_t N:1; /*!< bit: 31 Negative condition code flag */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} xPSR_Type; - - -/** \brief Union type to access the Control Registers (CONTROL). - */ -typedef union -{ - struct - { - uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ - uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ - uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ - uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} CONTROL_Type; - -/*@} end of group CMSIS_CORE */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) - \brief Type definitions for the NVIC Registers - @{ - */ - -/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). - */ -typedef struct -{ - __IO uint32_t ISER[8]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ - uint32_t RESERVED0[24]; - __IO uint32_t ICER[8]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ - uint32_t RSERVED1[24]; - __IO uint32_t ISPR[8]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ - uint32_t RESERVED2[24]; - __IO uint32_t ICPR[8]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ - uint32_t RESERVED3[24]; - __IO uint32_t IABR[8]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ - uint32_t RESERVED4[56]; - __IO uint8_t IP[240]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ - uint32_t RESERVED5[644]; - __O uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ -} NVIC_Type; - -/* Software Triggered Interrupt Register Definitions */ -#define NVIC_STIR_INTID_Pos 0 /*!< STIR: INTLINESNUM Position */ -#define NVIC_STIR_INTID_Msk (0x1FFUL << NVIC_STIR_INTID_Pos) /*!< STIR: INTLINESNUM Mask */ - -/*@} end of group CMSIS_NVIC */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_SCB System Control Block (SCB) - \brief Type definitions for the System Control Block Registers - @{ - */ - -/** \brief Structure type to access the System Control Block (SCB). - */ -typedef struct -{ - __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ - __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ - __IO uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ - __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ - __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ - __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ - __IO uint8_t SHP[12]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ - __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ - __IO uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ - __IO uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ - __IO uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ - __IO uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ - __IO uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ - __IO uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ - __I uint32_t PFR[2]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ - __I uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ - __I uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ - __I uint32_t MMFR[4]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ - __I uint32_t ISAR[5]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ - uint32_t RESERVED0[5]; - __IO uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ -} SCB_Type; - -/* SCB CPUID Register Definitions */ -#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ -#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ - -#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ -#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ - -#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ -#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ - -#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ -#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ - -#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ -#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ -#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ - -#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ -#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ - -#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ -#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ - -#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ -#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ - -#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ -#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ - -#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ -#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ - -#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ -#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ - -#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ -#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ - -#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ -#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ - -#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ -#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ - -/* SCB Vector Table Offset Register Definitions */ -#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ -#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ - -/* SCB Application Interrupt and Reset Control Register Definitions */ -#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ -#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ - -#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ -#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ - -#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ -#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ - -#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ -#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ - -#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ -#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ - -#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ -#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ - -#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ -#define SCB_AIRCR_VECTRESET_Msk (1UL << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ - -/* SCB System Control Register Definitions */ -#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ -#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ - -#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ -#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ - -#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ -#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ - -/* SCB Configuration Control Register Definitions */ -#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ -#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ - -#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ -#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ - -#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ -#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ - -#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ -#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ - -#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ -#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ - -#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ -#define SCB_CCR_NONBASETHRDENA_Msk (1UL << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ - -/* SCB System Handler Control and State Register Definitions */ -#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ -#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ - -#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ -#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ - -#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ -#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ - -#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ -#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ - -#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ -#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ - -#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ -#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ - -#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ -#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ - -#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ -#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ - -#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ -#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ - -#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ -#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ - -#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ -#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ - -#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ -#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ - -#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ -#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ - -#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ -#define SCB_SHCSR_MEMFAULTACT_Msk (1UL << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ - -/* SCB Configurable Fault Status Registers Definitions */ -#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ -#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ - -#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ -#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ - -#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ -#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ - -/* SCB Hard Fault Status Registers Definitions */ -#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ -#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ - -#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ -#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ - -#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ -#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ - -/* SCB Debug Fault Status Register Definitions */ -#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ -#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ - -#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ -#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ - -#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ -#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ - -#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ -#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ - -#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ -#define SCB_DFSR_HALTED_Msk (1UL << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ - -/*@} end of group CMSIS_SCB */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) - \brief Type definitions for the System Control and ID Register not in the SCB - @{ - */ - -/** \brief Structure type to access the System Control and ID Register not in the SCB. - */ -typedef struct -{ - uint32_t RESERVED0[1]; - __I uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ - __IO uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ -} SCnSCB_Type; - -/* Interrupt Controller Type Register Definitions */ -#define SCnSCB_ICTR_INTLINESNUM_Pos 0 /*!< ICTR: INTLINESNUM Position */ -#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos) /*!< ICTR: INTLINESNUM Mask */ - -/* Auxiliary Control Register Definitions */ -#define SCnSCB_ACTLR_DISOOFP_Pos 9 /*!< ACTLR: DISOOFP Position */ -#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ - -#define SCnSCB_ACTLR_DISFPCA_Pos 8 /*!< ACTLR: DISFPCA Position */ -#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ - -#define SCnSCB_ACTLR_DISFOLD_Pos 2 /*!< ACTLR: DISFOLD Position */ -#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ - -#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1 /*!< ACTLR: DISDEFWBUF Position */ -#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ - -#define SCnSCB_ACTLR_DISMCYCINT_Pos 0 /*!< ACTLR: DISMCYCINT Position */ -#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos) /*!< ACTLR: DISMCYCINT Mask */ - -/*@} end of group CMSIS_SCnotSCB */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_SysTick System Tick Timer (SysTick) - \brief Type definitions for the System Timer Registers. - @{ - */ - -/** \brief Structure type to access the System Timer (SysTick). - */ -typedef struct -{ - __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ - __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ - __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ - __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ -} SysTick_Type; - -/* SysTick Control / Status Register Definitions */ -#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ -#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ - -#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ -#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ - -#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ -#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ - -#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ -#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ - -/* SysTick Reload Register Definitions */ -#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ -#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ - -/* SysTick Current Register Definitions */ -#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ -#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ - -/* SysTick Calibration Register Definitions */ -#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ -#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ - -#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ -#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ - -#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ -#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ - -/*@} end of group CMSIS_SysTick */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) - \brief Type definitions for the Instrumentation Trace Macrocell (ITM) - @{ - */ - -/** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). - */ -typedef struct -{ - __O union - { - __O uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ - __O uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ - __O uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ - } PORT [32]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ - uint32_t RESERVED0[864]; - __IO uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ - uint32_t RESERVED1[15]; - __IO uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ - uint32_t RESERVED2[15]; - __IO uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ -} 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_TXENA_Pos 3 /*!< ITM TCR: TXENA Position */ -#define ITM_TCR_TXENA_Msk (1UL << ITM_TCR_TXENA_Pos) /*!< ITM TCR: TXENA 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 */ - -/*@}*/ /* 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_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ -#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ - -#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ -#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ - -#define MPU_RASR_ENABLE_Pos 0 /*!< MPU RASR: Region enable bit Position */ -#define MPU_RASR_ENABLE_Msk (1UL << MPU_RASR_ENABLE_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ - -/*@} end of group CMSIS_MPU */ -#endif - - -#if (__FPU_PRESENT == 1) -/** \ingroup CMSIS_core_register - \defgroup CMSIS_FPU Floating Point Unit (FPU) - \brief Type definitions for the Floating Point Unit (FPU) - @{ - */ - -/** \brief Structure type to access the Floating Point Unit (FPU). - */ -typedef struct -{ - uint32_t RESERVED0[1]; - __IO uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ - __IO uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ - __IO uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ - __I uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ - __I uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ -} FPU_Type; - -/* Floating-Point Context Control Register */ -#define FPU_FPCCR_ASPEN_Pos 31 /*!< FPCCR: ASPEN bit Position */ -#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ - -#define FPU_FPCCR_LSPEN_Pos 30 /*!< FPCCR: LSPEN Position */ -#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ - -#define FPU_FPCCR_MONRDY_Pos 8 /*!< FPCCR: MONRDY Position */ -#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ - -#define FPU_FPCCR_BFRDY_Pos 6 /*!< FPCCR: BFRDY Position */ -#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ - -#define FPU_FPCCR_MMRDY_Pos 5 /*!< FPCCR: MMRDY Position */ -#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ - -#define FPU_FPCCR_HFRDY_Pos 4 /*!< FPCCR: HFRDY Position */ -#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ - -#define FPU_FPCCR_THREAD_Pos 3 /*!< FPCCR: processor mode bit Position */ -#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ - -#define FPU_FPCCR_USER_Pos 1 /*!< FPCCR: privilege level bit Position */ -#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ - -#define FPU_FPCCR_LSPACT_Pos 0 /*!< FPCCR: Lazy state preservation active bit Position */ -#define FPU_FPCCR_LSPACT_Msk (1UL << FPU_FPCCR_LSPACT_Pos) /*!< FPCCR: Lazy state preservation active bit Mask */ - -/* Floating-Point Context Address Register */ -#define FPU_FPCAR_ADDRESS_Pos 3 /*!< FPCAR: ADDRESS bit Position */ -#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ - -/* Floating-Point Default Status Control Register */ -#define FPU_FPDSCR_AHP_Pos 26 /*!< FPDSCR: AHP bit Position */ -#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ - -#define FPU_FPDSCR_DN_Pos 25 /*!< FPDSCR: DN bit Position */ -#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ - -#define FPU_FPDSCR_FZ_Pos 24 /*!< FPDSCR: FZ bit Position */ -#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ - -#define FPU_FPDSCR_RMode_Pos 22 /*!< FPDSCR: RMode bit Position */ -#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ - -/* Media and FP Feature Register 0 */ -#define FPU_MVFR0_FP_rounding_modes_Pos 28 /*!< MVFR0: FP rounding modes bits Position */ -#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ - -#define FPU_MVFR0_Short_vectors_Pos 24 /*!< MVFR0: Short vectors bits Position */ -#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ - -#define FPU_MVFR0_Square_root_Pos 20 /*!< MVFR0: Square root bits Position */ -#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ - -#define FPU_MVFR0_Divide_Pos 16 /*!< MVFR0: Divide bits Position */ -#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ - -#define FPU_MVFR0_FP_excep_trapping_Pos 12 /*!< MVFR0: FP exception trapping bits Position */ -#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ - -#define FPU_MVFR0_Double_precision_Pos 8 /*!< MVFR0: Double-precision bits Position */ -#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ - -#define FPU_MVFR0_Single_precision_Pos 4 /*!< MVFR0: Single-precision bits Position */ -#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ - -#define FPU_MVFR0_A_SIMD_registers_Pos 0 /*!< MVFR0: A_SIMD registers bits Position */ -#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL << FPU_MVFR0_A_SIMD_registers_Pos) /*!< MVFR0: A_SIMD registers bits Mask */ - -/* Media and FP Feature Register 1 */ -#define FPU_MVFR1_FP_fused_MAC_Pos 28 /*!< MVFR1: FP fused MAC bits Position */ -#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ - -#define FPU_MVFR1_FP_HPFP_Pos 24 /*!< MVFR1: FP HPFP bits Position */ -#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ - -#define FPU_MVFR1_D_NaN_mode_Pos 4 /*!< MVFR1: D_NaN mode bits Position */ -#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ - -#define FPU_MVFR1_FtZ_mode_Pos 0 /*!< MVFR1: FtZ mode bits Position */ -#define FPU_MVFR1_FtZ_mode_Msk (0xFUL << FPU_MVFR1_FtZ_mode_Pos) /*!< MVFR1: FtZ mode bits Mask */ - -/*@} end of group CMSIS_FPU */ -#endif - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) - \brief Type definitions for the Core Debug Registers - @{ - */ - -/** \brief Structure type to access the Core Debug Register (CoreDebug). - */ -typedef struct -{ - __IO uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ - __O uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ - __IO uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ - __IO uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ -} CoreDebug_Type; - -/* Debug Halting Control and Status Register */ -#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ -#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ - -#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ -#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ - -#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ -#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ - -#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ -#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ - -#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ -#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ - -#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ -#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ - -#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ -#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ - -#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ -#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ - -#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ -#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ - -#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ -#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ - -#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ -#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ - -#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ -#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ - -/* Debug Core Register Selector Register */ -#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ -#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ - -#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ -#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ - -/* Debug Exception and Monitor Control Register */ -#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ -#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ - -#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ -#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ - -#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ -#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ - -#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ -#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ - -#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ -#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ - -#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ -#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ - -#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ -#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ - -#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ -#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ - -#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ -#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ - -#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ -#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ - -#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ -#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ - -#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ -#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ - -#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ -#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ - -/*@} end of group CMSIS_CoreDebug */ - - -/** \ingroup CMSIS_core_register - \defgroup CMSIS_core_base Core Definitions - \brief Definitions for base addresses, unions, and structures. - @{ - */ - -/* Memory mapping of Cortex-M4 Hardware */ -#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ -#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ -#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ -#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ -#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ -#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ -#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ -#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ - -#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ -#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ -#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ -#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ -#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ -#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ -#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ -#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ - -#if (__MPU_PRESENT == 1) - #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ - #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ -#endif - -#if (__FPU_PRESENT == 1) - #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ - #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ -#endif - -/*@} */ - - - -/******************************************************************************* - * Hardware Abstraction Layer - Core Function Interface contains: - - Core NVIC Functions - - Core SysTick Functions - - Core Debug Functions - - Core Register Access Functions - ******************************************************************************/ -/** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference -*/ - - - -/* ########################## NVIC functions #################################### */ -/** \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_NVICFunctions NVIC Functions - \brief Functions that manage interrupts and exceptions via the NVIC. - @{ - */ - -/** \brief Set Priority Grouping - - The function sets the priority grouping field using the required unlock sequence. - The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. - Only values from 0..7 are used. - In case of a conflict between priority grouping and available - priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. - - \param [in] PriorityGroup Priority grouping field. - */ -__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) -{ - uint32_t reg_value; - uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07); /* only values 0..7 are used */ - - reg_value = SCB->AIRCR; /* read old register configuration */ - reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ - reg_value = (reg_value | - ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ - SCB->AIRCR = reg_value; -} - - -/** \brief Get Priority Grouping - - The function reads the priority grouping field from the NVIC Interrupt Controller. - - \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). - */ -__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void) -{ - return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ -} - - -/** \brief Enable External Interrupt - - The function enables a device-specific interrupt in the NVIC interrupt controller. - - \param [in] IRQn External interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) -{ -/* NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); enable interrupt */ - NVIC->ISER[(uint32_t)((int32_t)IRQn) >> 5] = (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); /* enable interrupt */ -} - - -/** \brief Disable External Interrupt - - The function disables a device-specific interrupt in the NVIC interrupt controller. - - \param [in] IRQn External interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) -{ - NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ -} - - -/** \brief Get Pending Interrupt - - The function reads the pending register in the NVIC and returns the pending bit - for the specified interrupt. - - \param [in] IRQn Interrupt number. - - \return 0 Interrupt status is not pending. - \return 1 Interrupt status is pending. - */ -__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) -{ - return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ -} - - -/** \brief Set Pending Interrupt - - The function sets the pending bit of an external interrupt. - - \param [in] IRQn Interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ -} - - -/** \brief Clear Pending Interrupt - - The function clears the pending bit of an external interrupt. - - \param [in] IRQn External interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ -} - - -/** \brief Get Active Interrupt - - The function reads the active register in NVIC and returns the active bit. - - \param [in] IRQn Interrupt number. - - \return 0 Interrupt status is not active. - \return 1 Interrupt status is active. - */ -__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) -{ - return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ -} - - -/** \brief Set Interrupt Priority - - The function sets the priority of an interrupt. - - \note The priority cannot be set for every core interrupt. - - \param [in] IRQn Interrupt number. - \param [in] priority Priority to set. - */ -__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if(IRQn < 0) { - SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M System Interrupts */ - else { - NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ -} - - -/** \brief Get Interrupt Priority - - The function reads the priority of an interrupt. The interrupt - number can be positive to specify an external (device specific) - interrupt, or negative to specify an internal (core) interrupt. - - - \param [in] IRQn Interrupt number. - \return Interrupt Priority. Value is aligned automatically to the implemented - priority bits of the microcontroller. - */ -__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) -{ - - if(IRQn < 0) { - return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M system interrupts */ - else { - return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ -} - - -/** \brief Encode Priority - - The function encodes the priority for an interrupt with the given priority group, - preemptive priority value, and subpriority value. - In case of a conflict between priority grouping and available - priority bits (__NVIC_PRIO_BITS), the samllest possible priority group is set. - - \param [in] PriorityGroup Used priority group. - \param [in] PreemptPriority Preemptive priority value (starting from 0). - \param [in] SubPriority Subpriority value (starting from 0). - \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). - */ -__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - return ( - ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | - ((SubPriority & ((1 << (SubPriorityBits )) - 1))) - ); -} - - -/** \brief Decode Priority - - The function decodes an interrupt priority value with a given priority group to - preemptive priority value and subpriority value. - In case of a conflict between priority grouping and available - priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - - \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). - \param [in] PriorityGroup Used priority group. - \param [out] pPreemptPriority Preemptive priority value (starting from 0). - \param [out] pSubPriority Subpriority value (starting from 0). - */ -__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); - *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); -} - - -/** \brief System Reset - - The function initiates a system reset request to reset the MCU. - */ -__STATIC_INLINE void NVIC_SystemReset(void) -{ - __DSB(); /* Ensure all outstanding memory accesses included - buffered write are completed before reset */ - SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | - SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ - __DSB(); /* Ensure completion of memory access */ - while(1); /* wait until reset */ -} - -/*@} end of CMSIS_Core_NVICFunctions */ - - - -/* ################################## SysTick function ############################################ */ -/** \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_SysTickFunctions SysTick Functions - \brief Functions that configure the System. - @{ - */ - -#if (__Vendor_SysTickConfig == 0) - -/** \brief System Tick Configuration - - The function initializes the System Timer and its interrupt, and starts the System Tick Timer. - Counter is in free running mode to generate periodic interrupts. - - \param [in] ticks Number of ticks between two interrupts. - - \return 0 Function succeeded. - \return 1 Function failed. - - \note When the variable __Vendor_SysTickConfig is set to 1, then the - function SysTick_Config is not included. In this case, the file device.h - must contain a vendor-specific implementation of this function. - - */ -__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ - - SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 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/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cm4_simd.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cm4_simd.h deleted file mode 100644 index 34b395a04..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cm4_simd.h +++ /dev/null @@ -1,649 +0,0 @@ -/**************************************************************************//** - * @file core_cm4_simd.h - * @brief CMSIS Cortex-M4 SIMD Header File - * @version V3.00 - * @date 19. January 2012 - * - * @note - * Copyright (C) 2010-2012 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#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) ) - - -/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ - - - -#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ - -/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ -#include - -/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ - - - -#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ -/* TI CCS specific functions */ - -/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ -#include - -/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ - - - -#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -#define __SSAT16(ARG1,ARG2) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1); \ - __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ - __RES; \ - }) - -#define __USAT16(ARG1,ARG2) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1); \ - __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ - __RES; \ - }) - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1) -{ - uint32_t result; - - __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1) -{ - uint32_t result; - - __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -#define __SMLALD(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \ - __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ - (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ - }) - -#define __SMLALDX(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \ - __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ - (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ - }) - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -#define __SMLSLD(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \ - __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ - (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ - }) - -#define __SMLSLDX(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \ - __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ - (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ - }) - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SEL (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -#define __PKHBT(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ - __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ - __RES; \ - }) - -#define __PKHTB(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ - if (ARG3 == 0) \ - __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ - else \ - __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ - __RES; \ - }) - -/*-- 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/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cmFunc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cmFunc.h deleted file mode 100644 index 1991ae3d9..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cmFunc.h +++ /dev/null @@ -1,616 +0,0 @@ -/**************************************************************************//** - * @file core_cmFunc.h - * @brief CMSIS Cortex-M Core Function Access Header File - * @version V3.00 - * @date 19. January 2012 - * - * @note - * Copyright (C) 2009-2012 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#ifndef __CORE_CMFUNC_H -#define __CORE_CMFUNC_H - - -/* ########################### Core Function Access ########################### */ -/** \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions - @{ - */ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -#if (__ARMCC_VERSION < 400677) - #error "Please use ARM Compiler Toolchain V4.0.677 or later!" -#endif - -/* intrinsic void __enable_irq(); */ -/* intrinsic void __disable_irq(); */ - -/** \brief Get Control Register - - This function returns the content of the Control Register. - - \return Control Register value - */ -__STATIC_INLINE uint32_t __get_CONTROL(void) -{ - register uint32_t __regControl __ASM("control"); - return(__regControl); -} - - -/** \brief Set Control Register - - This function writes the given value to the Control Register. - - \param [in] control Control Register value to set - */ -__STATIC_INLINE void __set_CONTROL(uint32_t control) -{ - register uint32_t __regControl __ASM("control"); - __regControl = control; -} - - -/** \brief Get IPSR Register - - This function returns the content of the IPSR Register. - - \return IPSR Register value - */ -__STATIC_INLINE uint32_t __get_IPSR(void) -{ - register uint32_t __regIPSR __ASM("ipsr"); - return(__regIPSR); -} - - -/** \brief Get APSR Register - - This function returns the content of the APSR Register. - - \return APSR Register value - */ -__STATIC_INLINE uint32_t __get_APSR(void) -{ - register uint32_t __regAPSR __ASM("apsr"); - return(__regAPSR); -} - - -/** \brief Get xPSR Register - - This function returns the content of the xPSR Register. - - \return xPSR Register value - */ -__STATIC_INLINE uint32_t __get_xPSR(void) -{ - register uint32_t __regXPSR __ASM("xpsr"); - return(__regXPSR); -} - - -/** \brief Get Process Stack Pointer - - This function returns the current value of the Process Stack Pointer (PSP). - - \return PSP Register value - */ -__STATIC_INLINE uint32_t __get_PSP(void) -{ - register uint32_t __regProcessStackPointer __ASM("psp"); - return(__regProcessStackPointer); -} - - -/** \brief Set Process Stack Pointer - - This function assigns the given value to the Process Stack Pointer (PSP). - - \param [in] topOfProcStack Process Stack Pointer value to set - */ -__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) -{ - register uint32_t __regProcessStackPointer __ASM("psp"); - __regProcessStackPointer = topOfProcStack; -} - - -/** \brief Get Main Stack Pointer - - This function returns the current value of the Main Stack Pointer (MSP). - - \return MSP Register value - */ -__STATIC_INLINE uint32_t __get_MSP(void) -{ - register uint32_t __regMainStackPointer __ASM("msp"); - return(__regMainStackPointer); -} - - -/** \brief Set Main Stack Pointer - - This function assigns the given value to the Main Stack Pointer (MSP). - - \param [in] topOfMainStack Main Stack Pointer value to set - */ -__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) -{ - register uint32_t __regMainStackPointer __ASM("msp"); - __regMainStackPointer = topOfMainStack; -} - - -/** \brief Get Priority Mask - - This function returns the current state of the priority mask bit from the Priority Mask Register. - - \return Priority Mask value - */ -__STATIC_INLINE uint32_t __get_PRIMASK(void) -{ - register uint32_t __regPriMask __ASM("primask"); - return(__regPriMask); -} - - -/** \brief Set Priority Mask - - This function assigns the given value to the Priority Mask Register. - - \param [in] priMask Priority Mask - */ -__STATIC_INLINE void __set_PRIMASK(uint32_t priMask) -{ - register uint32_t __regPriMask __ASM("primask"); - __regPriMask = (priMask); -} - - -#if (__CORTEX_M >= 0x03) - -/** \brief Enable FIQ - - This function enables FIQ interrupts by clearing the F-bit in the CPSR. - Can only be executed in Privileged modes. - */ -#define __enable_fault_irq __enable_fiq - - -/** \brief Disable FIQ - - This function disables FIQ interrupts by setting the F-bit in the CPSR. - Can only be executed in Privileged modes. - */ -#define __disable_fault_irq __disable_fiq - - -/** \brief Get Base Priority - - This function returns the current value of the Base Priority register. - - \return Base Priority register value - */ -__STATIC_INLINE uint32_t __get_BASEPRI(void) -{ - register uint32_t __regBasePri __ASM("basepri"); - return(__regBasePri); -} - - -/** \brief Set Base Priority - - This function assigns the given value to the Base Priority register. - - \param [in] basePri Base Priority value to set - */ -__STATIC_INLINE void __set_BASEPRI(uint32_t basePri) -{ - register uint32_t __regBasePri __ASM("basepri"); - __regBasePri = (basePri & 0xff); -} - - -/** \brief Get Fault Mask - - This function returns the current value of the Fault Mask register. - - \return Fault Mask register value - */ -__STATIC_INLINE uint32_t __get_FAULTMASK(void) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - return(__regFaultMask); -} - - -/** \brief Set Fault Mask - - This function assigns the given value to the Fault Mask register. - - \param [in] faultMask Fault Mask value to set - */ -__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - __regFaultMask = (faultMask & (uint32_t)1); -} - -#endif /* (__CORTEX_M >= 0x03) */ - - -#if (__CORTEX_M == 0x04) - -/** \brief Get FPSCR - - This function returns the current value of the Floating Point Status/Control register. - - \return Floating Point Status/Control register value - */ -__STATIC_INLINE uint32_t __get_FPSCR(void) -{ -#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) - register uint32_t __regfpscr __ASM("fpscr"); - return(__regfpscr); -#else - return(0); -#endif -} - - -/** \brief Set FPSCR - - This function assigns the given value to the Floating Point Status/Control register. - - \param [in] fpscr Floating Point Status/Control value to set - */ -__STATIC_INLINE void __set_FPSCR(uint32_t fpscr) -{ -#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) - register uint32_t __regfpscr __ASM("fpscr"); - __regfpscr = (fpscr); -#endif -} - -#endif /* (__CORTEX_M == 0x04) */ - - -#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ - -#include - - -#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ -/* TI CCS specific functions */ - -#include - - -#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -/** \brief Enable IRQ Interrupts - - This function enables IRQ interrupts by clearing the I-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void) -{ - __ASM volatile ("cpsie i"); -} - - -/** \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"); -} - - -/** \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) ); -} - - -/** \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) ); -} - - -/** \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) ); -} - - -/** \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) ); -} - - -#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"); -} - - -/** \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"); -} - - -/** \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) ); -} - - -/** \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) ); -} - -#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; - - __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); - 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) - __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) ); -#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/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cmInstr.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cmInstr.h deleted file mode 100644 index 7981634e7..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/Include/core_cmInstr.h +++ /dev/null @@ -1,618 +0,0 @@ -/**************************************************************************//** - * @file core_cmInstr.h - * @brief CMSIS Cortex-M Core Instruction Access Header File - * @version V3.00 - * @date 07. February 2012 - * - * @note - * Copyright (C) 2009-2012 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#ifndef __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 - */ -__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) -{ - rev16 r0, r0 - bx lr -} - - -/** \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__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value) -{ - revsh r0, r0 - bx lr -} - - -/** \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 - - -#if (__CORTEX_M >= 0x03) - -/** \brief Reverse bit order of value - - This function reverses the bit order of the given value. - - \param [in] value Value to reverse - \return Reversed value - */ -#define __RBIT __rbit - - -/** \brief LDR Exclusive (8 bit) - - This function performs a exclusive LDR command for 8 bit value. - - \param [in] ptr Pointer to data - \return value of type uint8_t at (*ptr) - */ -#define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) - - -/** \brief LDR Exclusive (16 bit) - - This function performs a exclusive LDR command for 16 bit values. - - \param [in] ptr Pointer to data - \return value of type uint16_t at (*ptr) - */ -#define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) - - -/** \brief LDR Exclusive (32 bit) - - This function performs a exclusive LDR command for 32 bit values. - - \param [in] ptr Pointer to data - \return value of type uint32_t at (*ptr) - */ -#define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) - - -/** \brief STR Exclusive (8 bit) - - This function performs a exclusive STR command for 8 bit values. - - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -#define __STREXB(value, ptr) __strex(value, ptr) - - -/** \brief STR Exclusive (16 bit) - - This function performs a exclusive STR command for 16 bit values. - - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -#define __STREXH(value, ptr) __strex(value, ptr) - - -/** \brief STR Exclusive (32 bit) - - This function performs a exclusive STR command for 32 bit values. - - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -#define __STREXW(value, ptr) __strex(value, ptr) - - -/** \brief Remove the exclusive lock - - This function removes the exclusive lock which is created by LDREX. - - */ -#define __CLREX __clrex - - -/** \brief Signed Saturate - - This function saturates a signed value. - - \param [in] value Value to be saturated - \param [in] sat Bit position to saturate to (1..32) - \return Saturated value - */ -#define __SSAT __ssat - - -/** \brief Unsigned Saturate - - This function saturates an unsigned value. - - \param [in] value Value to be saturated - \param [in] sat Bit position to saturate to (0..31) - \return Saturated value - */ -#define __USAT __usat - - -/** \brief Count leading zeros - - This function counts the number of leading zeros of a data value. - - \param [in] value Value to count the leading zeros - \return number of leading zeros in value - */ -#define __CLZ __clz - -#endif /* (__CORTEX_M >= 0x03) */ - - - -#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ - -#include - - -#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ -/* TI CCS specific functions */ - -#include - - -#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -/** \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) -{ - uint32_t result; - - __ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - - -/** \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" : "=r" (result) : "r" (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) -{ - uint32_t result; - - __ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - - -/** \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) -{ - - __ASM volatile ("ror %0, %0, %1" : "+r" (op1) : "r" (op2) ); - return(op1); -} - - -#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) -{ - uint8_t result; - - __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) ); - 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) -{ - uint16_t result; - - __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) ); - 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) : "r" (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) : "r" (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) : "r" (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) : "r" (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"); -} - - -/** \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) -{ - uint8_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/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/README.txt b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/README.txt deleted file mode 100644 index efa2ad16e..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/README.txt +++ /dev/null @@ -1,37 +0,0 @@ -* ------------------------------------------------------------------- -* Copyright (C) 2011 ARM Limited. All rights reserved. -* -* Date: 11 October 2011 -* Revision: V3.00 -* -* Project: Cortex Microcontroller Software Interface Standard (CMSIS) -* Title: Release Note for CMSIS -* -* ------------------------------------------------------------------- - - -NOTE - Open the index.html file to access CMSIS documentation - - -The Cortex Microcontroller Software Interface Standard (CMSIS) provides a single standard across all -Cortex-Mx processor series vendors. It enables code re-use and code sharing across software projects -and reduces time-to-market for new embedded applications. - -CMSIS is released under the terms of the end user license agreement ("CMSIS END USER LICENCE AGREEMENT.pdf"). -Any user of the software package is bound to the terms and conditions of the end user license agreement. - - -You will find the following sub-directories: - -Documentation - Contains CMSIS documentation. - -DSP_Lib - MDK project files, Examples and source files etc.. to build the - CMSIS DSP Software Library for Cortex-M0, Cortex-M3, Cortex-M4 processors. - -Include - CMSIS Core Support and CMSIS DSP Include Files. - -Lib - CMSIS DSP Libraries. - -RTOS - CMSIS RTOS API template header file. - -SVD - CMSIS SVD Schema files and Conversion Utility. diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/license.txt b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/license.txt deleted file mode 100644 index b220574a5..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ASF/thirdparty/CMSIS/license.txt +++ /dev/null @@ -1,167 +0,0 @@ -END USER LICENCE AGREEMENT FOR THE CORTEX MICROCONTROLLER SOFTWARE INTERFACE -STANDARD (CMSIS) SPECIFICATION AND SOFTWARE - -THIS END USER LICENCE AGREEMENT ("LICENCE") IS A LEGAL AGREEMENT BETWEEN YOU (EITHER A -SINGLE INDIVIDUAL, OR SINGLE LEGAL ENTITY) AND ARM LIMITED ("ARM") FOR THE USE OF THE -CMSIS SPECIFICATION, EXAMPLE CODE, DSP LIBRARY SPECIFICATION AND DSP LIBRARY -IMPLEMENTATION AS SUCH TERMS ARE DEFINED BELOW (COLLECTIVELY, THE "ARM -DELIVERABLES"). ARM IS ONLY WILLING TO LICENSE THE ARM DELIVERABLES TO YOU ON CONDITION -THAT YOU ACCEPT ALL OF THE TERMS IN THIS LICENCE. BY CLICKING "I AGREE", OR BY INSTALLING -OR OTHERWISE USING OR COPYING THE ARM DELIVERABLES YOU INDICATE THAT YOU AGREE TO -BE BOUND BY ALL THE TERMS OF THIS LICENCE. IF YOU DO NOT AGREE TO THE TERMS OF THIS -LICENCE, ARM IS UNWILLING TO LICENSE YOU TO USE THE ARM DELIVERABLES AND YOU MAY NOT -INSTALL, USE OR COPY THE ARM DELIVERABLES. - -"CMSIS Specification" means any documentation and C programming language files defining the application -programming interface, naming and coding conventions of the Cortex Microcontroller Software Interface -Standard (CMSIS) as well as the System View Description (SVD) documentation and associated XML schema -file. Notwithstanding the foregoing, "CMSIS Specification" shall not include (i) the implementation of other -published specifications referenced in the CMSIS Specification; (ii) any enabling technologies that may be -necessary to make or use any product or portion thereof that complies with the CMSIS Specification, but are not -themselves expressly set forth in the CMSIS Specification (e.g. compiler front ends, code generators, back ends, -libraries or other compiler, assembler or linker technologies; validation or debug software or hardware; -applications, operating system or driver software; RISC architecture; processor microarchitecture); (iii) -maskworks and physical layouts of integrated circuit designs; or (iv) RTL or other high level representations of -integrated circuit designs. - -"DSP Library Implementation" means any C programming language source code implementing the functionality -of the digital signal processor (DSP) algorithms and the application programming interface as defined in the DSP -Library Specification. The DSP Library Implementation makes use of CMSIS application programming interface -and therefore is targeted at Cortex-M class processors. - -"DSP Library Specification" means the DSP library documentation and C programming language file defining the -application programming interface of the DSP Library Implementation. Notwithstanding the foregoing, "DSP -Library Specification" shall not include (i) the implementation of other published specifications referenced in the -DSP Library Specification; (ii) any enabling technologies that may be necessary to make or use any product or -portion thereof that complies with the DSP Library Specification, but are not themselves expressly set forth in the -DSP Library Specification (e.g. compiler front ends, code generators, back ends, libraries or other compiler, -assembler or linker technologies; validation or debug software or hardware; applications, operating system or -driver software; RISC architecture; processor microarchitecture); (iii) maskworks and physical layouts of -integrated circuit designs; or (iv) RTL or other high level representations of integrated circuit designs. - -"Example Code" means any files in C, C++ or ARM assembly programming languages, associated project and -configuration files that demonstrate the usage of the CMSIS Specification, the DSP Library Specification and the -DSP Library Implementation, for microprocessors or device specific software applications that are for use with -microprocessors. - -1. LICENCE GRANTS. - -1.1 ARM hereby grants to you, subject to the terms and conditions of this Licence, a non-exclusive, nontransferable -licence, to; - -(i) use and copy the CMSIS Specification for the purpose of developing, having developed, manufacturing, -having manufactured, offering to sell, selling, supplying or otherwise distributing products that comply with the -CMSIS Specification, provided that you preserve any copyright notices which are included with, or in, the CMSIS -Specification and provided that you do not use ARM's name, logo or trademarks to market such products; - -(ii) use, copy, and modify (solely to the extent necessary to incorporate the whole or any part of the DSP Library -Specification into your documentation), the DSP Library Specification, for the purpose of developing, having -developed, manufacturing, having manufactured, offering to sell, selling, supplying or otherwise distributing -products that comply with the DSP Library Specification, and distribute and have distributed any documentation -created by or for you that has been derived from the DSP Library Specification with such products, provided that -you preserve any copyright notices which are included with, or in, the DSP Library Specification and provided that -you do not use ARM's name, logo or trademarks to market such products; - -(iii) use, copy, modify and sublicense the Example Code solely for the purpose of developing, having developed, -manufacturing, having manufactured, offering to sell, selling, supplying or otherwise distributing products that -comply with either or both the CMSIS Specification and the DSP Library Specification, provided that you preserve -any copyright notices which are included with, or in, the Example Code and that you do not use ARM's name, -logo or trademarks to market such products; - -(iv) use, copy and modify (provided that the logical functionality and the application programming interface of the -DSP Library Implementation are maintained) the DSP Library Implementation, solely for the purposes of -developing; (a) software applications for use with microprocessors manufactured or simulated under licence from -ARM ("Software Applications"); and (b) tools that are designed to develop software programs for use with -microprocessors manufactured or simulated under licence from ARM ("Tools"); and - -(v) subject to clause 1.1(vi) below; (a) distribute and sublicense the use of the DSP Library Implementation -(including any modified forms thereof created under Clause 1.1(iv) above) in binary or source format, solely as -incorporated into Software Library Applications and Tools to third parties; and (b) sublicense to such third parties -the right to use and copy the Tools for the purposes of developing and distribute software programs for use with -microprocessors manufactured or simulated under licence from ARM. - -(vi) CONDITIONS ON REDISTRIBUTION: If you choose to redistribute the whole or any part of the DSP Library -Implementation as incorporated into Software Library Applications or Tools, you agree to; (a) ensure that the -DSP Library Implementation is licensed for use only as part of Software Library Applications and Tools and only -for use with microprocessors manufactured or simulated under licence from ARM; (b) not to use ARM's name, -logo or trademarks to market Software Applications and Tools; and (c) include valid copyright notices on -Software Applications and Tools, and preserve any copyright notices which are included with, or in, the DSP -Library Implementation. - -2. RESTRICTIONS ON USE OF THE ARM DELIVERABLES. - -PERMITTED USERS: The ARM Deliverables shall be used only by you (either a single individual, or single legal -entity) your employees, or by your on-site bona fide sub-contractors for whose acts and omissions you hereby -agree to be responsible to ARM for to the same extent as you are for your employees, and provided always that -such sub-contractors; (i) are contractually obligated to use the ARM Deliverables only for your benefit, and (ii) -agree to assign all their work product and any rights they create therein in the supply of such work to you. -COPYRIGHT AND RESERVATION OF RIGHTS: The ARM Deliverables are owned by ARM or its licensors and -are protected by copyright and other intellectual property laws and international treaties. The ARM Deliverables -are licensed not sold. Except as expressly licensed herein, you acquire no right, title or interest in the ARM -Deliverables or any intellectual property therein. In no event shall the licences granted herein be construed as -granting you, expressly or by implication, estoppels or otherwise, a licence to use any ARM technology except -the ARM Deliverables. - -3. SUPPORT. - -ARM is not obligated to support the ARM Deliverables but may do so entirely at ARM's discretion. - -4. NO WARRANTY - -YOU AGREE THAT THE ARM DELIVERABLES ARE LICENSED "AS IS", AND THAT ARM EXPRESSLY -DISCLAIMS ALL REPRESENTATIONS, WARRANTIES, CONDITIONS OR OTHER TERMS, EXPRESS, -IMPLIED OR STATUTORY, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NONINFRINGEMENT, -SATISFACTORY QUALITY, AND FITNESS FOR A PARTICULAR PURPOSE. THE ARM -DELIVERABLES MAY CONTAIN ERRORS. ARM RESERVES THE RIGHT TO INCORPORATE -MODIFICATIONS TO THE ARM DELIVERABLES IN LATER REVISIONS OF THEM, AND TO MAKE -IMPROVEMENTS OR CHANGES IN THE ARM DELIVERABLES AT ANY TIME. - -5. LIMITATION OF LIABILITY. - -THE MAXIMUM LIABILITY OF ARM TO YOU IN AGGREGATE FOR ALL CLAIMS MADE AGAINST ARM IN -CONTRACT, TORT OR OTHERWISE UNDER OR IN CONNECTION WITH THE SUBJECT MATTER OF THIS -LICENCE SHALL NOT EXCEED THE GREATER OF (I) THE TOTAL OF SUMS PAID BY YOU TO ARM (IF -ANY) FOR THIS LICENCE AND (II) US$10.00. THE LIMITATIONS, EXCLUSIONS AND DISCLAIMERS IN -THIS LICENCE SHALL APPLY TO THE MAXIMUM EXTENT ALLOWED BY APPLICABLE LAW. - -6. U.S. GOVERNMENT END USERS. -US Government Restrictions: Use, duplication, reproduction, release, modification, disclosure or transfer of this -commercial product and accompanying documentation is restricted in accordance with the terms of this Licence. - -7. TERM AND TERMINATION. - -7.1 This Licence shall remain in force until terminated in accordance with the terms of Clause 7.2 or Clause 7.3 -below. - -7.2 Without prejudice to any of its other rights if you are in breach of any of the terms and conditions of this -Licence then ARM may terminate this Licence immediately upon giving written notice to you. You may terminate -this Licence at any time. - -7.3 This Licence shall immediately terminate and shall be unavailable to you if you or any party affiliated to you -asserts any patents against ARM, ARM affiliates, third parties who have a valid licence from ARM for the ARM -Deliverables, or any customers or distributors of any of them based upon a claim that your (or your affiliate) -patent is Necessary to implement the CMSIS Specification or DSP Library Specification. In this Licence; (i) -"affiliate" means any entity controlling, controlled by or under common control with a party (in fact or in law, via -voting securities, management control or otherwise) and "affiliated" shall be construed accordingly; (ii) "assert" -means to allege infringement in legal or administrative proceedings, or proceedings before any other competent -trade, arbitral or international authority; (iii) "Necessary" means with respect to any claims of any patent, those -claims which, without the appropriate permission of the patent owner, will be infringed when implementing the -CMSIS Specification or DSP Library Specification because no alternative, commercially reasonable, noninfringing -way of implementing the CMSIS Specification or DSP Library Specification is known. - -7.4 Upon termination of this Licence, you shall stop using the ARM Deliverables and destroy all copies of the -ARM Deliverables in your possession. The provisions of clauses 5, 6, 7, and 8 shall survive termination of this -Licence. - -8. GENERAL. - -This Licence is governed by English Law. Except where ARM agrees otherwise in a written contract signed by -you and ARM, this is the only agreement between you and ARM relating to the ARM Deliverables and it may only -be modified by written agreement between you and ARM. Except as expressly agreed in writing, this Licence -may not be modified by purchase orders, advertising or other representation by any person. If any clause or -sentence in this Licence is held by a court of law to be illegal or unenforceable the remaining provisions of this -Licence shall not be affected thereby. The failure by ARM to enforce any of the provisions of this Licence, unless -waived in writing, shall not constitute a waiver of ARM's rights to enforce such provision or any other provision of -this Licence in the future. This Licence may not be assigned without the prior written consent of ARM. - -ARM contract reference LEC-PRE-00489 diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/IntQueueTimer.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/IntQueueTimer.c deleted file mode 100644 index fbcd6cdc3..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/IntQueueTimer.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. - All rights reserved - - VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. - - >>! NOTE: The modification to the GPL is included to allow you to !<< - >>! distribute a combined work that includes FreeRTOS without being !<< - >>! obliged to provide the source code for proprietary components !<< - >>! outside of the FreeRTOS kernel. !<< - - FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. Full license text is available on the following - link: http://www.freertos.org/a00114.html - - 1 tab == 4 spaces! - - *************************************************************************** - * * - * Having a problem? Start by reading the FAQ "My application does * - * not run, what could be wrong?". Have you defined configASSERT()? * - * * - * http://www.FreeRTOS.org/FAQHelp.html * - * * - *************************************************************************** - - *************************************************************************** - * * - * FreeRTOS provides completely free yet professionally developed, * - * robust, strictly quality controlled, supported, and cross * - * platform software that is more than just the market leader, it * - * is the industry's de facto standard. * - * * - * Help yourself get started quickly while simultaneously helping * - * to support the FreeRTOS project by purchasing a FreeRTOS * - * tutorial book, reference manual, or both: * - * http://www.FreeRTOS.org/Documentation * - * * - *************************************************************************** - - *************************************************************************** - * * - * Investing in training allows your team to be as productive as * - * possible as early as possible, lowering your overall development * - * cost, and enabling you to bring a more robust product to market * - * earlier than would otherwise be possible. Richard Barry is both * - * the architect and key author of FreeRTOS, and so also the world's * - * leading authority on what is the world's most popular real time * - * kernel for deeply embedded MCU designs. Obtaining your training * - * from Richard ensures your team will gain directly from his in-depth * - * product knowledge and years of usage experience. Contact Real Time * - * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * - * by Richard Barry: http://www.FreeRTOS.org/contact - * * - *************************************************************************** - - *************************************************************************** - * * - * You are receiving this top quality software for free. Please play * - * fair and reciprocate by reporting any suspected issues and * - * participating in the community forum: * - * http://www.FreeRTOS.org/support * - * * - * Thank you! * - * * - *************************************************************************** - - http://www.FreeRTOS.org - Documentation, books, training, latest versions, - license and Real Time Engineers Ltd. contact details. - - http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, - including FreeRTOS+Trace - an indispensable productivity tool, a DOS - compatible FAT file system, and our tiny thread aware UDP/IP stack. - - http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. - Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. - - http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High - Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS - licenses offer ticketed support, indemnification and commercial middleware. - - http://www.SafeRTOS.com - High Integrity Systems also provide a safety - engineered and independently SIL3 certified version for use in safety and - mission critical applications that require provable dependability. - - 1 tab == 4 spaces! -*/ - -/* - * Provides the two timers sources for the standard demo IntQueue test. Also - * includes a high frequency timer to maximise the interrupt nesting achieved. - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* System includes. */ -#include "board.h" -#include "asf.h" - -/* The frequencies at which the first two timers expire are slightly offset to -ensure they don't remain synchronised. The frequency of the highest priority -interrupt is 20 times faster so really hammers the interrupt entry and exit -code. */ -#define tmrTIMER_0_FREQUENCY ( 2000UL ) -#define tmrTIMER_1_FREQUENCY ( 1003UL ) -#define tmrTIMER_2_FREQUENCY ( 20000UL ) - -/* Priorities used by the timer interrupts - these are set differently to make -nesting likely/common. The high frequency timer operates above the max -system call interrupt priority, but does not use the RTOS API. */ -#define tmrTIMER_0_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ) -#define tmrTIMER_1_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY + 1 ) -#define tmrTIMER_2_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY - 1 ) - -/* The channels used within the TC0 timer. */ -#define tmrTIMER_0_CHANNEL ( 0 ) -#define tmrTIMER_1_CHANNEL ( 1 ) -#define tmrTIMER_2_CHANNEL ( 2 ) - -/* TC register bit specifics. */ -#define tmrTRIGGER_ON_RC ( 1UL << 4UL ) -#define trmDIVIDER ( 128 ) - -/*-----------------------------------------------------------*/ - -/* Handers for the timer interrupts. */ -void TC0_Handler( void ); -void TC1_Handler( void ); -void TC2_Handler( void ); - -/*-----------------------------------------------------------*/ - -/* Incremented by the high frequency timer, which operates above the max -syscall interrupt priority. This is just for inspection. */ -volatile uint32_t ulHighFrequencyTimerInterrupts = 0; - -/*-----------------------------------------------------------*/ - -void vInitialiseTimerForIntQueueTest( void ) -{ -uint32_t ulInputFrequency; - - /* Calculate the frequency of the clock that feeds the TC. */ - ulInputFrequency = configCPU_CLOCK_HZ; - ulInputFrequency /= trmDIVIDER; - - /* Three channels are used - two that run at or under - configMAX_SYSCALL_INTERRUPT_PRIORITY, and one that runs over - configMAX_SYSCALL_INTERRUPT_PRIORITY. */ - sysclk_enable_peripheral_clock( ID_TC0 ); - sysclk_enable_peripheral_clock( ID_TC1 ); - sysclk_enable_peripheral_clock( ID_TC2 ); - - /* Init TC channels to waveform mode - up mode clean on RC match. */ - tc_init( TC0, tmrTIMER_0_CHANNEL, TC_CMR_TCCLKS_TIMER_CLOCK4 | TC_CMR_WAVE | TC_CMR_ACPC_CLEAR | TC_CMR_CPCTRG ); - tc_init( TC0, tmrTIMER_1_CHANNEL, TC_CMR_TCCLKS_TIMER_CLOCK4 | TC_CMR_WAVE | TC_CMR_ACPC_CLEAR | TC_CMR_CPCTRG ); - tc_init( TC0, tmrTIMER_2_CHANNEL, TC_CMR_TCCLKS_TIMER_CLOCK4 | TC_CMR_WAVE | TC_CMR_ACPC_CLEAR | TC_CMR_CPCTRG ); - - tc_enable_interrupt( TC0, tmrTIMER_0_CHANNEL, tmrTRIGGER_ON_RC ); - tc_enable_interrupt( TC0, tmrTIMER_1_CHANNEL, tmrTRIGGER_ON_RC ); - tc_enable_interrupt( TC0, tmrTIMER_2_CHANNEL, tmrTRIGGER_ON_RC ); - - tc_write_rc( TC0, tmrTIMER_0_CHANNEL, ( ulInputFrequency / tmrTIMER_0_FREQUENCY ) ); - tc_write_rc( TC0, tmrTIMER_1_CHANNEL, ( ulInputFrequency / tmrTIMER_1_FREQUENCY ) ); - tc_write_rc( TC0, tmrTIMER_2_CHANNEL, ( ulInputFrequency / tmrTIMER_2_FREQUENCY ) ); - - NVIC_SetPriority( TC0_IRQn, tmrTIMER_0_PRIORITY ); - NVIC_SetPriority( TC1_IRQn, tmrTIMER_1_PRIORITY ); - NVIC_SetPriority( TC2_IRQn, tmrTIMER_2_PRIORITY ); - - NVIC_EnableIRQ( TC0_IRQn ); - NVIC_EnableIRQ( TC1_IRQn ); - NVIC_EnableIRQ( TC2_IRQn ); - - tc_start( TC0, tmrTIMER_0_CHANNEL ); - tc_start( TC0, tmrTIMER_1_CHANNEL ); - tc_start( TC0, tmrTIMER_2_CHANNEL ); -} -/*-----------------------------------------------------------*/ - -void TC0_Handler( void ) -{ - /* Handler for the first timer in the IntQueue test. Was the interrupt - caused by a compare on RC? */ - if( ( tc_get_status( TC0, tmrTIMER_0_CHANNEL ) & ~TC_SR_CPCS ) != 0 ) - { - portYIELD_FROM_ISR( xFirstTimerHandler() ); - } -} -/*-----------------------------------------------------------*/ - -void TC1_Handler( void ) -{ - /* Handler for the second timer in the IntQueue test. Was the interrupt - caused by a compare on RC? */ - if( ( tc_get_status( TC0, tmrTIMER_1_CHANNEL ) & ~TC_SR_CPCS ) != 0 ) - { - portYIELD_FROM_ISR( xSecondTimerHandler() ); - } -} -/*-----------------------------------------------------------*/ - -void TC2_Handler( void ) -{ - /* Handler for the high frequency timer that does nothing but increment a - variable to give an indication that it is running. Was the interrupt caused - by a compare on RC? */ - if( ( tc_get_status( TC0, tmrTIMER_2_CHANNEL ) & ~TC_SR_CPCS ) != 0 ) - { - ulHighFrequencyTimerInterrupts++; - } -} diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/IntQueueTimer.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/IntQueueTimer.h deleted file mode 100644 index 3be63652f..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/IntQueueTimer.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. - All rights reserved - - VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. - - >>! NOTE: The modification to the GPL is included to allow you to !<< - >>! distribute a combined work that includes FreeRTOS without being !<< - >>! obliged to provide the source code for proprietary components !<< - >>! outside of the FreeRTOS kernel. !<< - - FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. Full license text is available on the following - link: http://www.freertos.org/a00114.html - - 1 tab == 4 spaces! - - *************************************************************************** - * * - * Having a problem? Start by reading the FAQ "My application does * - * not run, what could be wrong?". Have you defined configASSERT()? * - * * - * http://www.FreeRTOS.org/FAQHelp.html * - * * - *************************************************************************** - - *************************************************************************** - * * - * FreeRTOS provides completely free yet professionally developed, * - * robust, strictly quality controlled, supported, and cross * - * platform software that is more than just the market leader, it * - * is the industry's de facto standard. * - * * - * Help yourself get started quickly while simultaneously helping * - * to support the FreeRTOS project by purchasing a FreeRTOS * - * tutorial book, reference manual, or both: * - * http://www.FreeRTOS.org/Documentation * - * * - *************************************************************************** - - *************************************************************************** - * * - * Investing in training allows your team to be as productive as * - * possible as early as possible, lowering your overall development * - * cost, and enabling you to bring a more robust product to market * - * earlier than would otherwise be possible. Richard Barry is both * - * the architect and key author of FreeRTOS, and so also the world's * - * leading authority on what is the world's most popular real time * - * kernel for deeply embedded MCU designs. Obtaining your training * - * from Richard ensures your team will gain directly from his in-depth * - * product knowledge and years of usage experience. Contact Real Time * - * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * - * by Richard Barry: http://www.FreeRTOS.org/contact - * * - *************************************************************************** - - *************************************************************************** - * * - * You are receiving this top quality software for free. Please play * - * fair and reciprocate by reporting any suspected issues and * - * participating in the community forum: * - * http://www.FreeRTOS.org/support * - * * - * Thank you! * - * * - *************************************************************************** - - http://www.FreeRTOS.org - Documentation, books, training, latest versions, - license and Real Time Engineers Ltd. contact details. - - http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, - including FreeRTOS+Trace - an indispensable productivity tool, a DOS - compatible FAT file system, and our tiny thread aware UDP/IP stack. - - http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. - Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. - - http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High - Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS - licenses offer ticketed support, indemnification and commercial middleware. - - http://www.SafeRTOS.com - High Integrity Systems also provide a safety - engineered and independently SIL3 certified version for use in safety and - mission critical applications that require provable dependability. - - 1 tab == 4 spaces! -*/ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -BaseType_t xTimer0Handler( void ); -BaseType_t xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/LCDUtils.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/LCDUtils.c deleted file mode 100644 index 3e11a5820..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/LCDUtils.c +++ /dev/null @@ -1,174 +0,0 @@ -/** - * gfx_draw_bmpfile() is provided by and copyright to Atmel Corporation with the - * following usage restrictions: - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ - -/* Standard includes. */ -#include - -/* Library includes. */ -#include - -/* Bitmap. */ -#include "logo_atmel.h" - -/* Chip select number to be set for LCD. */ -#define ILI93XX_LCD_CS 1 - -/* - * Initialise the LCD and output a bitmap. - */ -void vInitialiseLCD( void ); - -/* - * Output a bitmap to the LCD. - */ -static void gfx_draw_bmpfile( const uint8_t *bmpImage ); - -/*-----------------------------------------------------------*/ - -COMPILER_PACK_SET( 1 ) -struct bmpfile_header { - /** signature, must be 4D42 hex */ - uint16_t type; - /** size of BMP file in bytes (unreliable) */ - uint32_t file_size; - /** reserved, must be zero */ - uint16_t reserved1; - /** reserved, must be zero */ - uint16_t reserved2; - /** offset to start of image data in bytes */ - uint32_t offset; - /** size of BITMAPINFOHEADER structure, must be 40 */ - uint32_t header_size; - /** image width in pixels */ - uint32_t width; - /** image height in pixels */ - uint32_t height; - /** number of planes in the image, must be 1 */ - uint16_t planes; - /** number of bits per pixel (1, 4, 8, 16, 24, 32) */ - uint16_t bits; - /** compression type (0=none, 1=RLE-8, 2=RLE-4) */ - uint32_t compression; - /** size of image data in bytes (including padding) */ - uint32_t inage_size; - /** horizontal resolution in pixels per meter */ - uint32_t h_resolution; - /** vertical resolution in pixels per meter */ - uint32_t v_resolution; - /** number of colors in image, or zero */ - uint32_t colours; - /** number of important colors, or zero */ - uint32_t important_colors; -}; -COMPILER_PACK_RESET() - -void vInitialiseLCD( void ) -{ -struct ili93xx_opt_t g_ili93xx_display_opt; - - /* Configure SMC interface for Lcd */ - smc_set_setup_timing( SMC, ILI93XX_LCD_CS, SMC_SETUP_NWE_SETUP( 2 ) | SMC_SETUP_NCS_WR_SETUP( 2 ) | SMC_SETUP_NRD_SETUP( 2 ) | SMC_SETUP_NCS_RD_SETUP( 2 ) ); - smc_set_pulse_timing( SMC, ILI93XX_LCD_CS, SMC_PULSE_NWE_PULSE( 4 ) | SMC_PULSE_NCS_WR_PULSE( 4 ) | SMC_PULSE_NRD_PULSE( 10 )| SMC_PULSE_NCS_RD_PULSE( 10 ) ); - smc_set_cycle_timing( SMC, ILI93XX_LCD_CS, SMC_CYCLE_NWE_CYCLE( 10 )| SMC_CYCLE_NRD_CYCLE( 22 ) ); - smc_set_mode( SMC, ILI93XX_LCD_CS, SMC_MODE_READ_MODE | SMC_MODE_WRITE_MODE ); - - /* Initialise the LCD. */ - g_ili93xx_display_opt.ul_width = ILI93XX_LCD_WIDTH; - g_ili93xx_display_opt.ul_height = ILI93XX_LCD_HEIGHT; - g_ili93xx_display_opt.foreground_color = COLOR_BLACK; - g_ili93xx_display_opt.background_color = COLOR_WHITE; - ili93xx_init( &g_ili93xx_display_opt ); - - /* Set backlight level */ - aat31xx_set_backlight(AAT31XX_AVG_BACKLIGHT_LEVEL); - - /* Turn on LCD */ - ili93xx_display_on(); - - /* Clear. */ - ili93xx_set_foreground_color( COLOR_WHITE ); - ili93xx_draw_filled_rectangle( 0, 0, ILI93XX_LCD_WIDTH, ILI93XX_LCD_HEIGHT ); - - /* Draw logos. */ - ili93xx_set_cursor_position( 0,0 ); - gfx_draw_bmpfile( logo_atmel_bmp ); - - /* Set foreground colour ready to write text. */ - ili93xx_set_foreground_color( COLOR_BLACK ); -} -/*-----------------------------------------------------------*/ - -static void gfx_draw_bmpfile( const uint8_t *bmpImage ) -{ - struct bmpfile_header *bmp_header; - uint32_t length; - uint32_t i = 0; - uint32_t offset; - uint16_t j; - - bmp_header = (struct bmpfile_header*) bmpImage; - length = bmp_header->height * bmp_header->width * 3; - offset = sizeof(struct bmpfile_header); - - if (ili93xx_device_type() == DEVICE_TYPE_ILI9325) { - - ili93xx_set_cursor_position(0, 0); - - /** Prepare to write in GRAM */ - LCD_IR(0); - LCD_IR(ILI9325_GRAM_DATA_REG); - for (i = offset; i < length; i += 3) { - /** Invert red and blue. */ - LCD_WD(bmpImage[i + 2]); - LCD_WD(bmpImage[i + 1]); - LCD_WD(bmpImage[i]); - } - } else if (ili93xx_device_type() == DEVICE_TYPE_ILI9341) { - ili93xx_set_window(0, 0, bmp_header->width - 15, bmp_header->height); - /** memory write command (R2Ch)*/ - LCD_IR(ILI9341_CMD_MEMORY_WRITE); - LCD_IR(ILI9341_CMD_WRITE_MEMORY_CONTINUE); - - /** the original image is mirrored */ - for (i= bmp_header->height - 1; i * bmp_header->width * 3 > offset; - i -=1) { - for (j = 45; j < bmp_header->width * 3; j += 3) { - LCD_WD(bmpImage[i * bmp_header->width * 3 + j + 2]); - LCD_WD(bmpImage[i * bmp_header->width * 3 + j + 1]); - LCD_WD(bmpImage[i * bmp_header->width * 3 + j]); - } - } - } -} diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ParTest.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ParTest.c deleted file mode 100644 index 55d6e16ab..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/ParTest.c +++ /dev/null @@ -1,151 +0,0 @@ -/* - FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. - All rights reserved - - VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. - - >>! NOTE: The modification to the GPL is included to allow you to !<< - >>! distribute a combined work that includes FreeRTOS without being !<< - >>! obliged to provide the source code for proprietary components !<< - >>! outside of the FreeRTOS kernel. !<< - - FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. Full license text is available on the following - link: http://www.freertos.org/a00114.html - - 1 tab == 4 spaces! - - *************************************************************************** - * * - * Having a problem? Start by reading the FAQ "My application does * - * not run, what could be wrong?". Have you defined configASSERT()? * - * * - * http://www.FreeRTOS.org/FAQHelp.html * - * * - *************************************************************************** - - *************************************************************************** - * * - * FreeRTOS provides completely free yet professionally developed, * - * robust, strictly quality controlled, supported, and cross * - * platform software that is more than just the market leader, it * - * is the industry's de facto standard. * - * * - * Help yourself get started quickly while simultaneously helping * - * to support the FreeRTOS project by purchasing a FreeRTOS * - * tutorial book, reference manual, or both: * - * http://www.FreeRTOS.org/Documentation * - * * - *************************************************************************** - - *************************************************************************** - * * - * Investing in training allows your team to be as productive as * - * possible as early as possible, lowering your overall development * - * cost, and enabling you to bring a more robust product to market * - * earlier than would otherwise be possible. Richard Barry is both * - * the architect and key author of FreeRTOS, and so also the world's * - * leading authority on what is the world's most popular real time * - * kernel for deeply embedded MCU designs. Obtaining your training * - * from Richard ensures your team will gain directly from his in-depth * - * product knowledge and years of usage experience. Contact Real Time * - * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * - * by Richard Barry: http://www.FreeRTOS.org/contact - * * - *************************************************************************** - - *************************************************************************** - * * - * You are receiving this top quality software for free. Please play * - * fair and reciprocate by reporting any suspected issues and * - * participating in the community forum: * - * http://www.FreeRTOS.org/support * - * * - * Thank you! * - * * - *************************************************************************** - - http://www.FreeRTOS.org - Documentation, books, training, latest versions, - license and Real Time Engineers Ltd. contact details. - - http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, - including FreeRTOS+Trace - an indispensable productivity tool, a DOS - compatible FAT file system, and our tiny thread aware UDP/IP stack. - - http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. - Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. - - http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High - Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS - licenses offer ticketed support, indemnification and commercial middleware. - - http://www.SafeRTOS.com - High Integrity Systems also provide a safety - engineered and independently SIL3 certified version for use in safety and - mission critical applications that require provable dependability. - - 1 tab == 4 spaces! -*/ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* The number of LEDs available to the user on the evaluation kit. */ -#define partestNUM_LEDS ( 3UL ) - -/* The index of the pins to which the LEDs are connected. The ordering of the -LEDs in this array is intentional and matches the order they appear on the -hardware. */ -static const uint32_t ulLED[] = { LED0_GPIO, LED1_GPIO, LED2_GPIO }; - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* LEDs are initialised in the Atmel provided board initialisation - function. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - if( uxLED < partestNUM_LEDS ) - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - ioport_set_pin_level( ulLED[ uxLED ], !xValue ); - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - ioport_toggle_pin_level( ulLED[ uxLED ] ); - } - taskEXIT_CRITICAL(); - } -} - - - diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/RunTimeStatsTimer.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/RunTimeStatsTimer.c deleted file mode 100644 index 734fd6c4d..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/RunTimeStatsTimer.c +++ /dev/null @@ -1,166 +0,0 @@ -/* - FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. - All rights reserved - - VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. - - >>! NOTE: The modification to the GPL is included to allow you to !<< - >>! distribute a combined work that includes FreeRTOS without being !<< - >>! obliged to provide the source code for proprietary components !<< - >>! outside of the FreeRTOS kernel. !<< - - FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. Full license text is available on the following - link: http://www.freertos.org/a00114.html - - 1 tab == 4 spaces! - - *************************************************************************** - * * - * Having a problem? Start by reading the FAQ "My application does * - * not run, what could be wrong?". Have you defined configASSERT()? * - * * - * http://www.FreeRTOS.org/FAQHelp.html * - * * - *************************************************************************** - - *************************************************************************** - * * - * FreeRTOS provides completely free yet professionally developed, * - * robust, strictly quality controlled, supported, and cross * - * platform software that is more than just the market leader, it * - * is the industry's de facto standard. * - * * - * Help yourself get started quickly while simultaneously helping * - * to support the FreeRTOS project by purchasing a FreeRTOS * - * tutorial book, reference manual, or both: * - * http://www.FreeRTOS.org/Documentation * - * * - *************************************************************************** - - *************************************************************************** - * * - * Investing in training allows your team to be as productive as * - * possible as early as possible, lowering your overall development * - * cost, and enabling you to bring a more robust product to market * - * earlier than would otherwise be possible. Richard Barry is both * - * the architect and key author of FreeRTOS, and so also the world's * - * leading authority on what is the world's most popular real time * - * kernel for deeply embedded MCU designs. Obtaining your training * - * from Richard ensures your team will gain directly from his in-depth * - * product knowledge and years of usage experience. Contact Real Time * - * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * - * by Richard Barry: http://www.FreeRTOS.org/contact - * * - *************************************************************************** - - *************************************************************************** - * * - * You are receiving this top quality software for free. Please play * - * fair and reciprocate by reporting any suspected issues and * - * participating in the community forum: * - * http://www.FreeRTOS.org/support * - * * - * Thank you! * - * * - *************************************************************************** - - http://www.FreeRTOS.org - Documentation, books, training, latest versions, - license and Real Time Engineers Ltd. contact details. - - http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, - including FreeRTOS+Trace - an indispensable productivity tool, a DOS - compatible FAT file system, and our tiny thread aware UDP/IP stack. - - http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. - Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. - - http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High - Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS - licenses offer ticketed support, indemnification and commercial middleware. - - http://www.SafeRTOS.com - High Integrity Systems also provide a safety - engineered and independently SIL3 certified version for use in safety and - mission critical applications that require provable dependability. - - 1 tab == 4 spaces! -*/ - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" - -/* Utility functions to implement run time stats on Cortex-M CPUs. The collected -run time data can be viewed through the CLI interface. See the following URL for -more information on run time stats: -http://www.freertos.org/rtos-run-time-stats.html */ - -/* Addresses of registers in the Cortex-M debug hardware. */ -#define rtsDWT_CYCCNT ( *( ( unsigned long * ) 0xE0001004 ) ) -#define rtsDWT_CONTROL ( *( ( unsigned long * ) 0xE0001000 ) ) -#define rtsSCB_DEMCR ( *( ( unsigned long * ) 0xE000EDFC ) ) -#define rtsTRCENA_BIT ( 0x01000000UL ) -#define rtsCOUNTER_ENABLE_BIT ( 0x01UL ) - -/* Simple shift divide for scaling to avoid an overflow occurring too soon. The -number of bits to shift depends on the clock speed. */ -#define runtimeSLOWER_CLOCK_SPEEDS ( 70000000UL ) -#define runtimeSHIFT_13 13 -#define runtimeOVERFLOW_BIT_13 ( 1UL << ( 32UL - runtimeSHIFT_13 ) ) -#define runtimeSHIFT_14 14 -#define runtimeOVERFLOW_BIT_14 ( 1UL << ( 32UL - runtimeSHIFT_14 ) ) - -/*-----------------------------------------------------------*/ - -void vConfigureTimerForRunTimeStats( void ) -{ - /* Enable TRCENA. */ - rtsSCB_DEMCR = rtsSCB_DEMCR | rtsTRCENA_BIT; - - /* Reset counter. */ - rtsDWT_CYCCNT = 0; - - /* Enable counter. */ - rtsDWT_CONTROL = rtsDWT_CONTROL | rtsCOUNTER_ENABLE_BIT; -} -/*-----------------------------------------------------------*/ - -uint32_t ulGetRunTimeCounterValue( void ) -{ -static unsigned long ulLastCounterValue = 0UL, ulOverflows = 0; -unsigned long ulValueNow; - - ulValueNow = rtsDWT_CYCCNT; - - /* Has the value overflowed since it was last read. */ - if( ulValueNow < ulLastCounterValue ) - { - ulOverflows++; - } - ulLastCounterValue = ulValueNow; - - /* Cannot use configCPU_CLOCK_HZ directly as it may itself not be a constant - but instead map to a variable that holds the clock speed. */ - - /* There is no prescale on the counter, so simulate in software. */ - if( configCPU_CLOCK_HZ < runtimeSLOWER_CLOCK_SPEEDS ) - { - ulValueNow >>= runtimeSHIFT_13; - ulValueNow += ( runtimeOVERFLOW_BIT_13 * ulOverflows ); - } - else - { - ulValueNow >>= runtimeSHIFT_14; - ulValueNow += ( runtimeOVERFLOW_BIT_14 * ulOverflows ); - } - - return ulValueNow; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/asf.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/asf.h deleted file mode 100644 index b5036d022..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/asf.h +++ /dev/null @@ -1,107 +0,0 @@ -/** - * \file - * - * \brief Autogenerated API include file for the Atmel Software Framework (ASF) - * - * Copyright (c) 2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef ASF_H -#define ASF_H - -/* - * This file includes all API header files for the selected drivers from ASF. - * Note: There might be duplicate includes required by more than one driver. - * - * The file is automatically generated and will be re-written when - * running the ASF driver selector tool. Any changes will be discarded. - */ - -// From module: Common SAM compiler driver -#include -#include - -// From module: Display - AAT31XX Backlight Controller -#include - -// From module: Display - ILI93xx LCD Controller -#include -#include -#include - -// From module: Ethernet MAC (GMAC) -#include - -// From module: Ethernet Physical Transceiver (ksz8051mnl) -#include - -// From module: Generic board support -#include - -// From module: IOPORT - General purpose I/O service -#include - -// From module: Interrupt management - SAM implementation -#include - -// From module: PMC - Power Management Controller -#include -#include - -// From module: Part identification macros -#include - -// From module: SAM FPU driver -#include - -// From module: SAM4E EK LED support enabled -#include - -// From module: SAM4E startup code -#include - -// From module: SMC - Static Memory Controller -#include - -// From module: System Clock Control - SAM4E implementation -#include - -// From module: TC - Timer Counter -#include - -#endif // ASF_H diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/FreeRTOSConfig.h deleted file mode 100644 index e45697780..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/FreeRTOSConfig.h +++ /dev/null @@ -1,278 +0,0 @@ -/* - FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. - All rights reserved - - VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. - - >>! NOTE: The modification to the GPL is included to allow you to !<< - >>! distribute a combined work that includes FreeRTOS without being !<< - >>! obliged to provide the source code for proprietary components !<< - >>! outside of the FreeRTOS kernel. !<< - - FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. Full license text is available on the following - link: http://www.freertos.org/a00114.html - - 1 tab == 4 spaces! - - *************************************************************************** - * * - * Having a problem? Start by reading the FAQ "My application does * - * not run, what could be wrong?". Have you defined configASSERT()? * - * * - * http://www.FreeRTOS.org/FAQHelp.html * - * * - *************************************************************************** - - *************************************************************************** - * * - * FreeRTOS provides completely free yet professionally developed, * - * robust, strictly quality controlled, supported, and cross * - * platform software that is more than just the market leader, it * - * is the industry's de facto standard. * - * * - * Help yourself get started quickly while simultaneously helping * - * to support the FreeRTOS project by purchasing a FreeRTOS * - * tutorial book, reference manual, or both: * - * http://www.FreeRTOS.org/Documentation * - * * - *************************************************************************** - - *************************************************************************** - * * - * Investing in training allows your team to be as productive as * - * possible as early as possible, lowering your overall development * - * cost, and enabling you to bring a more robust product to market * - * earlier than would otherwise be possible. Richard Barry is both * - * the architect and key author of FreeRTOS, and so also the world's * - * leading authority on what is the world's most popular real time * - * kernel for deeply embedded MCU designs. Obtaining your training * - * from Richard ensures your team will gain directly from his in-depth * - * product knowledge and years of usage experience. Contact Real Time * - * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * - * by Richard Barry: http://www.FreeRTOS.org/contact - * * - *************************************************************************** - - *************************************************************************** - * * - * You are receiving this top quality software for free. Please play * - * fair and reciprocate by reporting any suspected issues and * - * participating in the community forum: * - * http://www.FreeRTOS.org/support * - * * - * Thank you! * - * * - *************************************************************************** - - http://www.FreeRTOS.org - Documentation, books, training, latest versions, - license and Real Time Engineers Ltd. contact details. - - http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, - including FreeRTOS+Trace - an indispensable productivity tool, a DOS - compatible FAT file system, and our tiny thread aware UDP/IP stack. - - http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. - Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. - - http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High - Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS - licenses offer ticketed support, indemnification and commercial middleware. - - http://www.SafeRTOS.com - High Integrity Systems also provide a safety - engineered and independently SIL3 certified version for use in safety and - mission critical applications that require provable dependability. - - 1 tab == 4 spaces! -*/ - - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Atmel library includes. */ -#include - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html. - *----------------------------------------------------------*/ - -extern uint32_t SystemCoreClock; - -#define configUSE_PREEMPTION 1 -#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 -#define configUSE_QUEUE_SETS 1 -#define configUSE_IDLE_HOOK 1 -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( SystemCoreClock ) -#define configTICK_RATE_HZ ( 1000 ) -#define configMAX_PRIORITIES ( 5 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 120 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 47 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 10 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 8 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 -#define configUSE_COUNTING_SEMAPHORES 1 - -/* The full demo always has tasks to run so the tick will never be turned off. -The blinky demo will use the default tickless idle implementation to turn the -tick off. */ -#define configUSE_TICKLESS_IDLE 1 - -/* Run time stats gathering definitions. */ -void vConfigureTimerForRunTimeStats( void ); -uint32_t ulGetRunTimeCounterValue( void ); -#define configGENERATE_RUN_TIME_STATS 1 -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vConfigureTimerForRunTimeStats() -#define portGET_RUN_TIME_COUNTER_VALUE() ulGetRunTimeCounterValue() - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 2 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 1 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_eTaskGetState 1 -#define INCLUDE_xTimerPendFunctionCall 1 - -/* Cortex-M specific definitions. */ -#ifdef __NVIC_PRIO_BITS - /* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */ - #define configPRIO_BITS __NVIC_PRIO_BITS -#else - #define configPRIO_BITS 4 /* 15 priority levels */ -#endif - -/* The lowest interrupt priority that can be used in a call to a "set priority" -function. */ -#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0xf - -/* The highest interrupt priority that can be used by any interrupt service -routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL -INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER -PRIORITY THAN THIS! (higher priorities are lower numeric values. */ -#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 - -/* Interrupt priorities used by the kernel port layer itself. These are generic -to all Cortex-M ports, and do not rely on any particular library functions. */ -#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) - -/* Normal assert() semantics without relying on the provision of an assert.h -header file. */ -extern void vAssertCalled( uint32_t ulLine, const char *pcFile ); -#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __LINE__, __FILE__ ) - -/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS -standard names. */ -#define xPortPendSVHandler PendSV_Handler -#define vPortSVCHandler SVC_Handler -#define xPortSysTickHandler SysTick_Handler - -/* MAC address configuration. In a deployed production system this would -probably be read from an EEPROM. In the demo it is just hard coded. Make sure -each node on the network has a unique MAC address. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x11 -#define configMAC_ADDR2 0x22 -#define configMAC_ADDR3 0x33 -#define configMAC_ADDR4 0x44 -#define configMAC_ADDR5 0x45 - -/* Default IP address configuration. Used in ipconfigUSE_DNS is set to 0, or -ipconfigUSE_DNS is set to 1 but a DNS server cannot be contacted. */ -#define configIP_ADDR0 172 -#define configIP_ADDR1 25 -#define configIP_ADDR2 218 -#define configIP_ADDR3 200 - -/* Default gateway IP address configuration. Used in ipconfigUSE_DNS is set to -0, or ipconfigUSE_DNS is set to 1 but a DNS server cannot be contacted. */ -#define configGATEWAY_ADDR0 172 -#define configGATEWAY_ADDR1 25 -#define configGATEWAY_ADDR2 218 -#define configGATEWAY_ADDR3 2 - -/* Default DNS server configuration. OpenDNS addresses are 208.67.222.222 and -208.67.220.220. Used in ipconfigUSE_DNS is set to 0, or ipconfigUSE_DNS is set -to 1 but a DNS server cannot be contacted.*/ -#define configDNS_SERVER_ADDR0 208 -#define configDNS_SERVER_ADDR1 67 -#define configDNS_SERVER_ADDR2 222 -#define configDNS_SERVER_ADDR3 222 - -/* Default netmask configuration. Used in ipconfigUSE_DNS is set to 0, or -ipconfigUSE_DNS is set to 1 but a DNS server cannot be contacted. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -/* The address of the echo server. Used when the demo is build to include the -UDP echo tasks (when mainINCLUDE_ECHO_CLIENT_TASKS is set to 1 in -FreeRTOSConfig.h. -http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_UDP/Embedded_Ethernet_Examples/Common_Echo_Clients.shtml */ -#define configECHO_SERVER_ADDR0 172 -#define configECHO_SERVER_ADDR1 25 -#define configECHO_SERVER_ADDR2 218 -#define configECHO_SERVER_ADDR3 100 - - -/* The priority used by the Ethernet MAC driver interrupt. */ -#define configMAC_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ) - -/* Dimensions a buffer that can be used by the FreeRTOS+CLI command -interpreter. See the FreeRTOS+CLI documentation for more information: -http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_CLI/ */ -#define configCOMMAND_INT_MAX_OUTPUT_SIZE 1024 - -/* If configINCLUDE_DEMO_DEBUG_STATS is set to one, then a few basic IP trace -macros are defined to gather some UDP stack statistics that can then be viewed -through the CLI interface. */ -#define configINCLUDE_DEMO_DEBUG_STATS 1 - -#endif /* FREERTOS_CONFIG_H */ - diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/FreeRTOSIPConfig.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/FreeRTOSIPConfig.h deleted file mode 100644 index 16036be3c..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/FreeRTOSIPConfig.h +++ /dev/null @@ -1,290 +0,0 @@ -/* - * FreeRTOS+UDP V1.0.4 (C) 2014 Real Time Engineers ltd. - * All rights reserved - * - * This file is part of the FreeRTOS+UDP distribution. The FreeRTOS+UDP license - * terms are different to the FreeRTOS license terms. - * - * FreeRTOS+UDP uses a dual license model that allows the software to be used - * under a standard GPL open source license, or a commercial license. The - * standard GPL license (unlike the modified GPL license under which FreeRTOS - * itself is distributed) requires that all software statically linked with - * FreeRTOS+UDP is also distributed under the same GPL V2 license terms. - * Details of both license options follow: - * - * - Open source licensing - - * FreeRTOS+UDP is a free download and may be used, modified, evaluated and - * distributed without charge provided the user adheres to version two of the - * GNU General Public License (GPL) and does not remove the copyright notice or - * this text. The GPL V2 text is available on the gnu.org web site, and on the - * following URL: http://www.FreeRTOS.org/gpl-2.0.txt. - * - * - Commercial licensing - - * Businesses and individuals that for commercial or other reasons cannot comply - * with the terms of the GPL V2 license must obtain a commercial license before - * incorporating FreeRTOS+UDP into proprietary software for distribution in any - * form. Commercial licenses can be purchased from http://shop.freertos.org/udp - * and do not require any source files to be changed. - * - * FreeRTOS+UDP is distributed in the hope that it will be useful. You cannot - * use FreeRTOS+UDP unless you agree that you use the software 'as is'. - * FreeRTOS+UDP is provided WITHOUT ANY WARRANTY; without even the implied - * warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. Real Time Engineers Ltd. disclaims all conditions and terms, be they - * implied, expressed, or statutory. - * - * 1 tab == 4 spaces! - * - * http://www.FreeRTOS.org - * http://www.FreeRTOS.org/udp - * - */ - -/***************************************************************************** - * - * See the following URL for configuration information. - * http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_UDP/UDP_IP_Configuration.shtml - * - *****************************************************************************/ - -#ifndef FREERTOS_IP_CONFIG_H -#define FREERTOS_IP_CONFIG_H - -/* The IP stack executes it its own task (although any application task can make -use of its services through the published sockets API). ipconfigUDP_TASK_PRIORITY -sets the priority of the task that executes the IP stack. The priority is a -standard FreeRTOS task priority so can take any value from 0 (the lowest -priority) to (configMAX_PRIORITIES - 1) (the highest priority). -configMAX_PRIORITIES is a standard FreeRTOS configuration parameter defined in -FreeRTOSConfig.h, not FreeRTOSIPConfig.h. Consideration needs to be given as to -the priority assigned to the task executing the IP stack relative to the -priority assigned to tasks that use the IP stack. - -Note: If the application is started without the network cable plugged in then -this should be set to the lowest priority - otherwise the Atmel ASF GMAC driver -will poll the GMAC interface waiting for a connection to be established. The -driver uses a very long timeout and no lower priority tasks will be able to -execute during this time. This demo starts with the IP task running at the idle -priority - then raises the priority of the IP task in the network event hook -when a connection has been established. */ -#define ipconfigUDP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The size, in words (not bytes), of the stack allocated to the FreeRTOS+UDP -task. This setting is less important when the FreeRTOS Win32 simulator is used -as the Win32 simulator only stores a fixed amount of information on the task -stack. FreeRTOS includes optional stack overflow detection, see: -http://www.freertos.org/Stacks-and-stack-overflow-checking.html */ -#define ipconfigUDP_TASK_STACK_SIZE_WORDS ( configMINIMAL_STACK_SIZE * 2 ) - -/* ipconfigRAND32() is called by the IP stack to generate a random number that -is then used as a DHCP transaction number. Random number generation is performed -via this macro to allow applications to use their own random number generation -method. For example, it might be possible to generate a random number by -sampling noise on an analogue input. */ -#define ipconfigRAND32() 1 - -/* If ipconfigUSE_NETWORK_EVENT_HOOK is set to 1 then FreeRTOS+UDP will call the -network event hook at the appropriate times. If ipconfigUSE_NETWORK_EVENT_HOOK -is not set to 1 then the network event hook will never be called. See -http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_UDP/API/vApplicationIPNetworkEventHook.shtml -*/ -#define ipconfigUSE_NETWORK_EVENT_HOOK 1 - -/* Sockets have a send block time attribute. If FreeRTOS_sendto() is called but -a network buffer cannot be obtained then the calling task is held in the Blocked -state (so other tasks can continue to executed) until either a network buffer -becomes available or the send block time expires. If the send block time expires -then the send operation is aborted. The maximum allowable send block time is -capped to the value set by ipconfigMAX_SEND_BLOCK_TIME_TICKS. Capping the -maximum allowable send block time prevents prevents a deadlock occurring when -all the network buffers are in use and the tasks that process (and subsequently -free) the network buffers are themselves blocked waiting for a network buffer. -ipconfigMAX_SEND_BLOCK_TIME_TICKS is specified in RTOS ticks. A time in -milliseconds can be converted to a time in ticks by dividing the time in -milliseconds by portTICK_PERIOD_MS. */ -#define ipconfigMAX_SEND_BLOCK_TIME_TICKS ( 20 / portTICK_PERIOD_MS ) - -/* If ipconfigUSE_DHCP is 1 then FreeRTOS+UDP will attempt to retrieve an IP -address, netmask, DNS server address and gateway address from a DHCP server. If -ipconfigUSE_DHCP is 0 then FreeRTOS+UDP will use a static IP address. The -stack will revert to using the static IP address even when ipconfigUSE_DHCP is -set to 1 if a valid configuration cannot be obtained from a DHCP server for any -reason. The static configuration used is that passed into the stack by the -FreeRTOS_IPInit() function call. */ -#define ipconfigUSE_DHCP 1 - -/* When ipconfigUSE_DHCP is set to 1, DHCP requests will be sent out at -increasing time intervals until either a reply is received from a DHCP server -and accepted, or the interval between transmissions reaches -ipconfigMAXIMUM_DISCOVER_TX_PERIOD. The IP stack will revert to using the -static IP address passed as a parameter to FreeRTOS_IPInit() if the -re-transmission time interval reaches ipconfigMAXIMUM_DISCOVER_TX_PERIOD without -a DHCP reply being received. */ -#define ipconfigMAXIMUM_DISCOVER_TX_PERIOD ( 999 / portTICK_PERIOD_MS ) - -/* The ARP cache is a table that maps IP addresses to MAC addresses. The IP -stack can only send a UDP message to a remove IP address if it knowns the MAC -address associated with the IP address, or the MAC address of the router used to -contact the remote IP address. When a UDP message is received from a remote IP -address the MAC address and IP address are added to the ARP cache. When a UDP -message is sent to a remote IP address that does not already appear in the ARP -cache then the UDP message is replaced by a ARP message that solicits the -required MAC address information. ipconfigARP_CACHE_ENTRIES defines the maximum -number of entries that can exist in the ARP table at any one time. */ -#define ipconfigARP_CACHE_ENTRIES 6 - -/* ARP requests that do not result in an ARP response will be re-transmitted a -maximum of ipconfigMAX_ARP_RETRANSMISSIONS times before the ARP request is -aborted. */ -#define ipconfigMAX_ARP_RETRANSMISSIONS ( 5 ) - -/* ipconfigMAX_ARP_AGE defines the maximum time between an entry in the ARP -table being created or refreshed and the entry being removed because it is stale. -New ARP requests are sent for ARP cache entries that are nearing their maximum -age. ipconfigMAX_ARP_AGE is specified in tens of seconds, so a value of 150 is -equal to 1500 seconds (or 25 minutes). */ -#define ipconfigMAX_ARP_AGE 150 - -/* Implementing FreeRTOS_inet_addr() necessitates the use of string handling -routines, which are relatively large. To save code space the full -FreeRTOS_inet_addr() implementation is made optional, and a smaller and faster -alternative called FreeRTOS_inet_addr_quick() is provided. FreeRTOS_inet_addr() -takes an IP in decimal dot format (for example, "192.168.0.1") as its parameter. -FreeRTOS_inet_addr_quick() takes an IP address as four separate numerical octets -(for example, 192, 168, 0, 1) as its parameters. If -ipconfigINCLUDE_FULL_INET_ADDR is set to 1 then both FreeRTOS_inet_addr() and -FreeRTOS_indet_addr_quick() are available. If ipconfigINCLUDE_FULL_INET_ADDR is -not set to 1 then only FreeRTOS_indet_addr_quick() is available. */ -#define ipconfigINCLUDE_FULL_INET_ADDR 1 - -/* ipconfigNUM_NETWORK_BUFFERS defines the total number of network buffer that -are available to the IP stack. The total number of network buffers is limited -to ensure the total amount of RAM that can be consumed by the IP stack is capped -to a pre-determinable value. */ -#define ipconfigNUM_NETWORK_BUFFERS 10 - -/* A FreeRTOS queue is used to send events from application tasks to the IP -stack. ipconfigEVENT_QUEUE_LENGTH sets the maximum number of events that can -be queued for processing at any one time. The event queue must be a minimum of -5 greater than the total number of network buffers. */ -#define ipconfigEVENT_QUEUE_LENGTH ( ipconfigNUM_NETWORK_BUFFERS + 5 ) - -/* The address of a socket is the combination of its IP address and its port -number. FreeRTOS_bind() is used to manually allocate a port number to a socket -(to 'bind' the socket to a port), but manual binding is not normally necessary -for client sockets (those sockets that initiate outgoing connections rather than -wait for incoming connections on a known port number). If -ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND is set to 1 then calling -FreeRTOS_sendto() on a socket that has not yet been bound will result in the IP -stack automatically binding the socket to a port number from the range -socketAUTO_PORT_ALLOCATION_START_NUMBER to 0xffff. If -ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND is set to 0 then calling FreeRTOS_sendto() -on a socket that has not yet been bound will result in the send operation being -aborted. */ -#define ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND 1 - -/* Defines the Time To Live (TTL) values used in outgoing UDP packets. */ -#define updconfigIP_TIME_TO_LIVE 128 - -/* If ipconfigCAN_FRAGMENT_OUTGOING_PACKETS is set to 1 then UDP packets that -contain more data than will fit in a single network frame will be fragmented -across multiple IP packets. Also see the ipconfigNETWORK_MTU setting. If -ipconfigCAN_FRAGMENT_OUTGOING_PACKETS is 1 then (ipconfigNETWORK_MTU - 28) must -be divisible by 8. Setting ipconfigCAN_FRAGMENT_OUTGOING_PACKETS to 1 will -increase both the code size and execution time. */ -#define ipconfigCAN_FRAGMENT_OUTGOING_PACKETS 0 - -/* The MTU is the maximum number of bytes the payload of a network frame can -contain. For normal Ethernet V2 frames the maximum MTU is 1500. Setting a -lower value can save RAM, depending on the buffer management scheme used. If -ipconfigCAN_FRAGMENT_OUTGOING_PACKETS is 1 then (ipconfigNETWORK_MTU - 28) must -be divisible by 8. */ -#define ipconfigNETWORK_MTU 1500 /* Leave at 1500 for SAM4E. */ - -/* Set ipconfigUSE_DNS to 1 to include a basic DNS client/resolver. DNS is used -through the FreeRTOS_gethostbyname() API function. */ -#define ipconfigUSE_DNS 1 - -/* If ipconfigREPLY_TO_INCOMING_PINGS is set to 1 then the IP stack will -generate replies to incoming ICMP echo (ping) requests. */ -#define ipconfigREPLY_TO_INCOMING_PINGS 1 - -/* If ipconfigSUPPORT_OUTGOING_PINGS is set to 1 then the -FreeRTOS_SendPingRequest() API function is available. */ -#define ipconfigSUPPORT_OUTGOING_PINGS 1 - -/* If ipconfigSUPPORT_SELECT_FUNCTION is set to 1 then the FreeRTOS_select() -(and associated) API function is available. */ -#define ipconfigSUPPORT_SELECT_FUNCTION 1 - -/* Used for stack testing only, and must be implemented in the network -interface. */ -#define updconfigLOOPBACK_ETHERNET_PACKETS 0 - -/* If ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES is set to 1 then Ethernet frames -that are not in Ethernet II format will be dropped. This option is included for -potential future IP stack developments. */ -#define ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES 1 - -/* If ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES is set to 1 then it is the -responsibility of the Ethernet interface to filter out packets that are of no -interest. If the Ethernet interface does not implement this functionality, then -set ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES to 0 to have the IP stack -perform the filtering instead (it is much less efficient for the stack to do it -because the packet will already have been passed into the stack). If the -Ethernet driver does all the necessary filtering in hardware then software -filtering can be removed by using a value other than 1 or 0. */ -#define ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES 0 - -/* If ipconfigETHERNET_DRIVER_ADDS_UDP_CHECKSUM is set to 1 then a UDP checksum -will not be calculated and added to a packet before the packet is sent to the -hardware for transmission. */ -#define ipconfigETHERNET_DRIVER_ADDS_UDP_CHECKSUM 0 - -/* If ipconfigETHERNET_DRIVER_ADDS_IP_CHECKSUM is set to 1 then an IP checksum -will not be calculated and added to a packet before the packet is sent to the -hardware for transmission. */ -#define ipconfigETHERNET_DRIVER_ADDS_IP_CHECKSUM 0 - -/* If ipconfigETHERNET_DRIVER_CHECKS_IP_CHECKSUM is set to 1 then the IP -checksum will be ignored on incoming packets on the assumption IP packets with -an invalid checksum are not passed to the stack. */ -#define ipconfigETHERNET_DRIVER_CHECKS_IP_CHECKSUM 0 - -/* If ipconfigETHERNET_DRIVER_CHECKS_UDP_CHECKSUM is set to 1 then the UDP -checksum will be ignored on incoming packets on the assumption the UDP packets -with an invalid checksum are not passed to the stack. */ -#define ipconfigETHERNET_DRIVER_CHECKS_UDP_CHECKSUM 0 - -/* Set ipconfigFREERTOS_PLUS_NABTO to 1 to support the Nabto protocol, or 0 to -exclude support for the Nabto protocol. If ipconfigFREERTOS_PLUS_NABTO is set -to one then the project must build the Nabto source code (or reference a -pre-build Nabto library. */ -#define ipconfigFREERTOS_PLUS_NABTO 0 - -/* Sets the size of the stack used by the Nabto service task. The Nabto event -handler executes in the context of the Nabto service task. If the event handler -uses a lot of stack then it is possible the value set here will need to be -increased. It is recommended to have FreeRTOS stack overflow checking turned -on during development (see the configCHECK_FOR_STACK_OVERFLOW in -FreeRTOSConfig.h and in the documentation. */ -#define ipconfigNABTO_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE * 2 ) - -/* Sets the priority of the Nabto service task. This is a standard FreeRTOS -task priority so can take values between 0 (the lowest priority) and -configMAX_PRIORITIES - 1 (the highest priority). Also see the definition of -ipconfigUDP_TASK_PRIORITY. This would normally be set to be either one higher -or one lower than ipconfigUDP_TASK_PRIORITY, depending on the application. */ -#define ipconfigNABTO_TASK_PRIORITY ( ipconfigUDP_TASK_PRIORITY + 1 ) - -/* The windows simulator cannot really simulate MAC interrupts, and needs to -block occasionally to allow other tasks to run. */ -#ifdef _WINDOWS_ - #define configWINDOWS_MAC_INTERRUPT_SIMULATOR_DELAY ( 3 / portTICK_PERIOD_MS ) -#endif - -/* The example IP trace macros are included here so the definitions are -available in all the FreeRTOS+UDP source files. */ -#include "DemoIPTrace.h" - -#endif /* FREERTOS_IP_CONFIG_H */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_aat31xx.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_aat31xx.h deleted file mode 100644 index 0d757c52f..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_aat31xx.h +++ /dev/null @@ -1,59 +0,0 @@ -/** - * \file - * - * \brief AAT31XX configuration. - * - * Copyright (c) 2011-2012 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -//! Configuration of the AAT31XX Backlight driver - -#ifndef CONF_AAT31XX_H_INCLUDED -#define CONF_AAT31XX_H_INCLUDED - -#include "board.h" - -#if !defined(BOARD_AAT31XX_SET_GPIO) - - #warning The AAT31XX PIN configuration does not exist in the board definition file. Using default settings. - - #define BOARD_AAT31XX_SET_GPIO PIO_PC13_IDX /* Should use the PIN index of which pin is connected with EN/SET of AAT31XX device */ - -#endif - -#endif /* CONF_AAT31XX_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_board.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_board.h deleted file mode 100644 index e616581ec..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_board.h +++ /dev/null @@ -1,99 +0,0 @@ -/** - * \file - * - * \brief SAM4E-EK board configuration. - * - * Copyright (c) 2012-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef CONF_BOARD_H_INCLUDED -#define CONF_BOARD_H_INCLUDED - -/* Configure UART pins */ -//#define CONF_BOARD_UART_CONSOLE - -/* Enable ETH PHY: KSZ8051MNL feature */ -#define CONF_BOARD_KSZ8051MNL - -/** Configure LCD EBI pins */ -#define CONF_BOARD_ILI93XX - -/** Configure Backlight control pin */ -#define CONF_BOARD_AAT3155 - -/* - * LED pins are not configured for PWM function here. - * Because those LED pins are enabled for PIO function by default. - * You can enable them according to application. - */ -/* Configure PWM LED0 pin */ -//#define CONF_BOARD_PWM_LED0 - -/* Configure PWM LED1 pin */ -//#define CONF_BOARD_PWM_LED1 - -/* Configure PWM LED2 pin */ -//#define CONF_BOARD_PWM_LED2 - -/* Configure PWM LED3 pin */ -//#define CONF_BOARD_PWM_LED3 - -/* - * USART pins are configured as basic serial port by default. - * You can enable other pins according application. - */ -/* Configure USART RXD pin */ -//#define CONF_BOARD_USART_RXD - -/* Configure USART TXD pin */ -//#define CONF_BOARD_USART_TXD - -/* Configure USART CTS pin */ -//#define CONF_BOARD_USART_CTS - -/* Configure USART RTS pin */ -//#define CONF_BOARD_USART_RTS - -/* Configure USART synchronous communication SCK pin */ -//#define CONF_BOARD_USART_SCK - -/* Configure ADM3312 enable pin */ -//#define CONF_BOARD_ADM3312_EN -//#define CONF_BOARD_ADM3312_EN_DISABLE_AT_INIT - -#endif /* CONF_BOARD_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_clock.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_clock.h deleted file mode 100644 index 65f41e2cf..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_clock.h +++ /dev/null @@ -1,94 +0,0 @@ -/** - * \file - * - * \brief SAM4E clock configuration. - * - * Copyright (c) 2012-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef CONF_CLOCK_H_INCLUDED -#define CONF_CLOCK_H_INCLUDED - -// ===== System Clock (MCK) Source Options -//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_SLCK_RC -//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_SLCK_XTAL -//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_SLCK_BYPASS -//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_4M_RC -//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_8M_RC -//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_12M_RC -//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_XTAL -//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_BYPASS -#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK - -// ===== System Clock (MCK) Prescaler Options (Fmck = Fsys / (SYSCLK_PRES)) -//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 -#define CONFIG_SYSCLK_PRES SYSCLK_PRES_2 -//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_4 -//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_8 -//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_16 -//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_32 -//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_64 -//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_3 - -// ===== PLL0 (A) Options (Fpll = (Fclk * PLL_mul) / PLL_div) -// Use mul and div effective values here. -#define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL -#define CONFIG_PLL0_MUL 16 -#define CONFIG_PLL0_DIV 1 - - -// ===== USB Clock Source Options (Fusb = FpllX / USB_div) -// Use div effective value here. -#define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL0 -#define CONFIG_USBCLK_DIV 2 - -// ===== Target frequency (System clock) -// - XTAL frequency: 12MHz -// - System clock source: PLLA -// - System clock prescaler: 2 (divided by 2) -// - PLLA source: XTAL -// - PLLA output: XTAL * 16 / 1 -// - System clock: 12 * 16 / 1 / 2 = 96MHz -// ===== Target frequency (USB Clock) -// - USB clock source: PLLA -// - USB clock divider: 2 (divided by 2) -// - PLLA output: XTAL * 16 / 2 -// - USB clock: 12 * 16 / 2 / 2 = 48MHz - - -#endif /* CONF_CLOCK_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_eth.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_eth.h deleted file mode 100644 index 842c2293b..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_eth.h +++ /dev/null @@ -1,77 +0,0 @@ - /** - * \file - * - * \brief GMAC (Ethernet MAC) driver for SAM. - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -#ifndef CONF_EMAC_H_INCLUDED -#define CONF_EMAC_H_INCLUDED - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -extern "C" { -#endif -/**INDENT-ON**/ -/// @endcond - -#include "gmac.h" - -/** Number of buffer for RX */ -#define GMAC_RX_BUFFERS 64 - -/** Number of buffer for TX */ -#define GMAC_TX_BUFFERS 16 - -/** MAC PHY operation max retry count */ -#define MAC_PHY_RETRY_MAX 1000000 - -/** Ethernet MII/RMII mode */ -#define ETH_PHY_MODE GMAC_PHY_MII - -/// @cond 0 -/**INDENT-OFF**/ -#ifdef __cplusplus -} -#endif -/**INDENT-ON**/ -/// @endcond - -#endif /* CONF_EMAC_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_ili93xx.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_ili93xx.h deleted file mode 100644 index 53ee3cbec..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/conf_ili93xx.h +++ /dev/null @@ -1,62 +0,0 @@ -/** - * \file - * - * \brief ILI93XX configuration. - * - * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ - -//! Configuration of the ILI93XX (ILI9325 or ILI9341) LCD display driver - -#ifndef CONF_ILI93XX_H_INCLUDED -#define CONF_ILI93XX_H_INCLUDED - -#include "board.h" - -#if !defined(BOARD_ILI93XX_ADDR) || !defined(BOARD_ILI93XX_RS) - - #warning The ILI93XX EBI configuration does not exist in the board definition file. Using default settings. - - /** The base address, depends on which SMC chip select is used by ILI9325. */ - #define BOARD_ILI93XX_ADDR 0x61000000 - /** Register select (1 << 1) */ - #define BOARD_ILI93XX_RS 1 << 1 - -#endif - -#endif /* CONF_ILI93XX_H_INCLUDED */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/config_fat_sl.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/config_fat_sl.h deleted file mode 100644 index 8647077ee..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/config_fat_sl.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded - * - * FreeRTOS+FAT SL is an complementary component provided to Real Time Engineers - * Ltd. by HCC Embedded for use with FreeRTOS. It is not, in itself, part of - * the FreeRTOS kernel. FreeRTOS+FAT SL is licensed separately from FreeRTOS, - * and uses a different license to FreeRTOS. FreeRTOS+FAT SL uses a dual - * license model, information on which is provided below: - * - * - Open source licensing - - * FreeRTOS+FAT SL is a free download and may be used, modified and distributed - * without charge provided the user adheres to version two of the GNU General - * Public license (GPL) and does not remove the copyright notice or this text. - * The GPL V2 text is available on the gnu.org web site, and on the following - * URL: http://www.FreeRTOS.org/gpl-2.0.txt - * - * - Commercial licensing - - * Businesses and individuals who wish to incorporate FreeRTOS+FAT SL into - * proprietary software for redistribution in any form must first obtain a - * commercial license - and in-so-doing support the maintenance, support and - * further development of the FreeRTOS+FAT SL product. Commercial licenses can - * be obtained from http://shop.freertos.org and do not require any source files - * to be changed. - * - * FreeRTOS+FAT SL is distributed in the hope that it will be useful. You - * cannot use FreeRTOS+FAT SL unless you agree that you use the software 'as - * is'. FreeRTOS+FAT SL is provided WITHOUT ANY WARRANTY; without even the - * implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. Real Time Engineers Ltd. and HCC Embedded disclaims all - * conditions and terms, be they implied, expressed, or statutory. - * - * http://www.FreeRTOS.org - * http://www.FreeRTOS.org/FreeRTOS-Plus - * - */ - -#ifndef _CONFIG_FAT_SL_H -#define _CONFIG_FAT_SL_H - -#include "../version/ver_fat_sl.h" -#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2 - #error Incompatible FAT_SL version number! -#endif - -#include "../api/api_mdriver.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -/************************************************************************** -** -** FAT SL user settings -** -**************************************************************************/ -#define F_SECTOR_SIZE 512u /* Disk sector size. */ -#define F_FS_THREAD_AWARE 1 /* Set to one if the file system will be access from more than one task. */ -#define F_MAXPATH 64 /* Maximum length a file name (including its full path) can be. */ -#define F_MAX_LOCK_WAIT_TICKS 20 /* The maximum number of RTOS ticks to wait when attempting to obtain a lock on the file system when F_FS_THREAD_AWARE is set to 1. */ - -#ifdef __cplusplus -} -#endif - -#endif /* _CONFIG_FAT_SL_H */ - diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/config_mdriver_ram.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/config_mdriver_ram.h deleted file mode 100644 index de630faf2..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/config_mdriver_ram.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded - * - * FreeRTOS+FAT SL is an complementary component provided to Real Time Engineers - * Ltd. by HCC Embedded for use with FreeRTOS. It is not, in itself, part of - * the FreeRTOS kernel. FreeRTOS+FAT SL is licensed separately from FreeRTOS, - * and uses a different license to FreeRTOS. FreeRTOS+FAT SL uses a dual - * license model, information on which is provided below: - * - * - Open source licensing - - * FreeRTOS+FAT SL is a free download and may be used, modified and distributed - * without charge provided the user adheres to version two of the GNU General - * Public license (GPL) and does not remove the copyright notice or this text. - * The GPL V2 text is available on the gnu.org web site, and on the following - * URL: http://www.FreeRTOS.org/gpl-2.0.txt - * - * - Commercial licensing - - * Businesses and individuals who wish to incorporate FreeRTOS+FAT SL into - * proprietary software for redistribution in any form must first obtain a - * commercial license - and in-so-doing support the maintenance, support and - * further development of the FreeRTOS+FAT SL product. Commercial licenses can - * be obtained from http://shop.freertos.org and do not require any source files - * to be changed. - * - * FreeRTOS+FAT SL is distributed in the hope that it will be useful. You - * cannot use FreeRTOS+FAT SL unless you agree that you use the software 'as - * is'. FreeRTOS+FAT SL is provided WITHOUT ANY WARRANTY; without even the - * implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. Real Time Engineers Ltd. and HCC Embedded disclaims all - * conditions and terms, be they implied, expressed, or statutory. - * - * http://www.FreeRTOS.org - * http://www.FreeRTOS.org/FreeRTOS-Plus - * - */ - -#ifndef _CONFIG_MDRIVER_RAM_H_ -#define _CONFIG_MDRIVER_RAM_H_ - -#include "../version/ver_mdriver_ram.h" -#if VER_MDRIVER_RAM_MAJOR != 1 || VER_MDRIVER_RAM_MINOR != 2 - #error Incompatible MDRIVER_RAM version number! -#endif - -#define MDRIVER_RAM_SECTOR_SIZE 512 /* Sector size */ - -#define MDRIVER_RAM_VOLUME0_SIZE (28 * 1024) /* definition for size of ramdrive0 */ - -#define MDRIVER_MEM_LONG_ACCESS 1 /* set this value to 1 if 32bit access available */ - -#endif /* ifndef _CONFIG_MDRIVER_RAM_H_ */ - diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/logo_atmel.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/logo_atmel.h deleted file mode 100644 index c2ce4b9f7..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/logo_atmel.h +++ /dev/null @@ -1,15412 +0,0 @@ -/** - * \file - * - * \brief Atmel logo for the FreeRTOS Web/DSP Demo. - * - * Copyright (c) 2013 Atmel Corporation. All rights reserved. - * - * \asf_license_start - * - * \page License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an - * Atmel microcontroller product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - * - * \asf_license_stop - * - */ -#ifndef __ATMEL_LOGO_H__ -#define __ATMEL_LOGO_H__ -const uint8_t logo_atmel_bmp[230454]= -{ -0x42,0x4d,0x36,0x84,0x03,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28, -0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x40,0x01,0x00,0x00,0x01,0x00,0x18,0x00, -0x00,0x00,0x00,0x00,0x00,0x84,0x03,0x00,0x13,0x0b,0x00,0x00,0x13,0x0b,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfb,0xfa,0xff,0xfb,0xfc,0xff,0xfb, -0xfc,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xfe,0xfd,0xff,0xfe,0xfd, -0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xfb, -0xfc,0xff,0xfb,0xfa,0xff,0xfb,0xfa,0xfe,0xff,0xfd,0xf7,0xff,0xfd,0xf4,0xff, -0xfd,0xf5,0xff,0xfd,0xf5,0xff,0xfd,0xf5,0xff,0xfd,0xf5,0xff,0xfd,0xf6,0xff, -0xfd,0xf6,0xff,0xfe,0xf7,0xff,0xfe,0xf7,0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff, -0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfa,0xfa,0xff,0xf7,0xfd,0xff, -0xf3,0xff,0xff,0xf2,0xff,0xff,0xf2,0xff,0xff,0xf2,0xfe,0xff,0xf2,0xfe,0xff, -0xf2,0xfe,0xff,0xf2,0xfe,0xff,0xf0,0xfd,0xff,0xf0,0xfd,0xff,0xf0,0xfc,0xff, -0xf0,0xfc,0xff,0xf0,0xfc,0xff,0xf0,0xfc,0xff,0xf0,0xfc,0xff,0xf2,0xfe,0xff, -0xf1,0xff,0xfb,0xf3,0xff,0xf6,0xf3,0xff,0xf6,0xf3,0xff,0xf6,0xf5,0xff,0xf8, -0xf5,0xff,0xf8,0xf5,0xff,0xf8,0xf5,0xff,0xf8,0xf9,0xff,0xfb,0xf9,0xff,0xfb, -0xf9,0xff,0xfb,0xf9,0xff,0xfb,0xf9,0xff,0xfb,0xf9,0xff,0xfb,0xfa,0xff,0xfd, -0xfe,0xff,0xfb,0xff,0xff,0xf6,0xff,0xff,0xf6,0xff,0xff,0xf6,0xff,0xff,0xf6, -0xff,0xff,0xf7,0xff,0xff,0xf7,0xff,0xff,0xf8,0xff,0xff,0xf8,0xff,0xfb,0xf2, -0xff,0xfc,0xf3,0xff,0xfd,0xf5,0xff,0xfe,0xf6,0xff,0xff,0xf7,0xff,0xff,0xf8, -0xff,0xff,0xf9,0xff,0xff,0xf9,0xfc,0xfd,0xf9,0xfb,0xff,0xfa,0xfd,0xff,0xfc, -0xfd,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc, -0xff,0xff,0xf9,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xf9, -0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xfc,0xff,0xfc,0xff,0xff,0xf9,0xff, -0xff,0xf9,0xff,0xff,0xf8,0xff,0xff,0xf8,0xff,0xff,0xf7,0xff,0xff,0xf7,0xfd, -0xff,0xf7,0xfd,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff,0xff,0xfb,0xfe, -0xfe,0xf9,0xfa,0xfb,0xf6,0xf7,0xf8,0xf3,0xf4,0xf5,0xf1,0xf6,0xfa,0xf9,0xff, -0xf8,0xf8,0xff,0xf9,0xf9,0xff,0xfa,0xfa,0xff,0xfb,0xfc,0xff,0xfb,0xfc,0xff, -0xfb,0xfd,0xff,0xfb,0xfe,0xff,0xf5,0xf8,0xfd,0xf7,0xfa,0xfe,0xfa,0xfe,0xff, -0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xfa, -0xfa,0xff,0xf5,0xfa,0xff,0xf1,0xf7,0xff,0xef,0xf4,0xff,0xea,0xf0,0xff,0xe8, -0xee,0xff,0xe3,0xe8,0xff,0xdd,0xe5,0xff,0xd7,0xf3,0xff,0xe4,0xee,0xff,0xdf, -0xe8,0xff,0xd7,0xe1,0xff,0xcf,0xdc,0xff,0xcc,0xd8,0xff,0xc6,0xd1,0xf9,0xbf, -0xc7,0xf8,0xb4,0xb1,0xf2,0xa3,0xa6,0xf2,0x9a,0x99,0xeb,0x92,0x8c,0xe4,0x86, -0x7f,0xdc,0x79,0x77,0xd6,0x6e,0x74,0xcf,0x68,0x76,0xca,0x64,0x92,0xd9,0x79, -0xb0,0xeb,0x96,0xd4,0xfe,0xb7,0xec,0xff,0xd4,0xfb,0xff,0xe9,0xfd,0xff,0xf2, -0xff,0xff,0xfb,0xf5,0xf4,0xf6,0xfd,0xf9,0xfe,0xff,0xfd,0xff,0xff,0xfe,0xff, -0xff,0xff,0xfe,0xfe,0xff,0xfb,0xfd,0xff,0xf9,0xfd,0xfe,0xfa,0xfe,0xff,0xfd, -0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfa,0xfa,0xff,0xfa,0xfa,0xff,0xfa, -0xfc,0xff,0xfa,0xfe,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfb, -0xff,0xfe,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xfe,0xff,0xfb,0xfc,0xff,0xfb, -0xfc,0xff,0xfb,0xfa,0xff,0xfb,0xfc,0xfe,0xff,0xfc,0xf9,0xff,0xfe,0xf8,0xff, -0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff, -0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfe,0xf9,0xff,0xfe,0xf9,0xff,0xfe,0xf9,0xff, -0xfe,0xf9,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfc,0xfb,0xff,0xf9,0xfe,0xff, -0xf5,0xff,0xfe,0xf5,0xff,0xfe,0xf5,0xff,0xfe,0xf5,0xff,0xff,0xf3,0xff,0xff, -0xf3,0xff,0xff,0xf3,0xfe,0xff,0xf3,0xfd,0xff,0xf2,0xfe,0xff,0xf2,0xfd,0xff, -0xf2,0xfc,0xff,0xf2,0xfc,0xff,0xf2,0xfb,0xff,0xf2,0xfb,0xff,0xf3,0xfd,0xff, -0xf4,0xff,0xfd,0xf6,0xff,0xf9,0xf6,0xff,0xf9,0xf6,0xff,0xf9,0xf8,0xff,0xfa, -0xf8,0xff,0xfa,0xf8,0xff,0xfa,0xf8,0xff,0xfa,0xfa,0xff,0xfc,0xfa,0xff,0xfc, -0xfa,0xff,0xfc,0xfa,0xff,0xfc,0xfa,0xff,0xfc,0xfa,0xff,0xfc,0xfb,0xff,0xfe, -0xfd,0xff,0xfe,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa, -0xff,0xfe,0xf9,0xff,0xfe,0xf9,0xff,0xfc,0xf9,0xff,0xfc,0xf9,0xff,0xfe,0xfb, -0xff,0xfe,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc, -0xff,0xff,0xfc,0xff,0xff,0xfc,0xf9,0xfc,0xfa,0xf7,0xfc,0xfa,0xfa,0xfd,0xfb, -0xfa,0xfd,0xfb,0xf9,0xfc,0xfa,0xf9,0xfc,0xfa,0xf9,0xfc,0xfa,0xfa,0xfe,0xf9, -0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc,0xfd,0xff,0xfb,0xfc,0xfe,0xf8, -0xf9,0xfc,0xf3,0xf7,0xfa,0xf1,0xf8,0xf8,0xf2,0xff,0xfe,0xfd,0xff,0xfd,0xfe, -0xff,0xfd,0xfe,0xff,0xfe,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfc, -0xff,0xff,0xfc,0xfd,0xfa,0xf6,0xfe,0xfb,0xf7,0xfe,0xfe,0xf8,0xff,0xff,0xfa, -0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xfd,0xff,0xfb,0xf6,0xff,0xfa, -0xf4,0xff,0xfa,0xf3,0xff,0xf9,0xf2,0xfe,0xf8,0xf0,0xfd,0xf5,0xef,0xfc,0xf4, -0xee,0xfc,0xf1,0xee,0xfc,0xf1,0xf6,0xff,0xf8,0xf6,0xff,0xf8,0xf6,0xff,0xf7, -0xf1,0xff,0xf2,0xed,0xfd,0xec,0xe8,0xf8,0xe7,0xe5,0xf5,0xe4,0xe1,0xf5,0xde, -0xd2,0xf0,0xcd,0xcb,0xed,0xc5,0xc4,0xe6,0xbd,0xbb,0xdf,0xb5,0xb3,0xd7,0xab, -0xab,0xd1,0xa1,0xa2,0xcb,0x98,0x9d,0xc7,0x90,0x7e,0xab,0x72,0x7a,0xa8,0x6d, -0x71,0xa2,0x64,0x6c,0x9e,0x5e,0x66,0x9b,0x58,0x62,0x98,0x53,0x5e,0x94,0x4e, -0x57,0x92,0x47,0x4a,0x93,0x3d,0x43,0x94,0x37,0x3a,0x93,0x33,0x33,0x90,0x2d, -0x2c,0x8c,0x27,0x28,0x89,0x21,0x28,0x84,0x1d,0x2c,0x7f,0x1c,0x3f,0x86,0x29, -0x3f,0x7a,0x26,0x62,0x8b,0x47,0x9d,0xbc,0x85,0xd5,0xe8,0xc1,0xf8,0xff,0xeb, -0xfd,0xff,0xf7,0xfd,0xfe,0xfa,0xf9,0xf9,0xf9,0xfe,0xfb,0xfd,0xff,0xfd,0xfd, -0xfe,0xfc,0xfb,0xfd,0xfe,0xfa,0xff,0xff,0xfc,0xff,0xff,0xfc,0xfd,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xf8,0xf9,0xff,0xf8,0xf9,0xff,0xf8, -0xfa,0xff,0xf8,0xfc,0xff,0xf8,0xfe,0xff,0xf8,0xff,0xff,0xf8,0xff,0xff,0xf8, -0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xfe,0xff,0xfa,0xfc,0xff,0xfa, -0xfc,0xff,0xfa,0xfc,0xff,0xfa,0xfc,0xff,0xfd,0xfc,0xfc,0xff,0xfc,0xfb,0xff, -0xfc,0xfb,0xff,0xfc,0xfb,0xff,0xfc,0xfb,0xff,0xfc,0xfb,0xff,0xfc,0xfb,0xff, -0xfc,0xfc,0xff,0xfc,0xfc,0xff,0xfc,0xfc,0xff,0xfc,0xfc,0xff,0xfc,0xfd,0xff, -0xfc,0xfd,0xff,0xfc,0xfd,0xff,0xfc,0xfd,0xff,0xfc,0xfe,0xfe,0xfc,0xff,0xfa, -0xfa,0xff,0xf7,0xfa,0xff,0xf8,0xfa,0xff,0xf8,0xfa,0xff,0xfa,0xf9,0xff,0xfb, -0xf9,0xff,0xfd,0xf7,0xff,0xfe,0xf7,0xff,0xff,0xf7,0xfe,0xff,0xf5,0xfe,0xff, -0xf5,0xfd,0xff,0xf3,0xfc,0xff,0xf3,0xfc,0xff,0xf3,0xfc,0xff,0xf5,0xfc,0xff, -0xf9,0xfd,0xfe,0xfb,0xfd,0xfd,0xf9,0xfe,0xfd,0xf9,0xfe,0xfd,0xf9,0xfe,0xfd, -0xf9,0xfe,0xfd,0xf9,0xfe,0xfc,0xf9,0xfe,0xfc,0xfb,0xff,0xfe,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfe, -0xfd,0xff,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff, -0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfc,0xff, -0xff,0xfd,0xff,0xff,0xfc,0xff,0xfe,0xfa,0xff,0xfb,0xf9,0xff,0xf9,0xf7,0xfd, -0xf8,0xf6,0xfc,0xf5,0xf6,0xfa,0xfb,0xfe,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff, -0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff, -0xf7,0xfd,0xfc,0xf7,0xfe,0xfb,0xf9,0xff,0xfd,0xf8,0xff,0xfc,0xfa,0xff,0xfc, -0xfa,0xff,0xfb,0xfa,0xff,0xfb,0xfa,0xff,0xf8,0xfc,0xff,0xf4,0xfc,0xff,0xf1, -0xfc,0xff,0xf1,0xfc,0xff,0xf1,0xfd,0xff,0xf2,0xfb,0xff,0xf2,0xfb,0xff,0xf1, -0xfb,0xff,0xf1,0xf8,0xff,0xee,0xf7,0xff,0xed,0xf5,0xff,0xeb,0xf3,0xff,0xe9, -0xef,0xff,0xe5,0xed,0xfe,0xe3,0xeb,0xfc,0xe1,0xe7,0xfe,0xde,0xde,0xff,0xd8, -0xd7,0xfe,0xd1,0xd0,0xf7,0xca,0xc7,0xee,0xc1,0xbd,0xe4,0xb7,0xb4,0xdb,0xae, -0xad,0xd4,0xa7,0xa9,0xd0,0xa3,0x94,0xbb,0x8d,0x8f,0xb6,0x88,0x86,0xad,0x7f, -0x7c,0xa3,0x75,0x74,0x9b,0x6d,0x6e,0x95,0x67,0x6a,0x92,0x62,0x63,0x94,0x5c, -0x52,0x91,0x4c,0x49,0x91,0x45,0x45,0x8d,0x41,0x40,0x8a,0x3e,0x3e,0x89,0x3b, -0x3c,0x88,0x37,0x38,0x84,0x32,0x35,0x81,0x2f,0x3c,0x89,0x35,0x3a,0x88,0x31, -0x37,0x86,0x2f,0x37,0x87,0x2e,0x38,0x88,0x2f,0x3b,0x8b,0x30,0x3c,0x8c,0x31, -0x3b,0x8f,0x31,0x3e,0x96,0x32,0x3c,0x99,0x30,0x3a,0x9c,0x32,0x39,0x9e,0x34, -0x38,0xa0,0x35,0x3a,0x9f,0x36,0x3f,0x9d,0x38,0x46,0x9a,0x3b,0x31,0x77,0x1d, -0x37,0x70,0x21,0x3e,0x67,0x24,0x43,0x63,0x2a,0x68,0x7f,0x52,0xb4,0xc4,0xa2, -0xf3,0xff,0xe5,0xfb,0xff,0xf2,0xfb,0xff,0xf9,0xfe,0xff,0xfd,0xfb,0xfc,0xfa, -0xf9,0xfa,0xf6,0xfc,0xfd,0xf9,0xff,0xff,0xfc,0xff,0xff,0xfe,0xfb,0xfb,0xfb, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfa,0xf9,0xff,0xf8,0xfa,0xff,0xf8, -0xfa,0xff,0xf8,0xfc,0xff,0xf8,0xfe,0xff,0xf8,0xff,0xff,0xf8,0xff,0xff,0xf8, -0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xfe,0xff,0xfa,0xfe,0xff,0xfb, -0xfc,0xff,0xfb,0xfe,0xff,0xfb,0xfc,0xff,0xfd,0xfd,0xff,0xff,0xfd,0xff,0xff, -0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xfe, -0xfd,0xff,0xfe,0xfc,0xff,0xfd,0xfc,0xff,0xfd,0xfc,0xff,0xfb,0xfc,0xff,0xfb, -0xfc,0xff,0xfb,0xfc,0xff,0xfb,0xfc,0xff,0xfa,0xfe,0xff,0xf8,0xff,0xff,0xf7, -0xff,0xff,0xf6,0xff,0xff,0xf7,0xff,0xff,0xf7,0xff,0xff,0xf8,0xff,0xff,0xfa, -0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfe,0xfe,0xfe,0xfc,0xfe,0xff,0xfc,0xfd,0xff, -0xfa,0xfd,0xff,0xfa,0xfd,0xff,0xf9,0xfc,0xff,0xf9,0xfc,0xff,0xfa,0xfc,0xff, -0xfe,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff, -0xfe,0xfd,0xff,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfc,0xfe,0xfe,0xfc,0xff,0xfd, -0xfc,0xff,0xfd,0xfa,0xff,0xfd,0xfa,0xff,0xfd,0xfa,0xff,0xfb,0xfa,0xff,0xfd, -0xfa,0xff,0xfe,0xfe,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff, -0xff,0xfc,0xff,0xff,0xfc,0xff,0xfd,0xfc,0xff,0xfd,0xfc,0xff,0xfb,0xfe,0xff, -0xfb,0xfe,0xff,0xfa,0xfe,0xff,0xfa,0xff,0xff,0xf8,0xff,0xff,0xf8,0xff,0xff, -0xf8,0xff,0xff,0xf6,0xff,0xff,0xf5,0xff,0xfd,0xf2,0xff,0xfa,0xf0,0xff,0xf7, -0xf0,0xff,0xf7,0xf1,0xff,0xf8,0xf2,0xff,0xf7,0xef,0xff,0xf5,0xee,0xff,0xf3, -0xf0,0xff,0xf5,0xee,0xff,0xf4,0xed,0xff,0xf3,0xec,0xff,0xf0,0xeb,0xff,0xef, -0xe8,0xff,0xed,0xe9,0xff,0xec,0xe6,0xff,0xe7,0xe5,0xff,0xdd,0xe2,0xff,0xd7, -0xdd,0xfe,0xd2,0xd7,0xf8,0xcc,0xcf,0xf2,0xc6,0xc8,0xeb,0xbf,0xc4,0xe8,0xba, -0xc1,0xe5,0xb7,0xb4,0xd8,0xa9,0xaf,0xd5,0xa5,0xa7,0xcd,0x9d,0x9c,0xc2,0x92, -0x90,0xb6,0x84,0x83,0xac,0x79,0x7d,0xa3,0x71,0x73,0xa3,0x69,0x64,0x9e,0x57, -0x5d,0x9e,0x52,0x5a,0x9a,0x4e,0x54,0x95,0x49,0x4f,0x8f,0x43,0x49,0x8a,0x3e, -0x46,0x86,0x3a,0x43,0x84,0x38,0x4c,0x8c,0x40,0x48,0x89,0x3d,0x45,0x85,0x39, -0x40,0x81,0x36,0x3f,0x7e,0x34,0x3f,0x80,0x35,0x43,0x83,0x37,0x3e,0x88,0x36, -0x3b,0x93,0x39,0x34,0x95,0x35,0x35,0x96,0x36,0x38,0x99,0x39,0x3c,0x9d,0x3c, -0x41,0xa0,0x3f,0x42,0xa1,0x40,0x42,0xa1,0x40,0x45,0xa4,0x43,0x45,0xa4,0x43, -0x46,0xa5,0x44,0x47,0xa6,0x45,0x4a,0xaa,0x46,0x4d,0xad,0x49,0x50,0xb0,0x4c, -0x54,0xb1,0x4e,0x55,0xb1,0x4c,0x56,0xb2,0x4b,0x52,0xb3,0x4b,0x51,0xb4,0x4e, -0x51,0xb3,0x4f,0x52,0xb1,0x50,0x57,0xae,0x52,0x5d,0xab,0x54,0x62,0xa3,0x54, -0x6b,0x9f,0x59,0x67,0x8e,0x50,0x4e,0x6e,0x37,0x3d,0x57,0x27,0x55,0x6e,0x42, -0xa1,0xb9,0x8f,0xec,0xff,0xde,0xf9,0xff,0xf2,0xfd,0xff,0xf9,0xfd,0xff,0xfb, -0xfb,0xfc,0xf8,0xfd,0xfe,0xfa,0xff,0xff,0xfe,0xff,0xff,0xff,0xfa,0xf9,0xfb, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfe,0xfa,0xff,0xfd,0xfc,0xff,0xfd, -0xfe,0xff,0xfd,0xfe,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa, -0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfe, -0xfe,0xfe,0xfe,0xff,0xfd,0xff,0xfe,0xfe,0xfe,0xff,0xff,0xfc,0xff,0xff,0xfb, -0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf8, -0xff,0xff,0xf8,0xfe,0xff,0xf7,0xfe,0xff,0xf7,0xfe,0xff,0xf6,0xfe,0xff,0xf6, -0xfe,0xff,0xf6,0xfe,0xff,0xf6,0xfe,0xff,0xf4,0xff,0xff,0xf6,0xff,0xff,0xf7, -0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfd,0xfb, -0xff,0xfd,0xfb,0xff,0xfe,0xfb,0xff,0xfd,0xfd,0xff,0xfd,0xfe,0xff,0xfd,0xfe, -0xff,0xfd,0xfe,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfc,0xff, -0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff, -0xff,0xfc,0xff,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xfe,0xfd,0xff,0xfe,0xfd, -0xfe,0xff,0xfd,0xfe,0xff,0xfb,0xfe,0xff,0xfb,0xfc,0xff,0xfa,0xfc,0xff,0xfb, -0xfa,0xff,0xfb,0xf7,0xff,0xfd,0xf7,0xff,0xfe,0xf7,0xff,0xfe,0xf4,0xff,0xfc, -0xf3,0xfe,0xfb,0xf0,0xfe,0xfa,0xef,0xff,0xf8,0xef,0xff,0xf8,0xf0,0xff,0xfa, -0xef,0xff,0xf9,0xec,0xff,0xf6,0xeb,0xff,0xf5,0xe7,0xff,0xf3,0xe6,0xff,0xf1, -0xe4,0xfe,0xf0,0xe3,0xff,0xec,0xe8,0xff,0xec,0xe5,0xff,0xe6,0xe1,0xff,0xe2, -0xde,0xfe,0xdf,0xdb,0xfe,0xdc,0xd9,0xfc,0xda,0xd3,0xf9,0xd5,0xcf,0xf6,0xd0, -0xc2,0xeb,0xc5,0xbd,0xe7,0xbe,0xb4,0xde,0xb5,0xa6,0xd3,0xa8,0x99,0xc6,0x9b, -0x8c,0xbb,0x8d,0x84,0xb2,0x84,0x7c,0xb0,0x7a,0x68,0xa7,0x62,0x64,0xa7,0x5c, -0x5f,0xa2,0x57,0x59,0x9c,0x51,0x53,0x96,0x4b,0x4d,0x90,0x45,0x48,0x8b,0x40, -0x44,0x89,0x3e,0x3f,0x84,0x39,0x3e,0x83,0x38,0x3d,0x83,0x36,0x3b,0x81,0x34, -0x39,0x7f,0x32,0x35,0x7d,0x30,0x36,0x7c,0x2f,0x31,0x7f,0x28,0x34,0x8c,0x28, -0x32,0x90,0x25,0x36,0x92,0x28,0x38,0x96,0x2b,0x3c,0x98,0x2e,0x3e,0x9c,0x31, -0x41,0x9d,0x34,0x42,0x9f,0x36,0x41,0x9c,0x35,0x41,0x9d,0x36,0x43,0x9e,0x37, -0x45,0xa1,0x3c,0x4a,0xa4,0x40,0x4e,0xaa,0x45,0x52,0xac,0x48,0x51,0xaf,0x4a, -0x45,0xab,0x45,0x42,0xab,0x44,0x42,0xab,0x44,0x44,0xad,0x46,0x48,0xb0,0x4b, -0x4c,0xb2,0x4d,0x4c,0xb1,0x4f,0x4b,0xb0,0x4e,0x50,0xb3,0x51,0x51,0xb3,0x53, -0x53,0xb4,0x54,0x53,0xb4,0x54,0x54,0xb4,0x56,0x55,0xb5,0x57,0x57,0xb7,0x59, -0x5d,0xb8,0x5b,0x60,0xb2,0x59,0x62,0xb1,0x5a,0x60,0xb1,0x5a,0x5c,0xb1,0x5c, -0x5c,0xb1,0x5d,0x5f,0xb0,0x61,0x64,0xad,0x64,0x6a,0xab,0x66,0x78,0xac,0x70, -0x7d,0xa7,0x70,0x84,0xa8,0x74,0x88,0xa9,0x76,0x6c,0x8d,0x5a,0x39,0x5b,0x25, -0x47,0x6c,0x34,0x90,0xb0,0x81,0xe4,0xf5,0xda,0xf6,0xff,0xf0,0xfb,0xff,0xf8, -0xfc,0xff,0xfa,0xfa,0xfd,0xfb,0xfd,0xff,0xff,0xff,0xfe,0xff,0xfd,0xfc,0xfe, -0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff, -0xfd,0xff,0xff,0xfd,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xff,0xfe,0xfd,0xff,0xff,0xfc,0xff, -0xff,0xfd,0xff,0xff,0xfe,0xfe,0xff,0xfe,0xfe,0xff,0xfe,0xfd,0xff,0xfe,0xfd, -0xff,0xfe,0xfd,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xff,0xfd,0xff, -0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff,0xff,0xff,0xfc,0xff,0xff,0xfb, -0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf8, -0xff,0xff,0xf8,0xfe,0xff,0xf7,0xfe,0xff,0xf6,0xfe,0xff,0xf6,0xfe,0xff,0xf6, -0xfe,0xff,0xf6,0xfe,0xff,0xf6,0xfe,0xff,0xf4,0xff,0xff,0xf6,0xff,0xfe,0xfa, -0xff,0xfc,0xfd,0xff,0xfc,0xfd,0xff,0xfc,0xfd,0xff,0xfc,0xfd,0xff,0xfd,0xfd, -0xff,0xfd,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfb, -0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb, -0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa, -0xfe,0xff,0xf8,0xfe,0xff,0xf8,0xfc,0xff,0xf7,0xfb,0xff,0xf6,0xf9,0xff,0xf5, -0xf9,0xff,0xf3,0xf8,0xff,0xf3,0xf8,0xff,0xf2,0xf6,0xff,0xf2,0xf6,0xff,0xf2, -0xf2,0xff,0xf0,0xef,0xff,0xf0,0xec,0xff,0xee,0xeb,0xff,0xec,0xe6,0xff,0xe7, -0xe3,0xff,0xe4,0xdd,0xff,0xde,0xd9,0xfe,0xdc,0xd5,0xfe,0xd9,0xcb,0xf4,0xcf, -0xc5,0xf1,0xca,0xbd,0xe9,0xc2,0xb3,0xdf,0xb6,0xa7,0xd5,0xab,0x9d,0xcb,0xa1, -0x93,0xc3,0x99,0x8f,0xc0,0x92,0x7c,0xae,0x78,0x77,0xaa,0x70,0x6e,0xa4,0x69, -0x68,0x9e,0x63,0x63,0x99,0x5e,0x5b,0x94,0x57,0x54,0x8d,0x4e,0x4d,0x8a,0x48, -0x47,0x84,0x42,0x45,0x84,0x3f,0x44,0x83,0x3e,0x41,0x83,0x3c,0x3f,0x81,0x3a, -0x3c,0x81,0x38,0x3b,0x80,0x37,0x38,0x80,0x33,0x2f,0x82,0x2d,0x2e,0x86,0x2c, -0x31,0x88,0x2e,0x34,0x8c,0x32,0x38,0x8f,0x35,0x3b,0x93,0x39,0x3e,0x95,0x3b, -0x3f,0x97,0x3d,0x42,0x9a,0x40,0x43,0x9b,0x41,0x45,0x9e,0x41,0x48,0xa1,0x44, -0x4b,0xa4,0x47,0x4e,0xa7,0x4a,0x50,0xa9,0x4c,0x4f,0xac,0x4b,0x4e,0xb0,0x46, -0x4c,0xb2,0x43,0x4f,0xb2,0x46,0x4e,0xb3,0x47,0x51,0xb4,0x48,0x50,0xb4,0x4a, -0x53,0xb5,0x4b,0x51,0xb4,0x4c,0x56,0xb7,0x4f,0x55,0xb8,0x52,0x58,0xb8,0x53, -0x57,0xb9,0x55,0x58,0xb7,0x56,0x54,0xb5,0x54,0x54,0xb3,0x52,0x52,0xb0,0x51, -0x59,0xb5,0x5c,0x5a,0xb3,0x5d,0x58,0xb1,0x5b,0x59,0xb1,0x5d,0x5c,0xb2,0x5e, -0x5d,0xb2,0x60,0x5c,0xaf,0x60,0x5b,0xad,0x60,0x62,0xb2,0x65,0x64,0xb3,0x69, -0x6a,0xb6,0x6e,0x6d,0xb9,0x71,0x6f,0xbb,0x74,0x72,0xbe,0x77,0x77,0xc0,0x7a, -0x7d,0xc2,0x7f,0x8c,0xc8,0x88,0x90,0xc9,0x8a,0x92,0xcf,0x8f,0x96,0xd5,0x97, -0x9d,0xdc,0x9e,0xa4,0xe1,0xa7,0xad,0xe5,0xb0,0xb6,0xe6,0xb6,0xc2,0xea,0xc0, -0xd1,0xf3,0xcb,0xcf,0xef,0xc6,0xd2,0xf1,0xc4,0xbf,0xe4,0xb2,0x75,0xa1,0x66, -0x34,0x64,0x22,0x35,0x61,0x26,0xca,0xe3,0xbd,0xe9,0xf7,0xdf,0xfa,0xff,0xf4, -0xfb,0xff,0xf9,0xf6,0xfb,0xf9,0xfb,0xfd,0xfe,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xfd,0xff,0xfe, -0xfd,0xff,0xff,0xfd,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff, -0xfb,0xf3,0xfd,0xff,0xfa,0xff,0xfb,0xf5,0xfa,0xf8,0xf3,0xf5,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfc,0xfe,0xff,0xfb,0xff,0xfe,0xfa,0xff, -0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfd,0xff,0xfc,0xfb,0xfd,0xfd,0xfd,0xfd, -0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe, -0xff,0xff,0xfe,0xfd,0xfe,0xfa,0xfd,0xfe,0xfa,0xfd,0xfe,0xfa,0xfd,0xff,0xf9, -0xfd,0xff,0xf9,0xfd,0xff,0xf9,0xfc,0xfe,0xf8,0xfe,0xfd,0xf9,0xff,0xfc,0xfe, -0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xfe, -0xff,0xfd,0xfc,0xfd,0xfe,0xfa,0xfc,0xfe,0xf8,0xfa,0xff,0xf6,0xfb,0xff,0xf6, -0xfa,0xff,0xf6,0xfb,0xff,0xf7,0xfa,0xff,0xf5,0xfa,0xff,0xf5,0xf8,0xff,0xf2, -0xf2,0xff,0xec,0xef,0xff,0xe9,0xf0,0xff,0xe8,0xec,0xff,0xe5,0xeb,0xff,0xe4, -0xe9,0xff,0xe1,0xe7,0xff,0xdf,0xe5,0xff,0xde,0xe1,0xfc,0xda,0xdc,0xfb,0xd6, -0xd6,0xf5,0xce,0xcc,0xee,0xc6,0xc3,0xe5,0xbd,0xb9,0xdc,0xb4,0xb3,0xd7,0xad, -0xac,0xd6,0xa6,0x91,0xc7,0x86,0x87,0xc3,0x7c,0x7f,0xb9,0x72,0x71,0xad,0x66, -0x68,0xa4,0x5d,0x60,0x9f,0x55,0x5c,0x9b,0x51,0x5a,0x9b,0x4f,0x52,0x93,0x47, -0x4e,0x93,0x43,0x4c,0x91,0x41,0x46,0x8e,0x3c,0x42,0x8a,0x38,0x3f,0x87,0x34, -0x3a,0x85,0x31,0x39,0x84,0x2e,0x3b,0x85,0x2d,0x3b,0x85,0x2d,0x3d,0x87,0x2f, -0x3c,0x89,0x2e,0x3e,0x8b,0x30,0x3d,0x8d,0x30,0x3f,0x8f,0x32,0x3e,0x90,0x31, -0x41,0x93,0x34,0x41,0x96,0x34,0x43,0x98,0x36,0x45,0x9d,0x39,0x49,0xa1,0x3d, -0x4c,0xa4,0x40,0x4f,0xa7,0x43,0x4f,0xa9,0x45,0x4c,0xa8,0x49,0x49,0xa9,0x4b, -0x4c,0xaa,0x4c,0x4b,0xab,0x4d,0x4e,0xac,0x4e,0x4d,0xad,0x4f,0x50,0xad,0x52, -0x4f,0xae,0x53,0x52,0xb1,0x56,0x52,0xb1,0x56,0x55,0xb2,0x57,0x55,0xb2,0x57, -0x55,0xb2,0x57,0x55,0xb2,0x57,0x55,0xb2,0x57,0x57,0xb1,0x58,0x56,0xac,0x58, -0x56,0xab,0x59,0x58,0xab,0x5c,0x58,0xad,0x5d,0x5a,0xad,0x5e,0x5a,0xae,0x60, -0x5c,0xae,0x61,0x5b,0xae,0x63,0x5b,0xad,0x62,0x5c,0xae,0x65,0x60,0xb0,0x69, -0x63,0xb5,0x6d,0x68,0xb8,0x73,0x6c,0xbd,0x78,0x70,0xc0,0x7b,0x76,0xc0,0x80, -0x88,0xc2,0x8c,0x90,0xc2,0x92,0x94,0xc5,0x97,0x99,0xca,0x9c,0xa1,0xcf,0xa4, -0xa6,0xd4,0xaa,0xab,0xd7,0xb0,0xad,0xd8,0xb3,0xc0,0xe8,0xc5,0xc5,0xea,0xca, -0xcb,0xed,0xcf,0xd1,0xf3,0xd5,0xd7,0xf6,0xdb,0xdb,0xfa,0xdf,0xdd,0xfb,0xe2, -0xdf,0xfc,0xe2,0xea,0xff,0xe9,0xea,0xff,0xe8,0xe7,0xff,0xe6,0xe6,0xff,0xe7, -0xe4,0xff,0xe7,0xe5,0xff,0xea,0xe9,0xff,0xed,0xea,0xff,0xee,0xe7,0xfd,0xea, -0xf3,0xff,0xf2,0xe2,0xf8,0xdf,0xee,0xff,0xe9,0xde,0xff,0xd6,0x8c,0xbf,0x81, -0x50,0x8d,0x43,0x39,0x70,0x2b,0x46,0x68,0x39,0xf3,0xff,0xe7,0xee,0xfe,0xe7, -0xfa,0xff,0xf7,0xf3,0xf8,0xf6,0xfd,0xfe,0xff,0xfe,0xfc,0xff,0xff,0xfd,0xff, -0xff,0xfe,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0xff,0xff,0xfc,0xfd,0xff,0xfe, -0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf4,0xe7,0xf7,0xfe,0xf3,0xff,0xff,0xfa,0xff, -0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xfe,0xfe,0xff,0xff,0xff, -0xff,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xff,0xfd,0xff,0xff, -0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe,0xfb,0xff,0xfc, -0xfa,0xff,0xfb,0xfa,0xff,0xfa,0xf9,0xff,0xf9,0xf8,0xff,0xf8,0xf8,0xff,0xf8, -0xf7,0xff,0xf5,0xf9,0xff,0xf7,0xf9,0xff,0xf6,0xfa,0xff,0xf7,0xfa,0xff,0xf7, -0xfb,0xff,0xf8,0xfb,0xff,0xf8,0xfb,0xff,0xf8,0xfa,0xff,0xf8,0xf2,0xff,0xf5, -0xf1,0xff,0xf8,0xf1,0xff,0xf7,0xf1,0xff,0xf6,0xf2,0xff,0xf6,0xf1,0xff,0xf3, -0xef,0xff,0xf2,0xee,0xff,0xef,0xed,0xff,0xec,0xe7,0xff,0xe5,0xe1,0xfe,0xdd, -0xd9,0xf7,0xd4,0xcf,0xf0,0xcb,0xc7,0xe9,0xc1,0xc0,0xe2,0xb9,0xbc,0xe0,0xb4, -0xb2,0xdc,0xac,0xab,0xd9,0xa4,0xa2,0xd0,0x9b,0x97,0xc5,0x90,0x88,0xb9,0x83, -0x7d,0xae,0x76,0x73,0xa6,0x6d,0x6e,0xa1,0x67,0x66,0x99,0x5f,0x61,0x97,0x5b, -0x5d,0x93,0x57,0x55,0x8e,0x4f,0x4f,0x88,0x49,0x47,0x83,0x43,0x43,0x80,0x3e, -0x40,0x80,0x38,0x40,0x87,0x31,0x3d,0x88,0x2c,0x3a,0x85,0x29,0x38,0x83,0x27, -0x36,0x84,0x26,0x38,0x86,0x28,0x38,0x89,0x2a,0x3a,0x8b,0x2a,0x3f,0x90,0x2f, -0x3f,0x92,0x2f,0x41,0x94,0x31,0x44,0x98,0x32,0x47,0x9b,0x35,0x4a,0x9e,0x38, -0x4a,0xa1,0x39,0x4b,0xa1,0x3b,0x57,0xa9,0x4a,0x57,0xa8,0x4b,0x58,0xa9,0x4c, -0x59,0xaa,0x4d,0x58,0xac,0x4d,0x58,0xac,0x4d,0x59,0xad,0x4e,0x57,0xae,0x4c, -0x5b,0xb2,0x50,0x59,0xb3,0x50,0x59,0xb3,0x4f,0x57,0xb3,0x4e,0x57,0xb3,0x4e, -0x56,0xb2,0x4d,0x56,0xb2,0x4b,0x56,0xb0,0x50,0x5b,0xb2,0x5c,0x5b,0xb0,0x60, -0x5c,0xb1,0x61,0x5c,0xb1,0x61,0x5d,0xb2,0x62,0x5d,0xb2,0x62,0x5f,0xb1,0x64, -0x5f,0xb1,0x64,0x5a,0xac,0x5f,0x5b,0xad,0x60,0x5e,0xb0,0x63,0x63,0xb3,0x66, -0x67,0xb7,0x6a,0x6a,0xba,0x6d,0x6c,0xbc,0x6f,0x70,0xbc,0x75,0x7c,0xbf,0x82, -0x82,0xbe,0x88,0x86,0xc1,0x8e,0x8c,0xc7,0x94,0x91,0xcc,0x9a,0x96,0xd1,0x9f, -0x9a,0xd4,0xa4,0x9c,0xd6,0xa6,0xab,0xe4,0xb7,0xad,0xe6,0xb9,0xb1,0xe9,0xbe, -0xb6,0xee,0xc5,0xbb,0xf3,0xca,0xc0,0xf8,0xcf,0xc4,0xfc,0xd3,0xcb,0xfb,0xd7, -0xdb,0xfc,0xe1,0xe1,0xfb,0xe4,0xe5,0xfb,0xe8,0xe7,0xfd,0xea,0xeb,0xfe,0xed, -0xed,0xff,0xf1,0xf0,0xff,0xf4,0xf1,0xff,0xf6,0xec,0xf9,0xf1,0xed,0xf9,0xf3, -0xf1,0xfa,0xf7,0xf5,0xfc,0xf9,0xf7,0xfd,0xfc,0xf7,0xfd,0xfc,0xf7,0xfc,0xfd, -0xf8,0xfc,0xfd,0xf7,0xfc,0xfb,0xf7,0xfc,0xfa,0xf5,0xff,0xf8,0xf3,0xff,0xf5, -0xf2,0xff,0xf5,0xf2,0xff,0xf6,0xf4,0xff,0xf9,0xf7,0xff,0xfb,0xf7,0xff,0xfd, -0xf8,0xff,0xfc,0xec,0xfd,0xf0,0xef,0xff,0xf0,0xe3,0xff,0xdf,0x94,0xcd,0x90, -0x5a,0xa0,0x53,0x48,0x89,0x3e,0x39,0x62,0x29,0xca,0xe4,0xbc,0xeb,0xfe,0xe3, -0xf8,0xff,0xf5,0xf7,0xfe,0xfb,0xfd,0xfd,0xff,0xfc,0xf9,0xff,0xff,0xfb,0xff, -0xff,0xfe,0xff,0xff,0xff,0xfe,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfc, -0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff, -0xff,0xfd,0xff,0xf9,0xf9,0xf9,0xf8,0xfc,0xf7,0xf7,0xfe,0xf7,0xf0,0xf9,0xef, -0xf0,0xfc,0xf0,0xf1,0xfe,0xf0,0xf0,0xff,0xf1,0xf2,0xff,0xf4,0xf3,0xff,0xf6, -0xf3,0xff,0xf8,0xf5,0xff,0xf8,0xf3,0xff,0xf5,0xf4,0xff,0xf2,0xf4,0xff,0xf0, -0xf3,0xff,0xef,0xf2,0xff,0xec,0xf1,0xff,0xeb,0xf0,0xff,0xea,0xef,0xff,0xe9, -0xef,0xff,0xe8,0xf1,0xff,0xea,0xee,0xff,0xe7,0xea,0xff,0xe3,0xe4,0xfb,0xdb, -0xdd,0xf4,0xd4,0xd7,0xee,0xce,0xd3,0xea,0xca,0xcb,0xe9,0xc6,0xb5,0xe2,0xbb, -0xab,0xe0,0xb5,0xa4,0xd9,0xad,0x9b,0xd1,0xa2,0x90,0xc7,0x96,0x86,0xbe,0x8b, -0x7e,0xb7,0x80,0x79,0xb3,0x79,0x6a,0xa5,0x68,0x67,0xa5,0x63,0x63,0xa2,0x5d, -0x5f,0x9f,0x57,0x5a,0x9b,0x50,0x56,0x97,0x4b,0x52,0x94,0x45,0x4e,0x93,0x43, -0x3c,0x85,0x35,0x3a,0x86,0x35,0x38,0x85,0x34,0x37,0x84,0x33,0x36,0x83,0x32, -0x35,0x83,0x30,0x34,0x82,0x2f,0x31,0x81,0x2e,0x34,0x84,0x31,0x36,0x87,0x32, -0x39,0x8a,0x35,0x3b,0x8e,0x39,0x40,0x94,0x3c,0x42,0x98,0x40,0x45,0x9b,0x43, -0x49,0x9d,0x44,0x52,0xa2,0x47,0x53,0xa4,0x47,0x54,0xa5,0x48,0x55,0xa6,0x49, -0x58,0xa9,0x4c,0x5a,0xac,0x4d,0x5d,0xaf,0x50,0x5e,0xb0,0x51,0x5b,0xad,0x4e, -0x59,0xae,0x4c,0x5a,0xaf,0x4d,0x5b,0xb1,0x4d,0x5d,0xb3,0x4f,0x5e,0xb4,0x50, -0x5f,0xb5,0x51,0x5f,0xb3,0x55,0x5d,0xaa,0x59,0x5d,0xa8,0x5e,0x5f,0xaa,0x60, -0x60,0xab,0x61,0x62,0xac,0x64,0x62,0xae,0x66,0x63,0xaf,0x67,0x64,0xb1,0x67, -0x5c,0xa9,0x5f,0x5b,0xaa,0x60,0x5d,0xac,0x62,0x5e,0xb0,0x65,0x61,0xb3,0x68, -0x64,0xb6,0x6b,0x66,0xb8,0x6d,0x6b,0xb7,0x70,0x77,0xb7,0x7c,0x7d,0xb7,0x81, -0x80,0xba,0x84,0x84,0xbe,0x88,0x88,0xc1,0x8e,0x8c,0xc5,0x92,0x90,0xc8,0x95, -0x92,0xca,0x97,0xa7,0xde,0xad,0xa9,0xe0,0xaf,0xad,0xe3,0xb4,0xb3,0xe7,0xb8, -0xb8,0xec,0xbd,0xbd,0xf1,0xc2,0xc1,0xf5,0xc6,0xc6,0xf4,0xca,0xd4,0xf6,0xd7, -0xd8,0xf5,0xdb,0xda,0xf7,0xde,0xdd,0xfa,0xe1,0xe0,0xfc,0xe5,0xe3,0xff,0xe8, -0xe6,0xff,0xed,0xe7,0xff,0xee,0xe5,0xff,0xed,0xe6,0xff,0xf0,0xe6,0xff,0xf0, -0xe7,0xff,0xf2,0xe8,0xff,0xf3,0xe9,0xff,0xf4,0xe9,0xff,0xf4,0xeb,0xff,0xf5, -0xf3,0xff,0xf9,0xf4,0xff,0xf9,0xf6,0xff,0xfb,0xf6,0xff,0xfc,0xf8,0xff,0xfc, -0xf8,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfd,0xfe,0xff, -0xfd,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff, -0xff,0xfa,0xff,0xff,0xf6,0xff,0xff,0xf6,0xff,0xff,0xf9,0xff,0xff,0xfb,0xff, -0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfc,0xff,0xfe,0xfa,0xff, -0xfd,0xfd,0xff,0xf3,0xfb,0xfa,0xf1,0xff,0xf5,0xe0,0xff,0xe3,0x99,0xd5,0x99, -0x61,0xad,0x5f,0x54,0x9d,0x4d,0x3c,0x6b,0x2d,0x97,0xb7,0x88,0xed,0xff,0xe4, -0xf6,0xff,0xf4,0xf8,0xff,0xfc,0xfd,0xfc,0xff,0xfc,0xf8,0xff,0xff,0xfb,0xff, -0xff,0xfd,0xff,0xff,0xff,0xfe,0xff,0xff,0xfb,0xff,0xff,0xf9,0xff,0xff,0xfc, -0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xf6,0xf3,0xf5,0xf9,0xfa,0xf8, -0xfd,0xff,0xfb,0xf6,0xfe,0xf3,0xf8,0xff,0xf5,0xf4,0xff,0xf1,0xea,0xff,0xe7, -0xf1,0xff,0xee,0xef,0xff,0xed,0xed,0xff,0xed,0xea,0xff,0xea,0xe5,0xff,0xe6, -0xe2,0xff,0xe5,0xdf,0xfc,0xe2,0xde,0xfd,0xde,0xd2,0xf6,0xcc,0xcc,0xf4,0xc4, -0xc7,0xed,0xbd,0xbc,0xe5,0xb2,0xb4,0xda,0xaa,0xa8,0xd1,0x9e,0xa3,0xc9,0x97, -0x9d,0xc7,0x92,0x87,0xad,0x7b,0x82,0xac,0x77,0x7f,0xa6,0x72,0x77,0xa1,0x6a, -0x72,0x99,0x65,0x69,0x93,0x5c,0x67,0x8f,0x58,0x5c,0x8e,0x54,0x4b,0x90,0x4d, -0x43,0x92,0x49,0x41,0x90,0x47,0x3e,0x8d,0x43,0x3b,0x8b,0x3e,0x37,0x88,0x39, -0x34,0x86,0x34,0x34,0x84,0x31,0x32,0x83,0x2c,0x33,0x85,0x2c,0x34,0x87,0x2b, -0x37,0x8b,0x2d,0x3a,0x8e,0x2f,0x3c,0x91,0x2f,0x40,0x93,0x30,0x3f,0x93,0x34, -0x49,0xa0,0x44,0x49,0xa1,0x47,0x4a,0xa2,0x48,0x4c,0xa4,0x4a,0x4e,0xa6,0x4c, -0x50,0xa8,0x4e,0x52,0xaa,0x50,0x53,0xab,0x51,0x56,0xae,0x54,0x54,0xaf,0x52, -0x57,0xaf,0x55,0x55,0xb0,0x53,0x56,0xb1,0x54,0x57,0xb2,0x55,0x57,0xb2,0x55, -0x5a,0xb1,0x59,0x59,0xa8,0x57,0x5d,0xa8,0x5a,0x5e,0xa9,0x5b,0x60,0xab,0x5d, -0x61,0xac,0x5e,0x62,0xad,0x5f,0x62,0xad,0x5f,0x64,0xac,0x5f,0x63,0xab,0x5e, -0x63,0xab,0x5e,0x64,0xad,0x5d,0x64,0xad,0x5d,0x65,0xae,0x5e,0x66,0xaf,0x5f, -0x68,0xaf,0x5f,0x68,0xac,0x65,0x74,0xb3,0x7b,0x75,0xb2,0x80,0x78,0xb4,0x84, -0x7b,0xb7,0x87,0x7f,0xbb,0x8b,0x83,0xbe,0x91,0x85,0xc0,0x93,0x87,0xc2,0x95, -0x98,0xd3,0xa6,0x9b,0xd6,0xa9,0x9d,0xdb,0xad,0xa4,0xe1,0xb5,0xaa,0xe7,0xbb, -0xb1,0xee,0xc2,0xb5,0xf2,0xc6,0xbe,0xf3,0xcb,0xce,0xf7,0xd7,0xd4,0xf8,0xda, -0xd7,0xfb,0xdd,0xdd,0xff,0xe1,0xe2,0xff,0xe8,0xe6,0xff,0xec,0xe9,0xff,0xef, -0xec,0xff,0xf0,0xe5,0xff,0xea,0xe7,0xff,0xeb,0xe9,0xff,0xee,0xeb,0xff,0xf0, -0xef,0xff,0xf2,0xef,0xff,0xf2,0xef,0xff,0xf2,0xf3,0xff,0xf4,0xf8,0xff,0xf7, -0xfb,0xff,0xf8,0xfb,0xff,0xf9,0xfb,0xff,0xf9,0xfb,0xff,0xfb,0xfb,0xff,0xfb, -0xfb,0xff,0xfc,0xfa,0xff,0xfb,0xfb,0xff,0xfc,0xfb,0xff,0xfe,0xfb,0xff,0xfe, -0xfa,0xff,0xfd,0xf9,0xfe,0xfd,0xf7,0xfc,0xfb,0xf6,0xfb,0xfa,0xf5,0xfb,0xfa, -0xf2,0xfc,0xf6,0xf0,0xfc,0xf6,0xf3,0xfd,0xf7,0xf3,0xfd,0xf7,0xf4,0xfd,0xfa, -0xf6,0xfd,0xfa,0xf7,0xfd,0xfc,0xf7,0xfd,0xfc,0xf9,0xfd,0xfe,0xf9,0xfd,0xfe, -0xfb,0xfc,0xff,0xfb,0xfc,0xff,0xfb,0xfb,0xff,0xfb,0xfb,0xff,0xfd,0xfa,0xff, -0xff,0xf8,0xff,0xff,0xf4,0xff,0xff,0xf3,0xff,0xff,0xf6,0xff,0xff,0xf8,0xff, -0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xf9,0xff,0xff,0xf4,0xff, -0xff,0xfa,0xff,0xf6,0xfa,0xff,0xf1,0xff,0xf9,0xde,0xff,0xe3,0x9d,0xda,0xa2, -0x62,0xb0,0x63,0x5a,0xa6,0x55,0x52,0x85,0x41,0x6f,0x93,0x5d,0xf3,0xff,0xe9, -0xf3,0xff,0xef,0xf5,0xfc,0xf9,0xfd,0xfc,0xff,0xfc,0xf8,0xff,0xff,0xfb,0xff, -0xff,0xfd,0xff,0xff,0xff,0xfe,0xff,0xff,0xf9,0xff,0xff,0xf8,0xff,0xff,0xfb, -0xfb,0xff,0xfe,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf2,0xf8,0xed,0xf3,0xfc,0xef,0xfa,0xff,0xf4, -0xf6,0xff,0xf0,0xda,0xf2,0xd4,0xca,0xe9,0xc4,0xc1,0xe5,0xb9,0xa9,0xd3,0xa3, -0x96,0xc4,0x90,0x8e,0xbf,0x89,0x84,0xb7,0x7e,0x77,0xab,0x75,0x6f,0xa3,0x6d, -0x69,0x9d,0x68,0x66,0x9a,0x65,0x65,0x9a,0x61,0x58,0x93,0x4f,0x54,0x93,0x49, -0x53,0x90,0x46,0x4d,0x8d,0x41,0x4a,0x87,0x3d,0x44,0x84,0x38,0x43,0x81,0x35, -0x3f,0x80,0x31,0x40,0x7e,0x32,0x3f,0x80,0x31,0x43,0x81,0x33,0x43,0x85,0x34, -0x47,0x85,0x37,0x47,0x89,0x38,0x4a,0x89,0x39,0x44,0x8c,0x39,0x3c,0x93,0x37, -0x37,0x98,0x38,0x3d,0x9b,0x3c,0x41,0x9f,0x40,0x47,0xa4,0x43,0x4a,0xa7,0x46, -0x4c,0xa9,0x48,0x4f,0xaa,0x47,0x55,0xb0,0x4d,0x56,0xb0,0x4c,0x56,0xb0,0x4c, -0x58,0xb0,0x4c,0x59,0xb2,0x4b,0x59,0xb2,0x4b,0x5b,0xb1,0x4b,0x5a,0xb1,0x4f, -0x5b,0xaf,0x57,0x5b,0xad,0x5b,0x5b,0xad,0x5b,0x5b,0xad,0x5b,0x5b,0xad,0x5b, -0x5b,0xad,0x5b,0x5b,0xad,0x5b,0x5b,0xad,0x5b,0x5b,0xad,0x5b,0x5c,0xae,0x5c, -0x5f,0xae,0x5f,0x60,0xaf,0x60,0x61,0xb0,0x61,0x63,0xb2,0x63,0x64,0xb3,0x64, -0x66,0xaf,0x69,0x6f,0xad,0x77,0x73,0xac,0x7f,0x79,0xb0,0x83,0x7e,0xb5,0x88, -0x83,0xb8,0x8c,0x86,0xbb,0x8f,0x88,0xbd,0x91,0x8b,0xbe,0x92,0x9e,0xd1,0xa5, -0xa3,0xd4,0xa8,0xa8,0xd8,0xae,0xb0,0xde,0xb4,0xb7,0xe5,0xbb,0xbd,0xeb,0xc1, -0xc3,0xef,0xc6,0xc6,0xf1,0xcc,0xd0,0xf7,0xde,0xd1,0xf6,0xe2,0xd3,0xf7,0xe6, -0xd7,0xfb,0xea,0xda,0xfe,0xed,0xde,0xff,0xf2,0xe0,0xff,0xf5,0xe1,0xff,0xf6, -0xdf,0xff,0xf6,0xdf,0xff,0xf6,0xe3,0xff,0xf8,0xe5,0xff,0xfb,0xe6,0xff,0xfc, -0xe6,0xff,0xfc,0xe6,0xff,0xfe,0xea,0xff,0xfc,0xf1,0xff,0xfb,0xf4,0xff,0xf9, -0xf3,0xff,0xf8,0xf4,0xff,0xf7,0xf4,0xff,0xf9,0xf3,0xff,0xf8,0xf2,0xfe,0xf8, -0xf4,0xfe,0xf8,0xf6,0xff,0xfa,0xf8,0xff,0xfa,0xf8,0xff,0xfc,0xf8,0xff,0xfc, -0xf8,0xfd,0xfc,0xf8,0xfd,0xfc,0xf8,0xfd,0xfc,0xfa,0xfd,0xfb,0xfe,0xfb,0xf6, -0xff,0xfc,0xf4,0xff,0xfc,0xf4,0xff,0xfd,0xf5,0xff,0xfd,0xf5,0xff,0xfe,0xf6, -0xff,0xfd,0xf8,0xff,0xfd,0xf8,0xff,0xfe,0xf9,0xff,0xfd,0xfa,0xff,0xfe,0xfb, -0xff,0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfc, -0xf6,0xff,0xf9,0xf1,0xff,0xf8,0xf3,0xff,0xf8,0xf3,0xff,0xf8,0xf3,0xff,0xf8, -0xf4,0xff,0xf8,0xf4,0xff,0xf8,0xf4,0xff,0xf8,0xf3,0xff,0xf6,0xf3,0xff,0xf6, -0xf4,0xff,0xf7,0xf4,0xff,0xf7,0xf5,0xff,0xfa,0xf5,0xff,0xfa,0xf6,0xff,0xfb, -0xfa,0xff,0xff,0xff,0xf6,0xff,0xff,0xf5,0xff,0xff,0xf8,0xff,0xff,0xfb,0xff, -0xff,0xfc,0xfb,0xff,0xfc,0xfb,0xff,0xfb,0xfc,0xff,0xf8,0xff,0xff,0xf5,0xff, -0xff,0xfa,0xff,0xfb,0xfd,0xff,0xf3,0xff,0xfb,0xe3,0xff,0xeb,0xa9,0xe2,0xaf, -0x68,0xb2,0x6a,0x5e,0xaa,0x59,0x5d,0x94,0x4b,0x4f,0x77,0x3d,0xf1,0xff,0xe6, -0xf0,0xff,0xee,0xf4,0xfd,0xfa,0xfb,0xfc,0xff,0xfa,0xf5,0xff,0xff,0xfa,0xff, -0xff,0xfd,0xff,0xff,0xff,0xfc,0xff,0xff,0xf8,0xff,0xff,0xf7,0xff,0xff,0xf9, -0xfb,0xff,0xfe,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xee,0xf6,0xff,0xeb,0xef,0xff,0xe6, -0xbf,0xdf,0xb6,0x84,0xaa,0x7a,0x63,0x90,0x58,0x58,0x8d,0x4e,0x4e,0x8a,0x44, -0x4b,0x8c,0x41,0x46,0x8a,0x3d,0x3f,0x85,0x38,0x3a,0x82,0x35,0x38,0x80,0x33, -0x39,0x81,0x35,0x3b,0x83,0x37,0x3d,0x85,0x38,0x3f,0x8b,0x3a,0x40,0x8e,0x3a, -0x44,0x92,0x3e,0x48,0x97,0x40,0x4d,0x9b,0x47,0x52,0xa1,0x4a,0x55,0xa4,0x4d, -0x57,0xa7,0x4e,0x55,0xa4,0x4d,0x56,0xa6,0x4d,0x57,0xa7,0x4e,0x59,0xa9,0x4e, -0x5c,0xac,0x53,0x5e,0xae,0x53,0x5f,0xaf,0x54,0x5e,0xb1,0x55,0x56,0xb2,0x53, -0x54,0xb2,0x53,0x54,0xb2,0x53,0x57,0xb2,0x55,0x56,0xb1,0x54,0x58,0xb1,0x54, -0x57,0xaf,0x55,0x57,0xae,0x54,0x5a,0xae,0x56,0x5b,0xaf,0x57,0x60,0xae,0x5a, -0x62,0xb0,0x5c,0x65,0xb2,0x5e,0x66,0xb2,0x60,0x68,0xb4,0x62,0x6a,0xb2,0x65, -0x62,0xa8,0x62,0x66,0xa8,0x67,0x6c,0xab,0x6d,0x72,0xb1,0x73,0x78,0xb7,0x79, -0x7e,0xbd,0x7f,0x82,0xc1,0x83,0x85,0xc3,0x87,0x8f,0xcb,0x8f,0x92,0xcd,0x93, -0x97,0xd2,0x98,0x9f,0xd9,0x9f,0xa6,0xdf,0xa8,0xad,0xe6,0xaf,0xb5,0xec,0xb5, -0xb7,0xeb,0xbb,0xc1,0xee,0xcd,0xc5,0xed,0xd4,0xc9,0xf1,0xd8,0xcf,0xf6,0xdd, -0xd4,0xfb,0xe2,0xd9,0xfd,0xe5,0xdc,0xff,0xea,0xdf,0xff,0xeb,0xd9,0xf8,0xe3, -0xdc,0xf8,0xe5,0xe0,0xfa,0xe8,0xe3,0xfd,0xed,0xe8,0xff,0xf0,0xeb,0xff,0xf3, -0xed,0xff,0xf5,0xef,0xff,0xf8,0xe8,0xfe,0xf2,0xe8,0xfd,0xf4,0xe9,0xfe,0xf5, -0xea,0xff,0xf7,0xed,0xff,0xf8,0xee,0xff,0xfb,0xef,0xff,0xfd,0xf1,0xff,0xfe, -0xf1,0xfe,0xff,0xf0,0xfd,0xff,0xf0,0xfb,0xff,0xef,0xfa,0xfe,0xed,0xf7,0xfe, -0xec,0xf6,0xfd,0xeb,0xf4,0xfd,0xec,0xf4,0xfb,0xf8,0xff,0xff,0xfa,0xff,0xff, -0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xfe,0xf9,0xfd,0xfe,0xfa,0xfc,0xfd, -0xfa,0xfb,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff, -0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfd,0xff,0xff,0xff,0xfe, -0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb, -0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xfa,0xf7,0xff,0xfb,0xf8,0xff,0xfb,0xf8, -0xff,0xfc,0xf9,0xff,0xfc,0xfb,0xff,0xfd,0xfa,0xff,0xfd,0xfc,0xff,0xff,0xfb, -0xf9,0xff,0xf8,0xf5,0xff,0xf7,0xf5,0xff,0xf7,0xf5,0xff,0xf7,0xf5,0xff,0xf7, -0xf5,0xff,0xf7,0xf5,0xff,0xf7,0xf4,0xff,0xf6,0xf8,0xff,0xf8,0xf8,0xff,0xf8, -0xf8,0xff,0xf8,0xf8,0xff,0xf8,0xf8,0xff,0xf8,0xf8,0xff,0xf8,0xf8,0xff,0xf8, -0xf8,0xff,0xfe,0xf9,0xf9,0xff,0xf9,0xf9,0xff,0xf9,0xfc,0xff,0xfb,0xff,0xfa, -0xfc,0xff,0xf5,0xff,0xff,0xf4,0xff,0xfd,0xf8,0xff,0xfa,0xfc,0xff,0xf7,0xff, -0xff,0xf9,0xff,0xfd,0xfc,0xff,0xf4,0xff,0xfc,0xe7,0xff,0xef,0xb2,0xe9,0xb8, -0x68,0xb1,0x6b,0x5f,0xa7,0x5a,0x58,0x90,0x45,0x39,0x62,0x24,0xeb,0xff,0xe0, -0xf2,0xff,0xf0,0xf8,0xff,0xff,0xfb,0xfc,0xff,0xf9,0xf4,0xff,0xff,0xfa,0xff, -0xff,0xfd,0xff,0xff,0xff,0xfc,0xff,0xff,0xf8,0xff,0xff,0xf7,0xff,0xff,0xf9, -0xfb,0xff,0xfe,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xe4,0xde,0xfe,0xcf,0xa6,0xcb,0x99, -0x6c,0x97,0x5e,0x4c,0x81,0x3e,0x47,0x82,0x38,0x47,0x8a,0x39,0x49,0x95,0x3d, -0x4d,0x9e,0x41,0x4d,0xa2,0x40,0x4b,0xa5,0x42,0x4e,0xa8,0x45,0x51,0xac,0x49, -0x55,0xaf,0x4f,0x58,0xb2,0x52,0x5a,0xb3,0x56,0x56,0xae,0x5b,0x56,0xad,0x5d, -0x56,0xad,0x5d,0x55,0xad,0x5a,0x55,0xac,0x5c,0x54,0xac,0x59,0x54,0xac,0x59, -0x53,0xab,0x57,0x56,0xae,0x5b,0x57,0xaf,0x5b,0x57,0xaf,0x5b,0x57,0xb0,0x5a, -0x58,0xb0,0x5c,0x58,0xb1,0x5b,0x58,0xb1,0x5b,0x5a,0xaf,0x5d,0x5e,0xad,0x63, -0x63,0xaf,0x67,0x67,0xb3,0x6c,0x6d,0xb6,0x72,0x72,0xba,0x78,0x77,0xbd,0x7e, -0x7b,0xbe,0x81,0x7f,0xbe,0x86,0x8a,0xc6,0x90,0x8d,0xc8,0x96,0x94,0xca,0x9b, -0x99,0xce,0xa2,0xa1,0xd3,0xa9,0xa8,0xd7,0xb0,0xac,0xdb,0xb4,0xb0,0xdd,0xb6, -0xcc,0xf5,0xd0,0xcf,0xf5,0xd1,0xd3,0xf6,0xd4,0xd6,0xf9,0xd7,0xda,0xfa,0xdb, -0xdd,0xfd,0xde,0xe0,0xff,0xe0,0xe1,0xff,0xe2,0xea,0xff,0xe9,0xeb,0xff,0xec, -0xeb,0xff,0xec,0xed,0xff,0xec,0xed,0xff,0xed,0xee,0xff,0xee,0xf0,0xff,0xee, -0xec,0xff,0xef,0xe8,0xff,0xf0,0xe7,0xff,0xf2,0xe8,0xff,0xf4,0xe9,0xff,0xf4, -0xea,0xff,0xf6,0xed,0xff,0xf7,0xf0,0xff,0xfa,0xf2,0xff,0xfa,0xf4,0xff,0xfb, -0xf6,0xff,0xfc,0xf8,0xff,0xfc,0xfa,0xff,0xfe,0xfb,0xff,0xfe,0xf9,0xfe,0xfc, -0xf7,0xfc,0xfa,0xf6,0xfd,0xf6,0xfb,0xff,0xf7,0xfb,0xff,0xf4,0xfb,0xff,0xf4, -0xfb,0xff,0xf5,0xfd,0xff,0xf5,0xfd,0xff,0xf7,0xfd,0xff,0xf8,0xff,0xff,0xf9, -0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfe,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff,0xf6,0xfb,0xf9,0xf5,0xfc,0xf9, -0xf6,0xfd,0xfa,0xf8,0xff,0xfc,0xfa,0xff,0xfd,0xfb,0xff,0xff,0xfd,0xff,0xff, -0xfd,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff, -0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, -0xfd,0xff,0xff,0xfc,0xfe,0xfe,0xfb,0xfd,0xfd,0xfa,0xfc,0xfc,0xf9,0xfb,0xfb, -0xf8,0xfb,0xf9,0xf8,0xfb,0xf9,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe, -0xfd,0xff,0xfe,0xfd,0xff,0xff,0xfc,0xff,0xfd,0xfb,0xfd,0xfd,0xfc,0xfc,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfc,0xff,0xff,0xfc, -0xff,0xff,0xfb,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xff,0xfa, -0xfd,0xff,0xfe,0xf6,0xff,0xff,0xf4,0xff,0xff,0xf3,0xff,0xfa,0xf5,0xff,0xf3, -0xf8,0xff,0xee,0xfd,0xff,0xee,0xff,0xff,0xf2,0xff,0xfd,0xf6,0xff,0xfb,0xfe, -0xff,0xf5,0xfd,0xff,0xfd,0xff,0xf1,0xfd,0xf7,0xe9,0xff,0xee,0xb9,0xed,0xbe, -0x6a,0xb1,0x6f,0x60,0xa8,0x5c,0x57,0x8f,0x42,0x34,0x5f,0x1e,0xe2,0xff,0xd6, -0xf1,0xff,0xef,0xf8,0xff,0xff,0xfb,0xfb,0xff,0xf9,0xf3,0xff,0xff,0xfa,0xff, -0xff,0xfd,0xff,0xff,0xff,0xfc,0xff,0xff,0xf7,0xff,0xff,0xf5,0xff,0xff,0xf9, -0xfb,0xff,0xfe,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xea,0xff,0xd9,0xc4,0xf0,0xb3,0x77,0xa6,0x68, -0x4c,0x7e,0x3e,0x60,0x96,0x53,0x73,0xb1,0x6b,0x6d,0xb0,0x65,0x66,0xaf,0x5f, -0x60,0xae,0x5a,0x60,0xb1,0x5a,0x60,0xb4,0x5b,0x5f,0xb6,0x5c,0x60,0xb4,0x5b, -0x60,0xb1,0x5a,0x5f,0xae,0x57,0x5d,0xa9,0x5b,0x5e,0xa8,0x66,0x60,0xa8,0x6c, -0x62,0xab,0x6d,0x66,0xaf,0x71,0x6a,0xb3,0x75,0x6d,0xb6,0x78,0x70,0xb9,0x7b, -0x72,0xbc,0x7c,0x77,0xc0,0x82,0x7a,0xc4,0x84,0x7f,0xc9,0x89,0x86,0xd0,0x90, -0x8e,0xd8,0x98,0x95,0xdf,0x9f,0x9b,0xe5,0xa5,0xa1,0xe6,0xa9,0xb3,0xec,0xb9, -0xb9,0xed,0xbe,0xbf,0xf0,0xc4,0xc5,0xf6,0xca,0xcb,0xfb,0xd1,0xd1,0xfe,0xd7, -0xd6,0xff,0xdd,0xd7,0xff,0xe1,0xdc,0xff,0xe6,0xdf,0xff,0xe9,0xe2,0xff,0xec, -0xe6,0xff,0xef,0xe8,0xff,0xf3,0xeb,0xff,0xf6,0xed,0xff,0xf8,0xf1,0xff,0xf8, -0xef,0xff,0xf0,0xf1,0xff,0xf0,0xf2,0xff,0xf1,0xf4,0xff,0xf1,0xf5,0xff,0xf4, -0xf6,0xff,0xf5,0xf9,0xff,0xf7,0xf9,0xff,0xf7,0xf7,0xff,0xf6,0xf8,0xff,0xf7, -0xf8,0xff,0xf9,0xfa,0xff,0xfa,0xfa,0xff,0xfb,0xfb,0xff,0xfc,0xfb,0xff,0xfc, -0xfa,0xff,0xfc,0xf6,0xff,0xfb,0xf4,0xff,0xfb,0xf5,0xff,0xfa,0xf4,0xff,0xfa, -0xf4,0xff,0xfa,0xf4,0xff,0xfa,0xf6,0xff,0xfc,0xf7,0xff,0xfd,0xf5,0xfb,0xfa, -0xf7,0xfc,0xfb,0xfb,0xfb,0xfb,0xfd,0xfc,0xfe,0xff,0xfd,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xff,0xfe,0xff,0xff,0xf4,0xff,0xff,0xf1,0xff,0xff,0xf1, -0xff,0xff,0xf3,0xff,0xff,0xf4,0xff,0xff,0xf4,0xff,0xff,0xf7,0xff,0xff,0xf8, -0xff,0xff,0xf7,0xff,0xfe,0xf9,0xff,0xfd,0xfa,0xff,0xfd,0xfa,0xff,0xfc,0xfc, -0xff,0xfc,0xfc,0xff,0xfb,0xfd,0xff,0xfc,0xfc,0xff,0xfd,0xfc,0xfb,0xff,0xfa, -0xfb,0xfe,0xfc,0xfb,0xfe,0xfc,0xfd,0xfe,0xfc,0xfd,0xfe,0xfc,0xfd,0xfd,0xfd, -0xff,0xfd,0xfd,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xfd,0xfc,0xff, -0xf9,0xfd,0xfe,0xfc,0xfe,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff, -0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xf9,0xff,0xfd,0xf9,0xff,0xfd,0xf9,0xff,0xfd, -0xf9,0xff,0xfe,0xfa,0xff,0xff,0xf8,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff, -0xff,0xfc,0xfe,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfc,0xfc,0xff,0xfb,0xfb, -0xff,0xfb,0xf8,0xff,0xfb,0xf8,0xff,0xfc,0xf9,0xff,0xfe,0xfb,0xff,0xff,0xfc, -0xff,0xff,0xfc,0xf6,0xff,0xff,0xf3,0xff,0xfe,0xf3,0xff,0xf8,0xf4,0xff,0xf4, -0xf8,0xff,0xf1,0xfa,0xff,0xf0,0xff,0xff,0xf3,0xff,0xff,0xf8,0xff,0xfe,0xff, -0xff,0xf8,0xfd,0xff,0xfe,0xff,0xef,0xfc,0xf4,0xea,0xff,0xee,0xc2,0xf3,0xc5, -0x73,0xb4,0x76,0x67,0xac,0x61,0x60,0x9b,0x4b,0x39,0x68,0x23,0xda,0xfe,0xd0, -0xec,0xff,0xeb,0xf3,0xfb,0xfa,0xfd,0xfb,0xff,0xfe,0xf7,0xff,0xff,0xfb,0xff, -0xff,0xfd,0xff,0xff,0xff,0xfc,0xff,0xff,0xf9,0xff,0xff,0xf9,0xfd,0xff,0xfc, -0xfb,0xff,0xff,0xfb,0xfe,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xcd,0x87,0xc2,0x77,0x5f,0x95,0x52, -0x75,0xa9,0x6d,0x79,0xaa,0x76,0x6f,0xa0,0x72,0x74,0xa7,0x7b,0x76,0xac,0x81, -0x79,0xb2,0x85,0x78,0xb4,0x84,0x7d,0xb8,0x86,0x87,0xbf,0x8e,0x95,0xc7,0x97, -0x9e,0xcc,0x9d,0xaa,0xd1,0xa3,0xb0,0xd3,0xab,0xbb,0xdd,0xbf,0xb2,0xd2,0xb9, -0xc5,0xe5,0xcc,0xc9,0xe9,0xd0,0xcc,0xec,0xd3,0xda,0xfa,0xe1,0xd4,0xf4,0xdb, -0xd4,0xf5,0xda,0xdd,0xfd,0xe4,0xe1,0xff,0xe7,0xe1,0xff,0xe7,0xdd,0xfe,0xe3, -0xdf,0xff,0xe5,0xe7,0xff,0xed,0xea,0xff,0xf0,0xea,0xff,0xef,0xeb,0xff,0xea, -0xed,0xff,0xed,0xed,0xff,0xed,0xee,0xff,0xee,0xef,0xff,0xef,0xf1,0xff,0xf0, -0xf2,0xff,0xf3,0xf2,0xff,0xf4,0xf7,0xff,0xf8,0xf6,0xff,0xf7,0xf8,0xff,0xf9, -0xf8,0xff,0xfa,0xf7,0xfe,0xf9,0xf6,0xfd,0xf8,0xf6,0xfd,0xf8,0xf7,0xfd,0xf8, -0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xfb, -0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfc,0xfe,0xff,0xfb,0xfc,0xff,0xfb, -0xfc,0xff,0xfd,0xfa,0xff,0xfd,0xfa,0xff,0xfd,0xfa,0xff,0xfd,0xf9,0xff,0xfe, -0xfa,0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfe, -0xfd,0xff,0xfe,0xfb,0xff,0xfe,0xfa,0xff,0xfe,0xf7,0xfd,0xfc,0xfb,0xff,0xff, -0xfa,0xff,0xfe,0xfc,0xfc,0xfc,0xfd,0xfb,0xfb,0xff,0xfa,0xfb,0xff,0xfc,0xfd, -0xff,0xff,0xfe,0xff,0xfe,0xfe,0xff,0xfe,0xfc,0xff,0xfe,0xfc,0xff,0xff,0xfc, -0xff,0xff,0xfb,0xff,0xfd,0xf8,0xfe,0xfe,0xf8,0xff,0xff,0xfb,0xff,0xff,0xfb, -0xff,0xff,0xfb,0xff,0xff,0xfc,0xfe,0xfd,0xf9,0xff,0xfc,0xf8,0xff,0xfb,0xfa, -0xff,0xfc,0xfc,0xff,0xfe,0xfe,0xff,0xfe,0xfe,0xff,0xfa,0xfa,0xff,0xfd,0xfc, -0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfc,0xfb,0xff,0xfd,0xfc,0xff,0xff,0xfe, -0xff,0xfe,0xfe,0xff,0xfe,0xfe,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xff,0xfd,0xff, -0xff,0xfc,0xfe,0xff,0xfa,0xfc,0xfb,0xf9,0xf9,0xfb,0xf9,0xf8,0xfc,0xfd,0xf9, -0xff,0xff,0xfb,0xfd,0xff,0xf9,0xfb,0xff,0xfb,0xfa,0xff,0xfa,0xf7,0xfe,0xf9, -0xf8,0xff,0xfc,0xf8,0xff,0xff,0xf6,0xff,0xff,0xf8,0xfe,0xff,0xf8,0xff,0xff, -0xf8,0xff,0xff,0xf3,0xfd,0xf7,0xf3,0xf9,0xf4,0xf7,0xfb,0xf6,0xff,0xff,0xfc, -0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xfb,0xf6,0xff,0xff,0xfb,0xff,0xf9,0xf5, -0xf3,0xed,0xe8,0xed,0xe7,0xe2,0xe9,0xe5,0xe0,0xe5,0xe1,0xdc,0xda,0xd6,0xd1, -0xce,0xce,0xc8,0xb9,0xbe,0xbc,0xb1,0xba,0xb7,0xa6,0xb1,0xa9,0xb5,0xc0,0xb6, -0xfa,0xff,0xf9,0xf9,0xff,0xf7,0xee,0xef,0xeb,0xff,0xff,0xfe,0xff,0xfa,0xfc, -0xff,0xfd,0xff,0xfb,0xfe,0xfc,0xf6,0xff,0xf7,0xe5,0xff,0xe6,0xcc,0xfb,0xcd, -0x7b,0xb9,0x7d,0x60,0xa5,0x5c,0x60,0xa1,0x4c,0x34,0x6c,0x21,0xca,0xee,0xc2, -0xf3,0xff,0xf4,0xf4,0xf8,0xf9,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfd,0xff, -0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfe,0xfd,0xff,0xff,0xfb,0xfe,0xff, -0xfb,0xff,0xff,0xfd,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xba,0xfc,0xaa,0x77,0xb8,0x69,0x87,0xc0,0x7c, -0xb8,0xea,0xb4,0xbf,0xeb,0xc2,0xc4,0xed,0xce,0xcf,0xf6,0xdd,0xcf,0xf6,0xe0, -0xd3,0xfd,0xe6,0xd3,0xfd,0xe6,0xd8,0xff,0xe7,0xdf,0xff,0xea,0xe8,0xff,0xed, -0xee,0xff,0xee,0xf5,0xff,0xf0,0xf8,0xff,0xf4,0xf5,0xff,0xf6,0xf3,0xff,0xf8, -0xf4,0xff,0xf7,0xf3,0xff,0xf8,0xec,0xf7,0xef,0xf3,0xff,0xf8,0xf2,0xfd,0xf5, -0xf6,0xff,0xfb,0xf2,0xfd,0xf5,0xf6,0xff,0xfb,0xf8,0xff,0xfb,0xf6,0xff,0xfb, -0xf8,0xff,0xfb,0xf6,0xff,0xfb,0xf8,0xff,0xfb,0xf1,0xfc,0xf4,0xfd,0xff,0xfb, -0xfd,0xff,0xfb,0xff,0xff,0xfc,0xfd,0xff,0xfb,0xff,0xff,0xfc,0xfc,0xff,0xfb, -0xfd,0xfe,0xfa,0xfd,0xfe,0xfa,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,0xfd,0xfd,0xfd,0xfd,0xfe,0xfc, -0xff,0xfe,0xfa,0xff,0xff,0xf9,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfc, -0xff,0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xfe,0xf9,0xf7,0xf6,0xf8,0xf9,0xf7, -0xfa,0xfa,0xfa,0xfa,0xfc,0xfc,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff, -0xfd,0xff,0xff,0xff,0xfe,0xfd,0xff,0xfc,0xf9,0xfe,0xfa,0xf9,0xfd,0xfb,0xfa, -0xfd,0xfe,0xfc,0xfd,0xff,0xfe,0xfb,0xff,0xff,0xfa,0xff,0xfe,0xfb,0xff,0xff, -0xfb,0xff,0xff,0xfd,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe, -0xff,0xff,0xfc,0xff,0xfe,0xfe,0xff,0xf7,0xf9,0xff,0xf7,0xfb,0xff,0xfb,0xfc, -0xff,0xfb,0xfc,0xff,0xfc,0xfb,0xfd,0xfe,0xfc,0xfd,0xff,0xfc,0xfb,0xff,0xfc, -0xf8,0xfe,0xf9,0xfa,0xff,0xfb,0xfd,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfe, -0xff,0xff,0xfe,0xff,0xfc,0xfc,0xff,0xf9,0xf9,0xff,0xff,0xfe,0xff,0xff,0xfe, -0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfc,0xfb,0xfd,0xf9,0xf8,0xfc,0xf7,0xf6, -0xfb,0xf7,0xf6,0xfc,0xf7,0xf6,0xf9,0xf5,0xf4,0xfa,0xf5,0xf4,0xfd,0xf9,0xf8, -0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xfe,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0xff,0xff,0xfb, -0xfc,0xff,0xf6,0xf5,0xfa,0xf1,0xf4,0xfc,0xf2,0xee,0xf5,0xee,0xe5,0xeb,0xe6, -0xdb,0xe2,0xdf,0xd3,0xd8,0xd9,0xcc,0xd1,0xd4,0xc4,0xc8,0xcd,0xbd,0xc4,0xc7, -0xb3,0xbe,0xbb,0xa9,0xb6,0xae,0x9e,0xa8,0xa2,0x92,0x9a,0x93,0x86,0x8c,0x87, -0x79,0x7d,0x77,0x6e,0x6e,0x68,0x66,0x63,0x5e,0x38,0x34,0x2f,0x2c,0x28,0x23, -0x1c,0x18,0x13,0x11,0x0e,0x09,0x0d,0x0a,0x05,0x08,0x08,0x02,0x04,0x04,0x00, -0x00,0x01,0x00,0x07,0x0a,0x08,0x08,0x0d,0x0b,0x0d,0x12,0x10,0x3f,0x45,0x40, -0xed,0xf2,0xf0,0xfb,0xff,0xff,0xfc,0xfb,0xfd,0xff,0xfe,0xff,0xff,0xf9,0xfe, -0xff,0xfd,0xff,0xfb,0xff,0xfa,0xf4,0xff,0xf5,0xe5,0xff,0xe6,0xcd,0xfc,0xce, -0x7d,0xba,0x80,0x61,0xa6,0x5d,0x5f,0xa2,0x4d,0x35,0x6f,0x21,0xc4,0xe8,0xbc, -0xf3,0xff,0xf4,0xf5,0xf9,0xfa,0xff,0xfb,0xff,0xff,0xfb,0xfe,0xff,0xff,0xfe, -0xff,0xff,0xf9,0xff,0xff,0xfb,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfb,0xfd,0xff, -0xfb,0xfe,0xff,0xff,0xff,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xe8,0x9e,0x6b,0xa7,0x61,0xa5,0xd8,0x9e, -0xe2,0xff,0xdf,0xdb,0xff,0xdd,0xe1,0xff,0xe8,0xe6,0xff,0xef,0xe1,0xfb,0xed, -0xe4,0xff,0xf2,0xe8,0xff,0xf4,0xea,0xff,0xf6,0xec,0xff,0xf4,0xef,0xff,0xf3, -0xf1,0xff,0xf0,0xf5,0xff,0xf0,0xf6,0xfe,0xf3,0xf6,0xfe,0xf7,0xf8,0xff,0xfc, -0xf4,0xfb,0xf6,0xf8,0xff,0xfc,0xf1,0xf8,0xf3,0xf3,0xfd,0xf7,0xf2,0xf9,0xf4, -0xf8,0xff,0xfc,0xf7,0xfe,0xf9,0xf7,0xff,0xfb,0xf9,0xff,0xfb,0xf4,0xfe,0xf8, -0xf6,0xfd,0xf8,0xf7,0xff,0xfb,0xfa,0xff,0xfc,0xf8,0xff,0xfa,0xf5,0xfb,0xf6, -0xf5,0xfb,0xf6,0xf8,0xfb,0xf9,0xf7,0xfd,0xf8,0xfa,0xfd,0xfb,0xf9,0xfe,0xfc, -0xfc,0xff,0xfd,0xfc,0xff,0xfd,0xf5,0xf8,0xf6,0xf6,0xf9,0xf7,0xf7,0xf9,0xf9, -0xf9,0xfb,0xfb,0xfb,0xfd,0xfd,0xfc,0xfe,0xfe,0xfd,0xff,0xff,0xfb,0xff,0xff, -0xfa,0xff,0xfe,0xfa,0xff,0xfc,0xfb,0xff,0xfe,0xfa,0xff,0xfd,0xf9,0xfe,0xfc, -0xfa,0xfd,0xfb,0xf9,0xfc,0xfa,0xfb,0xfc,0xfa,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfc,0xfc,0xfa,0xfa,0xfa,0xf8,0xf8,0xf8, -0xf7,0xf7,0xf7,0xff,0xff,0xfe,0xff,0xff,0xfe,0xfe,0xff,0xfd,0xfd,0xfe,0xfc, -0xfd,0xff,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xfe,0xf2,0xf7,0xf6, -0xf3,0xf8,0xf7,0xf7,0xf9,0xf9,0xf8,0xfa,0xfa,0xfa,0xfb,0xf9,0xf9,0xfa,0xf8, -0xf9,0xf7,0xf6,0xfa,0xf6,0xf5,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xff,0xff,0xff,0xfe,0xff,0xfd,0xf7,0xfc,0xfa,0xf2,0xf9,0xf6,0xee,0xf5,0xf2, -0xfa,0xff,0xfe,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfc,0xff,0xfd,0xff,0xfd,0xfd, -0xff,0xfb,0xfc,0xff,0xfb,0xfc,0xff,0xfc,0xfd,0xf3,0xf5,0xf5,0xf1,0xf7,0xf6, -0xf5,0xfa,0xf9,0xf8,0xfe,0xfd,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff, -0xfa,0xff,0xff,0xfb,0xff,0xff,0xf4,0xfa,0xf9,0xe8,0xed,0xec,0xdd,0xe3,0xe2, -0xd5,0xda,0xd9,0xc9,0xcf,0xce,0xbb,0xc0,0xbf,0xaf,0xb4,0xb3,0xae,0xb0,0xb1, -0xa6,0xa5,0xa7,0x97,0x96,0x98,0x88,0x89,0x87,0x75,0x79,0x74,0x60,0x64,0x5e, -0x48,0x4c,0x46,0x35,0x3c,0x35,0x0f,0x16,0x0f,0x0c,0x13,0x0c,0x0b,0x0f,0x0a, -0x09,0x0b,0x0b,0x0a,0x09,0x0b,0x09,0x08,0x0c,0x09,0x05,0x0b,0x06,0x05,0x09, -0x00,0x04,0x03,0x00,0x06,0x01,0x01,0x06,0x04,0x01,0x07,0x02,0x00,0x05,0x03, -0x00,0x03,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x0b,0x0c,0x0a,0x05,0x08,0x06, -0x00,0x03,0x01,0x00,0x01,0x00,0x01,0x04,0x02,0x03,0x08,0x06,0x06,0x0b,0x0a, -0x09,0x0b,0x0b,0x00,0x00,0x00,0x03,0x03,0x03,0x04,0x07,0x05,0x30,0x33,0x31, -0xf6,0xf8,0xf8,0xff,0xff,0xff,0xf2,0xef,0xf1,0xf8,0xf2,0xf7,0xff,0xf8,0xff, -0xff,0xfe,0xff,0xfb,0xff,0xfa,0xf6,0xff,0xf5,0xe6,0xff,0xe7,0xd0,0xff,0xd1, -0x81,0xbe,0x84,0x63,0xa8,0x5f,0x60,0xa3,0x4e,0x3a,0x74,0x26,0xb8,0xdd,0xaf, -0xf3,0xff,0xf4,0xf7,0xfb,0xfc,0xff,0xfc,0xff,0xff,0xfb,0xfe,0xff,0xff,0xfc, -0xff,0xff,0xf9,0xff,0xff,0xfb,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfb,0xfd,0xff, -0xfb,0xfe,0xff,0xff,0xff,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xa9,0xe2,0xa3,0x59,0x8f,0x53,0x9a,0xc9,0x98, -0xe6,0xff,0xe5,0xe6,0xff,0xe8,0xee,0xff,0xf3,0xf1,0xff,0xf8,0xf1,0xff,0xf9, -0xf2,0xff,0xfa,0xf4,0xff,0xfc,0xf6,0xff,0xfc,0xf4,0xff,0xf9,0xf7,0xff,0xf8, -0xfa,0xff,0xf8,0xfd,0xff,0xf9,0xfc,0xff,0xfa,0xed,0xf3,0xee,0xfa,0xff,0xfc, -0xeb,0xf1,0xec,0xfa,0xff,0xfc,0xfa,0xff,0xfb,0xfa,0xff,0xfc,0xf6,0xfc,0xf7, -0xfa,0xff,0xfc,0xfb,0xff,0xfc,0xfa,0xff,0xfc,0xfa,0xff,0xfb,0xf6,0xfd,0xf8, -0xf6,0xfc,0xf7,0xf8,0xff,0xfa,0xfb,0xff,0xfc,0xfb,0xff,0xfc,0xfa,0xff,0xfd, -0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfb,0xff,0xfe, -0xfb,0xff,0xff,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfb,0xff,0xff, -0xfa,0xff,0xff,0xfb,0xff,0xff,0xf8,0xfe,0xfd,0xf8,0xfd,0xfc,0xf6,0xfc,0xfb, -0xf5,0xff,0xfe,0xf5,0xff,0xfe,0xf5,0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xff, -0xfa,0xff,0xfe,0xfb,0xff,0xff,0xfd,0xff,0xff,0xf8,0xfa,0xfa,0xfb,0xfb,0xfb, -0xfc,0xfc,0xfc,0xff,0xfe,0xfe,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xff,0xff,0xff,0xf9,0xf9,0xf9,0xf7,0xfa,0xf8,0xf8,0xfb,0xf9,0xfb,0xfe,0xfc, -0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xf9,0xfe,0xfd,0xfd,0xff,0xff, -0xfd,0xff,0xff,0xfd,0xff,0xff,0xfc,0xfe,0xfe,0xfc,0xff,0xfd,0xfd,0xff,0xfe, -0xfd,0xff,0xfe,0xfd,0xff,0xff,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xf9,0xfb,0xfb, -0xfd,0xff,0xff,0xfb,0xff,0xfe,0xfa,0xff,0xfe,0xf8,0xff,0xfe,0xf6,0xff,0xfc, -0xe7,0xee,0xeb,0xe4,0xeb,0xe8,0xde,0xe3,0xe2,0xd8,0xda,0xda,0xd1,0xd1,0xd1, -0xcb,0xc9,0xc9,0xc6,0xc1,0xc2,0xc1,0xbf,0xbf,0xa7,0xad,0xac,0x99,0xa4,0xa2, -0x89,0x94,0x92,0x77,0x82,0x80,0x63,0x6e,0x6c,0x4e,0x59,0x57,0x3a,0x45,0x43, -0x2d,0x38,0x36,0x03,0x0e,0x0c,0x00,0x0a,0x08,0x00,0x07,0x05,0x00,0x07,0x05, -0x00,0x0a,0x08,0x01,0x0c,0x0a,0x00,0x0b,0x09,0x01,0x09,0x08,0x06,0x09,0x0d, -0x06,0x07,0x0b,0x04,0x06,0x07,0x03,0x08,0x07,0x07,0x0c,0x0a,0x07,0x0e,0x09, -0x06,0x0c,0x07,0x03,0x0a,0x03,0x02,0x08,0x03,0x03,0x07,0x02,0x04,0x05,0x03, -0x06,0x04,0x04,0x09,0x04,0x06,0x0b,0x04,0x09,0x0d,0x03,0x09,0x0d,0x03,0x09, -0x09,0x04,0x05,0x0d,0x09,0x08,0x10,0x0e,0x0d,0x0f,0x10,0x0e,0x0d,0x0e,0x0c, -0x08,0x0b,0x09,0x06,0x0b,0x09,0x06,0x0b,0x09,0x01,0x06,0x05,0x03,0x08,0x07, -0x04,0x0a,0x09,0x05,0x0a,0x0b,0x04,0x08,0x09,0x01,0x05,0x06,0x00,0x02,0x03, -0x00,0x01,0x02,0x18,0x15,0x17,0x28,0x25,0x27,0x39,0x39,0x39,0x62,0x62,0x62, -0xed,0xed,0xed,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xf7,0xff, -0xff,0xfd,0xff,0xfd,0xfe,0xfc,0xf6,0xff,0xf7,0xe7,0xff,0xe9,0xd3,0xff,0xd6, -0x85,0xc2,0x88,0x63,0xa9,0x62,0x60,0xa5,0x4e,0x40,0x7a,0x2c,0xa7,0xce,0xa0, -0xf2,0xff,0xf1,0xf8,0xfe,0xfd,0xff,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xff,0xfc, -0xff,0xff,0xf9,0xff,0xff,0xfb,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfb,0xfd,0xff, -0xfb,0xfe,0xff,0xff,0xff,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xba,0xee,0xb9,0x5d,0x8e,0x5c,0x81,0xac,0x81, -0xd5,0xf8,0xd6,0xef,0xff,0xf1,0xf3,0xff,0xf7,0xf8,0xff,0xfb,0xfb,0xff,0xfe, -0xf8,0xfa,0xfa,0xfa,0xfc,0xfd,0xfa,0xf9,0xfb,0xf6,0xf6,0xf6,0xf7,0xf7,0xf7, -0xfe,0xfc,0xfb,0xff,0xfd,0xfc,0xfb,0xf9,0xf8,0xfd,0xff,0xfc,0xfb,0xff,0xfc, -0xf2,0xf6,0xf1,0xfb,0xff,0xfc,0xfa,0xfe,0xf9,0xfb,0xff,0xfc,0xfa,0xfe,0xf9, -0xf7,0xfd,0xf8,0xfb,0xff,0xfa,0xf9,0xff,0xfa,0xfb,0xff,0xfa,0xfa,0xff,0xfb, -0xfb,0xff,0xfa,0xf6,0xfc,0xf7,0xf6,0xfa,0xf5,0xf4,0xf9,0xf7,0xfb,0xff,0xff, -0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa,0xfe,0xff,0xf7,0xfb,0xfc,0xf5,0xfa,0xf9, -0xf2,0xf7,0xf8,0xf1,0xf7,0xf6,0xf0,0xf6,0xf5,0xf1,0xf7,0xf6,0xf2,0xf8,0xf7, -0xf2,0xfa,0xf9,0xf6,0xfc,0xfb,0xf5,0xfd,0xfc,0xf9,0xff,0xfd,0xf7,0xff,0xfe, -0xf4,0xff,0xff,0xf4,0xff,0xff,0xf4,0xff,0xff,0xf5,0xff,0xfe,0xf4,0xfe,0xfe, -0xf5,0xfd,0xfc,0xf6,0xfb,0xfc,0xf7,0xfc,0xfb,0xfd,0xff,0xff,0xfe,0xfe,0xfe, -0xff,0xfd,0xfd,0xff,0xfb,0xfc,0xfe,0xfa,0xf9,0xfe,0xf9,0xf8,0xfd,0xf8,0xf7, -0xfb,0xf6,0xf7,0xfb,0xfd,0xfd,0xf9,0xff,0xfe,0xfa,0xff,0xff,0xfb,0xff,0xff, -0xfd,0xff,0xff,0xfa,0xfc,0xfc,0xf4,0xf6,0xf6,0xee,0xf0,0xf0,0xef,0xef,0xef, -0xe8,0xea,0xea,0xde,0xe0,0xe0,0xd1,0xd3,0xd3,0xc1,0xc6,0xc5,0xb4,0xba,0xb9, -0xab,0xb1,0xb0,0xa6,0xac,0xab,0x9e,0xa3,0xa2,0x93,0x98,0x96,0x7f,0x86,0x83, -0x69,0x70,0x6d,0x50,0x56,0x55,0x33,0x3b,0x3a,0x1a,0x22,0x21,0x0a,0x12,0x11, -0x00,0x01,0x00,0x00,0x01,0x00,0x01,0x05,0x06,0x07,0x09,0x0a,0x09,0x08,0x0a, -0x07,0x04,0x06,0x02,0x00,0x01,0x00,0x00,0x01,0x00,0x06,0x05,0x00,0x05,0x04, -0x00,0x06,0x05,0x01,0x09,0x08,0x04,0x0c,0x0b,0x04,0x0c,0x0b,0x01,0x09,0x08, -0x00,0x04,0x03,0x01,0x09,0x08,0x01,0x09,0x08,0x00,0x07,0x06,0x00,0x02,0x01, -0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x08,0x07,0x05,0x0d,0x0c,0x01,0x04,0x08, -0x03,0x06,0x0a,0x04,0x08,0x09,0x00,0x06,0x05,0x00,0x02,0x01,0x00,0x02,0x00, -0x00,0x02,0x00,0x00,0x03,0x00,0x00,0x03,0x01,0x01,0x04,0x02,0x05,0x06,0x04, -0x0b,0x06,0x07,0x10,0x07,0x0a,0x14,0x09,0x0c,0x19,0x0b,0x0f,0x1c,0x0d,0x11, -0x38,0x2a,0x2b,0x46,0x39,0x37,0x5c,0x50,0x4e,0x6f,0x68,0x65,0x81,0x7d,0x7c, -0x91,0x92,0x90,0xa0,0xa2,0xa2,0xa9,0xae,0xad,0xac,0xb1,0xb2,0xb5,0xba,0xbb, -0xc3,0xc7,0xc8,0xd0,0xd3,0xd7,0xdd,0xde,0xe2,0xe7,0xe6,0xea,0xef,0xee,0xf2, -0xf5,0xf1,0xf6,0xff,0xf9,0xfe,0xff,0xfc,0xfe,0xff,0xfc,0xfe,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xfe,0xf3,0xfb,0xff,0xf1,0xfc,0xff,0xf6,0xff, -0xff,0xfc,0xff,0xfd,0xfe,0xfc,0xf8,0xff,0xf7,0xe8,0xff,0xea,0xd7,0xff,0xdc, -0x8a,0xc7,0x8f,0x66,0xac,0x65,0x61,0xa6,0x4f,0x44,0x81,0x31,0x94,0xbe,0x8e, -0xee,0xff,0xef,0xfa,0xff,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xff,0xfc, -0xff,0xff,0xf8,0xff,0xff,0xf9,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfb,0xfd,0xff, -0xfb,0xfe,0xff,0xff,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xcb,0xfc,0xd0,0x7f,0xad,0x83,0x6e,0x97,0x72, -0xb4,0xd6,0xb7,0xea,0xff,0xed,0xee,0xff,0xf1,0xef,0xf6,0xef,0xf2,0xf3,0xf1, -0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfa,0xff,0xff,0xfd,0xff, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xf6,0xf4,0xf3,0xff,0xff,0xfe,0xef,0xf3,0xee, -0xff,0xff,0xfc,0xfa,0xfe,0xf9,0xf6,0xf7,0xf3,0xfc,0xff,0xfb,0xfb,0xfc,0xf8, -0xf8,0xfc,0xf7,0xff,0xff,0xfc,0xf9,0xfd,0xf8,0xf8,0xf9,0xf5,0xf8,0xfc,0xf7, -0xfc,0xfd,0xf9,0xfb,0xff,0xfa,0xff,0xff,0xfc,0xfd,0xff,0xfe,0xf8,0xfa,0xfb, -0xf8,0xf9,0xfd,0xfa,0xfb,0xff,0xfc,0xfd,0xff,0xfd,0xfe,0xff,0xfb,0xff,0xff, -0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff, -0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xfe,0xf7,0xff,0xfe, -0xf2,0xfa,0xfa,0xf0,0xf9,0xfc,0xf1,0xf9,0xf9,0xf1,0xf9,0xf9,0xf0,0xf8,0xf8, -0xf1,0xf6,0xf7,0xf0,0xf5,0xf6,0xf1,0xf5,0xf6,0xe0,0xe2,0xe2,0xde,0xde,0xde, -0xd9,0xd7,0xd7,0xd2,0xcd,0xce,0xca,0xc5,0xc4,0xc1,0xbc,0xbb,0xbc,0xb4,0xb4, -0xb5,0xb1,0xb0,0x90,0x94,0x95,0x87,0x8c,0x8d,0x78,0x7d,0x7e,0x65,0x6a,0x69, -0x4f,0x51,0x51,0x36,0x36,0x36,0x1e,0x1e,0x1e,0x0f,0x0f,0x0f,0x03,0x01,0x01, -0x03,0x03,0x03,0x07,0x07,0x07,0x07,0x09,0x09,0x06,0x0b,0x0a,0x03,0x09,0x08, -0x01,0x06,0x07,0x00,0x04,0x05,0x00,0x04,0x01,0x00,0x06,0x03,0x01,0x08,0x05, -0x05,0x0c,0x09,0x07,0x0d,0x0c,0x07,0x0d,0x0c,0x04,0x0a,0x09,0x01,0x06,0x07, -0x10,0x14,0x15,0x0c,0x10,0x11,0x07,0x09,0x0a,0x02,0x04,0x05,0x03,0x02,0x04, -0x07,0x06,0x08,0x0e,0x0b,0x0d,0x0f,0x0f,0x0f,0x02,0x04,0x04,0x00,0x05,0x04, -0x02,0x04,0x04,0x01,0x06,0x05,0x04,0x06,0x06,0x01,0x06,0x05,0x01,0x03,0x03, -0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x04,0x03,0x08,0x0a,0x0a,0x0a,0x0f,0x0e, -0x11,0x13,0x13,0x1a,0x1f,0x1e,0x2c,0x2e,0x2e,0x38,0x3a,0x3a,0x58,0x5a,0x5b, -0x67,0x69,0x6a,0x7b,0x7f,0x80,0x8c,0x91,0x92,0x99,0x9f,0x9e,0xa2,0xaa,0xa9, -0xaf,0xb7,0xb6,0xb8,0xc1,0xbe,0xc5,0xcc,0xc9,0xca,0xcf,0xcd,0xd2,0xd5,0xd3, -0xdc,0xda,0xd9,0xe6,0xe0,0xe1,0xef,0xe7,0xe8,0xfb,0xee,0xf0,0xff,0xf2,0xf3, -0xff,0xfe,0xfc,0xff,0xfe,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfc, -0xfa,0xfb,0xf7,0xf5,0xfa,0xf8,0xf4,0xfb,0xf8,0xf8,0xff,0xff,0xfa,0xff,0xff, -0xfa,0xfe,0xff,0xf8,0xfa,0xfb,0xf8,0xf7,0xfb,0xfd,0xf7,0xfc,0xff,0xf9,0xfe, -0xff,0xfc,0xff,0xfd,0xf6,0xfb,0xfa,0xf4,0xf9,0xff,0xfb,0xfd,0xff,0xfe,0xff, -0xf2,0xed,0xef,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xf6,0xff, -0xff,0xfb,0xff,0xff,0xfd,0xfd,0xf8,0xff,0xf8,0xea,0xff,0xed,0xdd,0xff,0xe1, -0x8f,0xcc,0x94,0x69,0xaf,0x68,0x61,0xa9,0x4f,0x4a,0x88,0x36,0x85,0xaf,0x7f, -0xea,0xff,0xec,0xf8,0xff,0xff,0xfe,0xfc,0xff,0xff,0xfd,0xfe,0xff,0xff,0xfc, -0xff,0xff,0xf8,0xff,0xff,0xf9,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfb,0xfd,0xff, -0xfd,0xfe,0xff,0xff,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xcd,0xfe,0xd8,0xab,0xd9,0xb5,0x69,0x93,0x70, -0x93,0xb7,0x99,0xe5,0xff,0xe9,0xf4,0xff,0xf4,0xfb,0xff,0xf8,0xff,0xff,0xfc, -0xff,0xf9,0xfc,0xff,0xf9,0xff,0xff,0xf4,0xfd,0xff,0xf2,0xfa,0xff,0xf8,0xfe, -0xff,0xfb,0xfe,0xf0,0xee,0xee,0xd9,0xda,0xd8,0x9d,0x9e,0x9c,0x9b,0x9c,0x9a, -0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe, -0xfe,0xff,0xfd,0xff,0xff,0xfe,0xfe,0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe, -0xff,0xff,0xfe,0xf9,0xfa,0xf8,0xf6,0xf4,0xf3,0xf5,0xf5,0xf5,0xff,0xfe,0xff, -0xff,0xfd,0xff,0xfd,0xfb,0xff,0xf9,0xf8,0xfc,0xf5,0xf4,0xf8,0xef,0xf0,0xf4, -0xec,0xed,0xf1,0xea,0xec,0xed,0xda,0xdc,0xdd,0xd6,0xd8,0xd9,0xcd,0xcf,0xcf, -0xc0,0xc5,0xc4,0xb4,0xb9,0xb8,0xa9,0xae,0xad,0xa0,0xa5,0xa3,0x9d,0x9f,0x9f, -0x8a,0x8c,0x8d,0x81,0x80,0x84,0x6b,0x6c,0x70,0x50,0x51,0x55,0x33,0x35,0x36, -0x19,0x1b,0x1c,0x05,0x07,0x08,0x00,0x00,0x01,0x08,0x08,0x08,0x07,0x07,0x07, -0x08,0x06,0x05,0x09,0x05,0x04,0x09,0x04,0x03,0x08,0x03,0x02,0x07,0x02,0x00, -0x05,0x01,0x00,0x03,0x05,0x06,0x01,0x05,0x06,0x03,0x07,0x08,0x07,0x09,0x0a, -0x0b,0x0b,0x0b,0x0d,0x0b,0x0b,0x09,0x07,0x06,0x07,0x05,0x04,0x0a,0x06,0x05, -0x07,0x05,0x04,0x06,0x04,0x04,0x04,0x04,0x04,0x03,0x05,0x06,0x03,0x07,0x08, -0x05,0x08,0x0c,0x06,0x0b,0x0c,0x00,0x03,0x00,0x00,0x06,0x01,0x01,0x08,0x05, -0x03,0x08,0x06,0x02,0x07,0x06,0x00,0x05,0x04,0x00,0x02,0x03,0x00,0x01,0x05, -0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x00,0x01,0x07,0x06,0x08,0x1b,0x18,0x1a, -0x34,0x31,0x33,0x4c,0x4c,0x4c,0x5d,0x5b,0x5b,0x81,0x7b,0x7c,0x88,0x83,0x82, -0x95,0x8d,0x8d,0xa1,0x9c,0x9b,0xb1,0xa9,0xa9,0xbc,0xb7,0xb6,0xca,0xc2,0xc2, -0xcf,0xca,0xc9,0xde,0xd6,0xd6,0xe0,0xdb,0xda,0xe8,0xe0,0xe0,0xea,0xe5,0xe4, -0xf0,0xe8,0xe8,0xf6,0xf1,0xf0,0xff,0xfa,0xfa,0xff,0xfe,0xff,0xff,0xfd,0xfe, -0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xf7,0xfd,0xfc, -0xf2,0xfa,0xf9,0xf2,0xfa,0xf9,0xf5,0xfd,0xfc,0xf9,0xff,0xfe,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xfe,0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfc, -0xff,0xf6,0xed,0xff,0xf9,0xef,0xff,0xfd,0xf2,0xff,0xff,0xf5,0xfe,0xff,0xf7, -0xfb,0xff,0xf8,0xf8,0xff,0xf9,0xf6,0xff,0xfb,0xf6,0xff,0xfc,0xf8,0xff,0xfc, -0xf8,0xfd,0xfb,0xfa,0xfb,0xf9,0xff,0xfa,0xfb,0xff,0xfd,0xfe,0xff,0xfd,0xff, -0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfd,0xff,0xff,0xfe,0xfe, -0xf8,0xf3,0xf5,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xf6,0xff,0xff,0xf5,0xff, -0xff,0xfb,0xff,0xff,0xfc,0xfd,0xf7,0xff,0xf7,0xeb,0xff,0xee,0xe1,0xff,0xe5, -0x92,0xce,0x98,0x6b,0xb1,0x6b,0x62,0xaa,0x50,0x4d,0x8e,0x39,0x78,0xa6,0x72, -0xe9,0xff,0xeb,0xf8,0xff,0xfe,0xfb,0xfc,0xff,0xff,0xfd,0xfe,0xff,0xff,0xfb, -0xff,0xff,0xf8,0xff,0xff,0xf9,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, -0xfd,0xfe,0xff,0xff,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xd9,0xff,0xe8,0xd6,0xff,0xe4,0x6d,0x98,0x77, -0x73,0x9c,0x7c,0xcd,0xef,0xd1,0xe1,0xfb,0xe3,0xf7,0xff,0xf4,0xfb,0xfe,0xf5, -0xff,0xfc,0xfc,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfc,0xff, -0xff,0xfe,0xff,0xee,0xf1,0xef,0xd2,0xd6,0xd1,0x0a,0x0b,0x09,0x25,0x23,0x22, -0xe1,0xdf,0xde,0xfc,0xfa,0xf9,0xff,0xfd,0xfc,0xfa,0xf8,0xf7,0xf3,0xf1,0xf0, -0xec,0xea,0xe9,0xdd,0xdb,0xda,0xe7,0xe5,0xe4,0xf9,0xf7,0xf6,0xff,0xff,0xfe, -0xf7,0xf5,0xf4,0xd2,0xd0,0xcf,0xad,0xab,0xaa,0x98,0x96,0x96,0x84,0x80,0x85, -0x7a,0x76,0x7b,0x68,0x64,0x6a,0x50,0x4c,0x51,0x37,0x33,0x38,0x1f,0x1b,0x20, -0x0d,0x09,0x0e,0x03,0x00,0x02,0x09,0x06,0x08,0x09,0x06,0x08,0x07,0x07,0x07, -0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x08,0x09,0x07,0x0a,0x08,0x08, -0x0a,0x01,0x04,0x0b,0x02,0x05,0x0b,0x01,0x07,0x0a,0x03,0x06,0x0b,0x06,0x08, -0x0a,0x07,0x09,0x0a,0x07,0x09,0x09,0x09,0x09,0x05,0x05,0x05,0x05,0x05,0x05, -0x06,0x07,0x05,0x08,0x06,0x05,0x0b,0x07,0x06,0x0c,0x08,0x07,0x0c,0x09,0x05, -0x0b,0x09,0x08,0x06,0x05,0x07,0x02,0x03,0x07,0x01,0x03,0x04,0x03,0x03,0x03, -0x05,0x05,0x05,0x09,0x07,0x06,0x08,0x06,0x05,0x07,0x06,0x02,0x09,0x07,0x06, -0x0a,0x08,0x07,0x0d,0x0b,0x0a,0x17,0x17,0x17,0x2d,0x2d,0x2d,0x46,0x48,0x49, -0x60,0x61,0x65,0x71,0x73,0x74,0x84,0x89,0x87,0x8d,0x93,0x8e,0x9c,0x9f,0x9d, -0xa9,0xac,0xaa,0xb6,0xb6,0xb6,0xc1,0xc0,0xc2,0xce,0xca,0xcf,0xd5,0xd1,0xd6, -0xe5,0xdf,0xe4,0xe9,0xe4,0xe6,0xed,0xea,0xec,0xf4,0xf2,0xf2,0xfb,0xf9,0xf9, -0xfd,0xfd,0xfd,0xfd,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfc,0xf9,0xff,0xfe,0xfb, -0xff,0xff,0xfc,0xff,0xfd,0xfa,0xff,0xfa,0xf7,0xff,0xf9,0xf6,0xff,0xfc,0xf9, -0xff,0xff,0xfc,0xff,0xfb,0xf8,0xff,0xfb,0xf8,0xff,0xfb,0xf8,0xff,0xfd,0xfa, -0xff,0xfe,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfb,0xff,0xfd,0xfa,0xff,0xff,0xfe, -0xff,0xfd,0xfc,0xfd,0xfb,0xfa,0xf9,0xf9,0xf9,0xf9,0xfb,0xfb,0xf9,0xfe,0xfd, -0xfa,0xff,0xff,0xf8,0xff,0xff,0xf5,0xfd,0xfc,0xf5,0xff,0xfe,0xf6,0xff,0xfe, -0xf4,0xff,0xfa,0xf1,0xfd,0xf7,0xf0,0xfd,0xf5,0xf3,0xff,0xf8,0xf7,0xff,0xf7, -0xfa,0xff,0xf4,0xfa,0xff,0xf1,0xf6,0xff,0xf0,0xf3,0xff,0xef,0xed,0xff,0xf0, -0xe8,0xff,0xef,0xe7,0xff,0xf0,0xe4,0xff,0xf1,0xe8,0xff,0xf4,0xe8,0xff,0xf3, -0xee,0xff,0xf4,0xf5,0xff,0xf6,0xfa,0xff,0xfa,0xff,0xff,0xfa,0xff,0xfd,0xf8, -0xfd,0xfa,0xf6,0xf8,0xfa,0xfa,0xfb,0xff,0xff,0xfb,0xff,0xff,0xf1,0xf3,0xf3, -0xff,0xff,0xff,0xff,0xfc,0xfe,0xff,0xf8,0xff,0xff,0xf5,0xff,0xff,0xf5,0xff, -0xff,0xfa,0xff,0xff,0xfc,0xfe,0xf9,0xff,0xf8,0xee,0xff,0xf0,0xe3,0xff,0xe8, -0x94,0xcf,0x9c,0x6c,0xb2,0x6c,0x60,0xaa,0x50,0x4d,0x90,0x3b,0x6f,0xa0,0x6a, -0xe7,0xff,0xea,0xf6,0xff,0xfc,0xfa,0xfc,0xfd,0xff,0xfe,0xfd,0xff,0xff,0xfb, -0xff,0xff,0xf8,0xff,0xff,0xf9,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, -0xfd,0xfe,0xff,0xff,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xd5,0xff,0xe6,0xdf,0xff,0xee,0x7d,0xad,0x89, -0x73,0xa2,0x7c,0xae,0xd9,0xb4,0xdd,0xff,0xde,0xe6,0xfc,0xe3,0xf9,0xff,0xf3, -0xff,0xff,0xfb,0xff,0xf9,0xfb,0xff,0xf4,0xfb,0xff,0xf5,0xfb,0xfd,0xf6,0xf9, -0xdc,0xdd,0xdb,0xa9,0xb2,0xa8,0x8f,0x98,0x8e,0x0d,0x0e,0x0a,0x03,0x01,0x00, -0x4b,0x49,0x48,0x49,0x47,0x46,0x34,0x32,0x31,0x08,0x06,0x05,0x14,0x12,0x11, -0x02,0x00,0x00,0x0e,0x0c,0x0b,0x06,0x04,0x03,0xee,0xec,0xeb,0xff,0xff,0xfe, -0xff,0xff,0xfe,0xba,0xb8,0xb7,0x12,0x10,0x0f,0x04,0x02,0x02,0x09,0x04,0x06, -0x0b,0x06,0x08,0x0d,0x07,0x0c,0x0c,0x07,0x09,0x0b,0x06,0x08,0x0a,0x05,0x07, -0x0b,0x06,0x08,0x0c,0x07,0x09,0x06,0x00,0x02,0x09,0x03,0x04,0x0d,0x07,0x08, -0x0e,0x08,0x09,0x0c,0x06,0x07,0x09,0x03,0x04,0x07,0x01,0x02,0x0b,0x00,0x02, -0x15,0x04,0x07,0x12,0x00,0x02,0x15,0x04,0x08,0x14,0x06,0x08,0x0a,0x00,0x01, -0x09,0x01,0x02,0x0d,0x08,0x09,0x09,0x07,0x06,0x06,0x07,0x05,0x15,0x16,0x14, -0x33,0x34,0x32,0x49,0x4a,0x48,0x58,0x59,0x55,0x72,0x73,0x6f,0x8d,0x8c,0x88, -0x92,0x90,0x8f,0xa3,0xa0,0xa2,0xaa,0xa6,0xab,0xbb,0xb8,0xba,0xb6,0xb6,0xb6, -0xd1,0xd2,0xd0,0xc7,0xc8,0xc4,0xd3,0xd4,0xd0,0xd9,0xdb,0xd5,0xec,0xed,0xe9, -0xea,0xeb,0xe7,0xf4,0xf5,0xf1,0xfc,0xfd,0xfb,0xfa,0xfa,0xfa,0xff,0xfd,0xff, -0xff,0xfd,0xff,0xfd,0xfa,0xfc,0xfe,0xff,0xfd,0xfe,0xff,0xfb,0xff,0xfe,0xfd, -0xff,0xfe,0xfd,0xff,0xfd,0xfe,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff, -0xff,0xf9,0xfc,0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xfd,0xfc,0xfe,0xff,0xfb, -0xfb,0xff,0xfc,0xfa,0xff,0xfb,0xf7,0xff,0xf5,0xfc,0xff,0xf8,0xfc,0xff,0xf8, -0xfc,0xff,0xf8,0xfc,0xff,0xf8,0xfc,0xff,0xf8,0xfb,0xff,0xf7,0xfb,0xff,0xf7, -0xfa,0xff,0xf6,0xfd,0xff,0xf9,0xfa,0xff,0xf6,0xf8,0xfd,0xf4,0xf9,0xfe,0xf5, -0xfb,0xff,0xf7,0xfc,0xff,0xf8,0xfa,0xff,0xf6,0xf9,0xfc,0xf3,0xff,0xfd,0xf8, -0xff,0xfd,0xf9,0xff,0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xff,0xfe,0xfe,0xfe, -0xf8,0xfc,0xfd,0xf7,0xfc,0xfd,0xf6,0xff,0xff,0xf4,0xff,0xff,0xe9,0xfa,0xf6, -0xed,0xff,0xfc,0xe7,0xff,0xf6,0xe5,0xff,0xf5,0xd5,0xf7,0xe6,0xdc,0xff,0xec, -0xdf,0xff,0xec,0xda,0xff,0xe7,0xd1,0xff,0xe0,0xc7,0xf9,0xd9,0xbe,0xf2,0xd4, -0xb6,0xef,0xd0,0xb3,0xeb,0xce,0xb2,0xea,0xcd,0xbc,0xf1,0xd6,0xbb,0xeb,0xd1, -0xc4,0xee,0xd7,0xd6,0xfa,0xe4,0xe8,0xff,0xef,0xee,0xff,0xf1,0xf3,0xff,0xf4, -0xf6,0xff,0xf7,0xf4,0xff,0xfc,0xf3,0xff,0xfe,0xec,0xfa,0xf4,0xf6,0xff,0xfc, -0xf3,0xfa,0xf7,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xf8,0xff, -0xff,0xfa,0xff,0xff,0xfb,0xfd,0xfb,0xff,0xfb,0xf0,0xff,0xf1,0xde,0xff,0xe2, -0xb4,0xeb,0xbc,0x65,0xaa,0x67,0x5e,0xa9,0x4d,0x53,0x98,0x41,0x48,0x79,0x41, -0xe9,0xff,0xea,0xf4,0xff,0xfa,0xf6,0xfa,0xfb,0xff,0xff,0xfe,0xff,0xfe,0xf6, -0xff,0xff,0xf8,0xff,0xff,0xf9,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, -0xfd,0xfd,0xff,0xff,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0xff,0xe9,0xe1,0xff,0xf0,0xa9,0xd9,0xb5, -0x5e,0x90,0x68,0x86,0xb8,0x8e,0xd3,0xff,0xd6,0xec,0xff,0xeb,0xef,0xff,0xeb, -0xfc,0xff,0xf5,0xf8,0xf0,0xf0,0xff,0xfc,0xff,0xff,0xf9,0xff,0xc4,0xbe,0xbf, -0x14,0x18,0x12,0x03,0x0f,0x03,0x00,0x07,0x00,0x00,0x02,0x00,0x19,0x17,0x16, -0x17,0x15,0x14,0x02,0x00,0x00,0x0f,0x0d,0x0c,0x05,0x03,0x02,0x06,0x04,0x03, -0x02,0x00,0x00,0x09,0x07,0x06,0x0f,0x0d,0x0c,0xad,0xab,0xaa,0xff,0xff,0xfe, -0xfc,0xfa,0xf9,0xe6,0xe4,0xe3,0x25,0x23,0x22,0x04,0x02,0x01,0x02,0x00,0x00, -0x04,0x02,0x02,0x06,0x04,0x04,0x06,0x04,0x04,0x08,0x03,0x04,0x07,0x02,0x03, -0x08,0x03,0x04,0x0b,0x05,0x06,0x2d,0x27,0x28,0x3c,0x34,0x35,0x50,0x48,0x49, -0x68,0x60,0x61,0x80,0x78,0x79,0x97,0x8c,0x8e,0xa8,0x9d,0x9f,0xb5,0xa7,0xa9, -0xca,0xb5,0xb7,0xcc,0xb7,0xb9,0xd6,0xc4,0xc5,0xdc,0xcc,0xcd,0xda,0xce,0xce, -0xe2,0xda,0xda,0xec,0xe9,0xe5,0xe6,0xe7,0xe3,0xf1,0xf5,0xf0,0xf5,0xf8,0xf6, -0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xfc,0xff,0xfb,0xfc,0xff,0xfb,0xff,0xff,0xfc, -0xfd,0xfe,0xfc,0xfb,0xf6,0xf8,0xfc,0xf7,0xf9,0xff,0xff,0xff,0xf3,0xf4,0xf2, -0xfd,0xff,0xfc,0xf1,0xf9,0xf2,0xfa,0xff,0xf9,0xf8,0xff,0xf9,0xf2,0xfd,0xf3, -0xf1,0xfc,0xf2,0xfa,0xff,0xfa,0xfd,0xff,0xfc,0xf9,0xfa,0xf8,0xfb,0xf9,0xf9, -0xff,0xfc,0xfe,0xfe,0xf9,0xfb,0xff,0xfe,0xfd,0xff,0xff,0xfb,0xff,0xfe,0xfd, -0xff,0xfe,0xfd,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff, -0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xff,0xfe,0xf9,0xfd,0xf8,0xf2,0xfb,0xf1, -0xf0,0xfe,0xf2,0xf1,0xff,0xf4,0xef,0xff,0xf3,0xef,0xff,0xf7,0xec,0xff,0xf6, -0xea,0xff,0xf4,0xe8,0xff,0xf2,0xe8,0xff,0xf2,0xe9,0xff,0xf3,0xea,0xff,0xf4, -0xeb,0xff,0xf5,0xec,0xff,0xf6,0xec,0xff,0xf6,0xed,0xff,0xf7,0xed,0xff,0xf7, -0xed,0xff,0xf7,0xed,0xff,0xf7,0xea,0xff,0xf4,0xee,0xff,0xf2,0xf8,0xff,0xf5, -0xfe,0xff,0xf8,0xff,0xff,0xfb,0xfe,0xff,0xfb,0xfc,0xfa,0xf9,0xf9,0xf9,0xf9, -0xfc,0xfe,0xff,0xfa,0xff,0xff,0xeb,0xf6,0xf4,0xf2,0xff,0xfd,0xe4,0xfc,0xf4, -0xde,0xff,0xf1,0xd0,0xf7,0xe7,0xbf,0xee,0xd8,0xa3,0xd8,0xbd,0x9a,0xd6,0xb7, -0x73,0xb9,0x94,0x6c,0xbb,0x90,0x6b,0xb9,0x90,0x6a,0xb9,0x90,0x69,0xbb,0x91, -0x69,0xbd,0x93,0x6e,0xbf,0x98,0x6f,0xc0,0x99,0x72,0xbf,0x99,0x78,0xc0,0x9c, -0x7c,0xc0,0x9d,0x80,0xbd,0x9b,0x83,0xba,0x99,0x91,0xc3,0xa3,0xb2,0xe0,0xc3, -0xd3,0xfb,0xe2,0xda,0xfc,0xeb,0xe4,0xff,0xf3,0xe8,0xff,0xf5,0xed,0xff,0xf9, -0xed,0xfe,0xf5,0xf4,0xfd,0xfa,0xfc,0xfb,0xfd,0xff,0xfc,0xff,0xff,0xf9,0xff, -0xff,0xfa,0xff,0xff,0xfb,0xfe,0xfb,0xff,0xfb,0xf0,0xff,0xf3,0xe0,0xff,0xe3, -0xb7,0xec,0xc0,0x69,0xab,0x6a,0x5d,0xaa,0x4e,0x51,0x99,0x3f,0x3f,0x72,0x39, -0xe8,0xff,0xe9,0xf1,0xff,0xf8,0xf8,0xfd,0xfc,0xff,0xff,0xfc,0xff,0xff,0xf8, -0xff,0xff,0xf8,0xfd,0xff,0xf9,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, -0xff,0xfd,0xff,0xff,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xe5,0xff,0xf1,0xe6,0xff,0xf1,0xd7,0xff,0xe1, -0x65,0x9a,0x6f,0x68,0x9f,0x70,0xb7,0xeb,0xbb,0xe6,0xff,0xe7,0xea,0xff,0xe8, -0xf8,0xff,0xf3,0xff,0xff,0xfa,0xfc,0xf1,0xf4,0xff,0xf6,0xf9,0x93,0x8f,0x8e, -0x00,0x02,0x00,0x00,0x07,0x00,0x0f,0x1e,0x10,0x03,0x07,0x02,0x03,0x01,0x01, -0x02,0x00,0x00,0x0c,0x0a,0x0a,0x1c,0x1a,0x1a,0x03,0x01,0x01,0x23,0x21,0x21, -0x3b,0x39,0x39,0x4e,0x4c,0x4c,0x59,0x57,0x57,0x9a,0x98,0x98,0xfd,0xfb,0xfb, -0xf1,0xef,0xef,0xff,0xff,0xff,0xad,0xab,0xab,0xab,0xac,0xaa,0xc3,0xc7,0xc2, -0xc5,0xcb,0xc6,0xcf,0xd3,0xce,0xd7,0xdb,0xd6,0xe0,0xe1,0xdf,0xe7,0xe8,0xe6, -0xf1,0xef,0xee,0xf8,0xf4,0xf3,0xfe,0xf9,0xf8,0xff,0xf9,0xf9,0xff,0xfb,0xfc, -0xff,0xf9,0xfb,0xff,0xf6,0xf8,0xff,0xf4,0xf6,0xff,0xf3,0xf7,0xff,0xf4,0xf6, -0xff,0xf3,0xf0,0xff,0xf7,0xf1,0xff,0xfe,0xf8,0xff,0xfd,0xf6,0xfa,0xf6,0xf1, -0xfe,0xfe,0xf8,0xfd,0xff,0xfb,0xf6,0xfd,0xf6,0xf8,0xff,0xf9,0xf5,0xff,0xf9, -0xf9,0xff,0xfb,0xfa,0xff,0xfc,0xfa,0xff,0xfb,0xf8,0xfe,0xf9,0xf9,0xfc,0xfa, -0xfc,0xfd,0xfb,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xff,0xfe,0xf7,0xfd,0xf8, -0xf6,0xff,0xf9,0xee,0xff,0xf3,0xef,0xff,0xf7,0xed,0xff,0xf7,0xed,0xff,0xf7, -0xef,0xff,0xf7,0xf3,0xff,0xf8,0xf6,0xff,0xf9,0xfa,0xff,0xfb,0xfc,0xfd,0xfb, -0xff,0xfc,0xfd,0xff,0xfd,0xfe,0xff,0xfe,0xfd,0xff,0xfe,0xfb,0xff,0xfd,0xfd, -0xff,0xfd,0xfd,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff, -0xff,0xfb,0xfc,0xff,0xff,0xfe,0xfd,0xff,0xfb,0xf7,0xff,0xf8,0xf1,0xff,0xf7, -0xed,0xff,0xf4,0xe8,0xff,0xef,0xdc,0xff,0xea,0xcf,0xff,0xe7,0xc5,0xfc,0xe1, -0xba,0xf1,0xd6,0xae,0xe5,0xca,0xa4,0xdb,0xc0,0x9c,0xd3,0xb8,0x98,0xcf,0xb4, -0x97,0xce,0xb3,0x97,0xce,0xb3,0x9c,0xd3,0xb8,0xa4,0xdb,0xc0,0xae,0xe5,0xca, -0xb9,0xf0,0xd5,0xc5,0xfc,0xe1,0xcf,0xff,0xeb,0xdd,0xff,0xf4,0xed,0xff,0xf5, -0xf6,0xff,0xf7,0xf2,0xfe,0xf2,0xf5,0xfc,0xf5,0xfb,0xff,0xfa,0xff,0xff,0xff, -0xff,0xfe,0xff,0xf8,0xfc,0xfd,0xf8,0xff,0xff,0xf1,0xff,0xfc,0xd0,0xeb,0xe1, -0x96,0xbd,0xad,0x8a,0xbe,0xa6,0x7c,0xbc,0x9e,0x74,0xbc,0x98,0x6b,0xbe,0x97, -0x62,0xc5,0x97,0x59,0xc6,0x95,0x57,0xc4,0x94,0x56,0xc3,0x93,0x55,0xc2,0x92, -0x55,0xc2,0x92,0x57,0xc1,0x92,0x59,0xc1,0x92,0x53,0xb9,0x8a,0x57,0xba,0x8c, -0x5f,0xbe,0x91,0x68,0xc3,0x96,0x6b,0xc2,0x96,0x6c,0xc1,0x95,0x71,0xc3,0x98, -0x7e,0xc7,0xa1,0xa8,0xdf,0xc4,0xba,0xe8,0xd2,0xd4,0xff,0xea,0xe2,0xff,0xf3, -0xea,0xff,0xf8,0xe6,0xf9,0xf0,0xf7,0xfe,0xfb,0xff,0xfd,0xff,0xff,0xfa,0xff, -0xff,0xfb,0xff,0xff,0xfb,0xff,0xfd,0xff,0xfc,0xf2,0xff,0xf4,0xe3,0xff,0xe7, -0xbc,0xee,0xc6,0x70,0xaf,0x71,0x5f,0xac,0x50,0x50,0x99,0x3d,0x31,0x67,0x2c, -0xe4,0xff,0xe7,0xf1,0xff,0xf8,0xfa,0xff,0xff,0xfd,0xfe,0xfa,0xff,0xff,0xf8, -0xff,0xff,0xf7,0xfd,0xff,0xf8,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, -0xff,0xfd,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xf8,0xe4,0xff,0xeb,0xe5,0xff,0xec, -0x96,0xc8,0x9e,0x64,0x9f,0x6d,0x90,0xc9,0x96,0xd4,0xff,0xd9,0xea,0xff,0xeb, -0xf0,0xff,0xee,0xff,0xff,0xfb,0xf6,0xed,0xf0,0xff,0xfc,0xff,0x9e,0x98,0x99, -0x10,0x12,0x0c,0x00,0x0d,0x00,0x71,0x7e,0x6e,0xc8,0xcc,0xc7,0x5e,0x5e,0x5e, -0x12,0x10,0x10,0x82,0x82,0x82,0xec,0xea,0xea,0xeb,0xeb,0xeb,0xfe,0xfc,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xfa,0xfa,0xf6,0xf4,0xf4,0xff,0xff,0xff, -0xfb,0xf9,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xfe,0xf0,0xfb,0xf3, -0xee,0xfe,0xf3,0xf2,0xff,0xf5,0xf5,0xff,0xf6,0xf5,0xff,0xf8,0xf9,0xff,0xfa, -0xfb,0xff,0xfb,0xff,0xff,0xfc,0xfb,0xfa,0xf6,0xff,0xfb,0xfa,0xff,0xfd,0xfe, -0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfe,0xfe, -0xff,0xff,0xf7,0xff,0xff,0xf7,0xff,0xff,0xf7,0xfd,0xff,0xf7,0xf5,0xff,0xf3, -0xf8,0xff,0xf8,0xf4,0xff,0xf8,0xf1,0xff,0xf6,0xf2,0xff,0xf8,0xf2,0xff,0xf9, -0xef,0xfc,0xf4,0xf0,0xfa,0xf4,0xf7,0xfd,0xf8,0xf7,0xfb,0xf6,0xf9,0xfa,0xf8, -0xff,0xff,0xfe,0xfa,0xf5,0xf6,0xfd,0xf9,0xf8,0xfd,0xff,0xfc,0xf5,0xff,0xfa, -0xea,0xff,0xf3,0xe0,0xff,0xef,0xdf,0xff,0xf1,0xd5,0xff,0xea,0xd2,0xfc,0xe5, -0xd6,0xfd,0xe8,0xda,0xfa,0xe9,0xe4,0xfb,0xed,0xf6,0xff,0xfb,0xfd,0xff,0xfc, -0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfe,0xfd,0xff,0xfe,0xfb,0xff,0xfd,0xfd, -0xff,0xfc,0xfe,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfd,0xfe, -0xfe,0xfc,0xfb,0xf8,0xfe,0xf9,0xf3,0xff,0xf6,0xee,0xff,0xf4,0xe6,0xff,0xf2, -0xdb,0xff,0xea,0xc2,0xf4,0xd2,0xa5,0xe2,0xbe,0x80,0xc8,0xa4,0x76,0xc6,0xa1, -0x72,0xc2,0x9f,0x6e,0xbe,0x99,0x6c,0xbc,0x99,0x6b,0xbb,0x96,0x6c,0xbc,0x99, -0x6d,0xbd,0x98,0x6b,0xbb,0x98,0x6c,0xbc,0x97,0x6c,0xbc,0x99,0x6d,0xbd,0x98, -0x71,0xc1,0x9e,0x7b,0xcb,0xa6,0x89,0xd9,0xb6,0x9d,0xe2,0xc1,0xcc,0xfb,0xe1, -0xdf,0xff,0xec,0xec,0xff,0xf6,0xf3,0xff,0xf8,0xf8,0xff,0xfb,0xfd,0xff,0xfe, -0xfd,0xfd,0xfd,0xf7,0xf9,0xf9,0xf1,0xf8,0xf5,0xf3,0xff,0xfc,0xd1,0xef,0xe2, -0x84,0xb2,0x9c,0x7c,0xb8,0x9a,0x68,0xb2,0x8e,0x62,0xb6,0x8c,0x50,0xb2,0x84, -0x4f,0xbd,0x8d,0x4a,0xbf,0x8e,0x4b,0xc0,0x8f,0x4d,0xc0,0x8f,0x4e,0xc1,0x90, -0x51,0xc1,0x91,0x54,0xc3,0x91,0x54,0xc3,0x91,0x64,0xd1,0xa0,0x5b,0xc9,0x95, -0x55,0xc1,0x8d,0x55,0xc1,0x8d,0x58,0xc4,0x90,0x58,0xc4,0x90,0x52,0xbe,0x8a, -0x56,0xb6,0x87,0x74,0xbe,0x9a,0x86,0xc5,0xa5,0xae,0xe8,0xcb,0xc6,0xf9,0xdd, -0xe1,0xff,0xf4,0xe2,0xff,0xef,0xf3,0xff,0xfb,0xf9,0xfe,0xfd,0xff,0xfb,0xff, -0xff,0xfb,0xff,0xff,0xfb,0xff,0xfd,0xff,0xfe,0xf3,0xff,0xf6,0xe7,0xff,0xeb, -0xc3,0xf2,0xcc,0x77,0xb5,0x79,0x62,0xaf,0x53,0x4e,0x99,0x3d,0x28,0x5e,0x22, -0xdc,0xff,0xdf,0xf0,0xff,0xf6,0xfa,0xff,0xff,0xf9,0xfb,0xf5,0xff,0xff,0xf8, -0xff,0xff,0xf7,0xfd,0xff,0xf8,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, -0xff,0xfd,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xfa,0xf5,0xff,0xf5,0xe3,0xff,0xe7, -0xc7,0xf2,0xcd,0x6d,0xa5,0x74,0x72,0xad,0x7a,0xc2,0xf5,0xc9,0xe8,0xff,0xeb, -0xf0,0xff,0xf1,0xf3,0xf4,0xf2,0xff,0xfb,0xff,0xff,0xfa,0xff,0xda,0xd1,0xd4, -0x16,0x15,0x11,0x04,0x0d,0x00,0xcc,0xd6,0xc9,0xfd,0xff,0xfc,0xab,0xad,0xad, -0x15,0x15,0x15,0x4e,0x50,0x50,0xf0,0xf0,0xf0,0xfd,0xff,0xff,0xf4,0xf4,0xf4, -0xf2,0xf4,0xf4,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xf5,0xf7,0xf7, -0xff,0xff,0xff,0xee,0xf0,0xf0,0xff,0xff,0xff,0xf1,0xf8,0xf3,0xef,0xff,0xf8, -0xea,0xff,0xf5,0xec,0xff,0xf5,0xec,0xff,0xf6,0xeb,0xff,0xf4,0xeb,0xff,0xf2, -0xef,0xff,0xf4,0xf5,0xff,0xf8,0xfa,0xff,0xfc,0xfb,0xff,0xfe,0xff,0xff,0xff, -0xff,0xfd,0xfd,0xfe,0xf9,0xfb,0xfd,0xf6,0xf9,0xff,0xf5,0xfb,0xfb,0xf9,0xf8, -0xf6,0xff,0xf5,0xea,0xff,0xed,0xe8,0xff,0xed,0xe6,0xff,0xec,0xde,0xfd,0xe8, -0xe0,0xff,0xed,0xe4,0xff,0xf1,0xde,0xfb,0xeb,0xe1,0xfb,0xed,0xed,0xff,0xf9, -0xf3,0xff,0xfb,0xf5,0xff,0xfb,0xfb,0xff,0xfc,0xfe,0xff,0xfd,0xfa,0xf8,0xf7, -0xff,0xff,0xfe,0xff,0xff,0xfe,0xfe,0xff,0xfd,0xf5,0xff,0xfa,0xe0,0xf8,0xec, -0xbb,0xe1,0xcf,0xb0,0xe2,0xca,0xac,0xe6,0xca,0xa0,0xe0,0xc3,0x97,0xd4,0xb8, -0x9c,0xd7,0xbb,0xa2,0xd2,0xba,0xb8,0xde,0xcc,0xe4,0xfc,0xf0,0xf6,0xff,0xfb, -0xfb,0xfc,0xfa,0xff,0xfb,0xfa,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfd,0xfe, -0xff,0xfd,0xfe,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfd,0xfe,0xff,0xfe,0xfe, -0xfa,0xff,0xfb,0xf4,0xff,0xf9,0xea,0xff,0xf5,0xd4,0xfc,0xe3,0xb9,0xee,0xcd, -0x9e,0xdd,0xb6,0x83,0xca,0x9f,0x6b,0xbb,0x8c,0x59,0xb4,0x87,0x55,0xb7,0x89, -0x57,0xb8,0x8c,0x5a,0xbc,0x8e,0x5e,0xbf,0x93,0x62,0xc4,0x96,0x65,0xc6,0x9a, -0x66,0xc8,0x9a,0x61,0xc2,0x96,0x60,0xc2,0x94,0x5d,0xbe,0x92,0x58,0xba,0x8c, -0x54,0xb5,0x89,0x56,0xb8,0x8a,0x5d,0xbe,0x92,0x6a,0xc2,0x9a,0x85,0xca,0xa9, -0xaf,0xe6,0xcb,0xd6,0xff,0xed,0xe6,0xff,0xf7,0xec,0xff,0xf6,0xf2,0xfc,0xf6, -0xfb,0xfd,0xfd,0xff,0xff,0xff,0xf1,0xf6,0xf4,0xf4,0xff,0xfb,0xe1,0xfe,0xef, -0x97,0xc3,0xac,0x83,0xc2,0xa2,0x6e,0xbd,0x94,0x6c,0xc8,0x97,0x5e,0xc3,0x90, -0x5c,0xc3,0x96,0x5c,0xc2,0x98,0x5c,0xc2,0x98,0x5e,0xc2,0x98,0x5e,0xc0,0x94, -0x5d,0xbe,0x92,0x5b,0xbd,0x8f,0x5a,0xbd,0x8d,0x57,0xbb,0x8b,0x57,0xc0,0x8f, -0x58,0xc4,0x90,0x53,0xc2,0x8e,0x4b,0xc0,0x89,0x49,0xc0,0x89,0x49,0xc4,0x8c, -0x53,0xc5,0x90,0x5d,0xb8,0x8b,0x66,0xb4,0x8b,0x84,0xcd,0xa7,0x9c,0xdf,0xba, -0xd0,0xff,0xe8,0xde,0xff,0xef,0xed,0xff,0xf9,0xf2,0xfb,0xf8,0xff,0xfc,0xff, -0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xff,0xfe,0xf5,0xff,0xf7,0xe9,0xff,0xed, -0xca,0xf4,0xd1,0x80,0xbc,0x80,0x63,0xb0,0x54,0x4e,0x9c,0x3e,0x25,0x5e,0x21, -0xd2,0xf7,0xd5,0xf2,0xff,0xf8,0xf8,0xff,0xfe,0xf8,0xfc,0xf6,0xff,0xff,0xf8, -0xff,0xff,0xf7,0xfd,0xff,0xf8,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, -0xff,0xfd,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xfe,0xff,0xff,0xfc,0xe9,0xfc,0xe9, -0xda,0xff,0xdd,0x79,0xaf,0x80,0x6a,0xa5,0x73,0xaf,0xe4,0xb8,0xe2,0xff,0xe9, -0xf0,0xff,0xf4,0xfa,0xfa,0xfa,0xff,0xf6,0xff,0xff,0xf8,0xff,0xfd,0xee,0xf6, -0x69,0x63,0x64,0x00,0x04,0x00,0x77,0x7f,0x74,0xf5,0xf9,0xf4,0xf3,0xf5,0xf5, -0xb8,0xba,0xba,0xba,0xbc,0xbc,0xfa,0xfc,0xfc,0xf7,0xf9,0xf9,0xf9,0xfb,0xfb, -0xfd,0xff,0xff,0xea,0xec,0xec,0xfd,0xff,0xff,0xfd,0xff,0xff,0xf8,0xfa,0xfa, -0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xf6,0xff,0xfc,0xe2,0xff,0xef, -0xdc,0xff,0xed,0xdf,0xff,0xee,0xdf,0xff,0xef,0xe0,0xff,0xef,0xe6,0xff,0xf3, -0xec,0xff,0xf7,0xf1,0xff,0xf9,0xef,0xff,0xf7,0xf4,0xff,0xfa,0xfa,0xff,0xfe, -0xfb,0xff,0xff,0xfe,0xfd,0xff,0xfe,0xfb,0xfd,0xff,0xfb,0xff,0xf9,0xff,0xfd, -0xde,0xff,0xec,0xbd,0xef,0xcf,0xb1,0xe3,0xc5,0xae,0xe1,0xc5,0xa7,0xda,0xbe, -0xa3,0xd6,0xbb,0xa5,0xd3,0xbc,0xa1,0xcc,0xb7,0x9f,0xc5,0xb3,0xce,0xed,0xde, -0xe7,0xfd,0xf1,0xed,0xfc,0xf4,0xfb,0xff,0xfe,0xff,0xff,0xfe,0xfc,0xf7,0xf6, -0xff,0xfd,0xfc,0xff,0xff,0xfe,0xf4,0xfb,0xf6,0xdf,0xf2,0xe9,0xbd,0xde,0xcf, -0x7e,0xaf,0x99,0x74,0xb4,0x97,0x71,0xbc,0x9c,0x66,0xb8,0x95,0x6c,0xbb,0x9a, -0x72,0xbd,0x9d,0x76,0xb6,0x99,0x97,0xc8,0xb2,0xd6,0xf7,0xe8,0xf1,0xff,0xf9, -0xf6,0xfd,0xf8,0xfd,0xfe,0xfc,0xfe,0xff,0xfd,0xff,0xfe,0xfd,0xff,0xfd,0xfe, -0xff,0xfd,0xfe,0xff,0xfd,0xff,0xff,0xfd,0xff,0xfe,0xfe,0xfe,0xfa,0xff,0xfd, -0xf0,0xff,0xf7,0xeb,0xff,0xf7,0xd5,0xff,0xe8,0xaf,0xe5,0xc7,0x83,0xc9,0xa1, -0x6b,0xbb,0x8c,0x62,0xbc,0x87,0x60,0xc0,0x8a,0x63,0xcb,0x96,0x60,0xc9,0x96, -0x5f,0xc8,0x95,0x5d,0xc6,0x93,0x59,0xc2,0x8f,0x56,0xbf,0x8c,0x53,0xbc,0x89, -0x52,0xbb,0x88,0x52,0xbb,0x88,0x54,0xbd,0x8a,0x58,0xc1,0x8e,0x5a,0xc3,0x90, -0x5b,0xc4,0x91,0x5b,0xc4,0x91,0x5c,0xc5,0x92,0x61,0xc5,0x95,0x5a,0xb3,0x8b, -0x75,0xc2,0xa0,0x96,0xd6,0xb9,0xb7,0xe8,0xd2,0xdd,0xfc,0xed,0xf3,0xff,0xfb, -0xfb,0xff,0xfe,0xfa,0xfb,0xf9,0xfd,0xff,0xfc,0xf8,0xff,0xf9,0xea,0xff,0xf4, -0xa9,0xd6,0xbc,0x78,0xb8,0x94,0x60,0xb3,0x86,0x62,0xc4,0x90,0x5f,0xc3,0x8f, -0x63,0xb9,0x91,0x69,0xb9,0x96,0x6e,0xbb,0x99,0x72,0xbe,0x9c,0x75,0xbf,0x9b, -0x77,0xc0,0x9a,0x73,0xbe,0x98,0x70,0xbe,0x95,0x6b,0xbd,0x92,0x67,0xc1,0x93, -0x63,0xc3,0x94,0x5c,0xc5,0x92,0x57,0xc9,0x94,0x54,0xcc,0x95,0x4d,0xca,0x92, -0x4b,0xc3,0x8c,0x5f,0xc6,0x93,0x60,0xbc,0x8d,0x66,0xbb,0x8e,0x77,0xc3,0x99, -0xab,0xeb,0xc7,0xd4,0xff,0xe9,0xea,0xff,0xf7,0xf0,0xfe,0xf8,0xfe,0xfd,0xff, -0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xff,0xfe,0xf5,0xff,0xf7,0xed,0xff,0xf0, -0xd0,0xf7,0xd7,0x88,0xc2,0x88,0x63,0xb1,0x53,0x51,0xa0,0x3f,0x2c,0x65,0x26, -0xc5,0xea,0xc8,0xf1,0xff,0xf8,0xf6,0xff,0xfc,0xfc,0xff,0xfa,0xff,0xff,0xf8, -0xff,0xff,0xf7,0xfd,0xff,0xf8,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, -0xff,0xfd,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0xff,0xff,0xfd,0xff,0xfb,0xff,0xf7, -0xe4,0xff,0xe5,0x9b,0xce,0xa2,0x6c,0xa6,0x76,0x90,0xc5,0x9a,0xd5,0xfe,0xdf, -0xe6,0xf7,0xec,0xff,0xfe,0xff,0xf7,0xe5,0xf6,0xff,0xf7,0xff,0xfe,0xec,0xf9, -0xc4,0xb8,0xbe,0x1c,0x19,0x14,0x1e,0x21,0x18,0xf5,0xf8,0xf6,0xf4,0xf9,0xf8, -0xfb,0xff,0xff,0xfa,0xff,0xfe,0xfb,0xff,0xff,0xf2,0xf7,0xf6,0xfb,0xff,0xff, -0xed,0xf2,0xf1,0xf1,0xf6,0xf5,0xe9,0xee,0xed,0xe4,0xe9,0xe8,0xc2,0xc7,0xc6, -0xe1,0xe6,0xe5,0xfb,0xff,0xff,0xf4,0xf9,0xf8,0xf1,0xff,0xf9,0xb2,0xdc,0xc5, -0xaa,0xde,0xc0,0xa8,0xd9,0xbd,0xa3,0xd3,0xb7,0x9f,0xcc,0xb2,0xa0,0xc7,0xb1, -0xa3,0xc5,0xb4,0xa8,0xc5,0xb6,0xe4,0xfc,0xf2,0xeb,0xfd,0xf6,0xf2,0xff,0xfc, -0xf8,0xff,0xff,0xfb,0xff,0xff,0xfc,0xfe,0xff,0xfe,0xfd,0xff,0xf3,0xff,0xfc, -0xb0,0xe5,0xca,0x7d,0xc6,0xa0,0x6d,0xb5,0x91,0x76,0xbe,0x9a,0x79,0xbe,0x9d, -0x76,0xb9,0x9a,0x7b,0xb8,0x9c,0x83,0xba,0xa1,0x8b,0xb9,0xa6,0xd1,0xf6,0xe6, -0xec,0xff,0xf9,0xf1,0xff,0xf8,0xfb,0xff,0xfe,0xff,0xff,0xfe,0xfe,0xf3,0xf5, -0xff,0xf8,0xf8,0xfd,0xff,0xfe,0xf4,0xff,0xfb,0xe8,0xff,0xf5,0xc5,0xef,0xdd, -0x76,0xb3,0x99,0x6d,0xb9,0x9a,0x69,0xc3,0x9f,0x60,0xc1,0x99,0x5a,0xb9,0x94, -0x63,0xbd,0x99,0x64,0xb0,0x91,0x83,0xc0,0xa6,0xc9,0xf3,0xe1,0xec,0xff,0xf9, -0xf0,0xfe,0xf8,0xfb,0xff,0xfc,0xfa,0xff,0xfd,0xfc,0xff,0xfd,0xfe,0xfe,0xfe, -0xfe,0xfe,0xfe,0xfe,0xfd,0xff,0xfc,0xfe,0xff,0xf9,0xff,0xfe,0xf3,0xff,0xfd, -0xe9,0xff,0xf7,0xd3,0xf7,0xe6,0xae,0xe1,0xc5,0x83,0xc8,0xa3,0x67,0xba,0x8d, -0x5d,0xbd,0x87,0x5d,0xc8,0x8a,0x60,0xcd,0x8f,0x59,0xc2,0x89,0x59,0xc1,0x8a, -0x59,0xc1,0x8a,0x5a,0xc2,0x8b,0x5b,0xc3,0x8c,0x5d,0xc5,0x8e,0x5f,0xc7,0x90, -0x61,0xc9,0x92,0x61,0xc9,0x92,0x60,0xc8,0x91,0x5e,0xc6,0x8f,0x5c,0xc4,0x8d, -0x5b,0xc3,0x8c,0x59,0xc1,0x8a,0x56,0xbe,0x87,0x54,0xbc,0x87,0x54,0xbe,0x8f, -0x57,0xb8,0x90,0x62,0xb3,0x92,0x80,0xc1,0xa7,0xb9,0xe3,0xd2,0xea,0xff,0xf8, -0xfa,0xff,0xfe,0xf4,0xf5,0xf3,0xf8,0xf7,0xf3,0xf5,0xfd,0xf3,0xef,0xff,0xf5, -0xd5,0xfe,0xe3,0x86,0xc5,0x9e,0x67,0xb9,0x88,0x62,0xc3,0x8b,0x66,0xbf,0x8d, -0x8c,0xc8,0xa9,0x9e,0xca,0xb3,0xab,0xd5,0xbe,0xb9,0xe1,0xc8,0xc5,0xec,0xd2, -0xcd,0xf5,0xd9,0xd1,0xfa,0xde,0xcf,0xfe,0xde,0xc2,0xf8,0xd5,0xa6,0xe7,0xc0, -0x7f,0xcb,0xa1,0x5e,0xb6,0x88,0x50,0xb5,0x82,0x51,0xc0,0x8a,0x50,0xc7,0x90, -0x4f,0xc6,0x8f,0x59,0xc8,0x90,0x62,0xc7,0x93,0x5a,0xb9,0x86,0x64,0xb9,0x8c, -0x89,0xd0,0xa8,0xc9,0xff,0xe1,0xe6,0xff,0xf5,0xf1,0xff,0xf9,0xfc,0xfe,0xff, -0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xf6,0xff,0xf7,0xee,0xff,0xf3, -0xd6,0xfa,0xdc,0x8f,0xc6,0x8f,0x63,0xb0,0x54,0x53,0xa4,0x43,0x34,0x70,0x30, -0xb6,0xdf,0xba,0xf1,0xff,0xf8,0xf2,0xfb,0xf8,0xfd,0xff,0xfb,0xff,0xff,0xf8, -0xff,0xff,0xf7,0xfd,0xff,0xf8,0xfd,0xff,0xff,0xfb,0xfe,0xff,0xfd,0xfc,0xff, -0xff,0xfd,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xf6,0xe8,0xee,0xfd,0xff,0xf9, -0xed,0xff,0xef,0xc4,0xf1,0xca,0x70,0xa5,0x79,0x70,0xa4,0x7c,0xce,0xf7,0xd8, -0xe1,0xf8,0xe9,0xfb,0xff,0xff,0xff,0xf6,0xff,0xff,0xf2,0xff,0xff,0xf9,0xff, -0xff,0xf2,0xfa,0xed,0xe7,0xe8,0xff,0xff,0xfc,0xf6,0xf8,0xf8,0xfb,0xff,0xff, -0xd6,0xd8,0xd8,0x5d,0x62,0x61,0x59,0x5b,0x5b,0x34,0x39,0x38,0x20,0x22,0x22, -0x13,0x18,0x17,0x0f,0x11,0x11,0x00,0x01,0x00,0x0c,0x0e,0x0e,0x0a,0x0f,0x0e, -0x9f,0xa1,0xa1,0xf6,0xfb,0xfa,0xfc,0xfe,0xfe,0xec,0xfd,0xf4,0x89,0xb6,0x9c, -0x7e,0xba,0x98,0x7a,0xba,0x97,0x76,0xb8,0x95,0x72,0xb6,0x93,0x75,0xb6,0x96, -0x7d,0xb7,0x9b,0x86,0xb7,0xa1,0xd7,0xfc,0xec,0xe4,0xfd,0xf3,0xf0,0xff,0xfb, -0xf7,0xff,0xfe,0xf9,0xfe,0xff,0xf8,0xfb,0xff,0xf7,0xfa,0xfe,0xe8,0xff,0xf8, -0xb1,0xf1,0xd3,0x71,0xc7,0x9d,0x59,0xb2,0x87,0x64,0xbe,0x93,0x66,0xc0,0x95, -0x5f,0xb7,0x8f,0x65,0xb5,0x90,0x74,0xb8,0x99,0x81,0xb8,0x9f,0xd6,0xfc,0xea, -0xed,0xff,0xf9,0xf0,0xfa,0xf4,0xfc,0xfd,0xfb,0xff,0xfe,0xff,0xff,0xf9,0xfb, -0xff,0xfe,0xff,0xf9,0xfc,0xfa,0xf4,0xff,0xfc,0xec,0xff,0xfb,0xcf,0xf9,0xe8, -0x79,0xb6,0x9c,0x6c,0xbb,0x9a,0x62,0xc2,0x99,0x51,0xbd,0x8f,0x53,0xc1,0x91, -0x5c,0xc5,0x98,0x56,0xb4,0x8b,0x72,0xbd,0x9d,0xba,0xee,0xd7,0xde,0xff,0xf0, -0xe9,0xf7,0xf1,0xfa,0xff,0xfe,0xf9,0xff,0xfd,0xfa,0xff,0xfe,0xfc,0xfe,0xfe, -0xfc,0xfe,0xff,0xfc,0xfe,0xff,0xfa,0xff,0xfe,0xf7,0xff,0xfd,0xf0,0xff,0xfa, -0xe6,0xff,0xf7,0xbc,0xed,0xd1,0x84,0xc4,0xa0,0x61,0xb2,0x85,0x5c,0xbb,0x88, -0x61,0xcb,0x90,0x57,0xca,0x8b,0x4b,0xbe,0x7f,0x58,0xc5,0x8d,0x5d,0xc2,0x8e, -0x64,0xc0,0x8f,0x6b,0xc1,0x91,0x75,0xc4,0x98,0x7d,0xca,0x9e,0x81,0xd0,0xa4, -0x85,0xd4,0xa8,0x7c,0xcd,0xa0,0x74,0xc5,0x98,0x69,0xbd,0x8d,0x63,0xb9,0x89, -0x61,0xbd,0x8a,0x63,0xc3,0x8d,0x62,0xc7,0x90,0x5e,0xc8,0x93,0x54,0xc1,0x90, -0x5c,0xc5,0x98,0x62,0xc2,0x99,0x68,0xba,0x97,0x84,0xc1,0xa5,0xb5,0xde,0xc9, -0xe7,0xf9,0xec,0xfd,0xff,0xf9,0xff,0xff,0xfb,0xf7,0xfc,0xf3,0xef,0xff,0xf4, -0xde,0xff,0xec,0x89,0xbd,0x9f,0x82,0xc5,0xa0,0x9e,0xe9,0xbd,0xba,0xfb,0xd4, -0xda,0xff,0xeb,0xe8,0xfe,0xf2,0xee,0xff,0xf5,0xf1,0xff,0xf8,0xf3,0xff,0xf7, -0xf3,0xff,0xf4,0xef,0xff,0xf0,0xe9,0xff,0xed,0xe4,0xff,0xec,0xde,0xff,0xec, -0xc6,0xff,0xdd,0x99,0xe5,0xbb,0x6c,0xc8,0x99,0x53,0xbc,0x89,0x4f,0xc1,0x8c, -0x51,0xc9,0x8f,0x4a,0xbe,0x83,0x5d,0xce,0x92,0x57,0xbd,0x86,0x61,0xbc,0x8b, -0x79,0xc3,0x99,0xc1,0xfa,0xdb,0xe0,0xff,0xf1,0xee,0xff,0xf8,0xfa,0xff,0xfe, -0xff,0xfe,0xff,0xff,0xfc,0xfe,0xfd,0xff,0xfe,0xf6,0xff,0xf7,0xf0,0xff,0xf4, -0xda,0xfb,0xe0,0x94,0xc7,0x95,0x61,0xaf,0x57,0x55,0xa5,0x48,0x3b,0x78,0x38, -0xae,0xd8,0xaf,0xf1,0xff,0xf5,0xef,0xfa,0xf2,0xfd,0xff,0xfb,0xfd,0xff,0xf9, -0xff,0xff,0xf9,0xff,0xff,0xfb,0xfd,0xff,0xff,0xfd,0xfe,0xff,0xfd,0xfd,0xff, -0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xfd,0xff,0xf3,0xfc,0xf2, -0xe7,0xfe,0xe8,0xe0,0xff,0xe5,0x88,0xb7,0x90,0x74,0xa3,0x7c,0xa4,0xd0,0xab, -0xea,0xff,0xf0,0xe4,0xf7,0xe6,0xfb,0xff,0xfc,0xfd,0xfa,0xfc,0xfc,0xf5,0xfa, -0xff,0xfc,0xff,0xfe,0xf7,0xfc,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfb,0xfd,0xfd, -0xf1,0xf1,0xf1,0x47,0x49,0x49,0x0d,0x0d,0x0d,0x05,0x07,0x07,0x0e,0x0e,0x0e, -0x00,0x02,0x02,0x00,0x00,0x00,0x0a,0x0c,0x0c,0x04,0x04,0x04,0x0c,0x0e,0x0e, -0x37,0x37,0x37,0xf4,0xf6,0xf6,0xff,0xff,0xff,0xf0,0xff,0xf7,0xb2,0xda,0xc1, -0x7d,0xbb,0x97,0x67,0xb6,0x8b,0x67,0xc3,0x94,0x59,0xbf,0x8f,0x58,0xc1,0x90, -0x63,0xc4,0x98,0x69,0xb9,0x96,0xb7,0xed,0xd6,0xd9,0xfa,0xec,0xf4,0xff,0xfe, -0xfb,0xfd,0xfe,0xff,0xfd,0xff,0xfd,0xfd,0xff,0xe4,0xea,0xef,0xe8,0xff,0xfe, -0xa9,0xe9,0xcc,0x6e,0xc6,0x9e,0x55,0xb8,0x8a,0x58,0xc4,0x90,0x54,0xc6,0x90, -0x50,0xc1,0x88,0x5b,0xc0,0x8d,0x6a,0xbf,0x93,0x8d,0xc8,0xa9,0xdf,0xff,0xef, -0xf4,0xff,0xf9,0xf8,0xf9,0xf5,0xff,0xfe,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff, -0xff,0xfd,0xff,0xf8,0xf8,0xf8,0xfa,0xff,0xfe,0xeb,0xfb,0xf4,0xe5,0xff,0xf8, -0x9b,0xcf,0xb8,0x6a,0xb4,0x92,0x5e,0xbd,0x90,0x55,0xc5,0x8f,0x48,0xc5,0x87, -0x52,0xcf,0x91,0x57,0xc8,0x8f,0x62,0xbd,0x90,0x8b,0xc9,0xab,0xe4,0xff,0xf8, -0xf0,0xfb,0xf9,0xfd,0xff,0xff,0xfa,0xff,0xff,0xf9,0xff,0xfe,0xfc,0xfe,0xff, -0xfe,0xfd,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xf4,0xff,0xf9,0xe9,0xff,0xf1, -0xd1,0xfd,0xde,0x8e,0xcd,0xa3,0x61,0xb3,0x7f,0x61,0xc0,0x87,0x61,0xc8,0x8e, -0x55,0xc6,0x8a,0x50,0xc5,0x88,0x4e,0xc3,0x8a,0x58,0xc6,0x96,0x57,0xb7,0x8e, -0x7d,0xc5,0xa1,0xad,0xe0,0xc4,0xd7,0xf9,0xe1,0xe6,0xff,0xed,0xe4,0xff,0xed, -0xe8,0xff,0xf5,0xde,0xff,0xef,0xda,0xff,0xeb,0xcb,0xf6,0xdb,0xa9,0xdb,0xbb, -0x7e,0xbf,0x98,0x64,0xb3,0x87,0x5c,0xbe,0x8a,0x64,0xcc,0x97,0x61,0xc4,0x94, -0x5a,0xbd,0x8f,0x53,0xbe,0x8d,0x57,0xc0,0x8f,0x5f,0xba,0x8d,0x7c,0xc1,0x9c, -0xc0,0xe6,0xca,0xf6,0xff,0xf4,0xff,0xff,0xf8,0xf9,0xfb,0xf5,0xf4,0xff,0xfe, -0xe6,0xfd,0xf8,0xd3,0xf5,0xeb,0xd9,0xfd,0xef,0xe3,0xff,0xf3,0xea,0xff,0xf6, -0xed,0xfc,0xf8,0xf1,0xfd,0xfd,0xf4,0xff,0xff,0xf3,0xff,0xfe,0xf4,0xff,0xfc, -0xf4,0xff,0xf9,0xf2,0xff,0xf5,0xf0,0xff,0xf2,0xe8,0xff,0xed,0xdd,0xff,0xe7, -0xdc,0xff,0xed,0xb6,0xf9,0xd2,0x6b,0xc3,0x95,0x51,0xb8,0x85,0x56,0xca,0x95, -0x4b,0xc6,0x8c,0x53,0xce,0x8e,0x4b,0xc3,0x82,0x5a,0xc6,0x8b,0x63,0xbf,0x8c, -0x70,0xb7,0x8f,0xae,0xe1,0xc5,0xe8,0xff,0xf7,0xed,0xfe,0xf5,0xf7,0xfc,0xfa, -0xff,0xff,0xff,0xff,0xff,0xfe,0xfb,0xff,0xfc,0xf2,0xff,0xf5,0xf0,0xff,0xf6, -0xe1,0xfc,0xe8,0x9c,0xca,0xa0,0x63,0xae,0x60,0x58,0xa9,0x52,0x3c,0x7a,0x38, -0xa3,0xd1,0xa2,0xe8,0xff,0xe7,0xf8,0xff,0xf7,0xfb,0xff,0xf9,0xff,0xff,0xfe, -0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff, -0xfd,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfb,0xf8,0xfa,0xf8,0xff,0xf9, -0xf1,0xff,0xf4,0xe3,0xff,0xe7,0xaa,0xd5,0xb0,0x68,0x95,0x6e,0x89,0xb6,0x8f, -0xdf,0xff,0xe4,0xe5,0xff,0xe9,0xf3,0xff,0xf6,0xf5,0xfb,0xf6,0xfc,0xfc,0xfc, -0xff,0xfd,0xff,0xff,0xf8,0xff,0xff,0xfb,0xff,0xf3,0xf0,0xf2,0xff,0xff,0xff, -0xff,0xff,0xff,0xa9,0xa9,0xa9,0x64,0x64,0x64,0x29,0x29,0x29,0x00,0x00,0x00, -0x12,0x12,0x12,0x49,0x49,0x49,0x60,0x60,0x60,0x69,0x69,0x69,0x78,0x78,0x78, -0x7f,0x7f,0x7f,0xef,0xef,0xef,0xfa,0xfa,0xfa,0xf6,0xff,0xfb,0xc1,0xe8,0xcf, -0x85,0xc3,0x9f,0x63,0xb8,0x8c,0x5c,0xc5,0x92,0x4d,0xc5,0x8e,0x48,0xc5,0x8d, -0x53,0xc6,0x94,0x5e,0xbc,0x93,0x95,0xd5,0xb8,0xd7,0xfb,0xeb,0xf6,0xff,0xfe, -0xfc,0xf9,0xfb,0xff,0xfc,0xff,0xfd,0xfb,0xff,0xf3,0xfa,0xfd,0xe2,0xff,0xf6, -0xa5,0xe5,0xc8,0x6e,0xc7,0x9c,0x53,0xba,0x87,0x53,0xc6,0x8d,0x4c,0xc9,0x8b, -0x49,0xc4,0x86,0x53,0xc2,0x8a,0x66,0xc0,0x92,0x91,0xce,0xac,0xe1,0xff,0xef, -0xf8,0xff,0xf9,0xfd,0xf9,0xf8,0xff,0xfe,0xff,0xff,0xfb,0xfe,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xfc,0xfb,0xfd,0xfb,0xff,0xff,0xf2,0xfd,0xfa,0xeb,0xff,0xf8, -0xac,0xda,0xc4,0x71,0xb6,0x95,0x60,0xbe,0x8f,0x56,0xc7,0x8d,0x47,0xc8,0x85, -0x49,0xcd,0x87,0x50,0xca,0x8a,0x5b,0xc0,0x8c,0x80,0xc5,0xa4,0xd8,0xff,0xee, -0xf1,0xfc,0xfa,0xfd,0xfe,0xff,0xfb,0xff,0xff,0xfa,0xff,0xfe,0xfc,0xfd,0xff, -0xfe,0xfd,0xff,0xff,0xfe,0xff,0xfb,0xff,0xfe,0xf2,0xff,0xf7,0xe6,0xff,0xee, -0xbc,0xf0,0xcb,0x84,0xca,0x9b,0x60,0xb9,0x81,0x5f,0xc4,0x86,0x5b,0xc8,0x8a, -0x54,0xc6,0x8a,0x50,0xc6,0x8b,0x4e,0xc2,0x8d,0x50,0xbc,0x91,0x6c,0xc6,0xa3, -0xa3,0xdd,0xc4,0xd5,0xf5,0xe2,0xf8,0xff,0xf7,0xff,0xff,0xf9,0xf4,0xf8,0xf3, -0xf7,0xfe,0xf9,0xf4,0xff,0xfc,0xf1,0xff,0xf7,0xeb,0xff,0xf1,0xda,0xfa,0xe2, -0xb4,0xe5,0xc5,0x88,0xcb,0xa4,0x66,0xc0,0x92,0x5d,0xc0,0x8e,0x64,0xc2,0x93, -0x5a,0xbe,0x8e,0x4d,0xc1,0x8c,0x4e,0xc5,0x8e,0x51,0xc0,0x8a,0x68,0xc1,0x90, -0xa3,0xd7,0xb2,0xda,0xf5,0xdb,0xfb,0xff,0xf7,0xf8,0xfc,0xf6,0xf4,0xff,0xff, -0xee,0xff,0xff,0xe7,0xfb,0xfc,0xed,0xff,0xfe,0xfa,0xff,0xff,0xfc,0xfe,0xfe, -0xf9,0xfa,0xfe,0xf9,0xfc,0xff,0xf8,0xff,0xff,0xf6,0xff,0xff,0xf5,0xff,0xfd, -0xf3,0xff,0xf8,0xf2,0xff,0xf4,0xee,0xff,0xf0,0xee,0xff,0xf1,0xde,0xff,0xe6, -0xd7,0xff,0xe8,0xb7,0xf8,0xd1,0x77,0xcc,0x9f,0x5e,0xc3,0x90,0x58,0xcc,0x97, -0x43,0xc1,0x86,0x47,0xc7,0x86,0x44,0xc0,0x7e,0x59,0xc7,0x8d,0x68,0xc4,0x93, -0x71,0xb7,0x92,0xa4,0xd7,0xbc,0xe2,0xff,0xf1,0xf3,0xff,0xfb,0xf7,0xfe,0xfb, -0xfd,0xff,0xfe,0xfc,0xff,0xfb,0xfb,0xff,0xfb,0xf4,0xff,0xf5,0xf2,0xff,0xf6, -0xe4,0xfc,0xea,0xa0,0xcc,0xa5,0x63,0xac,0x64,0x57,0xa7,0x54,0x3c,0x7c,0x3a, -0x9d,0xcc,0x9b,0xe9,0xff,0xe5,0xf8,0xff,0xf4,0xfb,0xff,0xfa,0xff,0xff,0xff, -0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf8,0xfd,0xf8,0xf8,0xf8,0xfa,0xff,0xfb, -0xf3,0xff,0xf5,0xe4,0xff,0xe8,0xd1,0xf9,0xd6,0x6f,0x9c,0x75,0x73,0x9e,0x79, -0xc7,0xec,0xcc,0xed,0xff,0xf1,0xf1,0xff,0xf4,0xf3,0xfb,0xf4,0xff,0xff,0xff, -0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfe,0xff,0xf1,0xf1,0xf1, -0xf1,0xf1,0xf1,0xff,0xff,0xff,0xa6,0xa6,0xa6,0x1f,0x1f,0x1f,0x09,0x09,0x09, -0xd1,0xd1,0xd1,0xfd,0xfd,0xfd,0xf2,0xf2,0xf2,0xf9,0xf9,0xf9,0xff,0xff,0xff, -0xff,0xff,0xff,0xfa,0xfa,0xfa,0xec,0xec,0xec,0xf1,0xfe,0xf6,0xd4,0xfa,0xe4, -0x93,0xd0,0xae,0x68,0xba,0x90,0x5c,0xc2,0x92,0x50,0xc7,0x90,0x4b,0xc6,0x8e, -0x52,0xc4,0x8f,0x60,0xbc,0x91,0x7f,0xbd,0x9f,0xd7,0xfc,0xe8,0xf4,0xff,0xf7, -0xff,0xfd,0xfc,0xff,0xfd,0xfe,0xff,0xfb,0xfd,0xfb,0xff,0xff,0xdc,0xf6,0xe9, -0xa0,0xdf,0xbf,0x6e,0xc6,0x98,0x57,0xbc,0x88,0x56,0xc6,0x8c,0x4f,0xc8,0x8b, -0x4d,0xc3,0x88,0x58,0xc2,0x8d,0x69,0xbe,0x92,0x9b,0xd5,0xb8,0xe2,0xff,0xf3, -0xf6,0xff,0xfc,0xfa,0xfa,0xfa,0xff,0xfe,0xff,0xff,0xfc,0xfe,0xfd,0xff,0xff, -0xfa,0xff,0xfe,0xfd,0xff,0xff,0xfb,0xff,0xff,0xf6,0xff,0xfe,0xeb,0xff,0xf8, -0xbf,0xed,0xd7,0x78,0xbb,0x9b,0x63,0xbf,0x90,0x57,0xc7,0x8d,0x4b,0xc9,0x87, -0x42,0xc5,0x82,0x4e,0xc8,0x88,0x5d,0xc2,0x8e,0x76,0xbe,0x9a,0xc7,0xf1,0xdf, -0xf1,0xff,0xfc,0xfb,0xfd,0xfe,0xfb,0xff,0xff,0xfc,0xfe,0xfe,0xfe,0xfd,0xff, -0xfe,0xfd,0xff,0xff,0xfe,0xff,0xfa,0xff,0xfe,0xef,0xff,0xf7,0xe2,0xff,0xee, -0xa0,0xd6,0xb1,0x7a,0xc4,0x94,0x63,0xbe,0x86,0x5e,0xc5,0x88,0x57,0xc6,0x88, -0x55,0xc7,0x8b,0x53,0xc9,0x8e,0x51,0xc3,0x8e,0x52,0xb8,0x8f,0x8a,0xdd,0xbd, -0xc7,0xfb,0xe4,0xec,0xff,0xf7,0xfb,0xff,0xfb,0xff,0xff,0xfb,0xf6,0xf9,0xf7, -0xf4,0xfb,0xf8,0xf6,0xff,0xfe,0xf2,0xff,0xf9,0xf2,0xff,0xf7,0xed,0xff,0xf5, -0xdd,0xff,0xea,0xad,0xe7,0xc4,0x79,0xc8,0x9d,0x5a,0xb6,0x87,0x61,0xc0,0x93, -0x54,0xbf,0x8e,0x49,0xc3,0x8d,0x4a,0xc9,0x91,0x4c,0xc3,0x8c,0x5a,0xbb,0x89, -0x84,0xc3,0x9c,0xaf,0xd2,0xb7,0xf6,0xff,0xf5,0xf8,0xff,0xf8,0xf4,0xff,0xfd, -0xf3,0xff,0xff,0xf3,0xff,0xff,0xf6,0xff,0xff,0xff,0xff,0xfe,0xff,0xfe,0xfd, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xfc,0xfc,0xfc,0xf6,0xfc,0xf7,0xf6,0xfe,0xf7, -0xf7,0xff,0xf8,0xf4,0xff,0xf7,0xf1,0xff,0xf4,0xed,0xff,0xf1,0xd9,0xff,0xe1, -0xbe,0xf1,0xcf,0x97,0xdb,0xb2,0x67,0xbc,0x8f,0x5a,0xbf,0x8c,0x58,0xca,0x95, -0x45,0xc0,0x86,0x43,0xc5,0x86,0x41,0xc0,0x82,0x59,0xc9,0x93,0x66,0xc5,0x98, -0x6e,0xb8,0x94,0x9d,0xd1,0xb9,0xdb,0xfc,0xed,0xf1,0xff,0xfb,0xf5,0xfe,0xfb, -0xfd,0xff,0xfe,0xfc,0xff,0xfb,0xfd,0xff,0xfb,0xf6,0xff,0xf5,0xf3,0xff,0xf6, -0xe8,0xfe,0xec,0xa7,0xd0,0xaa,0x64,0xad,0x65,0x57,0xa7,0x54,0x40,0x80,0x3e, -0x92,0xc1,0x90,0xeb,0xff,0xe7,0xf8,0xff,0xf4,0xfb,0xff,0xfa,0xff,0xff,0xff, -0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xfe,0xfe,0xfe,0xfa,0xff,0xfb, -0xef,0xff,0xf1,0xe9,0xff,0xed,0xe5,0xff,0xea,0x96,0xc1,0x9c,0x6f,0x9a,0x75, -0xa9,0xce,0xae,0xec,0xff,0xf0,0xf1,0xff,0xf3,0xf3,0xfe,0xf4,0xfd,0xff,0xfe, -0xfb,0xf8,0xfa,0xff,0xfd,0xff,0xff,0xfc,0xff,0xfc,0xf9,0xfb,0xf8,0xf8,0xf8, -0xff,0xff,0xff,0xfa,0xfa,0xfa,0x47,0x47,0x47,0x0c,0x0c,0x0c,0x59,0x59,0x59, -0xf9,0xf9,0xf9,0xf8,0xf8,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xf8,0xf8, -0xf0,0xf0,0xf0,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xf2,0xfe,0xf8,0xe3,0xff,0xf2, -0xa2,0xdd,0xbe,0x6e,0xbd,0x96,0x5b,0xbf,0x8f,0x53,0xc8,0x91,0x4d,0xc5,0x8e, -0x52,0xc1,0x8d,0x62,0xbf,0x92,0x73,0xb4,0x94,0xc6,0xed,0xd7,0xf2,0xff,0xf6, -0xff,0xff,0xfb,0xff,0xfc,0xf8,0xff,0xfc,0xf8,0xfd,0xff,0xfc,0xe1,0xfb,0xeb, -0x97,0xd8,0xb1,0x6b,0xc4,0x92,0x59,0xbe,0x86,0x58,0xc6,0x8b,0x52,0xc7,0x8a, -0x53,0xc3,0x89,0x5f,0xc2,0x90,0x6c,0xbb,0x92,0xaa,0xe1,0xc8,0xe2,0xff,0xf5, -0xf5,0xff,0xfd,0xfa,0xfc,0xfd,0xff,0xfe,0xff,0xfa,0xfc,0xfc,0xfa,0xff,0xfe, -0xf6,0xff,0xfc,0xfd,0xff,0xff,0xf6,0xfb,0xfa,0xf6,0xff,0xfe,0xea,0xff,0xf8, -0xd4,0xfd,0xe8,0x86,0xc5,0xa5,0x66,0xbd,0x91,0x5a,0xc5,0x8d,0x51,0xcc,0x8c, -0x41,0xc2,0x7f,0x4f,0xc9,0x89,0x5f,0xc4,0x90,0x6e,0xb8,0x94,0xb4,0xe2,0xcc, -0xed,0xff,0xfa,0xf8,0xfe,0xfd,0xfd,0xff,0xff,0xfe,0xfe,0xfe,0xff,0xfd,0xff, -0xff,0xfc,0xff,0xfd,0xff,0xff,0xf8,0xff,0xfe,0xed,0xff,0xf7,0xdf,0xff,0xf0, -0x86,0xc0,0x9d,0x6f,0xbd,0x8e,0x64,0xc2,0x8b,0x5d,0xc8,0x8a,0x53,0xc5,0x86, -0x53,0xc8,0x8b,0x55,0xcb,0x90,0x54,0xc1,0x90,0x5c,0xbb,0x96,0xa8,0xf2,0xd6, -0xd8,0xff,0xf2,0xef,0xff,0xf6,0xfe,0xff,0xfb,0xfd,0xf9,0xf8,0xfc,0xfc,0xfc, -0xf8,0xfd,0xfe,0xf6,0xff,0xff,0xf3,0xfe,0xfb,0xf1,0xfe,0xf6,0xf2,0xff,0xf6, -0xec,0xff,0xf4,0xd1,0xff,0xe2,0x9c,0xdc,0xb8,0x69,0xbb,0x91,0x60,0xbf,0x92, -0x50,0xbf,0x8d,0x45,0xc4,0x8d,0x48,0xcb,0x92,0x4a,0xc7,0x8f,0x52,0xbb,0x88, -0x6e,0xb7,0x8f,0x8e,0xbc,0x9f,0xe3,0xf8,0xe9,0xf7,0xff,0xfa,0xf3,0xfe,0xfc, -0xf6,0xff,0xff,0xf6,0xff,0xff,0xf6,0xfb,0xfa,0xff,0xfc,0xf9,0xff,0xfc,0xf9, -0xff,0xfc,0xf9,0xff,0xfe,0xfa,0xfd,0xff,0xfb,0xfa,0xff,0xf9,0xf4,0xff,0xf8, -0xf0,0xff,0xf6,0xe7,0xff,0xee,0xde,0xff,0xe7,0xd1,0xf9,0xdd,0xb2,0xe4,0xc2, -0x93,0xd1,0xa9,0x74,0xbf,0x93,0x57,0xb2,0x81,0x52,0xbc,0x87,0x53,0xc8,0x91, -0x45,0xc3,0x88,0x49,0xc9,0x8e,0x4c,0xc7,0x8f,0x58,0xc7,0x95,0x5f,0xbd,0x94, -0x71,0xba,0x9a,0xa5,0xdb,0xc4,0xdc,0xff,0xf1,0xef,0xff,0xfc,0xf6,0xfe,0xfd, -0xfd,0xff,0xff,0xfd,0xfe,0xfc,0xfd,0xff,0xfb,0xf6,0xff,0xf5,0xf5,0xff,0xf6, -0xec,0xff,0xee,0xb0,0xd7,0xb1,0x65,0xae,0x66,0x57,0xa7,0x54,0x45,0x85,0x43, -0x83,0xb2,0x81,0xeb,0xff,0xe7,0xf8,0xff,0xf4,0xfb,0xff,0xfa,0xff,0xff,0xff, -0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xff,0xff,0xff,0xf6,0xfe,0xf7, -0xeb,0xfc,0xee,0xef,0xff,0xf2,0xe3,0xff,0xe7,0xc3,0xeb,0xc8,0x72,0x9a,0x77, -0x8b,0xb0,0x90,0xde,0xfd,0xe2,0xee,0xff,0xf1,0xf2,0xff,0xf5,0xfb,0xff,0xfc, -0xf5,0xf5,0xf5,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xff,0xff, -0xf8,0xf8,0xf8,0xe6,0xe6,0xe6,0x9a,0x9a,0x9a,0x03,0x03,0x03,0x0b,0x0b,0x0b, -0xe7,0xe7,0xe7,0xfd,0xfd,0xfd,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xfb,0xfb,0xfb, -0xfb,0xfb,0xfb,0xf6,0xf6,0xf6,0xff,0xff,0xff,0xf5,0xff,0xf9,0xe8,0xff,0xf7, -0xb3,0xe8,0xcd,0x7a,0xc4,0xa0,0x5c,0xbb,0x8e,0x53,0xc5,0x8f,0x4f,0xc7,0x8d, -0x52,0xc2,0x8c,0x61,0xc1,0x92,0x6e,0xb4,0x8f,0xa2,0xcf,0xb4,0xeb,0xff,0xef, -0xfb,0xff,0xf8,0xf8,0xfc,0xf1,0xfc,0xff,0xf5,0xf2,0xfa,0xef,0xeb,0xff,0xf1, -0x8b,0xd0,0xa5,0x67,0xc4,0x8d,0x5b,0xc1,0x87,0x5a,0xc6,0x8b,0x54,0xc5,0x89, -0x59,0xc4,0x8c,0x64,0xc2,0x93,0x6e,0xb8,0x94,0xbb,0xec,0xd8,0xe5,0xff,0xf8, -0xf2,0xff,0xfd,0xfb,0xff,0xff,0xfb,0xff,0xff,0xf6,0xfd,0xfa,0xf6,0xff,0xfc, -0xf2,0xfe,0xf8,0xfb,0xff,0xfe,0xf6,0xf8,0xf8,0xf8,0xff,0xfe,0xea,0xff,0xf6, -0xe0,0xff,0xf4,0x99,0xd3,0xb6,0x6a,0xbc,0x92,0x5d,0xc2,0x8e,0x56,0xce,0x8e, -0x45,0xc3,0x81,0x52,0xca,0x8a,0x5e,0xc6,0x91,0x6b,0xb8,0x92,0x9f,0xd1,0xb9, -0xe6,0xff,0xf3,0xf7,0xff,0xfd,0xff,0xff,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff, -0xff,0xfd,0xff,0xfd,0xff,0xff,0xf6,0xff,0xfe,0xea,0xff,0xf7,0xdb,0xff,0xf0, -0x77,0xb7,0x94,0x69,0xba,0x8d,0x62,0xc5,0x8d,0x5c,0xc8,0x8d,0x50,0xc2,0x86, -0x50,0xc7,0x8a,0x55,0xcb,0x90,0x56,0xc1,0x90,0x68,0xbe,0x9c,0xbf,0xfd,0xe5, -0xe0,0xff,0xf4,0xed,0xfb,0xf0,0xff,0xfb,0xfa,0xff,0xf7,0xf8,0xff,0xfe,0xff, -0xfb,0xfe,0xff,0xf6,0xfd,0xff,0xf8,0xff,0xff,0xf9,0xfe,0xfc,0xf2,0xfb,0xf1, -0xf3,0xff,0xf7,0xea,0xff,0xf2,0xc2,0xf3,0xd7,0x85,0xcb,0xa7,0x61,0xc0,0x94, -0x4c,0xbf,0x8d,0x43,0xc3,0x8c,0x43,0xcb,0x91,0x47,0xcb,0x8f,0x4d,0xc2,0x8b, -0x65,0xba,0x8e,0x7d,0xb9,0x97,0xc3,0xe3,0xd0,0xf1,0xff,0xf7,0xf2,0xfd,0xfa, -0xf7,0xff,0xfe,0xfa,0xff,0xff,0xf6,0xf7,0xf5,0xff,0xff,0xfb,0xff,0xff,0xf9, -0xfb,0xfc,0xf2,0xf6,0xff,0xf3,0xf2,0xff,0xf5,0xed,0xff,0xf3,0xde,0xff,0xea, -0xc9,0xf1,0xd8,0xb0,0xe0,0xc4,0x9d,0xd4,0xb3,0x81,0xbe,0x9a,0x79,0xbc,0x95, -0x72,0xbf,0x93,0x67,0xc0,0x8f,0x5b,0xc0,0x8d,0x57,0xc7,0x91,0x4f,0xca,0x92, -0x43,0xc2,0x8a,0x4c,0xc8,0x94,0x53,0xc8,0x97,0x55,0xbe,0x93,0x59,0xb1,0x8d, -0x7c,0xc1,0xa6,0xbc,0xee,0xdc,0xe6,0xff,0xfb,0xec,0xfd,0xf9,0xf9,0xff,0xfe, -0xfd,0xff,0xff,0xfc,0xfd,0xfb,0xfd,0xff,0xfc,0xf7,0xff,0xf5,0xf7,0xff,0xf6, -0xf0,0xff,0xf1,0xb9,0xde,0xb8,0x6a,0xb0,0x69,0x57,0xa7,0x54,0x4a,0x8a,0x48, -0x71,0xa0,0x6f,0xeb,0xff,0xe7,0xf8,0xff,0xf4,0xfb,0xff,0xfa,0xff,0xfe,0xfe, -0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xf9,0xfb,0xfd,0xff,0xfe,0xf6,0xfc,0xf7, -0xf1,0xff,0xf3,0xf3,0xff,0xf5,0xe0,0xfd,0xe4,0xe0,0xff,0xe4,0x7e,0xa3,0x83, -0x77,0x9c,0x7c,0xc1,0xe3,0xc5,0xe8,0xff,0xec,0xf3,0xff,0xf5,0xf9,0xff,0xfa, -0xf6,0xf9,0xf7,0xff,0xfb,0xff,0xff,0xfd,0xff,0xfc,0xf9,0xfb,0xeb,0xeb,0xeb, -0xff,0xff,0xff,0xff,0xff,0xff,0xf2,0xf2,0xf2,0xce,0xce,0xce,0xdb,0xdb,0xdb, -0xe8,0xe8,0xe8,0xcb,0xcb,0xcb,0xa9,0xa9,0xa9,0xaa,0xaa,0xaa,0xc3,0xc3,0xc3, -0xdf,0xdf,0xdf,0xf0,0xf0,0xf0,0xfb,0xfb,0xfb,0xf8,0xff,0xfc,0xec,0xff,0xf9, -0xc8,0xf6,0xdf,0x8e,0xd1,0xb1,0x61,0xba,0x8f,0x56,0xc2,0x8e,0x52,0xc7,0x8e, -0x53,0xc4,0x8b,0x5f,0xc4,0x91,0x6d,0xbb,0x92,0x86,0xbf,0x9e,0xd5,0xf9,0xe1, -0xf1,0xff,0xf4,0xf3,0xff,0xf4,0xf6,0xff,0xf4,0xe7,0xfb,0xe8,0xe4,0xff,0xee, -0x7a,0xc9,0x98,0x5f,0xc3,0x87,0x5a,0xc5,0x87,0x5a,0xc7,0x89,0x55,0xc3,0x89, -0x5c,0xc4,0x8f,0x69,0xc2,0x97,0x6f,0xb5,0x96,0xc7,0xf7,0xe5,0xe5,0xff,0xfb, -0xf0,0xfc,0xfc,0xfa,0xff,0xff,0xfb,0xff,0xff,0xf6,0xfd,0xfa,0xf8,0xff,0xfb, -0xf3,0xfe,0xf6,0xfc,0xff,0xfd,0xf8,0xfa,0xfa,0xfa,0xff,0xfe,0xeb,0xfd,0xf6, -0xe6,0xff,0xf8,0xb1,0xe6,0xcb,0x6f,0xbc,0x96,0x60,0xc1,0x8f,0x59,0xcb,0x8f, -0x4d,0xc7,0x87,0x52,0xc9,0x8c,0x5c,0xc4,0x8d,0x6d,0xbc,0x93,0x89,0xc3,0xa6, -0xd5,0xf9,0xe9,0xf3,0xff,0xfb,0xff,0xff,0xfc,0xff,0xfe,0xfd,0xff,0xfd,0xfe, -0xff,0xfd,0xff,0xfd,0xff,0xff,0xf4,0xff,0xff,0xe8,0xff,0xf9,0xd8,0xff,0xf1, -0x78,0xb9,0x99,0x65,0xba,0x8e,0x5f,0xc4,0x8d,0x5a,0xc8,0x8d,0x4f,0xc4,0x87, -0x4e,0xc4,0x89,0x53,0xc8,0x8f,0x58,0xc1,0x90,0x6c,0xbb,0x9a,0xcd,0xff,0xee, -0xe6,0xff,0xf4,0xf3,0xfb,0xf4,0xff,0xff,0xfe,0xff,0xf9,0xfc,0xff,0xfd,0xff, -0xf8,0xfb,0xff,0xf2,0xf8,0xff,0xf8,0xfe,0xff,0xff,0xfe,0xff,0xf8,0xf9,0xf5, -0xfa,0xff,0xf8,0xf3,0xff,0xf5,0xd8,0xfc,0xe6,0xa0,0xdb,0xbc,0x66,0xbf,0x97, -0x4f,0xc0,0x8e,0x44,0xc3,0x8c,0x43,0xc9,0x8d,0x45,0xcb,0x8f,0x4b,0xc6,0x8e, -0x60,0xbf,0x92,0x76,0xbc,0x98,0x9f,0xcb,0xb4,0xe7,0xff,0xf4,0xef,0xfd,0xf7, -0xf5,0xfe,0xfb,0xfb,0xff,0xfe,0xf7,0xfb,0xf6,0xff,0xff,0xf9,0xfd,0xff,0xf5, -0xf3,0xff,0xf4,0xde,0xfe,0xe6,0xc4,0xeb,0xd2,0xab,0xdb,0xbf,0x94,0xcf,0xb0, -0x85,0xc7,0xa4,0x78,0xc1,0x9b,0x6f,0xbc,0x96,0x65,0xb4,0x8b,0x66,0xbb,0x8f, -0x63,0xbf,0x90,0x5c,0xc1,0x8e,0x56,0xc5,0x8f,0x52,0xc9,0x92,0x4a,0xca,0x8f, -0x49,0xc5,0x8f,0x4f,0xbf,0x90,0x5b,0xc1,0x98,0x5f,0xb9,0x96,0x6c,0xb7,0x9b, -0x9a,0xd5,0xc0,0xd4,0xff,0xf2,0xea,0xff,0xfe,0xed,0xfa,0xf8,0xfb,0xff,0xff, -0xfe,0xfe,0xfe,0xfc,0xfc,0xfc,0xfd,0xff,0xfc,0xf7,0xff,0xf5,0xf7,0xff,0xf6, -0xf3,0xff,0xf4,0xbf,0xe3,0xbf,0x6d,0xb3,0x6c,0x57,0xa7,0x54,0x4e,0x8e,0x4c, -0x60,0x8f,0x5e,0xea,0xff,0xe6,0xf8,0xff,0xf4,0xfc,0xff,0xfb,0xff,0xfe,0xfe, -0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xfb,0xfb,0xfa,0xfd,0xfb,0xf6,0xfc,0xf7, -0xfa,0xff,0xfb,0xf1,0xff,0xf3,0xef,0xff,0xf1,0xed,0xff,0xf1,0xa1,0xc3,0xa5, -0x6e,0x93,0x73,0xa1,0xc6,0xa6,0xdf,0xfe,0xe3,0xee,0xff,0xf1,0xf4,0xff,0xf6, -0xfb,0xff,0xfc,0xfe,0xfb,0xfd,0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xe8,0xe8,0xe8,0xef,0xef,0xef,0xff,0xff,0xff,0xd0,0xd0,0xd0, -0x4c,0x4c,0x4c,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00, -0x1f,0x1f,0x1f,0x9a,0x9a,0x9a,0xe0,0xe0,0xe0,0xfa,0xff,0xfe,0xef,0xff,0xf9, -0xdf,0xff,0xf2,0xa6,0xe0,0xc4,0x6d,0xbc,0x95,0x5a,0xbe,0x8e,0x57,0xc8,0x8f, -0x52,0xc5,0x8c,0x5a,0xc4,0x8f,0x67,0xc1,0x93,0x7a,0xc1,0x99,0xb2,0xe9,0xc8, -0xe0,0xff,0xef,0xe4,0xff,0xf1,0xe5,0xff,0xf0,0xd8,0xff,0xe4,0xbf,0xf8,0xd2, -0x6a,0xc5,0x8e,0x57,0xc5,0x85,0x57,0xc7,0x87,0x56,0xc8,0x89,0x54,0xc2,0x88, -0x5f,0xc4,0x91,0x6c,0xc2,0x9a,0x71,0xb4,0x99,0xd3,0xff,0xf0,0xe5,0xff,0xfc, -0xef,0xfb,0xfd,0xfb,0xfe,0xff,0xfc,0xfe,0xfe,0xf8,0xfc,0xf7,0xfb,0xff,0xf9, -0xf5,0xfd,0xf3,0xfa,0xfd,0xfb,0xfd,0xff,0xff,0xf8,0xff,0xfc,0xef,0xfd,0xf7, -0xea,0xff,0xf9,0xca,0xfa,0xe2,0x79,0xbf,0x9b,0x68,0xc2,0x94,0x58,0xc6,0x8c, -0x54,0xcb,0x8e,0x54,0xc9,0x8c,0x57,0xbf,0x88,0x6c,0xc1,0x95,0x77,0xb8,0x98, -0xc4,0xef,0xda,0xec,0xff,0xf8,0xfd,0xff,0xfb,0xff,0xfe,0xfb,0xff,0xfd,0xfe, -0xff,0xfd,0xff,0xfd,0xfe,0xff,0xf4,0xff,0xff,0xe6,0xff,0xfa,0xd6,0xff,0xf3, -0x80,0xc3,0xa3,0x64,0xbb,0x8f,0x5b,0xc0,0x8c,0x58,0xc8,0x8e,0x50,0xc4,0x89, -0x4c,0xc2,0x87,0x50,0xc5,0x8c,0x5a,0xc0,0x90,0x6f,0xb8,0x98,0xd7,0xff,0xf2, -0xeb,0xff,0xf5,0xf9,0xfd,0xf8,0xff,0xfe,0xff,0xff,0xf5,0xfb,0xff,0xfc,0xff, -0xf7,0xfa,0xff,0xf4,0xf9,0xff,0xfa,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfa,0xfb, -0xff,0xff,0xf9,0xfa,0xff,0xf7,0xe7,0xfc,0xed,0xc5,0xf4,0xda,0x6d,0xbe,0x97, -0x56,0xc1,0x90,0x4b,0xc3,0x8c,0x46,0xc7,0x8c,0x43,0xc9,0x8d,0x49,0xc7,0x8c, -0x57,0xc2,0x91,0x6a,0xbd,0x96,0x80,0xb7,0x9c,0xdd,0xff,0xf1,0xea,0xfd,0xf4, -0xef,0xfb,0xf5,0xf8,0xff,0xfc,0xf7,0xff,0xf8,0xfa,0xff,0xf8,0xdc,0xf2,0xe0, -0xc3,0xf1,0xd4,0xa4,0xe1,0xbf,0x83,0xc9,0xa5,0x69,0xb8,0x91,0x59,0xb2,0x8a, -0x56,0xb7,0x8b,0x58,0xbe,0x8f,0x5a,0xc2,0x93,0x5f,0xc7,0x98,0x62,0xcb,0x9a, -0x59,0xc5,0x91,0x4e,0xbc,0x88,0x4c,0xc1,0x8a,0x4c,0xc4,0x8d,0x45,0xc4,0x8c, -0x4e,0xc4,0x91,0x59,0xb9,0x91,0x6e,0xbc,0x9d,0x7f,0xc4,0xa9,0x9e,0xd7,0xc2, -0xc9,0xf4,0xe5,0xe6,0xff,0xfa,0xf0,0xff,0xfe,0xf8,0xfd,0xfe,0xfd,0xff,0xff, -0xfe,0xfe,0xfe,0xfb,0xfb,0xfb,0xfd,0xff,0xfc,0xf6,0xfe,0xf7,0xf5,0xff,0xf7, -0xf3,0xff,0xf7,0xc2,0xe8,0xc4,0x6e,0xb7,0x6f,0x58,0xa8,0x55,0x51,0x91,0x4f, -0x52,0x81,0x50,0xe9,0xff,0xe5,0xf8,0xff,0xf4,0xfd,0xff,0xfc,0xff,0xff,0xff, -0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xfe,0xf1,0xf7,0xf2,0xf8,0xfb,0xf9, -0xfb,0xff,0xfc,0xe4,0xec,0xe5,0xf6,0xff,0xf8,0xf1,0xff,0xf4,0xc7,0xe6,0xcb, -0x6d,0x92,0x72,0x8b,0xb3,0x90,0xd3,0xf8,0xd8,0xea,0xff,0xee,0xf1,0xff,0xf3, -0xfa,0xff,0xfb,0xfd,0xfa,0xfc,0xfe,0xf8,0xfd,0xfe,0xfb,0xfd,0xff,0xff,0xff, -0xfb,0xfb,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xf5,0xf5,0xf5,0x8a,0x8a,0x8a, -0x00,0x00,0x00,0x13,0x13,0x13,0x00,0x00,0x00,0x10,0x10,0x10,0x18,0x18,0x18, -0x00,0x00,0x00,0x09,0x09,0x09,0x55,0x55,0x55,0xe5,0xe8,0xe6,0xf5,0xfe,0xfb, -0xed,0xff,0xf9,0xbc,0xea,0xd3,0x77,0xbd,0x99,0x60,0xbc,0x8d,0x5a,0xc7,0x8f, -0x52,0xc6,0x8b,0x54,0xc5,0x8c,0x5a,0xbf,0x8b,0x6e,0xc6,0x98,0x8c,0xd5,0xad, -0xc5,0xff,0xe1,0xd2,0xff,0xec,0xc7,0xff,0xdf,0xc4,0xfe,0xdb,0x8c,0xd4,0xa9, -0x5d,0xc2,0x8a,0x51,0xc4,0x85,0x55,0xc8,0x89,0x55,0xc8,0x89,0x52,0xc2,0x88, -0x5f,0xc4,0x91,0x6d,0xc2,0x9c,0x70,0xb3,0x98,0xd6,0xff,0xf7,0xe5,0xff,0xfc, -0xee,0xfb,0xfd,0xfb,0xfe,0xff,0xfe,0xfe,0xfe,0xfc,0xfc,0xf6,0xff,0xff,0xf8, -0xfa,0xfb,0xf1,0xfa,0xfb,0xf7,0xfd,0xff,0xff,0xf9,0xfe,0xfc,0xf3,0xff,0xf9, -0xed,0xff,0xf9,0xdc,0xff,0xf0,0x81,0xbf,0xa1,0x6e,0xc3,0x97,0x59,0xc1,0x8c, -0x5b,0xcd,0x91,0x54,0xc6,0x8a,0x52,0xbd,0x85,0x6a,0xc4,0x96,0x6c,0xb2,0x8d, -0xb5,0xea,0xcf,0xe6,0xff,0xf5,0xfb,0xff,0xf9,0xff,0xfe,0xfb,0xff,0xfd,0xfe, -0xff,0xfd,0xff,0xfd,0xfe,0xff,0xf4,0xff,0xff,0xe6,0xff,0xfa,0xd8,0xff,0xf4, -0x89,0xcc,0xad,0x68,0xbc,0x92,0x59,0xbc,0x8a,0x58,0xc7,0x8f,0x51,0xc4,0x8b, -0x4b,0xc1,0x86,0x4f,0xc4,0x8b,0x5a,0xc0,0x90,0x70,0xb9,0x99,0xdb,0xff,0xf3, -0xe9,0xff,0xf3,0xf7,0xfb,0xf6,0xff,0xfe,0xff,0xf8,0xee,0xf4,0xfc,0xf9,0xff, -0xf9,0xfb,0xff,0xf8,0xfd,0xff,0xf9,0xfc,0xff,0xff,0xf9,0xff,0xff,0xfd,0xff, -0xff,0xfc,0xfc,0xf9,0xf9,0xf3,0xf4,0xff,0xf4,0xe4,0xff,0xf4,0x74,0xbd,0x97, -0x5e,0xc1,0x91,0x53,0xc3,0x8d,0x4b,0xc6,0x8c,0x46,0xc8,0x8b,0x45,0xc5,0x8a, -0x51,0xc0,0x8e,0x60,0xbc,0x93,0x6f,0xaf,0x92,0xd7,0xff,0xef,0xe4,0xfc,0xf0, -0xe8,0xf9,0xf0,0xf4,0xff,0xfb,0xed,0xff,0xf5,0xe4,0xfe,0xee,0xb5,0xdf,0xc6, -0x73,0xb8,0x93,0x62,0xb9,0x8d,0x5c,0xb9,0x8c,0x58,0xbe,0x8f,0x57,0xc6,0x94, -0x56,0xc9,0x97,0x51,0xc7,0x94,0x4d,0xc3,0x90,0x4c,0xbd,0x8b,0x57,0xc6,0x94, -0x57,0xc2,0x91,0x55,0xc1,0x8d,0x5e,0xca,0x96,0x5a,0xc9,0x95,0x4e,0xc0,0x8b, -0x55,0xbb,0x8c,0x6e,0xb7,0x97,0x84,0xbc,0xa5,0xa4,0xd2,0xbf,0xd0,0xf7,0xe8, -0xea,0xff,0xfc,0xf2,0xff,0xfd,0xf0,0xf5,0xf6,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xfe,0xfb,0xfb,0xfb,0xfd,0xff,0xfc,0xf7,0xff,0xf8,0xf3,0xff,0xf7, -0xf3,0xff,0xf7,0xc3,0xec,0xc7,0x70,0xb9,0x71,0x59,0xa9,0x56,0x53,0x93,0x51, -0x4b,0x7a,0x49,0xe8,0xff,0xe4,0xf8,0xff,0xf4,0xfd,0xff,0xfc,0xff,0xff,0xff, -0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfb,0xfa,0xff,0xfb,0xfc,0xff,0xfd, -0xfb,0xfe,0xfc,0xf9,0xff,0xfa,0xf7,0xff,0xf8,0xf1,0xff,0xf4,0xea,0xff,0xee, -0x85,0xaa,0x8a,0x74,0x9f,0x7a,0xbb,0xe3,0xc0,0xe8,0xff,0xec,0xe9,0xff,0xec, -0xf7,0xff,0xf8,0xfd,0xfd,0xfd,0xff,0xfd,0xff,0xff,0xfe,0xff,0xfd,0xfd,0xfd, -0xfb,0xfb,0xfb,0xf4,0xf4,0xf4,0xff,0xff,0xff,0xf6,0xf6,0xf6,0x4d,0x4d,0x4d, -0x0c,0x0c,0x0c,0x5a,0x5a,0x5a,0xbe,0xbe,0xbe,0x3a,0x3a,0x3a,0x3c,0x3c,0x3c, -0xc1,0xc1,0xc1,0x64,0x64,0x64,0x0e,0x0e,0x0e,0x66,0x66,0x66,0xfe,0xfe,0xfe, -0xf3,0xfd,0xf7,0xe6,0xff,0xf7,0x87,0xc2,0xa3,0x6a,0xbf,0x92,0x5e,0xc6,0x8f, -0x4b,0xc1,0x86,0x53,0xcb,0x90,0x54,0xc7,0x8e,0x59,0xc2,0x8f,0x69,0xc6,0x99, -0x7a,0xd0,0xa6,0x80,0xd1,0xaa,0x77,0xc6,0x9d,0x6c,0xbb,0x92,0x62,0xbc,0x8e, -0x55,0xc2,0x8a,0x47,0xbe,0x81,0x4b,0xc2,0x85,0x58,0xcd,0x90,0x58,0xc7,0x8f, -0x57,0xbb,0x8b,0x6a,0xc2,0x9a,0x8d,0xd3,0xb5,0xd1,0xff,0xf2,0xdd,0xfe,0xf7, -0xef,0xfd,0xfc,0xfb,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfa,0xff,0xff,0xf6, -0xff,0xff,0xf8,0xfe,0xfb,0xf7,0xfd,0xfd,0xfd,0xfd,0xff,0xff,0xf8,0xff,0xfe, -0xec,0xff,0xf6,0xd8,0xfc,0xeb,0xa9,0xe0,0xc5,0x6a,0xb8,0x8f,0x61,0xc2,0x90, -0x5a,0xc8,0x8e,0x57,0xc8,0x8c,0x57,0xc2,0x89,0x68,0xc7,0x95,0x6e,0xbd,0x92, -0x89,0xc5,0xa6,0xe1,0xff,0xf2,0xf8,0xff,0xf8,0xff,0xff,0xfb,0xff,0xff,0xfe, -0xff,0xfd,0xff,0xfb,0xfc,0xff,0xf2,0xfc,0xfc,0xe7,0xff,0xfb,0xdc,0xff,0xf7, -0x96,0xd6,0xb9,0x76,0xc7,0xa0,0x5d,0xbe,0x8c,0x53,0xc0,0x88,0x51,0xc4,0x8b, -0x53,0xc8,0x8f,0x51,0xc8,0x91,0x57,0xc0,0x8f,0x72,0xbe,0x9c,0xc7,0xf7,0xdf, -0xed,0xff,0xf8,0xf4,0xfb,0xf4,0xfd,0xf8,0xf7,0xff,0xfd,0xff,0xfa,0xf9,0xff, -0xf6,0xfb,0xff,0xf6,0xfc,0xff,0xfa,0xfc,0xff,0xff,0xf9,0xff,0xff,0xfc,0xff, -0xff,0xfd,0xff,0xff,0xff,0xfc,0xf9,0xff,0xf7,0xe7,0xff,0xf2,0x93,0xd3,0xaf, -0x67,0xc0,0x8f,0x55,0xba,0x86,0x53,0xc6,0x8d,0x4f,0xcb,0x8f,0x4e,0xc9,0x8f, -0x52,0xc6,0x91,0x5a,0xbb,0x8f,0x6f,0xb5,0x96,0xbe,0xed,0xd7,0xdc,0xf9,0xea, -0xef,0xff,0xf9,0xed,0xff,0xf9,0xe2,0xff,0xf4,0x9b,0xc9,0xb3,0x79,0xb9,0x9b, -0x67,0xc0,0x94,0x5d,0xc5,0x90,0x51,0xbf,0x8b,0x4c,0xc0,0x8b,0x50,0xca,0x94, -0x4c,0xc8,0x92,0x4b,0xc5,0x8f,0x55,0xcb,0x96,0x58,0xc5,0x94,0x5e,0xc2,0x92, -0x61,0xbd,0x8e,0x61,0xb9,0x8b,0x60,0xb8,0x8a,0x65,0xbd,0x8f,0x6c,0xc3,0x97, -0x7d,0xc6,0xa0,0xb9,0xe7,0xd0,0xd8,0xf5,0xe6,0xec,0xff,0xf8,0xf3,0xff,0xfb, -0xf5,0xfe,0xfb,0xfa,0xfc,0xfc,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xf9,0xfc, -0xff,0xfd,0xfe,0xff,0xff,0xff,0xfc,0xff,0xfb,0xf8,0xff,0xfb,0xf3,0xff,0xf8, -0xeb,0xff,0xf1,0xd9,0xff,0xde,0x77,0xc0,0x78,0x55,0xa5,0x52,0x59,0x99,0x57, -0x38,0x67,0x36,0xe0,0xfd,0xdc,0xf8,0xff,0xf4,0xfd,0xff,0xfc,0xff,0xfd,0xfd, -0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfa,0xfa,0xff,0xfb,0xfe,0xfe,0xfe, -0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfb,0xfe,0xfc,0xf3,0xff,0xf5,0xec,0xff,0xef, -0xae,0xd3,0xb3,0x6e,0x99,0x74,0x95,0xc2,0x9b,0xdc,0xff,0xe1,0xec,0xff,0xf0, -0xf6,0xff,0xf8,0xfd,0xff,0xfe,0xfd,0xfa,0xfc,0xf8,0xf8,0xf8,0xfe,0xfe,0xfe, -0xfd,0xfd,0xfd,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xf9,0xf9,0xf9,0x80,0x80,0x80, -0x00,0x00,0x00,0xb1,0xb1,0xb1,0xff,0xff,0xff,0x84,0x84,0x84,0x00,0x00,0x00, -0xe4,0xe4,0xe4,0xe6,0xe6,0xe6,0x55,0x55,0x55,0x0b,0x09,0x09,0xc4,0xbb,0xbe, -0xf1,0xf2,0xf0,0xe3,0xfa,0xec,0xab,0xdc,0xc0,0x74,0xc3,0x98,0x64,0xc9,0x92, -0x49,0xbd,0x82,0x50,0xcd,0x8f,0x45,0xc1,0x85,0x46,0xbd,0x86,0x50,0xbd,0x8c, -0x5b,0xc1,0x92,0x5e,0xbf,0x93,0x5e,0xba,0x8f,0x61,0xbc,0x8f,0x63,0xc3,0x94, -0x60,0xcc,0x98,0x56,0xc8,0x92,0x54,0xc7,0x8e,0x51,0xc2,0x89,0x4b,0xb7,0x82, -0x54,0xb9,0x86,0x7c,0xd4,0xac,0xac,0xf5,0xd5,0xd4,0xff,0xf7,0xe1,0xff,0xfb, -0xed,0xff,0xfe,0xf4,0xfd,0xfa,0xff,0xfd,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf7, -0xff,0xfc,0xf4,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfe, -0xf3,0xff,0xfb,0xe9,0xff,0xf8,0xb9,0xe9,0xd1,0x75,0xbb,0x97,0x64,0xc0,0x91, -0x5c,0xc4,0x8d,0x56,0xc6,0x8c,0x53,0xc1,0x87,0x62,0xc4,0x90,0x65,0xba,0x8d, -0x7e,0xc4,0x9f,0xd2,0xff,0xe7,0xf2,0xff,0xf6,0xfd,0xff,0xf9,0xff,0xfe,0xfd, -0xff,0xff,0xff,0xfc,0xfd,0xff,0xf6,0xfe,0xfe,0xeb,0xff,0xfa,0xdf,0xff,0xf5, -0xb0,0xe9,0xd0,0x71,0xbb,0x97,0x5d,0xb9,0x8a,0x64,0xcc,0x97,0x52,0xc2,0x8c, -0x4f,0xc4,0x8b,0x56,0xcd,0x96,0x53,0xbe,0x8d,0x6d,0xbd,0x98,0xad,0xe4,0xc9, -0xe0,0xfe,0xeb,0xf2,0xfe,0xf2,0xfe,0xfd,0xf9,0xff,0xff,0xff,0xfa,0xfd,0xff, -0xf3,0xfa,0xff,0xf3,0xfa,0xff,0xf5,0xf7,0xff,0xfe,0xf7,0xfe,0xff,0xf9,0xff, -0xff,0xfc,0xfe,0xff,0xfd,0xfa,0xf7,0xfe,0xf7,0xe7,0xff,0xf0,0x9b,0xd8,0xb4, -0x72,0xc3,0x94,0x5c,0xbb,0x88,0x59,0xc4,0x8c,0x51,0xc7,0x8c,0x4e,0xc7,0x8d, -0x52,0xc6,0x91,0x59,0xbe,0x91,0x6a,0xb5,0x95,0xb5,0xe9,0xd2,0xdc,0xfb,0xec, -0xeb,0xff,0xf6,0xe8,0xff,0xf8,0xc6,0xf0,0xde,0x83,0xc2,0xa8,0x69,0xbb,0x98, -0x5b,0xc0,0x8d,0x59,0xca,0x91,0x52,0xc5,0x8c,0x4a,0xc1,0x8a,0x50,0xc8,0x91, -0x4f,0xc7,0x90,0x4e,0xc0,0x8b,0x55,0xbe,0x8d,0x5f,0xbd,0x8e,0x6a,0xbc,0x91, -0x78,0xbf,0x97,0x88,0xc7,0xa0,0x99,0xd4,0xae,0xaf,0xe8,0xc2,0xc3,0xfb,0xd8, -0xd7,0xff,0xe8,0xe6,0xfe,0xec,0xf6,0xff,0xf6,0xfa,0xff,0xfb,0xfd,0xff,0xfc, -0xfd,0xfb,0xfa,0xfd,0xf7,0xf8,0xfe,0xf5,0xf8,0xff,0xf5,0xf8,0xff,0xf9,0xfc, -0xff,0xfe,0xff,0xff,0xff,0xfe,0xfa,0xff,0xfb,0xf6,0xff,0xfb,0xf3,0xff,0xf9, -0xea,0xff,0xf3,0xd7,0xff,0xde,0x7c,0xc5,0x7d,0x57,0xa7,0x54,0x59,0x99,0x57, -0x37,0x66,0x35,0xda,0xf7,0xd6,0xf8,0xff,0xf4,0xfd,0xff,0xfc,0xff,0xff,0xff, -0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xf8,0xfa,0xff,0xfb,0xfe,0xfe,0xfe, -0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfc,0xfe,0xf8,0xff,0xf9,0xee,0xff,0xf1, -0xd5,0xfa,0xda,0x74,0xa1,0x7a,0x71,0xa1,0x77,0xcb,0xf8,0xd1,0xec,0xff,0xf0, -0xef,0xff,0xf2,0xfd,0xff,0xfe,0xfc,0xf9,0xfb,0xf8,0xf8,0xf8,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xf9,0xf9,0xc3,0xc3,0xc3, -0x0f,0x0f,0x0f,0x71,0x71,0x71,0xff,0xff,0xff,0xf1,0xf1,0xf1,0x0b,0x0b,0x0b, -0x9a,0x9a,0x9a,0xff,0xff,0xff,0xa5,0xa5,0xa5,0x0d,0x08,0x0a,0x87,0x79,0x7f, -0xff,0xfd,0xff,0xf6,0xff,0xf9,0xda,0xff,0xe9,0x7b,0xc3,0x99,0x64,0xc3,0x90, -0x4d,0xbf,0x83,0x4d,0xca,0x8c,0x4c,0xcd,0x90,0x4e,0xcb,0x93,0x53,0xc9,0x96, -0x57,0xc5,0x95,0x55,0xbe,0x91,0x59,0xbb,0x8f,0x60,0xc2,0x94,0x68,0xca,0x9c, -0x56,0xb8,0x8c,0x58,0xbd,0x90,0x5c,0xc5,0x94,0x5d,0xc6,0x93,0x5f,0xc7,0x92, -0x6d,0xd0,0x9e,0x8f,0xea,0xbd,0xb3,0xff,0xdc,0xb7,0xf8,0xde,0xd3,0xff,0xf1, -0xe6,0xff,0xfb,0xf1,0xff,0xfa,0xf7,0xfb,0xf5,0xff,0xfe,0xf7,0xff,0xff,0xf6, -0xff,0xfb,0xf3,0xff,0xff,0xfc,0xff,0xff,0xff,0xfe,0xfd,0xff,0xf7,0xf9,0xf9, -0xf8,0xff,0xfe,0xef,0xff,0xfb,0xca,0xf3,0xde,0x82,0xc1,0xa1,0x68,0xbd,0x91, -0x5d,0xc2,0x8e,0x5a,0xc8,0x8e,0x54,0xc2,0x88,0x5c,0xc2,0x8b,0x5f,0xbb,0x8a, -0x75,0xc4,0x99,0xc0,0xf9,0xd8,0xe9,0xff,0xf0,0xf7,0xff,0xf6,0xfb,0xff,0xfa, -0xfe,0xfe,0xfe,0xff,0xfe,0xff,0xfb,0xfe,0xff,0xf1,0xfe,0xfc,0xe2,0xff,0xf5, -0xd2,0xff,0xeb,0x74,0xb7,0x97,0x60,0xb5,0x89,0x6f,0xd2,0xa0,0x54,0xc0,0x8b, -0x4d,0xbf,0x89,0x59,0xd0,0x99,0x50,0xbe,0x8a,0x64,0xbd,0x95,0x90,0xd3,0xb3, -0xce,0xf8,0xdf,0xf1,0xff,0xf5,0xfb,0xff,0xf9,0xfa,0xfd,0xfb,0xf8,0xff,0xff, -0xf4,0xff,0xff,0xf1,0xfb,0xff,0xf6,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfb,0xfe, -0xff,0xfd,0xfe,0xff,0xff,0xfb,0xf6,0xff,0xf9,0xe5,0xff,0xf2,0x9e,0xdb,0xb7, -0x77,0xc7,0x98,0x64,0xbd,0x8b,0x5d,0xc2,0x8b,0x51,0xc2,0x88,0x4d,0xc5,0x8a, -0x52,0xc7,0x90,0x5a,0xc0,0x91,0x68,0xb4,0x92,0xb1,0xe5,0xcd,0xe5,0xff,0xf2, -0xe9,0xff,0xf2,0xe1,0xff,0xf2,0xa6,0xda,0xc3,0x6e,0xba,0x9b,0x60,0xbd,0x96, -0x57,0xbf,0x8a,0x5d,0xcb,0x91,0x58,0xc8,0x8e,0x52,0xc1,0x89,0x56,0xc5,0x8f, -0x5a,0xc4,0x8f,0x5e,0xbf,0x8d,0x6d,0xc0,0x93,0x82,0xc6,0x9d,0x9d,0xd3,0xae, -0xbe,0xe9,0xc8,0xdd,0xfc,0xdf,0xec,0xff,0xed,0xf2,0xff,0xef,0xef,0xff,0xed, -0xef,0xff,0xeb,0xf9,0xff,0xf5,0xfa,0xfe,0xf3,0xfc,0xfc,0xf6,0xff,0xfe,0xfa, -0xff,0xff,0xfe,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfb,0xfc, -0xff,0xfe,0xff,0xff,0xff,0xfe,0xfa,0xff,0xfb,0xf5,0xff,0xfa,0xf3,0xff,0xf9, -0xea,0xff,0xf4,0xd8,0xff,0xe1,0x83,0xcc,0x84,0x5a,0xaa,0x57,0x58,0x98,0x56, -0x37,0x66,0x35,0xd2,0xef,0xce,0xf8,0xff,0xf4,0xfd,0xff,0xfc,0xff,0xff,0xff, -0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xf9,0xfa,0xff,0xfb,0xff,0xfd,0xff, -0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xfb,0xfe,0xfc,0xf1,0xff,0xf3, -0xdf,0xff,0xe4,0x8f,0xbf,0x95,0x62,0x98,0x69,0xae,0xde,0xb4,0xea,0xff,0xee, -0xe8,0xfb,0xea,0xfb,0xff,0xfc,0xff,0xfe,0xff,0xfd,0xfd,0xfd,0xff,0xff,0xff, -0xff,0xff,0xff,0xfd,0xfd,0xfd,0xff,0xff,0xff,0xfc,0xfc,0xfc,0xf9,0xf9,0xf9, -0x72,0x72,0x72,0x12,0x12,0x12,0x5a,0x5a,0x5a,0x96,0x96,0x96,0x21,0x21,0x21, -0x36,0x36,0x36,0xf6,0xf6,0xf6,0xe0,0xe0,0xe0,0x10,0x0b,0x0d,0x20,0x0d,0x16, -0xf9,0xeb,0xf1,0xf9,0xff,0xfa,0xe0,0xff,0xee,0x82,0xc3,0x9c,0x66,0xc2,0x8f, -0x5d,0xcd,0x93,0x52,0xcd,0x8f,0x47,0xc8,0x8b,0x48,0xc7,0x8f,0x4e,0xc5,0x92, -0x50,0xc0,0x91,0x54,0xbb,0x8e,0x58,0xb9,0x8d,0x5c,0xb8,0x8d,0x5e,0xb6,0x8e, -0x6a,0xbe,0x9c,0x68,0xbc,0x9a,0x63,0xbb,0x93,0x60,0xbb,0x8e,0x5e,0xbd,0x8b, -0x5f,0xbe,0x8b,0x5f,0xbb,0x8a,0x60,0xb7,0x8b,0x80,0xcc,0xaa,0xa2,0xe1,0xc7, -0xcc,0xfa,0xe7,0xe6,0xff,0xf7,0xf3,0xff,0xf6,0xfa,0xfb,0xf1,0xff,0xfc,0xf4, -0xff,0xff,0xf9,0xff,0xfe,0xfd,0xff,0xff,0xff,0xfe,0xfb,0xfd,0xf6,0xf5,0xf7, -0xf8,0xfd,0xfc,0xf3,0xff,0xfc,0xd6,0xfa,0xe9,0x94,0xce,0xb1,0x6c,0xbb,0x92, -0x5f,0xc1,0x8d,0x5d,0xcb,0x91,0x56,0xc7,0x8b,0x5b,0xc4,0x8b,0x5d,0xbf,0x89, -0x6a,0xc3,0x92,0xa6,0xe9,0xc4,0xe3,0xff,0xef,0xf3,0xff,0xf7,0xf9,0xff,0xfb, -0xfb,0xfd,0xfd,0xff,0xfc,0xff,0xff,0xfe,0xff,0xf8,0xfd,0xfe,0xe9,0xfe,0xf6, -0xe3,0xff,0xf7,0x92,0xcc,0xaf,0x6b,0xb9,0x90,0x69,0xc7,0x98,0x56,0xbf,0x8c, -0x4f,0xc1,0x8b,0x55,0xcc,0x95,0x50,0xc2,0x8d,0x57,0xba,0x8c,0x76,0xc5,0x9e, -0xbd,0xf1,0xd3,0xea,0xff,0xf2,0xf4,0xff,0xf7,0xee,0xf9,0xf1,0xf3,0xff,0xfe, -0xf3,0xff,0xff,0xf3,0xff,0xff,0xf6,0xff,0xff,0xff,0xfe,0xff,0xff,0xfb,0xfd, -0xff,0xfc,0xfb,0xfc,0xff,0xfb,0xf2,0xff,0xf8,0xdf,0xff,0xf1,0x92,0xd5,0xb0, -0x71,0xc5,0x95,0x63,0xbf,0x8c,0x5d,0xc2,0x8a,0x51,0xc1,0x87,0x4e,0xc4,0x89, -0x52,0xc7,0x90,0x59,0xbf,0x90,0x68,0xb4,0x92,0xb4,0xe4,0xcc,0xef,0xff,0xf7, -0xee,0xff,0xf2,0xe4,0xff,0xf1,0x97,0xce,0xb5,0x61,0xb7,0x95,0x58,0xc1,0x96, -0x59,0xc3,0x8e,0x5a,0xc8,0x8d,0x58,0xc6,0x8c,0x59,0xc4,0x8c,0x5c,0xc4,0x8f, -0x60,0xbf,0x8d,0x75,0xc8,0x9b,0x9c,0xe0,0xb7,0xd2,0xff,0xe1,0xe2,0xff,0xe8, -0xf2,0xff,0xef,0xfa,0xff,0xf1,0xff,0xff,0xf2,0xff,0xff,0xf4,0xff,0xff,0xf3, -0xff,0xff,0xf4,0xfd,0xff,0xf7,0xfd,0xff,0xf8,0xfc,0xff,0xf6,0xff,0xff,0xf9, -0xff,0xfe,0xfa,0xff,0xfb,0xfa,0xff,0xf9,0xf9,0xff,0xfb,0xfc,0xff,0xfb,0xfc, -0xff,0xff,0xff,0xff,0xff,0xfe,0xfa,0xff,0xfd,0xf7,0xff,0xfb,0xf4,0xff,0xfb, -0xed,0xff,0xf7,0xdc,0xff,0xe4,0x89,0xd1,0x8b,0x5d,0xad,0x5a,0x59,0x99,0x57, -0x3c,0x6b,0x3a,0xca,0xe7,0xc6,0xf8,0xff,0xf4,0xfd,0xff,0xfc,0xff,0xff,0xff, -0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0xff,0xf8,0xfa,0xff,0xfb,0xff,0xfe,0xff, -0xff,0xfa,0xff,0xff,0xf9,0xff,0xff,0xfa,0xff,0xfd,0xfd,0xfd,0xf2,0xff,0xf5, -0xdc,0xff,0xe1,0xb6,0xe6,0xbc,0x66,0x9c,0x6d,0x87,0xba,0x8e,0xe1,0xff,0xe6, -0xee,0xff,0xf1,0xf5,0xfb,0xf6,0xff,0xfe,0xff,0xfb,0xfb,0xfb,0xf5,0xf5,0xf5, -0xfc,0xfc,0xfc,0xf5,0xf5,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xe4,0xe4,0xe4,0x76,0x76,0x76,0x1a,0x1a,0x1a,0x08,0x08,0x08,0x04,0x04,0x04, -0x0c,0x0c,0x0c,0xd5,0xd5,0xd5,0xe0,0xe0,0xe0,0x04,0x00,0x01,0x33,0x1f,0x2b, -0xeb,0xdc,0xe4,0xf2,0xf8,0xf3,0xe8,0xff,0xf3,0xa8,0xe5,0xc1,0x6d,0xc4,0x92, -0x60,0xcb,0x92,0x4c,0xc3,0x86,0x47,0xc3,0x87,0x4b,0xc3,0x8c,0x4f,0xbf,0x8f, -0x57,0xbe,0x91,0x6a,0xc6,0x9d,0x7e,0xd1,0xaa,0x85,0xd2,0xac,0x86,0xcb,0xaa, -0x85,0xc3,0xad,0x81,0xbc,0xa7,0x76,0xb9,0x9a,0x6d,0xb8,0x92,0x6a,0xbd,0x90, -0x6b,0xc4,0x92,0x6b,0xc9,0x93,0x6b,0xc7,0x96,0x61,0xba,0x8f,0x71,0xbe,0x9c, -0x94,0xd3,0xb9,0xc5,0xf2,0xdf,0xe8,0xff,0xf4,0xf5,0xff,0xf5,0xff,0xff,0xf5, -0xff,0xff,0xf9,0xfe,0xfc,0xfb,0xff,0xfe,0xfe,0xff,0xfe,0xff,0xfb,0xf8,0xfa, -0xf7,0xf9,0xfa,0xf4,0xff,0xfe,0xe1,0xff,0xf1,0xae,0xe3,0xc8,0x6d,0xbb,0x92, -0x5e,0xbd,0x8a,0x5f,0xca,0x91,0x58,0xc9,0x8d,0x57,0xc5,0x8a,0x5c,0xc3,0x8a, -0x62,0xbf,0x8c,0x8b,0xd5,0xab,0xde,0xff,0xef,0xef,0xff,0xf8,0xf6,0xff,0xfc, -0xf8,0xfd,0xfc,0xff,0xf9,0xfe,0xff,0xfc,0xff,0xfe,0xfd,0xff,0xf2,0xfd,0xfa, -0xea,0xff,0xf8,0xbf,0xef,0xd5,0x82,0xc7,0xa2,0x5e,0xb6,0x88,0x5c,0xc1,0x8e, -0x56,0xc6,0x90,0x4c,0xc2,0x8d,0x50,0xc6,0x91,0x4e,0xbd,0x89,0x5a,0xb8,0x89, -0x96,0xd9,0xb2,0xd5,0xff,0xe4,0xeb,0xff,0xf0,0xef,0xff,0xf3,0xf1,0xff,0xfc, -0xed,0xfe,0xfb,0xef,0xff,0xfe,0xf3,0xff,0xff,0xf7,0xfb,0xfc,0xf8,0xf8,0xf8, -0xf8,0xfc,0xf7,0xf6,0xff,0xfb,0xea,0xff,0xf6,0xd3,0xff,0xeb,0x7b,0xc8,0xa2, -0x64,0xc0,0x8f,0x60,0xbf,0x8c,0x5e,0xc5,0x8c,0x52,0xc3,0x89,0x4f,0xc5,0x8a, -0x52,0xc7,0x90,0x57,0xbd,0x8e,0x6f,0xb7,0x93,0xbb,0xe5,0xcc,0xf6,0xff,0xf5, -0xf7,0xff,0xf2,0xec,0xff,0xf4,0x9b,0xd0,0xb5,0x5f,0xb9,0x95,0x54,0xc1,0x93, -0x5a,0xc9,0x91,0x56,0xc4,0x89,0x53,0xc1,0x87,0x5c,0xc7,0x8f,0x60,0xc4,0x90, -0x60,0xbb,0x8a,0x88,0xd4,0xaa,0xca,0xff,0xe1,0xdf,0xff,0xea,0xeb,0xff,0xed, -0xf3,0xff,0xed,0xf9,0xfe,0xef,0xfb,0xfb,0xef,0xfe,0xfc,0xf2,0xff,0xff,0xf5, -0xff,0xff,0xf8,0xf4,0xff,0xf6,0xf2,0xff,0xf7,0xf3,0xff,0xf7,0xf3,0xff,0xf6, -0xf6,0xfe,0xf7,0xf9,0xff,0xfa,0xfd,0xff,0xfc,0xff,0xff,0xfe,0xfd,0xfe,0xfc, -0xff,0xff,0xfe,0xfd,0xff,0xfe,0xf9,0xfe,0xfc,0xf9,0xff,0xfd,0xf8,0xff,0xfc, -0xf4,0xff,0xfa,0xe4,0xff,0xe8,0x8f,0xd5,0x8f,0x60,0xb0,0x5d,0x5a,0x9a,0x58, -0x42,0x71,0x40,0xc4,0xe1,0xc0,0xf8,0xff,0xf4,0xfd,0xff,0xfc,0xff,0xfd,0xfd, -0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0xff,0xf8,0xfa,0xff,0xfb,0xff,0xfe,0xff, -0xff,0xfb,0xff,0xff,0xf8,0xff,0xff,0xf9,0xff,0xff,0xfd,0xff,0xf5,0xff,0xf7, -0xe1,0xff,0xe6,0xce,0xff,0xd5,0x77,0xaf,0x7e,0x68,0x9e,0x6f,0xc8,0xf0,0xcd, -0xf1,0xff,0xf4,0xf3,0xf9,0xf4,0xfd,0xfa,0xfc,0xff,0xff,0xff,0xf5,0xf5,0xf5, -0xff,0xff,0xff,0xfa,0xfa,0xfa,0xff,0xff,0xff,0xfc,0xfc,0xfc,0xf3,0xf3,0xf3, -0xff,0xff,0xff,0xfe,0xfe,0xfe,0xc3,0xc3,0xc3,0x92,0x92,0x92,0x55,0x55,0x55, -0x20,0x20,0x20,0x81,0x81,0x81,0xff,0xff,0xff,0xeb,0xe6,0xe8,0xd5,0xc3,0xd0, -0xff,0xfb,0xff,0xfb,0xff,0xfe,0xea,0xff,0xf5,0xc8,0xff,0xdf,0x76,0xc7,0x98, -0x55,0xbc,0x83,0x50,0xc1,0x87,0x54,0xc9,0x90,0x55,0xca,0x93,0x58,0xc2,0x93, -0x64,0xc2,0x99,0x88,0xd8,0xb3,0xb3,0xf9,0xd5,0xcb,0xff,0xe6,0xd2,0xff,0xea, -0xdf,0xff,0xf9,0xdc,0xff,0xf7,0xcf,0xfe,0xe8,0xb4,0xef,0xd0,0x8e,0xd6,0xab, -0x6d,0xc0,0x8c,0x5d,0xba,0x83,0x5c,0xbe,0x88,0x64,0xc7,0x95,0x5a,0xb4,0x89, -0x65,0xb1,0x91,0x93,0xd0,0xb6,0xcd,0xf5,0xe3,0xef,0xff,0xf8,0xfa,0xff,0xf8, -0xfd,0xff,0xf9,0xff,0xff,0xfe,0xff,0xfe,0xfe,0xff,0xfd,0xff,0xff,0xfe,0xff, -0xfa,0xf9,0xfb,0xf8,0xff,0xfe,0xe9,0xff,0xf8,0xc7,0xf9,0xe1,0x76,0xbf,0x99, -0x5e,0xba,0x89,0x5c,0xc7,0x8e,0x54,0xc7,0x88,0x52,0xc3,0x87,0x59,0xc5,0x8a, -0x5b,0xbd,0x87,0x73,0xc4,0x97,0xd0,0xff,0xe5,0xe9,0xff,0xf6,0xf3,0xff,0xfb, -0xf9,0xfe,0xfd,0xfd,0xf7,0xfc,0xff,0xf9,0xff,0xff,0xfd,0xff,0xfc,0xff,0xfd, -0xed,0xff,0xf4,0xe2,0xff,0xf1,0xa1,0xdf,0xbb,0x64,0xb7,0x8a,0x5e,0xc1,0x8f, -0x58,0xc8,0x92,0x49,0xbf,0x8a,0x4e,0xc8,0x92,0x51,0xc9,0x92,0x4e,0xba,0x85, -0x73,0xc0,0x94,0xac,0xe2,0xbf,0xde,0xfe,0xe6,0xf1,0xff,0xf7,0xef,0xff,0xfb, -0xe8,0xfc,0xf7,0xed,0xff,0xfd,0xf2,0xff,0xfe,0xf8,0xfe,0xfd,0xf7,0xfc,0xfa, -0xfa,0xff,0xfb,0xf1,0xff,0xf9,0xe0,0xff,0xf1,0xbf,0xf9,0xdd,0x69,0xbf,0x95, -0x56,0xbd,0x8a,0x5a,0xc2,0x8d,0x5c,0xc7,0x8e,0x51,0xc6,0x89,0x4e,0xc6,0x8b, -0x52,0xc7,0x90,0x58,0xbc,0x8c,0x7c,0xc0,0x9d,0xc6,0xed,0xd4,0xfd,0xff,0xf4, -0xfe,0xff,0xf2,0xf2,0xff,0xf3,0xac,0xdf,0xc4,0x64,0xbe,0x9a,0x4d,0xbf,0x90, -0x57,0xcc,0x93,0x50,0xc5,0x88,0x4d,0xc1,0x86,0x59,0xc8,0x90,0x5e,0xc5,0x92, -0x5f,0xbb,0x8c,0x8a,0xd6,0xad,0xcd,0xff,0xe6,0xd9,0xff,0xe7,0xe9,0xff,0xee, -0xf6,0xff,0xf5,0xfb,0xff,0xf7,0xff,0xff,0xf9,0xff,0xff,0xfb,0xfd,0xff,0xfc, -0xf4,0xff,0xf9,0xe6,0xff,0xf2,0xe8,0xff,0xf7,0xe8,0xff,0xf5,0xe0,0xfa,0xec, -0xe3,0xf9,0xed,0xf3,0xff,0xfb,0xf6,0xff,0xfb,0xf8,0xff,0xfc,0xf9,0xfe,0xfc, -0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xf9,0xfe,0xfc,0xfa,0xff,0xfd,0xfb,0xff,0xfe, -0xf9,0xff,0xfb,0xe8,0xff,0xe9,0x97,0xda,0x95,0x63,0xb3,0x60,0x5b,0x9b,0x59, -0x46,0x75,0x44,0xbd,0xda,0xb9,0xf6,0xff,0xf2,0xfd,0xff,0xfc,0xfe,0xfc,0xfc, -0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf4,0xff,0xf7,0xfa,0xff,0xfb,0xff,0xfe,0xff, -0xff,0xfa,0xff,0xff,0xf8,0xff,0xff,0xf8,0xff,0xff,0xfc,0xff,0xf5,0xff,0xf7, -0xe7,0xff,0xec,0xd7,0xff,0xde,0x96,0xd1,0x9e,0x65,0x9d,0x6c,0x9f,0xca,0xa5, -0xea,0xff,0xed,0xf8,0xfe,0xf9,0xfb,0xf8,0xfa,0xff,0xff,0xff,0xfe,0xfe,0xfe, -0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xfa,0xfa,0xfd,0xfd,0xfd,0xef,0xef,0xef, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf4,0xf4,0xf4, -0xfa,0xfa,0xfa,0xf3,0xf3,0xf3,0xff,0xff,0xff,0xff,0xfc,0xfe,0xff,0xf9,0xff, -0xff,0xfb,0xff,0xf1,0xf8,0xf5,0xe1,0xff,0xec,0xc8,0xff,0xdd,0x8e,0xde,0xaf, -0x59,0xbc,0x84,0x60,0xce,0x94,0x52,0xc3,0x8a,0x57,0xc3,0x8f,0x59,0xba,0x8e, -0x63,0xb6,0x8f,0x89,0xcd,0xaa,0xbf,0xf5,0xd7,0xe1,0xff,0xf0,0xea,0xff,0xf4, -0xea,0xfb,0xf8,0xed,0xfd,0xfc,0xea,0xff,0xf9,0xdf,0xff,0xef,0xb3,0xf2,0xc8, -0x81,0xcf,0x9a,0x61,0xbf,0x86,0x5b,0xc1,0x87,0x61,0xcc,0x94,0x59,0xbf,0x8f, -0x58,0xb1,0x8a,0x6c,0xb6,0x98,0xa3,0xd8,0xc4,0xda,0xfe,0xee,0xf1,0xff,0xf9, -0xf4,0xfc,0xf5,0xfd,0xff,0xfe,0xfd,0xfb,0xfb,0xff,0xfb,0xfe,0xff,0xfd,0xff, -0xfe,0xfb,0xfd,0xf8,0xff,0xfc,0xec,0xff,0xf9,0xd6,0xff,0xee,0x85,0xcb,0xa6, -0x62,0xbe,0x8d,0x5a,0xc5,0x8c,0x50,0xc3,0x84,0x51,0xc3,0x84,0x5e,0xca,0x8f, -0x5b,0xc2,0x89,0x6a,0xbe,0x8e,0xba,0xf3,0xd4,0xdd,0xff,0xee,0xef,0xff,0xfb, -0xfa,0xff,0xfe,0xfe,0xf7,0xfc,0xff,0xf9,0xff,0xff,0xfc,0xff,0xff,0xff,0xfe, -0xf3,0xff,0xf5,0xe8,0xff,0xf2,0xbe,0xf7,0xd6,0x80,0xcf,0xa4,0x61,0xc1,0x92, -0x56,0xc4,0x90,0x4d,0xc5,0x8f,0x48,0xc7,0x8f,0x49,0xca,0x8f,0x53,0xc8,0x8f, -0x67,0xbd,0x8d,0x86,0xc4,0x9c,0xbb,0xe3,0xc7,0xe3,0xfe,0xea,0xec,0xff,0xf7, -0xed,0xff,0xfb,0xec,0xff,0xfd,0xf1,0xff,0xfe,0xf7,0xff,0xfd,0xf8,0xff,0xfa, -0xf4,0xff,0xf9,0xeb,0xff,0xf6,0xc8,0xf0,0xde,0x9b,0xdb,0xbe,0x5d,0xbe,0x92, -0x4e,0xc0,0x8b,0x56,0xc5,0x8d,0x58,0xc9,0x8f,0x4d,0xc6,0x89,0x4e,0xc8,0x8c, -0x54,0xc9,0x90,0x5a,0xbd,0x8d,0x94,0xd4,0xb1,0xdc,0xfc,0xe3,0xff,0xff,0xf0, -0xff,0xff,0xf3,0xf7,0xff,0xf3,0xc6,0xf3,0xd8,0x6f,0xc8,0xa1,0x4d,0xc0,0x8f, -0x4a,0xc8,0x8d,0x49,0xcb,0x8c,0x4a,0xc6,0x8a,0x4e,0xc6,0x8c,0x56,0xc5,0x91, -0x5a,0xbd,0x8f,0x74,0xc7,0xa0,0x9f,0xe3,0xc0,0xdb,0xff,0xf1,0xe2,0xff,0xf2, -0xe9,0xff,0xf3,0xe9,0xfd,0xf1,0xe8,0xfa,0xf3,0xe7,0xfb,0xf6,0xe9,0xfe,0xfb, -0xe6,0xff,0xfc,0xcd,0xfa,0xe7,0xce,0xff,0xe9,0xc2,0xf0,0xda,0xaf,0xd7,0xc5, -0xb7,0xdb,0xcb,0xda,0xf6,0xe9,0xea,0xff,0xf6,0xe4,0xf5,0xec,0xf4,0xff,0xfa, -0xf8,0xff,0xfc,0xfb,0xff,0xfe,0xf9,0xfe,0xfc,0xfc,0xff,0xfd,0xfd,0xff,0xfe, -0xfe,0xff,0xfd,0xed,0xff,0xeb,0x9e,0xe1,0x9c,0x66,0xb6,0x63,0x5a,0x9a,0x58, -0x47,0x76,0x45,0xb5,0xd2,0xb1,0xf4,0xff,0xf0,0xfd,0xff,0xfc,0xff,0xfe,0xfe, -0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xfe, -0xfb,0xff,0xfe,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xf8,0xfb,0xff,0xfb,0xff,0xfe,0xff, -0xff,0xfb,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xfc,0xff,0xf7,0xff,0xfa, -0xec,0xff,0xf1,0xda,0xff,0xe1,0xb9,0xee,0xc2,0x75,0xa8,0x7c,0x7c,0xa7,0x82, -0xd2,0xf1,0xd4,0xf4,0xff,0xf5,0xfa,0xff,0xf9,0xfd,0xff,0xfe,0xfa,0xfc,0xfc, -0xf5,0xf7,0xf7,0xff,0xff,0xff,0xef,0xef,0xef,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xf9,0xf8,0xfa,0xf5,0xf4,0xf6,0xff,0xff,0xff,0xf8,0xf8,0xf8,0xe2,0xe4,0xe4, -0xc6,0xc9,0xc7,0xab,0xae,0xac,0xa7,0xac,0xaa,0xd1,0xd1,0xd1,0xf9,0xee,0xf8, -0xf7,0xef,0xf6,0xfa,0xff,0xfe,0xed,0xff,0xf7,0xd4,0xff,0xe5,0xb8,0xfc,0xd3, -0x63,0xba,0x88,0x5b,0xc0,0x89,0x55,0xc2,0x8a,0x5c,0xc8,0x94,0x5e,0xc0,0x92, -0x60,0xb6,0x8c,0x80,0xc5,0xa0,0xb4,0xea,0xc7,0xdc,0xff,0xe3,0xea,0xff,0xed, -0xf8,0xff,0xfe,0xf1,0xfb,0xfb,0xec,0xff,0xf6,0xe4,0xff,0xf2,0xc6,0xff,0xd8, -0x90,0xdd,0xaa,0x67,0xc6,0x8d,0x59,0xc6,0x88,0x4c,0xbd,0x83,0x5c,0xcc,0x96, -0x60,0xc5,0x98,0x5d,0xb1,0x8e,0x82,0xc1,0xa7,0xc2,0xef,0xdc,0xe9,0xff,0xf8, -0xed,0xfc,0xf4,0xfd,0xff,0xfc,0xfa,0xf6,0xf5,0xfa,0xf5,0xf6,0xff,0xff,0xff, -0xfa,0xfd,0xfb,0xef,0xfe,0xf6,0xe6,0xff,0xf5,0xd8,0xff,0xf0,0x91,0xd8,0xb0, -0x6b,0xc4,0x92,0x61,0xc6,0x8e,0x55,0xc2,0x84,0x55,0xc2,0x84,0x65,0xd0,0x92, -0x62,0xc8,0x8e,0x6b,0xc0,0x8e,0xae,0xe6,0xc3,0xd4,0xfb,0xe2,0xea,0xff,0xf5, -0xef,0xff,0xf8,0xef,0xfd,0xf7,0xf5,0xff,0xf9,0xfa,0xff,0xfc,0xf8,0xff,0xf9, -0xf3,0xff,0xf7,0xe8,0xff,0xf2,0xd5,0xff,0xe8,0xa3,0xe6,0xc1,0x6d,0xbf,0x95, -0x5b,0xbc,0x90,0x5b,0xc7,0x99,0x4c,0xc2,0x8f,0x3f,0xbc,0x84,0x5c,0xd1,0x98, -0x67,0xc3,0x92,0x68,0xb0,0x86,0x89,0xc1,0x9e,0xaf,0xdf,0xc3,0xcb,0xf7,0xe0, -0xdf,0xff,0xf7,0xda,0xff,0xf3,0xe0,0xff,0xf5,0xe1,0xff,0xf3,0xe1,0xff,0xf0, -0xdd,0xff,0xee,0xcb,0xf9,0xe2,0x9f,0xd9,0xbd,0x6d,0xb9,0x97,0x5a,0xc2,0x93, -0x4e,0xc3,0x8c,0x58,0xc9,0x90,0x5a,0xc9,0x91,0x52,0xc3,0x8a,0x56,0xc5,0x8f, -0x5f,0xc5,0x95,0x67,0xba,0x93,0xaa,0xe2,0xc5,0xec,0xff,0xf4,0xfc,0xfe,0xf2, -0xff,0xff,0xf8,0xfa,0xff,0xf7,0xdd,0xff,0xec,0x87,0xca,0xaf,0x5f,0xbc,0x95, -0x4f,0xbd,0x89,0x54,0xcc,0x92,0x54,0xc9,0x92,0x4f,0xc1,0x8c,0x55,0xc2,0x91, -0x5b,0xc1,0x92,0x60,0xb9,0x91,0x6a,0xba,0x95,0x7a,0xbf,0x9e,0x8d,0xc8,0xac, -0xa2,0xd6,0xbe,0xaf,0xe0,0xca,0xb0,0xe1,0xcd,0xaa,0xda,0xc8,0x9c,0xd0,0xbf, -0x93,0xcb,0xb8,0x7a,0xbd,0xa0,0x80,0xc4,0xa5,0x75,0xb5,0x98,0x6d,0xa4,0x8b, -0x90,0xbe,0xa8,0xd0,0xf4,0xe4,0xed,0xff,0xf9,0xf3,0xff,0xfb,0xf6,0xff,0xfa, -0xfb,0xff,0xfe,0xfd,0xff,0xfe,0xfb,0xfe,0xfc,0xfe,0xfe,0xfe,0xfd,0xff,0xfe, -0xfd,0xff,0xff,0xec,0xff,0xec,0xa4,0xe6,0xa5,0x68,0xb7,0x66,0x59,0x99,0x57, -0x45,0x76,0x42,0xad,0xcd,0xaa,0xee,0xff,0xec,0xfb,0xff,0xf9,0xff,0xff,0xfe, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfd,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xfb,0xfe,0xff,0xfd,0xff,0xfe,0xfe, -0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xfc,0xfe,0xff,0xf7,0xff,0xfb, -0xf1,0xff,0xf8,0xeb,0xff,0xf1,0xd5,0xf9,0xdb,0x77,0x9f,0x7c,0x7b,0xa6,0x81, -0xb5,0xe1,0xba,0xdd,0xff,0xe0,0xeb,0xff,0xed,0xf5,0xff,0xf7,0xfa,0xff,0xfd, -0xfa,0xff,0xfe,0xfd,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff, -0xff,0xfd,0xff,0xf8,0xf7,0xfb,0xff,0xfe,0xff,0xa7,0xa9,0xa9,0x0c,0x11,0x0f, -0x10,0x17,0x12,0x00,0x04,0x00,0x00,0x09,0x01,0x01,0x0b,0x05,0x3e,0x3f,0x43, -0xb4,0xb3,0xb7,0xfb,0xff,0xff,0xf0,0xfe,0xf3,0xe6,0xff,0xee,0xd1,0xff,0xe0, -0x82,0xc8,0x9f,0x5d,0xb6,0x85,0x5c,0xc6,0x91,0x52,0xc4,0x8e,0x58,0xc8,0x92, -0x5e,0xc5,0x92,0x6c,0xc0,0x90,0x94,0xd6,0xac,0xd0,0xff,0xd8,0xed,0xff,0xee, -0xf0,0xff,0xf5,0xea,0xfb,0xf2,0xea,0xff,0xf5,0xdf,0xff,0xf1,0xc8,0xff,0xe0, -0x8e,0xdf,0xb0,0x61,0xc6,0x8e,0x52,0xc4,0x88,0x4e,0xc7,0x8a,0x49,0xc1,0x87, -0x5a,0xc9,0x95,0x62,0xc1,0x95,0x6a,0xb4,0x92,0xa4,0xdb,0xc2,0xe4,0xff,0xf7, -0xf1,0xff,0xf9,0xf8,0xfc,0xf7,0xfd,0xf9,0xf8,0xfc,0xfd,0xf9,0xf4,0xfd,0xf3, -0xea,0xfc,0xef,0xea,0xff,0xf4,0xdf,0xff,0xf1,0xc9,0xff,0xe2,0xa3,0xeb,0xc0, -0x80,0xd3,0x9f,0x63,0xbe,0x86,0x5f,0xbf,0x83,0x63,0xc6,0x88,0x62,0xc5,0x87, -0x62,0xc3,0x85,0x6e,0xc1,0x8a,0xa3,0xd8,0xad,0xce,0xf6,0xd3,0xde,0xff,0xea, -0xd2,0xff,0xe4,0xc7,0xfd,0xdf,0xcb,0xff,0xe6,0xce,0xff,0xe5,0xc9,0xf6,0xdc, -0xd1,0xf8,0xdf,0xe6,0xff,0xf2,0xe6,0xff,0xf2,0xd4,0xff,0xe6,0xa6,0xe0,0xc4, -0x75,0xbb,0x9d,0x5d,0xb0,0x90,0x63,0xc2,0x9d,0x57,0xbf,0x90,0x59,0xc2,0x8f, -0x5f,0xc2,0x92,0x64,0xc0,0x91,0x69,0xbe,0x92,0x6f,0xc1,0x97,0x78,0xc7,0xa0, -0x7e,0xcd,0xa6,0x9b,0xe9,0xc4,0xa5,0xf2,0xcd,0xaa,0xf4,0xd0,0x9e,0xe9,0xc3, -0x86,0xd3,0xad,0x74,0xc3,0x9c,0x6d,0xbf,0x95,0x69,0xc4,0x97,0x5b,0xca,0x94, -0x4d,0xc0,0x87,0x51,0xbd,0x88,0x62,0xc7,0x94,0x68,0xc5,0x98,0x68,0xbb,0x94, -0x76,0xbc,0x9d,0x90,0xc9,0xb0,0xd9,0xff,0xf0,0xec,0xff,0xfb,0xf6,0xff,0xfc, -0xf5,0xfc,0xf9,0xf7,0xff,0xfd,0xf3,0xff,0xfe,0xcf,0xe9,0xe3,0x9b,0xc8,0xb7, -0x76,0xbe,0x9a,0x66,0xbf,0x93,0x62,0xbd,0x90,0x62,0xbf,0x92,0x62,0xc3,0x97, -0x61,0xc3,0x97,0x5b,0xbd,0x91,0x56,0xb8,0x8c,0x5a,0xbc,0x90,0x5c,0xbd,0x91, -0x5e,0xbd,0x91,0x61,0xbd,0x92,0x61,0xbd,0x92,0x62,0xbc,0x91,0x62,0xbb,0x93, -0x5f,0xbb,0x90,0x56,0xb7,0x8b,0x65,0xc1,0x96,0x6e,0xc1,0x9b,0x70,0xb5,0x94, -0x8c,0xc1,0xa6,0xcd,0xf2,0xde,0xf1,0xff,0xf8,0xf2,0xfa,0xf3,0xff,0xfd,0xfc, -0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xff,0xff,0xff,0xfe,0xff,0xfa,0xff,0xfe, -0xf7,0xff,0xff,0xea,0xff,0xf2,0xb0,0xf0,0xb4,0x66,0xb3,0x69,0x58,0x9a,0x59, -0x4f,0x85,0x50,0x8e,0xb6,0x8d,0xf1,0xff,0xf0,0xf8,0xff,0xf7,0xff,0xff,0xfb, -0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfe, -0xff,0xfe,0xfe,0xfe,0xfd,0xff,0xfc,0xfe,0xff,0xfa,0xff,0xfe,0xf7,0xff,0xfd, -0xef,0xfe,0xf6,0xf1,0xff,0xf8,0xea,0xff,0xf1,0xa7,0xc9,0xab,0x6b,0x94,0x6f, -0x9d,0xcb,0xa0,0xd7,0xff,0xd9,0xe6,0xff,0xe9,0xf2,0xff,0xf4,0xf9,0xff,0xfb, -0xfb,0xff,0xfe,0xfd,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff, -0xff,0xfd,0xff,0xff,0xfd,0xff,0xf2,0xf1,0xf5,0x27,0x29,0x2a,0x00,0x01,0x00, -0x00,0x05,0x00,0x0b,0x18,0x10,0x00,0x05,0x00,0x00,0x06,0x00,0x04,0x07,0x0c, -0x01,0x00,0x09,0x94,0x92,0x98,0xf5,0xfa,0xf9,0xee,0xfe,0xf3,0xe8,0xff,0xf5, -0x9e,0xd4,0xb7,0x74,0xc3,0x9c,0x5a,0xc0,0x91,0x49,0xbc,0x8a,0x49,0xbf,0x8c, -0x4e,0xbd,0x8b,0x5e,0xb9,0x8c,0x87,0xd1,0xa7,0xc3,0xf7,0xd2,0xe4,0xff,0xee, -0xec,0xff,0xf7,0xe3,0xff,0xf2,0xd6,0xfb,0xe7,0xc6,0xf9,0xde,0xa6,0xe9,0xc4, -0x78,0xcd,0xa1,0x5a,0xbf,0x8b,0x51,0xc2,0x89,0x4d,0xc5,0x8a,0x49,0xc1,0x87, -0x5a,0xc8,0x94,0x61,0xc0,0x94,0x6b,0xb2,0x91,0xa0,0xd5,0xba,0xdc,0xfe,0xed, -0xe6,0xfc,0xf0,0xf5,0xff,0xfb,0xe3,0xee,0xeb,0xcb,0xde,0xd5,0xbd,0xda,0xcb, -0xb6,0xdf,0xca,0xaa,0xdf,0xc4,0x9c,0xdc,0xb9,0x8f,0xdb,0xb2,0x84,0xda,0xaa, -0x6c,0xc8,0x95,0x5b,0xbc,0x84,0x5b,0xc1,0x87,0x60,0xc7,0x8d,0x5f,0xc7,0x8a, -0x5d,0xc5,0x88,0x69,0xc4,0x8c,0x6e,0xaf,0x81,0x82,0xbc,0x93,0x7f,0xc3,0x9a, -0x6e,0xbd,0x92,0x64,0xba,0x90,0x6a,0xc3,0x98,0x73,0xc3,0x9e,0x77,0xba,0x9a, -0x9e,0xcf,0xb3,0xce,0xf2,0xda,0xeb,0xff,0xf3,0xe8,0xff,0xf3,0xd8,0xfe,0xec, -0xb5,0xe6,0xd2,0x87,0xc4,0xb0,0x67,0xb2,0x96,0x68,0xc2,0x97,0x61,0xc6,0x93, -0x62,0xc5,0x93,0x5f,0xc2,0x90,0x5a,0xbd,0x8b,0x57,0xba,0x88,0x55,0xb8,0x86, -0x54,0xb7,0x85,0x59,0xba,0x88,0x5f,0xc0,0x8e,0x64,0xc5,0x93,0x64,0xc5,0x93, -0x5e,0xbf,0x8d,0x5a,0xbb,0x89,0x59,0xba,0x88,0x58,0xbd,0x89,0x57,0xc5,0x8b, -0x5a,0xca,0x90,0x65,0xcd,0x98,0x65,0xc3,0x94,0x5e,0xaf,0x88,0x6a,0xaf,0x8e, -0x9b,0xd2,0xb9,0xcc,0xf9,0xe6,0xe2,0xff,0xf7,0xec,0xff,0xfc,0xf1,0xff,0xff, -0xed,0xfa,0xf8,0xf2,0xfc,0xfc,0xf6,0xff,0xff,0xf0,0xf8,0xf8,0xd2,0xea,0xe0, -0x93,0xc6,0xaa,0x7d,0xc2,0x9d,0x6f,0xb8,0x92,0x65,0xb4,0x8b,0x62,0xb8,0x8e, -0x64,0xc1,0x94,0x63,0xc6,0x98,0x5e,0xc9,0x98,0x55,0xc2,0x91,0x54,0xc3,0x8f, -0x54,0xc3,0x8f,0x55,0xc3,0x8f,0x57,0xc3,0x8e,0x57,0xc3,0x8e,0x59,0xc3,0x8e, -0x59,0xc3,0x8e,0x59,0xc5,0x91,0x61,0xc7,0x97,0x66,0xc1,0x94,0x64,0xaf,0x89, -0x7c,0xb5,0x96,0xb9,0xe1,0xc8,0xec,0xff,0xf2,0xf4,0xfd,0xf3,0xff,0xfe,0xfa, -0xff,0xfe,0xfd,0xff,0xfd,0xfe,0xff,0xff,0xff,0xfb,0xff,0xff,0xf7,0xff,0xfe, -0xf2,0xff,0xfe,0xe6,0xff,0xf2,0xb2,0xf2,0xb7,0x68,0xb4,0x6c,0x5f,0xa0,0x62, -0x4d,0x85,0x50,0x7d,0xa7,0x7e,0xef,0xff,0xee,0xf8,0xff,0xf5,0xfb,0xff,0xf7, -0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff, -0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfe, -0xff,0xfe,0xfe,0xfe,0xfd,0xff,0xfc,0xfe,0xff,0xfa,0xff,0xfe,0xf9,0xff,0xfd, -0xf2,0xfe,0xf8,0xf2,0xff,0xf7,0xef,0xff,0xf4,0xd5,0xf6,0xdb,0x69,0x91,0x6e, -0x83,0xb1,0x87,0xcd,0xfe,0xd0,0xe3,0xff,0xe6,0xf3,0xff,0xf5,0xfa,0xff,0xfc, -0xfb,0xff,0xfe,0xfd,0xff,0xff,0xff,0xfe,0xff,0xfe,0xfd,0xff,0xff,0xfc,0xff, -0xff,0xfc,0xff,0xff,0xfd,0xff,0xdc,0xd8,0xdd,0x07,0x06,0x08,0x05,0x07,0x07, -0x8c,0x91,0x8f,0xab,0xb3,0xac,0x00,0x04,0x00,0x90,0x96,0x95,0x9a,0x95,0xa4, -0x49,0x40,0x54,0x23,0x19,0x2a,0xbf,0xb9,0xc4,0xfa,0xff,0xff,0xe7,0xfd,0xf8, -0xb3,0xde,0xcf,0x73,0xb7,0x9e,0x69,0xc4,0xa3,0x56,0xc0,0x9b,0x53,0xc2,0x9c, -0x55,0xbf,0x9a,0x5d,0xb8,0x97,0x79,0xc5,0xa6,0xa0,0xda,0xc1,0xb4,0xe3,0xcd, -0xb0,0xd9,0xca,0xa9,0xd2,0xc3,0x9b,0xcc,0xb8,0x8c,0xc7,0xab,0x79,0xc0,0x9f, -0x68,0xbc,0x92,0x5e,0xbe,0x8f,0x5c,0xc5,0x92,0x5a,0xc8,0x94,0x56,0xc1,0x90, -0x61,0xc2,0x96,0x6a,0xba,0x95,0x76,0xb3,0x97,0xab,0xd5,0xc3,0xe3,0xfb,0xef, -0xe7,0xfc,0xf4,0xdf,0xfd,0xf8,0xb9,0xe2,0xdb,0x8b,0xb9,0xad,0x79,0xb0,0x9f, -0x80,0xc1,0xab,0x71,0xbe,0xa2,0x5e,0xb5,0x93,0x61,0xc2,0x9a,0x5d,0xc9,0x9b, -0x4f,0xc0,0x8e,0x47,0xbd,0x88,0x4d,0xc5,0x8e,0x50,0xcb,0x93,0x4d,0xc8,0x8e, -0x4a,0xc5,0x8b,0x53,0xc5,0x8f,0x66,0xc6,0x97,0x69,0xc4,0x97,0x5d,0xbf,0x93, -0x50,0xbb,0x90,0x4f,0xbd,0x93,0x58,0xc2,0x99,0x62,0xc0,0x9d,0x6e,0xba,0x9b, -0x89,0xc0,0xa7,0xc9,0xee,0xda,0xed,0xff,0xf7,0xef,0xff,0xf5,0xed,0xff,0xf8, -0xe2,0xff,0xf4,0xbc,0xe5,0xd6,0x8f,0xcc,0xb2,0x65,0xba,0x8d,0x59,0xbe,0x86, -0x5c,0xbf,0x87,0x5d,0xc2,0x8a,0x62,0xc7,0x8f,0x67,0xcc,0x94,0x6a,0xcf,0x97, -0x6b,0xd0,0x98,0x5e,0xc3,0x8b,0x5d,0xc2,0x8a,0x5d,0xc2,0x8a,0x60,0xc5,0x8d, -0x63,0xc8,0x90,0x65,0xca,0x92,0x63,0xc8,0x90,0x60,0xc7,0x8e,0x57,0xc1,0x86, -0x59,0xc2,0x89,0x5d,0xbf,0x89,0x61,0xbc,0x8b,0x70,0xbe,0x95,0x91,0xd3,0xb0, -0xba,0xf1,0xd6,0xdd,0xff,0xf3,0xe2,0xff,0xf6,0xea,0xff,0xf9,0xef,0xff,0xfc, -0xef,0xff,0xfa,0xf1,0xff,0xfa,0xf3,0xff,0xfc,0xf3,0xff,0xfc,0xec,0xff,0xf8, -0xc3,0xf3,0xd6,0xaa,0xe9,0xc2,0x90,0xd3,0xac,0x7b,0xc3,0x99,0x6c,0xbb,0x90, -0x63,0xb8,0x8c,0x5d,0xb8,0x8b,0x59,0xb9,0x8a,0x5e,0xc1,0x91,0x5c,0xc1,0x8e, -0x5b,0xc0,0x8d,0x5a,0xbf,0x8b,0x5b,0xbf,0x8b,0x5c,0xc0,0x8c,0x5f,0xc1,0x8b, -0x60,0xc2,0x8c,0x5c,0xc1,0x8d,0x5f,0xc0,0x8e,0x67,0xbf,0x91,0x6d,0xb6,0x8e, -0x7f,0xbb,0x99,0xb4,0xdf,0xc4,0xe6,0xff,0xee,0xf4,0xff,0xf7,0xf8,0xff,0xf6, -0xfc,0xff,0xf8,0xfc,0xff,0xfa,0xfb,0xff,0xfb,0xf6,0xff,0xfb,0xf2,0xff,0xfa, -0xf0,0xff,0xfa,0xe6,0xff,0xef,0xb9,0xf8,0xc0,0x6e,0xb5,0x72,0x68,0xa8,0x6c, -0x50,0x85,0x53,0x6e,0x96,0x6d,0xef,0xff,0xee,0xf6,0xff,0xf3,0xfb,0xff,0xf7, -0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff, -0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfe, -0xff,0xfe,0xfe,0xfe,0xfd,0xff,0xfc,0xfe,0xff,0xfc,0xfe,0xfe,0xf9,0xff,0xfd, -0xf6,0xff,0xfc,0xef,0xff,0xf5,0xe9,0xff,0xef,0xe9,0xff,0xee,0x8c,0xb1,0x8f, -0x72,0x9e,0x77,0xb7,0xe5,0xba,0xe0,0xff,0xe2,0xf4,0xff,0xf7,0xfb,0xff,0xfc, -0xfd,0xff,0xfe,0xfc,0xff,0xfd,0xfe,0xfe,0xfe,0xff,0xfd,0xff,0xff,0xfc,0xff, -0xff,0xfb,0xff,0xea,0xe4,0xe9,0xfc,0xf6,0xfb,0x27,0x24,0x26,0x03,0x03,0x03, -0xfc,0xff,0xfd,0xfa,0xff,0xfb,0x31,0x38,0x33,0x4a,0x4e,0x4f,0xfd,0xfa,0xff, -0xbf,0xb9,0xcc,0x02,0x00,0x0a,0x3e,0x3a,0x45,0xf6,0xfb,0xfe,0xe7,0xfb,0xf6, -0xd3,0xfc,0xed,0x82,0xc2,0xac,0x5f,0xb7,0x99,0x4e,0xb6,0x93,0x4d,0xbb,0x97, -0x51,0xbd,0x99,0x52,0xb3,0x91,0x5c,0xb2,0x94,0x6c,0xb3,0x98,0x6d,0xae,0x95, -0x72,0xb0,0x9a,0x76,0xb4,0x9c,0x73,0xb5,0x98,0x6b,0xb5,0x93,0x66,0xb7,0x90, -0x65,0xbe,0x92,0x65,0xc6,0x94,0x61,0xc8,0x95,0x5d,0xc6,0x93,0x59,0xbd,0x8d, -0x60,0xb9,0x8e,0x6d,0xb7,0x93,0x88,0xbf,0xa4,0xbe,0xe3,0xcf,0xee,0xff,0xf6, -0xec,0xff,0xfa,0xdd,0xff,0xfc,0xbf,0xf5,0xe8,0x83,0xc1,0xaf,0x64,0xa9,0x94, -0x71,0xc0,0xa5,0x69,0xc2,0xa1,0x58,0xbb,0x95,0x61,0xcc,0xa1,0x50,0xc2,0x93, -0x47,0xc0,0x8d,0x45,0xc1,0x8d,0x48,0xc7,0x90,0x49,0xc8,0x91,0x44,0xc3,0x8b, -0x42,0xc1,0x8a,0x48,0xc2,0x8c,0x5a,0xc7,0x96,0x55,0xc2,0x92,0x4d,0xc0,0x8f, -0x4e,0xc4,0x94,0x4f,0xc6,0x99,0x53,0xc3,0x99,0x5d,0xbd,0x98,0x6a,0xb9,0x98, -0x81,0xb8,0x9d,0xc9,0xed,0xd7,0xf1,0xff,0xf5,0xf3,0xff,0xf2,0xf0,0xff,0xf1, -0xf0,0xff,0xf4,0xe2,0xfc,0xee,0xcd,0xf9,0xe2,0x95,0xdf,0xb5,0x7f,0xd9,0xa4, -0x6f,0xc9,0x94,0x64,0xbe,0x89,0x5f,0xb9,0x84,0x5d,0xb9,0x84,0x5d,0xb9,0x84, -0x5c,0xb8,0x83,0x6c,0xc8,0x93,0x67,0xc3,0x8e,0x63,0xbf,0x8a,0x62,0xbe,0x89, -0x64,0xc0,0x8b,0x63,0xc1,0x8b,0x61,0xbf,0x89,0x5e,0xbc,0x86,0x60,0xbd,0x8a, -0x63,0xbe,0x8d,0x6e,0xc1,0x94,0x84,0xd0,0xa7,0xaa,0xec,0xc9,0xcd,0xff,0xe8, -0xd9,0xff,0xf0,0xd6,0xfa,0xe9,0xe7,0xff,0xf6,0xea,0xff,0xf8,0xf1,0xff,0xfc, -0xf3,0xff,0xfc,0xf3,0xff,0xfc,0xf2,0xff,0xfb,0xf2,0xff,0xfa,0xef,0xff,0xf9, -0xe4,0xff,0xf2,0xdc,0xff,0xeb,0xc8,0xfa,0xda,0xb2,0xea,0xc7,0x9d,0xda,0xb8, -0x89,0xce,0xa9,0x7a,0xc3,0x9d,0x6f,0xbd,0x94,0x6e,0xc0,0x96,0x6c,0xbe,0x93, -0x6a,0xbc,0x91,0x69,0xbb,0x90,0x6b,0xbb,0x90,0x6c,0xbd,0x90,0x6f,0xbe,0x92, -0x71,0xc0,0x94,0x6b,0xbe,0x91,0x6a,0xbc,0x91,0x7a,0xc3,0x9b,0x8a,0xca,0xa6, -0x9b,0xcf,0xb1,0xbb,0xe3,0xca,0xdd,0xf9,0xe6,0xeb,0xfe,0xef,0xf6,0xff,0xf7, -0xf9,0xff,0xf8,0xf9,0xff,0xfa,0xfa,0xff,0xfb,0xf6,0xff,0xfb,0xf3,0xff,0xfa, -0xf2,0xff,0xf8,0xe8,0xff,0xef,0xc4,0xfe,0xc8,0x74,0xb8,0x77,0x71,0xac,0x72, -0x53,0x85,0x55,0x68,0x8f,0x69,0xf1,0xff,0xf0,0xf7,0xff,0xf4,0xfd,0xff,0xfb, -0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfe, -0xff,0xfe,0xfe,0xfe,0xfd,0xff,0xfc,0xfe,0xff,0xfc,0xfe,0xfe,0xf9,0xff,0xfd, -0xf8,0xff,0xfc,0xf0,0xff,0xf5,0xe8,0xfe,0xec,0xe9,0xff,0xed,0xbc,0xde,0xc0, -0x6a,0x90,0x6c,0x96,0xc2,0x9b,0xe1,0xff,0xe4,0xf3,0xff,0xf6,0xfa,0xff,0xfa, -0xfc,0xff,0xfb,0xfc,0xff,0xfd,0xfe,0xfe,0xfe,0xff,0xfd,0xff,0xff,0xfc,0xff, -0xff,0xfc,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xa1,0x9c,0x9e,0x09,0x06,0x08, -0x9d,0x9b,0x9b,0xff,0xff,0xfe,0xb4,0xb7,0xb5,0x00,0x05,0x04,0xd7,0xde,0xe1, -0xec,0xf3,0xf6,0x4d,0x52,0x53,0x04,0x0b,0x08,0xb8,0xc8,0xbd,0xec,0xff,0xf5, -0xdd,0xff,0xf2,0x91,0xd6,0xb5,0x64,0xbd,0x95,0x51,0xbd,0x8f,0x52,0xc6,0x97, -0x57,0xcd,0x9d,0x57,0xc7,0x98,0x5e,0xc4,0x9a,0x67,0xc3,0x9a,0x60,0xb7,0x91, -0x65,0xbe,0x97,0x6b,0xc4,0x9d,0x6b,0xc5,0x9a,0x65,0xc0,0x93,0x61,0xc0,0x8e, -0x5f,0xc4,0x8d,0x5e,0xc5,0x8c,0x59,0xc2,0x89,0x56,0xbf,0x86,0x55,0xba,0x83, -0x61,0xba,0x89,0x79,0xc2,0x9a,0xa0,0xd9,0xb8,0xd1,0xfa,0xdf,0xef,0xff,0xf5, -0xe8,0xff,0xf1,0xdc,0xff,0xf7,0xcf,0xff,0xf1,0x96,0xd5,0xbb,0x64,0xaa,0x8b, -0x67,0xb4,0x92,0x64,0xbc,0x94,0x55,0xb4,0x88,0x58,0xbe,0x8e,0x56,0xc4,0x90, -0x54,0xc4,0x8e,0x53,0xc5,0x8f,0x52,0xc7,0x90,0x51,0xc6,0x8f,0x4e,0xc3,0x8a, -0x4e,0xc3,0x8c,0x54,0xc5,0x8c,0x52,0xbe,0x89,0x4f,0xbb,0x86,0x4d,0xbf,0x89, -0x52,0xc6,0x91,0x54,0xc8,0x93,0x56,0xc1,0x90,0x63,0xbe,0x91,0x75,0xbe,0x96, -0x7e,0xb1,0x8f,0xbe,0xdd,0xc0,0xf0,0xff,0xe8,0xfd,0xff,0xf0,0xfd,0xff,0xf1, -0xf7,0xff,0xee,0xf1,0xff,0xed,0xec,0xff,0xf1,0xda,0xff,0xed,0xc1,0xff,0xdd, -0xac,0xef,0xc8,0x98,0xdb,0xb4,0x8a,0xcd,0xa6,0x7e,0xc4,0x9c,0x77,0xbd,0x95, -0x73,0xb9,0x91,0x74,0xbb,0x93,0x74,0xbb,0x93,0x71,0xba,0x92,0x71,0xba,0x92, -0x73,0xbc,0x94,0x73,0xbf,0x96,0x77,0xc3,0x9a,0x7b,0xc4,0x9c,0x87,0xcc,0xa7, -0x9f,0xde,0xbe,0xb6,0xf0,0xd3,0xc6,0xfb,0xe0,0xd8,0xff,0xee,0xe4,0xff,0xf8, -0xea,0xff,0xf9,0xea,0xff,0xf7,0xf3,0xff,0xfe,0xf2,0xfd,0xfb,0xf5,0xfd,0xfc, -0xfa,0xff,0xff,0xfa,0xff,0xff,0xf6,0xfe,0xfd,0xf4,0xfa,0xf9,0xf0,0xfc,0xf6, -0xf3,0xff,0xf8,0xee,0xff,0xf4,0xeb,0xff,0xf3,0xe6,0xff,0xf0,0xdc,0xff,0xed, -0xd2,0xfc,0xe5,0xc6,0xf4,0xdd,0xbd,0xf0,0xd5,0xb2,0xe7,0xcc,0xae,0xe5,0xca, -0xac,0xe3,0xc8,0xab,0xe3,0xc6,0xad,0xe3,0xc6,0xb0,0xe3,0xc7,0xb2,0xe5,0xc9, -0xb4,0xe8,0xca,0xc6,0xff,0xe0,0xbf,0xf7,0xda,0xca,0xfd,0xe2,0xdb,0xff,0xf0, -0xe2,0xff,0xf3,0xea,0xff,0xf8,0xf1,0xff,0xf9,0xf4,0xff,0xfb,0xf6,0xff,0xfa, -0xf9,0xff,0xfd,0xfa,0xff,0xfd,0xfb,0xff,0xfe,0xfb,0xff,0xfe,0xf9,0xff,0xfd, -0xf7,0xff,0xfb,0xed,0xff,0xf2,0xcd,0xff,0xcf,0x79,0xb7,0x7b,0x6e,0xa6,0x71, -0x56,0x85,0x57,0x78,0x9c,0x78,0xf1,0xff,0xf1,0xf6,0xff,0xf5,0xfd,0xff,0xfb, -0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfe, -0xff,0xfe,0xfe,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfc,0xfe,0xfe,0xfa,0xff,0xfd, -0xf2,0xfc,0xf6,0xf6,0xff,0xf9,0xf1,0xff,0xf5,0xe9,0xff,0xec,0xdc,0xfb,0xe0, -0x75,0x97,0x78,0x7b,0xa3,0x80,0xd5,0xf4,0xd7,0xf3,0xff,0xf4,0xf8,0xff,0xf8, -0xfb,0xff,0xfa,0xfb,0xff,0xfa,0xfe,0xff,0xfd,0xff,0xfe,0xfe,0xff,0xfd,0xff, -0xff,0xfe,0xff,0xff,0xfd,0xff,0xe4,0xdd,0xe0,0xfb,0xf6,0xf8,0x60,0x5b,0x5d, -0x15,0x13,0x13,0x4f,0x4d,0x4d,0x5e,0x5c,0x5c,0x00,0x02,0x02,0x7a,0x83,0x80, -0xf6,0xff,0xfc,0x88,0x93,0x8b,0x05,0x0f,0x03,0xa4,0xb4,0xa2,0xe9,0xff,0xeb, -0xe3,0xff,0xee,0xb2,0xef,0xc9,0x6d,0xbe,0x91,0x5b,0xba,0x88,0x56,0xbf,0x8c, -0x55,0xc3,0x8f,0x54,0xbf,0x8e,0x5b,0xc1,0x91,0x67,0xc5,0x96,0x63,0xbe,0x91, -0x5d,0xbb,0x92,0x5e,0xbe,0x95,0x61,0xbe,0x91,0x60,0xbc,0x8d,0x60,0xbb,0x8a, -0x63,0xbf,0x8c,0x66,0xc2,0x8d,0x67,0xc3,0x8e,0x6d,0xc6,0x94,0x77,0xcb,0x9b, -0x87,0xd1,0xa7,0xa4,0xe2,0xbe,0xca,0xfa,0xdd,0xe8,0xff,0xf2,0xf1,0xff,0xf5, -0xe9,0xfe,0xef,0xdd,0xff,0xec,0xdc,0xff,0xf1,0xb5,0xe5,0xcb,0x86,0xbc,0x9f, -0x7e,0xb9,0x9a,0x80,0xc2,0x9f,0x77,0xc0,0x98,0x71,0xc0,0x95,0x6b,0xbe,0x91, -0x68,0xc0,0x92,0x68,0xc0,0x92,0x69,0xc1,0x93,0x66,0xc0,0x92,0x67,0xc1,0x93, -0x6b,0xc3,0x95,0x6f,0xc4,0x97,0x77,0xcb,0x9b,0x77,0xcb,0x9b,0x73,0xce,0x9d, -0x74,0xd0,0xa1,0x74,0xd0,0xa1,0x79,0xce,0xa2,0x88,0xd1,0xa9,0x9b,0xd5,0xb2, -0xb2,0xd8,0xba,0xd2,0xe9,0xcd,0xed,0xf7,0xe0,0xff,0xff,0xef,0xff,0xff,0xf2, -0xfd,0xff,0xf0,0xf4,0xff,0xeb,0xf3,0xff,0xf2,0xe8,0xff,0xf4,0xe3,0xff,0xf4, -0xde,0xff,0xf1,0xda,0xff,0xed,0xd6,0xff,0xe9,0xd0,0xfc,0xe5,0xcc,0xf8,0xe1, -0xc7,0xf5,0xde,0xae,0xdc,0xc5,0xb0,0xe0,0xc8,0xb3,0xe3,0xcb,0xb2,0xe4,0xcc, -0xb2,0xe6,0xce,0xb6,0xea,0xd2,0xbb,0xf2,0xd9,0xc5,0xf6,0xe0,0xca,0xf4,0xe2, -0xdd,0xff,0xf2,0xe6,0xff,0xf9,0xea,0xff,0xfb,0xea,0xff,0xf9,0xf2,0xff,0xfd, -0xf6,0xff,0xff,0xfa,0xff,0xff,0xfd,0xfe,0xff,0xfd,0xfb,0xff,0xfa,0xf6,0xfc, -0xfd,0xf9,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xfe,0xfc,0xff,0xfd,0xfc,0xfe, -0xfb,0xf9,0xf8,0xfa,0xfb,0xf7,0xfb,0xff,0xfa,0xfa,0xff,0xfc,0xf4,0xff,0xfc, -0xf1,0xff,0xfc,0xed,0xff,0xfb,0xec,0xff,0xfb,0xea,0xff,0xfb,0xea,0xff,0xfb, -0xe9,0xff,0xf8,0xe8,0xff,0xf7,0xe8,0xff,0xf7,0xeb,0xff,0xf8,0xec,0xff,0xf8, -0xec,0xff,0xf8,0xea,0xff,0xf8,0xe1,0xfe,0xef,0xe5,0xff,0xf2,0xec,0xff,0xfa, -0xec,0xff,0xf9,0xf1,0xff,0xfc,0xf5,0xff,0xfe,0xef,0xf7,0xf6,0xf8,0xfd,0xfe, -0xfc,0xfe,0xff,0xfe,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff, -0xff,0xfd,0xff,0xf4,0xff,0xf6,0xd2,0xfe,0xd5,0x7f,0xb7,0x82,0x6b,0x9d,0x6d, -0x62,0x8c,0x63,0xa0,0xbf,0xa0,0xef,0xff,0xee,0xf7,0xff,0xf4,0xfd,0xff,0xfb, -0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xfe,0xfe, -0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfc,0xfe,0xfe,0xfa,0xff,0xfd, -0xf5,0xfc,0xf7,0xf8,0xff,0xf9,0xf4,0xff,0xf7,0xee,0xff,0xf1,0xe7,0xff,0xeb, -0x9f,0xbe,0xa3,0x75,0x97,0x79,0xb0,0xcd,0xb3,0xf1,0xff,0xf3,0xf7,0xfe,0xf7, -0xf9,0xfd,0xf8,0xfb,0xff,0xfa,0xfe,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xfb,0xf6,0xf8,0xff,0xfe,0xff,0xff,0xfe,0xff,0xf8,0xf3,0xf5, -0x7d,0x78,0x7a,0x04,0x00,0x01,0x17,0x12,0x14,0x08,0x08,0x08,0x33,0x3b,0x34, -0xe8,0xf1,0xe7,0x88,0x8e,0x83,0x51,0x56,0x47,0xbf,0xc5,0xb2,0xeb,0xf9,0xe1, -0xf1,0xff,0xed,0xe6,0xff,0xea,0x89,0xc1,0x98,0x77,0xbc,0x8f,0x6f,0xbf,0x90, -0x6d,0xc2,0x90,0x67,0xbb,0x8b,0x6c,0xbd,0x8e,0x75,0xc3,0x94,0x71,0xbd,0x93, -0x78,0xcb,0xa5,0x78,0xca,0xa7,0x7e,0xcb,0xa9,0x88,0xd0,0xac,0x8e,0xd3,0xae, -0x92,0xd5,0xb0,0x9b,0xdc,0xb5,0xa1,0xe2,0xbb,0xa9,0xe7,0xc3,0xb7,0xf0,0xcf, -0xc2,0xf5,0xd9,0xd2,0xfc,0xe5,0xea,0xff,0xf7,0xf3,0xff,0xf9,0xf8,0xff,0xf9, -0xf8,0xfc,0xf7,0xf9,0xff,0xf9,0xfa,0xff,0xf9,0xef,0xfd,0xf1,0xda,0xeb,0xdd, -0xd0,0xe6,0xd4,0xd3,0xee,0xda,0xd0,0xf2,0xda,0xca,0xef,0xd5,0xd5,0xfe,0xe3, -0xd4,0xff,0xe3,0xd5,0xff,0xe5,0xd5,0xff,0xe5,0xd6,0xff,0xe7,0xd8,0xff,0xe9, -0xdb,0xff,0xea,0xdc,0xff,0xe9,0xdd,0xff,0xe7,0xdf,0xff,0xe7,0xda,0xff,0xe7, -0xd3,0xff,0xe6,0xd2,0xff,0xe6,0xd7,0xff,0xeb,0xe1,0xff,0xef,0xe9,0xff,0xf1, -0xf0,0xff,0xf0,0xf9,0xff,0xf3,0xfc,0xfc,0xf0,0xfd,0xfb,0xf0,0xff,0xff,0xf8, -0xfb,0xff,0xf6,0xf4,0xfe,0xf2,0xf8,0xff,0xf9,0xf2,0xfb,0xf8,0xf5,0xfd,0xfc, -0xf6,0xff,0xff,0xf6,0xff,0xff,0xf4,0xff,0xff,0xf3,0xff,0xfe,0xf0,0xfe,0xfc, -0xed,0xfe,0xfb,0xeb,0xfe,0xfb,0xe9,0xfe,0xfb,0xe9,0xfe,0xfb,0xe8,0xff,0xfb, -0xe5,0xfe,0xfa,0xe7,0xff,0xfc,0xea,0xff,0xff,0xec,0xff,0xff,0xf3,0xff,0xff, -0xf6,0xff,0xff,0xf6,0xfd,0xff,0xf8,0xfb,0xff,0xfe,0xfc,0xff,0xff,0xfc,0xff, -0xff,0xf9,0xff,0xff,0xf5,0xff,0xff,0xf9,0xff,0xff,0xf8,0xff,0xff,0xf5,0xff, -0xff,0xf3,0xff,0xff,0xf7,0xff,0xff,0xf9,0xff,0xff,0xfa,0xff,0xff,0xf9,0xff, -0xff,0xfa,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf7,0xff,0xfe,0xf6,0xfd, -0xfc,0xf8,0xfe,0xf9,0xf9,0xff,0xf9,0xfc,0xff,0xf6,0xf9,0xfd,0xf5,0xfa,0xfd, -0xf5,0xfa,0xfd,0xf5,0xfa,0xfd,0xf5,0xfa,0xfd,0xf6,0xf9,0xfd,0xf6,0xf9,0xfd, -0xf8,0xf9,0xfd,0xfd,0xff,0xff,0xf8,0xfa,0xfb,0xfb,0xfc,0xff,0xfb,0xfe,0xff, -0xf6,0xf9,0xfe,0xfb,0xfd,0xff,0xfb,0xfd,0xff,0xfb,0xfa,0xff,0xfd,0xfa,0xff, -0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xf9,0xff, -0xff,0xf9,0xff,0xfd,0xfe,0xfa,0xde,0xff,0xdf,0x8d,0xbc,0x8e,0x6f,0x99,0x70, -0x78,0x9c,0x78,0xd4,0xef,0xd5,0xf0,0xff,0xf0,0xf7,0xff,0xf5,0xff,0xff,0xfc, -0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xfe,0xfe, -0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfc,0xfe,0xfe,0xfc,0xff,0xfd, -0xfb,0xff,0xfc,0xfa,0xff,0xfb,0xef,0xfd,0xf1,0xf3,0xff,0xf6,0xec,0xff,0xef, -0xcb,0xe8,0xcf,0x79,0x97,0x7e,0x8a,0xa4,0x8d,0xf2,0xfe,0xf2,0xf6,0xfd,0xf6, -0xf9,0xfd,0xf8,0xfa,0xfe,0xf9,0xfc,0xff,0xfb,0xfd,0xff,0xfe,0xff,0xff,0xfe, -0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xf3,0xf1,0xf1,0xf8,0xf6,0xf6, -0xff,0xff,0xff,0xea,0xe8,0xe8,0xb8,0xb5,0xb7,0x93,0x91,0x91,0x8d,0x8e,0x8c, -0xd9,0xda,0xd6,0xff,0xff,0xfb,0xff,0xff,0xf9,0xf3,0xed,0xe2,0xff,0xff,0xf5, -0xf2,0xf6,0xe3,0xf4,0xff,0xec,0xe4,0xff,0xe5,0xd8,0xfe,0xe0,0xd8,0xff,0xe6, -0xd9,0xff,0xea,0xd4,0xff,0xe6,0xd6,0xff,0xe8,0xdc,0xff,0xed,0xd6,0xff,0xeb, -0xcb,0xff,0xec,0xc8,0xff,0xec,0xd0,0xff,0xef,0xdb,0xff,0xf3,0xe0,0xff,0xf2, -0xdc,0xff,0xeb,0xde,0xfe,0xeb,0xe4,0xff,0xf3,0xe2,0xff,0xf1,0xea,0xff,0xf8, -0xec,0xff,0xfb,0xec,0xfd,0xf9,0xf4,0xfc,0xfc,0xf6,0xf7,0xfb,0xfa,0xf3,0xfa, -0xff,0xfa,0xff,0xff,0xf8,0xfe,0xff,0xf6,0xf9,0xff,0xfe,0xff,0xff,0xff,0xfe, -0xfe,0xfc,0xfb,0xfd,0xfe,0xfa,0xfb,0xff,0xfb,0xfa,0xff,0xf9,0xf5,0xff,0xf6, -0xf7,0xff,0xf8,0xf7,0xff,0xfa,0xf7,0xff,0xfa,0xf8,0xff,0xfc,0xf8,0xff,0xfc, -0xfa,0xff,0xfe,0xf8,0xfe,0xf9,0xf8,0xfe,0xf3,0xfd,0xff,0xf7,0xfa,0xff,0xf8, -0xf2,0xff,0xf6,0xf1,0xff,0xf9,0xf1,0xff,0xf9,0xf3,0xff,0xfb,0xee,0xfb,0xf3, -0xf4,0xfa,0xf5,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xfd,0xfd,0xff,0xff, -0xf9,0xff,0xfe,0xef,0xfb,0xfb,0xf6,0xff,0xff,0xfd,0xfc,0xff,0xff,0xfc,0xff, -0xff,0xfc,0xff,0xff,0xfd,0xff,0xfe,0xfa,0xff,0xfb,0xf9,0xff,0xfc,0xfc,0xff, -0xfb,0xfe,0xff,0xfa,0xfe,0xff,0xf8,0xfe,0xff,0xf7,0xfd,0xff,0xf4,0xfd,0xff, -0xf2,0xfd,0xff,0xf2,0xfe,0xff,0xf1,0xfd,0xff,0xf3,0xfc,0xff,0xf4,0xf7,0xfc, -0xf9,0xf7,0xfd,0xfe,0xf9,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff, -0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xf3,0xff,0xff,0xf9,0xff,0xff,0xfa,0xff, -0xff,0xf8,0xff,0xff,0xf8,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xfe,0xf3,0xfd, -0xff,0xf7,0xff,0xff,0xf8,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf8,0xff, -0xff,0xf8,0xff,0xff,0xf9,0xff,0xff,0xfb,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff, -0xfd,0xfd,0xff,0xfd,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff, -0xff,0xfc,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff, -0xf9,0xf7,0xfd,0xfb,0xfb,0xff,0xfb,0xfe,0xff,0xf9,0xfc,0xff,0xf9,0xfc,0xff, -0xfc,0xfc,0xff,0xfe,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfa,0xff, -0xff,0xf9,0xff,0xff,0xfe,0xfa,0xe7,0xff,0xe8,0x9a,0xc4,0x9b,0x77,0x9b,0x77, -0x8b,0xa9,0x8c,0xf3,0xff,0xf1,0xf5,0xff,0xf4,0xfb,0xff,0xf9,0xff,0xff,0xfc, -0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xff,0xff,0xff,0xfd,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfe,0xfc,0xfe,0xfe,0xfe,0xfe,0xfe, -0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff,0xfd,0xfc,0xff,0xfd, -0xfb,0xff,0xfc,0xf4,0xfc,0xf5,0xf1,0xfc,0xf2,0xf6,0xff,0xf8,0xf3,0xff,0xf7, -0xd8,0xee,0xdb,0x9c,0xb5,0xa1,0x70,0x84,0x71,0xdc,0xe7,0xdd,0xf1,0xf8,0xf1, -0xf2,0xf9,0xf2,0xf3,0xfa,0xf3,0xfb,0xff,0xfb,0xf7,0xfd,0xf8,0xef,0xf5,0xf0, -0xfb,0xff,0xfc,0xfc,0xff,0xfb,0xfc,0xff,0xfb,0xfc,0xff,0xfd,0xfc,0xff,0xfd, -0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xfe,0xfe,0xff,0xfd,0xff,0xff,0xf6,0xff, -0xff,0xf6,0xff,0xff,0xf6,0xff,0xff,0xf6,0xff,0xff,0xf6,0xff,0xff,0xf7,0xff, -0xff,0xf9,0xfe,0xff,0xfb,0xfc,0xff,0xfc,0xfc,0xff,0xfe,0xfa,0xfb,0xff,0xfa, -0xf8,0xff,0xfa,0xf8,0xff,0xfa,0xf8,0xff,0xfa,0xf8,0xff,0xfa,0xf3,0xfe,0xfb, -0xeb,0xfe,0xfb,0xec,0xfe,0xfd,0xf1,0xfd,0xfd,0xf8,0xfd,0xfe,0xfe,0xfd,0xff, -0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xfd,0xff,0xfb,0xf9,0xff,0xfc,0xf9,0xff, -0xfc,0xf8,0xff,0xff,0xf8,0xff,0xff,0xf7,0xff,0xff,0xf7,0xff,0xff,0xf6,0xff, -0xff,0xf5,0xff,0xff,0xf4,0xff,0xff,0xf5,0xff,0xff,0xf7,0xff,0xff,0xf8,0xff, -0xff,0xf8,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xfa,0xff, -0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff, -0xff,0xf8,0xff,0xff,0xf9,0xff,0xff,0xf8,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff, -0xff,0xfb,0xff,0xfc,0xfc,0xff,0xfa,0xfd,0xff,0xf9,0xfc,0xff,0xfb,0xfc,0xff, -0xfc,0xfb,0xff,0xfc,0xfa,0xff,0xfc,0xfa,0xff,0xfa,0xfa,0xff,0xf5,0xfb,0xff, -0xf2,0xfb,0xff,0xee,0xfb,0xff,0xf2,0xfc,0xff,0xfe,0xfc,0xff,0xff,0xfc,0xff, -0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xfd,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xf8,0xff,0xff,0xf6,0xff,0xff, -0xf6,0xff,0xff,0xf4,0xff,0xff,0xf4,0xff,0xff,0xf6,0xff,0xff,0xf8,0xfe,0xfd, -0xf9,0xfe,0xfd,0xfc,0xff,0xfd,0xfc,0xff,0xfd,0xfe,0xff,0xfd,0xfe,0xff,0xfd, -0xff,0xfe,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfa,0xfd,0xfe,0xfa,0xfb,0xff,0xfa, -0xfa,0xff,0xfb,0xfa,0xff,0xfd,0xf9,0xff,0xfd,0xf9,0xff,0xfd,0xfa,0xff,0xfd, -0xfc,0xfa,0xf9,0xff,0xfc,0xf8,0xfd,0xfb,0xfa,0xfc,0xfd,0xf9,0xfb,0xfe,0xfc, -0xfa,0xff,0xfd,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xf8,0xff,0xfe,0xf8,0xff,0xfe, -0xf8,0xff,0xfe,0xf8,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfa,0xff,0xfe, -0xfb,0xff,0xfe,0xfe,0xfc,0xfb,0xff,0xfd,0xfc,0xfe,0xff,0xfb,0xfa,0xff,0xfb, -0xf8,0xff,0xfc,0xf4,0xff,0xfc,0xf3,0xff,0xfc,0xf1,0xff,0xfc,0xf1,0xff,0xfc, -0xf2,0xff,0xfb,0xf1,0xff,0xf9,0xf5,0xff,0xf9,0xfa,0xff,0xfb,0xfd,0xff,0xfc, -0xff,0xff,0xfe,0xfb,0xff,0xf8,0xed,0xff,0xee,0x8a,0xab,0x89,0x90,0xae,0x91, -0xe1,0xf9,0xe1,0xf3,0xff,0xf3,0xf1,0xfd,0xf1,0xfd,0xff,0xfb,0xff,0xff,0xfe, -0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xff,0xff,0xff,0xfd,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfe,0xfc,0xfe,0xfe,0xfe,0xfe,0xfe, -0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff,0xfd,0xfe,0xff,0xfd, -0xfa,0xfe,0xf9,0xfa,0xff,0xfb,0xf7,0xff,0xf8,0xf5,0xff,0xf6,0xf4,0xff,0xf8, -0xe8,0xfb,0xec,0xbc,0xcf,0xbe,0x8f,0xa0,0x92,0xb3,0xbc,0xb2,0xf3,0xfa,0xf3, -0xfb,0xff,0xfb,0xf8,0xff,0xf9,0xf5,0xfd,0xf6,0xf8,0xff,0xf9,0xf8,0xff,0xf9, -0xf5,0xff,0xf6,0xf8,0xff,0xf9,0xf8,0xff,0xf9,0xfa,0xff,0xfb,0xfa,0xff,0xfb, -0xfa,0xff,0xfc,0xfb,0xff,0xfc,0xfa,0xff,0xfb,0xfc,0xfe,0xfe,0xff,0xfb,0xff, -0xff,0xfa,0xff,0xff,0xf9,0xff,0xff,0xf9,0xff,0xff,0xf8,0xff,0xff,0xf9,0xff, -0xff,0xf8,0xff,0xff,0xf8,0xff,0xff,0xf6,0xfd,0xff,0xf7,0xfd,0xff,0xf8,0xfe, -0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, -0xfa,0xff,0xfe,0xf8,0xff,0xfe,0xfd,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff, -0xff,0xfb,0xff,0xff,0xfa,0xfe,0xff,0xfa,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff, -0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xf7,0xff, -0xff,0xf8,0xff,0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xfe,0xfc,0xff, -0xfe,0xfc,0xff,0xfd,0xfc,0xff,0xfb,0xfc,0xff,0xfb,0xfc,0xff,0xfb,0xfc,0xff, -0xf9,0xfc,0xff,0xfb,0xfb,0xff,0xfc,0xfb,0xff,0xfc,0xfb,0xff,0xff,0xfb,0xff, -0xff,0xfa,0xff,0xff,0xfb,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xfb,0xfe,0xff,0xfa,0xff,0xff,0xf8,0xfe,0xff,0xf8,0xfe,0xff, -0xf5,0xfb,0xff,0xf3,0xfb,0xff,0xf3,0xfa,0xff,0xf2,0xfb,0xff,0xef,0xfc,0xff, -0xeb,0xfc,0xff,0xeb,0xfe,0xff,0xee,0xff,0xff,0xf6,0xff,0xfa,0xfb,0xff,0xf7, -0xfb,0xff,0xf7,0xfc,0xff,0xf8,0xfa,0xff,0xf8,0xf9,0xff,0xf8,0xfa,0xff,0xf9, -0xf8,0xff,0xf9,0xf0,0xfe,0xf3,0xee,0xfe,0xf3,0xed,0xfe,0xf3,0xec,0xff,0xf4, -0xec,0xff,0xf4,0xec,0xff,0xf4,0xeb,0xff,0xf5,0xeb,0xff,0xf4,0xf0,0xff,0xf6, -0xf2,0xff,0xf4,0xf1,0xff,0xf3,0xf1,0xff,0xf2,0xf1,0xff,0xf1,0xf0,0xff,0xee, -0xf0,0xff,0xee,0xf0,0xff,0xee,0xf0,0xff,0xee,0xf0,0xff,0xee,0xed,0xff,0xed, -0xeb,0xff,0xed,0xea,0xff,0xed,0xe7,0xff,0xec,0xe7,0xff,0xec,0xe7,0xff,0xec, -0xf3,0xff,0xf2,0xf3,0xff,0xf2,0xf2,0xff,0xf1,0xef,0xff,0xf0,0xee,0xff,0xf1, -0xea,0xff,0xef,0xe9,0xff,0xee,0xe7,0xff,0xee,0xe9,0xff,0xf1,0xe8,0xff,0xf1, -0xe9,0xff,0xf1,0xe9,0xff,0xf1,0xe9,0xff,0xf1,0xe9,0xff,0xf1,0xeb,0xff,0xf1, -0xed,0xff,0xf1,0xf4,0xff,0xf3,0xf6,0xff,0xf2,0xf0,0xff,0xf0,0xec,0xff,0xef, -0xe6,0xff,0xed,0xe1,0xff,0xe9,0xde,0xff,0xe8,0xdb,0xff,0xe6,0xd5,0xfc,0xe3, -0xdc,0xff,0xe8,0xe4,0xff,0xee,0xec,0xff,0xf2,0xee,0xff,0xf3,0xe9,0xff,0xec, -0xe5,0xf8,0xe5,0xde,0xf3,0xdd,0xc7,0xe2,0xc8,0xb0,0xcb,0xb1,0xcb,0xe3,0xcb, -0xf0,0xff,0xf0,0xef,0xfc,0xee,0xf8,0xff,0xf7,0xfd,0xff,0xfc,0xfb,0xfb,0xfb, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xff,0xff, -0xfd,0xff,0xff,0xfd,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfc,0xfe,0xfe, -0xfc,0xfe,0xfe,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xfe,0xfd,0xfe,0xff,0xfd, -0xf9,0xfa,0xf6,0xfd,0xff,0xfc,0xfb,0xff,0xfc,0xf2,0xfa,0xf3,0xf6,0xff,0xf9, -0xf6,0xff,0xf9,0xe0,0xee,0xe2,0xbc,0xca,0xbf,0x9e,0xa6,0x9f,0xe3,0xea,0xe5, -0xfa,0xff,0xfb,0xea,0xf5,0xed,0xe2,0xf0,0xe5,0xf2,0xff,0xf6,0xf4,0xff,0xf7, -0xf2,0xff,0xf6,0xed,0xff,0xf1,0xee,0xff,0xf2,0xf0,0xff,0xf3,0xf1,0xff,0xf4, -0xf2,0xff,0xf6,0xf5,0xff,0xf7,0xf6,0xff,0xf9,0xf3,0xff,0xfc,0xec,0xfe,0xfd, -0xea,0xfd,0xff,0xed,0xfe,0xff,0xf1,0xfe,0xff,0xf3,0xff,0xff,0xf7,0xff,0xff, -0xfa,0xff,0xff,0xfb,0xff,0xff,0xf9,0xfe,0xfd,0xfb,0xfe,0xfc,0xfc,0xff,0xfd, -0xfa,0xff,0xfd,0xfb,0xff,0xfe,0xfb,0xff,0xfc,0xfb,0xff,0xfe,0xf8,0xff,0xf9, -0xf1,0xff,0xf0,0xef,0xff,0xec,0xf5,0xff,0xef,0xf9,0xff,0xef,0xfd,0xff,0xf1, -0xff,0xff,0xf2,0xfd,0xff,0xf4,0xfa,0xff,0xf5,0xf2,0xff,0xf1,0xee,0xff,0xf4, -0xec,0xff,0xf4,0xea,0xff,0xf4,0xec,0xff,0xf5,0xee,0xff,0xf5,0xf1,0xff,0xf5, -0xef,0xff,0xf5,0xec,0xff,0xf7,0xea,0xff,0xf7,0xea,0xff,0xf7,0xe8,0xff,0xf5, -0xe8,0xff,0xf4,0xe7,0xff,0xf1,0xe7,0xff,0xf1,0xe7,0xff,0xf1,0xe8,0xff,0xf2, -0xe8,0xff,0xf4,0xea,0xff,0xf5,0xea,0xff,0xf7,0xea,0xff,0xf8,0xec,0xff,0xf8, -0xec,0xff,0xf9,0xeb,0xff,0xf7,0xe7,0xff,0xee,0xe7,0xff,0xec,0xe7,0xff,0xee, -0xe6,0xff,0xee,0xe5,0xff,0xed,0xe5,0xff,0xed,0xe5,0xff,0xee,0xe5,0xff,0xee, -0xea,0xff,0xf3,0xe9,0xff,0xf2,0xe9,0xff,0xf4,0xe8,0xff,0xf3,0xe7,0xff,0xf2, -0xe7,0xff,0xf3,0xe6,0xff,0xf2,0xe6,0xff,0xef,0xe7,0xff,0xeb,0xe9,0xff,0xe8, -0xe8,0xff,0xe7,0xe8,0xff,0xe7,0xe5,0xff,0xe6,0xe4,0xff,0xe6,0xe3,0xff,0xe5, -0xe1,0xff,0xe5,0xe6,0xff,0xea,0xe4,0xff,0xea,0xe4,0xff,0xea,0xe1,0xff,0xe9, -0xe0,0xff,0xe8,0xde,0xff,0xe8,0xdd,0xff,0xe7,0xdd,0xff,0xe6,0xd8,0xff,0xdf, -0xd8,0xff,0xde,0xd7,0xff,0xdd,0xd6,0xff,0xda,0xd6,0xff,0xd9,0xd4,0xff,0xd7, -0xd3,0xff,0xd4,0xd2,0xff,0xd3,0xce,0xff,0xd1,0xcd,0xfe,0xd0,0xca,0xfe,0xcf, -0xc7,0xfd,0xce,0xc6,0xfb,0xcf,0xc5,0xfa,0xce,0xc4,0xf9,0xcd,0xc4,0xf9,0xcd, -0xbd,0xf0,0xc4,0xbc,0xef,0xc3,0xbb,0xee,0xc2,0xb9,0xec,0xc0,0xb7,0xe9,0xbf, -0xb3,0xe8,0xbd,0xb2,0xe7,0xbc,0xb1,0xe6,0xbb,0xab,0xdf,0xb7,0xa9,0xde,0xb6, -0xa8,0xdc,0xb4,0xa5,0xd9,0xb1,0xa2,0xd6,0xae,0xa0,0xd4,0xac,0xa0,0xd2,0xaa, -0xa0,0xcf,0xa8,0xa1,0xca,0xa4,0xa2,0xc9,0xa3,0x9c,0xc8,0xa1,0x99,0xc7,0x9d, -0x92,0xc4,0x9a,0x8d,0xc4,0x97,0x89,0xc2,0x95,0x86,0xc2,0x92,0x82,0xbd,0x90, -0x81,0xbc,0x8f,0x80,0xb9,0x8c,0x7d,0xb2,0x87,0x7b,0xad,0x85,0x80,0xad,0x86, -0x86,0xb1,0x8c,0x90,0xb5,0x93,0xbe,0xd8,0xc0,0xdb,0xef,0xdc,0xf4,0xff,0xf5, -0xf8,0xff,0xf7,0xf1,0xfb,0xef,0xfb,0xff,0xfb,0xfd,0xff,0xfe,0xf9,0xf9,0xf9, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xff,0xff, -0xfd,0xff,0xff,0xfd,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfc,0xfe,0xfe, -0xfc,0xfe,0xfe,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd, -0xfb,0xfc,0xf8,0xff,0xff,0xfc,0xfc,0xff,0xfb,0xf5,0xfb,0xf6,0xf9,0xff,0xfb, -0xf8,0xff,0xfb,0xf4,0xff,0xf7,0xe1,0xec,0xe4,0xaa,0xb4,0xae,0xcc,0xd6,0xd0, -0xed,0xf8,0xf0,0xf6,0xff,0xf9,0xf4,0xff,0xf8,0xf1,0xff,0xf7,0xed,0xff,0xf3, -0xea,0xff,0xef,0xea,0xff,0xf1,0xea,0xff,0xf1,0xea,0xff,0xf1,0xea,0xff,0xf1, -0xec,0xff,0xf2,0xed,0xff,0xf3,0xed,0xff,0xf3,0xea,0xff,0xf5,0xe0,0xff,0xf5, -0xdc,0xff,0xf6,0xde,0xff,0xf5,0xde,0xff,0xf5,0xe0,0xff,0xf5,0xe1,0xff,0xf5, -0xe3,0xff,0xf5,0xe7,0xff,0xf5,0xe8,0xff,0xf3,0xeb,0xff,0xf3,0xea,0xff,0xf2, -0xeb,0xff,0xf1,0xe9,0xff,0xed,0xe8,0xfe,0xec,0xe7,0xfd,0xeb,0xe2,0xff,0xe6, -0xe3,0xff,0xe2,0xe3,0xff,0xde,0xe7,0xff,0xdf,0xea,0xff,0xdf,0xec,0xff,0xe2, -0xec,0xff,0xe2,0xea,0xff,0xe5,0xe7,0xff,0xe5,0xe0,0xff,0xe5,0xdc,0xff,0xe4, -0xd8,0xff,0xe4,0xd5,0xff,0xe2,0xd7,0xff,0xe2,0xd8,0xff,0xe0,0xd9,0xff,0xdf, -0xd7,0xff,0xdf,0xd4,0xff,0xe1,0xd0,0xff,0xe0,0xd0,0xff,0xe0,0xcf,0xff,0xde, -0xce,0xff,0xdb,0xcd,0xff,0xd9,0xce,0xff,0xd8,0xce,0xff,0xd8,0xc8,0xff,0xd2, -0xc8,0xfe,0xd3,0xc7,0xfb,0xd3,0xc5,0xf9,0xd1,0xc3,0xf6,0xd0,0xc2,0xf5,0xd0, -0xc0,0xf2,0xd0,0xbf,0xf2,0xcd,0xbf,0xf3,0xcb,0xbf,0xf4,0xc9,0xc0,0xf2,0xca, -0xc0,0xef,0xc8,0xc1,0xee,0xc7,0xbf,0xec,0xc5,0xbf,0xeb,0xc4,0xbf,0xea,0xc5, -0xb6,0xe1,0xbc,0xb5,0xe0,0xbb,0xb6,0xdf,0xba,0xb6,0xdc,0xb8,0xb6,0xd9,0xb7, -0xb4,0xd7,0xb5,0xb5,0xd6,0xb4,0xb4,0xd5,0xb3,0xa8,0xcf,0xa9,0xa5,0xce,0xa8, -0xa4,0xcd,0xa7,0xa2,0xcb,0xa5,0xa0,0xc9,0xa3,0x9c,0xc8,0xa1,0x9b,0xc7,0xa0, -0x9a,0xc6,0x9f,0x8d,0xba,0x93,0x8c,0xb9,0x92,0x89,0xb8,0x91,0x87,0xb6,0x8f, -0x85,0xb4,0x8d,0x81,0xb3,0x8b,0x82,0xb1,0x8a,0x7f,0xb1,0x87,0x76,0xab,0x7f, -0x75,0xac,0x7d,0x76,0xad,0x7c,0x74,0xac,0x7b,0x73,0xac,0x79,0x73,0xad,0x77, -0x72,0xac,0x75,0x70,0xad,0x75,0x6c,0xa9,0x71,0x6a,0xa9,0x71,0x69,0xa8,0x70, -0x69,0xa7,0x71,0x66,0xa7,0x70,0x66,0xa6,0x72,0x65,0xa5,0x71,0x65,0xa5,0x71, -0x65,0xa3,0x6d,0x65,0xa3,0x6d,0x66,0xa4,0x70,0x66,0xa4,0x70,0x66,0xa4,0x70, -0x66,0xa4,0x70,0x66,0xa3,0x71,0x66,0xa3,0x71,0x69,0xa6,0x74,0x69,0xa6,0x74, -0x68,0xa4,0x74,0x67,0xa3,0x73,0x66,0xa2,0x72,0x64,0xa0,0x70,0x66,0xa0,0x70, -0x67,0x9e,0x6f,0x6c,0xa0,0x71,0x6c,0xa0,0x71,0x6b,0xa1,0x72,0x6a,0xa2,0x71, -0x68,0xa3,0x71,0x67,0xa5,0x71,0x65,0xa5,0x71,0x63,0xa6,0x6f,0x65,0xa8,0x71, -0x66,0xa6,0x72,0x66,0xa4,0x70,0x68,0xa3,0x71,0x71,0xa8,0x79,0x87,0xbc,0x90, -0xa3,0xd5,0xab,0xbc,0xe6,0xc3,0xe3,0xfa,0xe4,0xf3,0xff,0xf4,0xf8,0xff,0xf8, -0xfa,0xff,0xf9,0xfb,0xff,0xfb,0xfb,0xff,0xfa,0xfb,0xfb,0xfb,0xfe,0xfe,0xfe, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff, -0xfb,0xff,0xff,0xfb,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfc,0xfe,0xfe, -0xfc,0xfe,0xfe,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd, -0xff,0xff,0xfe,0xfb,0xfc,0xfa,0xfa,0xfb,0xf9,0xfc,0xff,0xfd,0xfb,0xff,0xfe, -0xf9,0xff,0xfd,0xf6,0xfd,0xfa,0xf4,0xfd,0xfa,0xec,0xf5,0xf2,0xe2,0xec,0xe6, -0xe2,0xef,0xe7,0xe9,0xf9,0xee,0xe2,0xf6,0xe9,0xd3,0xed,0xdb,0xd4,0xf0,0xdc, -0xda,0xfa,0xe1,0xde,0xff,0xe7,0xdd,0xff,0xe5,0xdb,0xfe,0xe3,0xd7,0xfa,0xdf, -0xd4,0xf7,0xdd,0xd1,0xf4,0xda,0xd1,0xf1,0xd8,0xc9,0xf1,0xd5,0xc0,0xf3,0xd1, -0xbb,0xf4,0xce,0xb7,0xf2,0xcc,0xb2,0xef,0xc9,0xaf,0xee,0xc7,0xac,0xeb,0xc4, -0xab,0xe8,0xc2,0xae,0xe7,0xc1,0xae,0xe2,0xbd,0xaf,0xe2,0xbd,0xb2,0xe1,0xbb, -0xb1,0xe0,0xba,0xaf,0xde,0xb8,0xae,0xdd,0xb7,0xad,0xdc,0xb6,0xa8,0xdd,0xb1, -0x97,0xd2,0x98,0x96,0xd2,0x95,0x97,0xcf,0x94,0x97,0xcd,0x92,0x96,0xc8,0x92, -0x93,0xc5,0x8f,0x8d,0xc2,0x90,0x89,0xc2,0x8f,0x85,0xc5,0x91,0x80,0xc4,0x8f, -0x7a,0xc2,0x8d,0x77,0xc0,0x88,0x77,0xbc,0x83,0x75,0xb9,0x7e,0x77,0xb7,0x7c, -0x76,0xb6,0x7b,0x6e,0xb2,0x79,0x6d,0xb2,0x79,0x6d,0xb1,0x78,0x6c,0xb0,0x75, -0x6b,0xaf,0x74,0x6a,0xaf,0x72,0x6b,0xae,0x71,0x6b,0xae,0x71,0x6b,0xae,0x71, -0x6b,0xae,0x71,0x6d,0xad,0x72,0x6c,0xac,0x71,0x6b,0xaa,0x72,0x6a,0xa8,0x72, -0x6a,0xa8,0x74,0x69,0xa7,0x71,0x62,0xa3,0x6c,0x64,0xa3,0x6b,0x66,0xa3,0x6b, -0x68,0xa2,0x6b,0x6a,0xa1,0x6a,0x6c,0xa0,0x6a,0x6e,0xa0,0x6a,0x6d,0x9e,0x6a, -0x70,0xa1,0x6d,0x6f,0xa0,0x6c,0x70,0xa0,0x6c,0x71,0x9f,0x6b,0x72,0x9c,0x6c, -0x76,0x9c,0x6c,0x76,0x9a,0x6b,0x76,0x9a,0x6c,0x72,0x9d,0x72,0x6f,0x9b,0x72, -0x6f,0x9b,0x72,0x6e,0x9a,0x71,0x6d,0x99,0x70,0x6b,0x99,0x6f,0x6b,0x99,0x6f, -0x6b,0x99,0x6f,0x74,0xa2,0x78,0x74,0xa2,0x78,0x73,0xa1,0x77,0x72,0xa0,0x76, -0x72,0xa0,0x76,0x6f,0x9f,0x75,0x70,0x9e,0x74,0x6e,0x9e,0x74,0x6f,0xa1,0x77, -0x6d,0xa2,0x77,0x6f,0xa2,0x76,0x6e,0xa3,0x77,0x6e,0xa4,0x75,0x6f,0xa6,0x75, -0x6f,0xa7,0x74,0x6f,0xa9,0x73,0x6f,0xa9,0x73,0x6f,0xa8,0x75,0x6f,0xa8,0x75, -0x70,0xa8,0x77,0x70,0xa7,0x78,0x71,0xa8,0x7b,0x71,0xa8,0x7b,0x72,0xa9,0x7c, -0x7c,0xb6,0x86,0x7d,0xb8,0x86,0x7f,0xb7,0x86,0x81,0xb9,0x88,0x82,0xb9,0x8a, -0x83,0xba,0x8b,0x84,0xbb,0x8c,0x86,0xbc,0x8d,0x8b,0xc0,0x94,0x8d,0xc2,0x96, -0x8f,0xc4,0x99,0x93,0xc8,0x9d,0x97,0xcb,0xa3,0x9b,0xcf,0xa7,0x9f,0xd1,0xa9, -0xa1,0xd3,0xab,0xa2,0xd4,0xac,0xa3,0xd5,0xad,0xa5,0xd7,0xad,0xa5,0xda,0xae, -0xa7,0xdc,0xb0,0xaa,0xe0,0xb1,0xab,0xe1,0xb2,0xac,0xe2,0xb3,0xaf,0xe5,0xb6, -0xb4,0xe9,0xbd,0xbd,0xef,0xc5,0xc2,0xf4,0xcc,0xc9,0xf8,0xd2,0xd5,0xff,0xdd, -0xe2,0xff,0xec,0xea,0xff,0xf1,0xf4,0xff,0xf7,0xfa,0xff,0xf9,0xf3,0xfa,0xf3, -0xf6,0xfa,0xf4,0xfd,0xff,0xfc,0xfc,0xfd,0xfb,0xf7,0xf7,0xf7,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff, -0xfb,0xff,0xff,0xfb,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xfe,0xfa,0xff,0xfe,0xfc,0xfe,0xfe, -0xfc,0xfe,0xfe,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd, -0xff,0xff,0xfe,0xfa,0xf8,0xf7,0xfa,0xf8,0xf7,0xff,0xff,0xfe,0xfd,0xff,0xfe, -0xf4,0xf9,0xf8,0xf3,0xf8,0xf7,0xf9,0xff,0xfe,0xf4,0xfc,0xfb,0xe2,0xed,0xea, -0xd0,0xde,0xd8,0xb4,0xc5,0xba,0x90,0xa7,0x99,0x82,0x9e,0x8b,0x84,0xa6,0x8e, -0x81,0xa7,0x8b,0x74,0x9d,0x7e,0x74,0x9f,0x7e,0x74,0x9f,0x7e,0x74,0x9f,0x7e, -0x74,0x9e,0x7f,0x74,0x9e,0x7f,0x75,0x9e,0x7f,0x74,0x9f,0x7e,0x6f,0x9c,0x75, -0x6b,0x9e,0x72,0x68,0x9f,0x72,0x65,0xa0,0x74,0x61,0xa0,0x74,0x61,0xa1,0x77, -0x62,0xa1,0x77,0x64,0xa0,0x77,0x67,0x9f,0x76,0x6a,0x9e,0x76,0x6c,0x9e,0x74, -0x6f,0x9f,0x75,0x6f,0x9f,0x75,0x70,0xa0,0x76,0x6e,0xa0,0x76,0x6c,0xa2,0x73, -0x6f,0xa9,0x73,0x6f,0xa9,0x72,0x72,0xa8,0x73,0x74,0xa7,0x75,0x76,0xa6,0x76, -0x74,0xa5,0x77,0x72,0xa5,0x79,0x6f,0xa6,0x79,0x63,0xa1,0x73,0x60,0xa1,0x73, -0x5e,0xa3,0x71,0x61,0xa4,0x71,0x64,0xa5,0x6e,0x68,0xa5,0x6d,0x6d,0xa4,0x6d, -0x6b,0xa4,0x6d,0x6b,0xa6,0x73,0x69,0xa6,0x74,0x69,0xa7,0x73,0x6a,0xa5,0x72, -0x69,0xa5,0x6f,0x6b,0xa5,0x6e,0x6a,0xa4,0x6d,0x6a,0xa5,0x6b,0x73,0xad,0x76, -0x73,0xad,0x76,0x75,0xae,0x77,0x76,0xb0,0x7a,0x79,0xb1,0x7c,0x79,0xb2,0x7f, -0x7b,0xb3,0x82,0x7b,0xb3,0x82,0x89,0xc1,0x90,0x89,0xc1,0x90,0x8e,0xc2,0x92, -0x94,0xc4,0x94,0x97,0xc5,0x96,0x9b,0xc7,0x98,0x9c,0xc8,0x99,0x9d,0xc9,0x9a, -0xa8,0xd6,0xa8,0xa8,0xd6,0xa8,0xaa,0xd8,0xaa,0xad,0xd8,0xab,0xb3,0xda,0xad, -0xb6,0xda,0xae,0xbb,0xdc,0xb0,0xbb,0xdb,0xb2,0xbf,0xe3,0xbf,0xbe,0xe3,0xc1, -0xbf,0xe4,0xc4,0xc1,0xe6,0xc4,0xc2,0xe7,0xc7,0xc4,0xe9,0xc7,0xc5,0xea,0xca, -0xc6,0xeb,0xc9,0xc6,0xeb,0xcb,0xc7,0xec,0xca,0xca,0xec,0xcd,0xcc,0xef,0xcd, -0xcd,0xef,0xd0,0xcf,0xf2,0xd0,0xd0,0xf2,0xd3,0xcf,0xf4,0xd4,0xd0,0xf4,0xd6, -0xcf,0xf5,0xd9,0xd0,0xf6,0xd8,0xd1,0xf8,0xd8,0xd0,0xfa,0xd7,0xd1,0xfc,0xd7, -0xd2,0xfe,0xd7,0xd2,0xfe,0xd7,0xd2,0xfe,0xd7,0xd2,0xfe,0xd7,0xd5,0xfd,0xda, -0xd6,0xfe,0xdb,0xd8,0xfe,0xe0,0xd9,0xff,0xe1,0xda,0xff,0xe4,0xda,0xff,0xe2, -0xda,0xff,0xdf,0xd8,0xff,0xdf,0xda,0xff,0xdf,0xdb,0xff,0xe0,0xdb,0xff,0xe0, -0xdd,0xff,0xe2,0xde,0xff,0xe3,0xe0,0xff,0xe3,0xdf,0xff,0xe3,0xe0,0xff,0xe4, -0xe3,0xff,0xe7,0xe3,0xff,0xe9,0xe7,0xff,0xec,0xe7,0xff,0xee,0xea,0xff,0xef, -0xe9,0xff,0xf0,0xe1,0xff,0xeb,0xdf,0xff,0xea,0xe0,0xff,0xeb,0xe2,0xff,0xec, -0xe5,0xff,0xeb,0xe7,0xff,0xed,0xea,0xff,0xed,0xec,0xff,0xed,0xe8,0xff,0xea, -0xec,0xff,0xf0,0xed,0xff,0xf1,0xed,0xff,0xf2,0xe9,0xff,0xf1,0xe7,0xfe,0xef, -0xe5,0xfc,0xee,0xea,0xfb,0xf0,0xf2,0xfa,0xf3,0xfd,0xff,0xfc,0xfb,0xff,0xfa, -0xf7,0xf8,0xf6,0xfc,0xfd,0xfb,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff, -0xfb,0xff,0xff,0xfa,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfe,0xf9,0xff,0xfe,0xfa,0xff,0xfe, -0xfc,0xfe,0xfe,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd, -0xff,0xfe,0xfd,0xfd,0xfb,0xfa,0xfc,0xfa,0xfa,0xfd,0xfd,0xfd,0xfa,0xfc,0xfc, -0xf5,0xf9,0xfa,0xf6,0xfa,0xfb,0xf7,0xfd,0xfc,0xf8,0xff,0xff,0xf6,0xff,0xfe, -0xf4,0xff,0xfc,0xf1,0xff,0xf9,0xcf,0xe9,0xd9,0xb7,0xd6,0xc1,0xa0,0xc5,0xab, -0x81,0xab,0x8c,0x7a,0xa7,0x86,0x79,0xa9,0x85,0x7a,0xad,0x88,0x7e,0xb1,0x8c, -0x83,0xb6,0x91,0x86,0xb9,0x94,0x8b,0xba,0x99,0x94,0xbc,0x99,0xa8,0xc0,0x9e, -0xad,0xc0,0x9f,0xaa,0xc3,0xa1,0xa7,0xc6,0xa5,0xa5,0xca,0xa8,0xa4,0xcd,0xad, -0xa7,0xd0,0xb0,0xaa,0xd1,0xb1,0xb3,0xd5,0xb6,0xb5,0xd5,0xb6,0xb7,0xd6,0xb7, -0xba,0xd6,0xb8,0xbb,0xd8,0xb7,0xbc,0xd9,0xb8,0xba,0xd9,0xb8,0xba,0xda,0xbb, -0xbf,0xde,0xc1,0xc0,0xdf,0xc4,0xc5,0xdf,0xc7,0xc9,0xe0,0xca,0xce,0xe1,0xd0, -0xcf,0xe4,0xd5,0xce,0xe5,0xd6,0xcd,0xe7,0xd9,0xc7,0xe8,0xd9,0xc7,0xeb,0xda, -0xc9,0xee,0xda,0xce,0xf2,0xda,0xd8,0xf7,0xdc,0xe0,0xf9,0xdd,0xe8,0xfc,0xdf, -0xe7,0xfd,0xe1,0xe6,0xff,0xec,0xe2,0xff,0xee,0xe1,0xff,0xeb,0xe1,0xff,0xeb, -0xe3,0xff,0xea,0xe5,0xff,0xe9,0xe5,0xff,0xe7,0xe5,0xff,0xe6,0xe2,0xff,0xe4, -0xe3,0xff,0xe5,0xe5,0xff,0xe6,0xe6,0xff,0xea,0xe8,0xff,0xeb,0xe9,0xff,0xee, -0xea,0xff,0xef,0xeb,0xff,0xf1,0xe2,0xfe,0xea,0xe4,0xff,0xeb,0xe9,0xff,0xec, -0xed,0xff,0xee,0xf0,0xff,0xf0,0xf2,0xff,0xf2,0xf3,0xff,0xf4,0xf1,0xff,0xf4, -0xe1,0xfc,0xe8,0xde,0xfd,0xe8,0xdf,0xfd,0xea,0xe1,0xff,0xec,0xe5,0xff,0xee, -0xe7,0xff,0xef,0xec,0xff,0xf0,0xef,0xff,0xf1,0xe9,0xfc,0xeb,0xea,0xfd,0xec, -0xeb,0xfe,0xef,0xed,0xff,0xef,0xef,0xff,0xf2,0xf1,0xff,0xf2,0xf2,0xff,0xf5, -0xf3,0xff,0xf4,0xed,0xfe,0xf0,0xed,0xff,0xee,0xf1,0xff,0xf2,0xf2,0xff,0xf1, -0xf4,0xff,0xf5,0xf5,0xff,0xf4,0xf6,0xff,0xf7,0xf6,0xff,0xf8,0xf3,0xff,0xf9, -0xf3,0xfe,0xfb,0xf2,0xff,0xfa,0xf3,0xff,0xfa,0xf3,0xff,0xf8,0xf4,0xff,0xf8, -0xf4,0xff,0xf7,0xf4,0xff,0xf5,0xf2,0xff,0xf5,0xf2,0xff,0xf5,0xf5,0xff,0xf8, -0xf6,0xff,0xf9,0xf8,0xff,0xfc,0xf8,0xff,0xfc,0xfa,0xff,0xfe,0xf8,0xff,0xfc, -0xf6,0xff,0xf7,0xf6,0xff,0xf6,0xf8,0xff,0xf6,0xf8,0xff,0xf6,0xf7,0xff,0xf5, -0xf8,0xff,0xf6,0xf8,0xff,0xf6,0xfa,0xff,0xf6,0xfd,0xff,0xfb,0xfd,0xff,0xfb, -0xff,0xff,0xfc,0xfc,0xff,0xfb,0xfc,0xfd,0xfb,0xf8,0xfb,0xf9,0xf9,0xf9,0xf9, -0xf4,0xf9,0xf8,0xf4,0xfe,0xfe,0xf2,0xff,0xfd,0xf4,0xff,0xfd,0xf4,0xff,0xfc, -0xf6,0xff,0xfa,0xf8,0xfe,0xf9,0xfa,0xfe,0xf9,0xfc,0xfd,0xf9,0xfd,0xfb,0xfa, -0xfc,0xfa,0xf9,0xfb,0xf8,0xfa,0xfb,0xf7,0xfc,0xfd,0xf8,0xff,0xff,0xfb,0xff, -0xff,0xfa,0xff,0xff,0xfc,0xff,0xf8,0xf7,0xf9,0xfc,0xfd,0xfb,0xff,0xff,0xfe, -0xfe,0xfc,0xfc,0xfd,0xfb,0xfb,0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff, -0xfb,0xff,0xff,0xfa,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfe,0xf9,0xff,0xfe,0xfa,0xff,0xfe, -0xfa,0xff,0xfe,0xfe,0xff,0xfd,0xfe,0xff,0xfd,0xff,0xfe,0xfd,0xff,0xfe,0xfd, -0xfd,0xf9,0xf8,0xff,0xff,0xfe,0xff,0xfe,0xfe,0xf7,0xf7,0xf7,0xf7,0xf6,0xf8, -0xfd,0xff,0xff,0xfb,0xff,0xff,0xf6,0xfb,0xfc,0xf7,0xff,0xfe,0xe2,0xf0,0xec, -0xeb,0xf9,0xf3,0xf1,0xff,0xf9,0xea,0xff,0xf5,0xe5,0xff,0xf1,0xe0,0xff,0xec, -0xce,0xfb,0xda,0xce,0xfd,0xdc,0xcc,0xff,0xda,0xcd,0xff,0xdb,0xce,0xff,0xdc, -0xd0,0xff,0xde,0xd2,0xff,0xe0,0xd4,0xff,0xe2,0xe0,0xff,0xe3,0xf7,0xff,0xe5, -0xfe,0xff,0xe5,0xf8,0xff,0xe6,0xf1,0xff,0xe6,0xeb,0xff,0xe6,0xe5,0xff,0xe6, -0xe4,0xff,0xe7,0xe4,0xff,0xe7,0xee,0xff,0xed,0xf0,0xff,0xed,0xf3,0xff,0xed, -0xf2,0xff,0xec,0xf2,0xff,0xea,0xf0,0xff,0xea,0xf0,0xff,0xea,0xef,0xff,0xed, -0xf3,0xff,0xf5,0xf4,0xff,0xf8,0xf6,0xff,0xfb,0xf7,0xff,0xfb,0xf8,0xff,0xfc, -0xf5,0xfd,0xfc,0xf2,0xfc,0xfc,0xef,0xfd,0xfc,0xec,0xfe,0xfd,0xea,0xff,0xfc, -0xea,0xff,0xfb,0xed,0xff,0xf9,0xf4,0xff,0xf6,0xf9,0xff,0xf3,0xff,0xff,0xf3, -0xfd,0xff,0xf3,0xf2,0xff,0xf9,0xed,0xff,0xfa,0xed,0xff,0xf9,0xed,0xff,0xf7, -0xf1,0xff,0xf7,0xf2,0xff,0xf6,0xf3,0xff,0xf6,0xf3,0xff,0xf4,0xf4,0xff,0xf5, -0xf4,0xff,0xf5,0xf4,0xff,0xf7,0xf4,0xff,0xf7,0xf4,0xff,0xf8,0xf4,0xff,0xf8, -0xf3,0xff,0xf9,0xf2,0xff,0xf8,0xf4,0xff,0xfc,0xf6,0xff,0xfc,0xf8,0xff,0xfc, -0xfa,0xff,0xfc,0xfd,0xff,0xfc,0xfb,0xff,0xfc,0xfa,0xff,0xfc,0xf6,0xff,0xfc, -0xf1,0xff,0xfc,0xed,0xff,0xfc,0xec,0xff,0xfe,0xea,0xff,0xfe,0xec,0xff,0xfd, -0xee,0xff,0xfd,0xf0,0xff,0xfd,0xf3,0xff,0xfb,0xf6,0xff,0xfc,0xf8,0xff,0xfb, -0xf8,0xff,0xfb,0xf8,0xff,0xfb,0xfa,0xff,0xfb,0xfa,0xff,0xfb,0xfa,0xff,0xfb, -0xfa,0xff,0xfb,0xfb,0xff,0xfb,0xfb,0xff,0xfb,0xfa,0xff,0xfa,0xfa,0xff,0xfa, -0xfc,0xff,0xfa,0xfc,0xff,0xfa,0xfb,0xff,0xf9,0xfb,0xfe,0xfc,0xfc,0xfd,0xff, -0xfc,0xfc,0xff,0xfa,0xfd,0xff,0xfa,0xfe,0xff,0xf9,0xfd,0xfe,0xf9,0xfe,0xfc, -0xf9,0xfe,0xfc,0xf9,0xff,0xfa,0xfc,0xff,0xfd,0xfc,0xff,0xfd,0xfe,0xfd,0xff, -0xfe,0xfd,0xff,0xff,0xfc,0xff,0xff,0xfc,0xff,0xff,0xf9,0xff,0xff,0xfa,0xff, -0xfe,0xfb,0xfd,0xfe,0xfc,0xfb,0xff,0xfc,0xfd,0xff,0xfc,0xfd,0xff,0xfd,0xfe, -0xff,0xfd,0xfe,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff, -0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff,0xff,0xfa,0xff, -0xff,0xfa,0xff,0xff,0xfb,0xff,0xfb,0xfc,0xff,0xfd,0xfc,0xff,0xff,0xfc,0xff, -0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xfa,0xff,0xff,0xf9,0xff,0xff,0xfa,0xff, -0xff,0xf9,0xff,0xff,0xf7,0xff,0xff,0xf7,0xff,0xff,0xf6,0xff,0xff,0xf4,0xff, -0xff,0xf0,0xff,0xff,0xf1,0xff,0xff,0xfd,0xff,0xf6,0xf7,0xf5,0xf6,0xf4,0xf4, -0xff,0xff,0xff,0xff,0xfe,0xff,0xfd,0xfa,0xfc,0xfe,0xfb,0xfd,0xff,0xfd,0xff, -0xff,0xfe,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff, -0xfb,0xff,0xff,0xfa,0xff,0xfe,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xfc,0xf2,0xe4,0xf4,0xea,0xd4,0xf4,0xe6,0xc4,0xf4,0xe2,0xc4, -0xf4,0xe2,0xcc,0xf4,0xea,0xdc,0xf4,0xf2,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe2,0xcc, -0xec,0xd2,0xa4,0xec,0xd2,0xac,0xec,0xd2,0xac,0xec,0xd2,0xac,0xec,0xd2,0xac, -0xec,0xd2,0xac,0xec,0xd2,0xac,0xec,0xd2,0xa4,0xf4,0xee,0xdc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xec,0xde,0xbc,0xec,0xd2,0xac,0xec,0xd2,0xac,0xec,0xd2,0xac, -0xec,0xd2,0xac,0xec,0xd2,0xa4,0xec,0xd6,0xa4,0xf4,0xf2,0xe4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf2,0xe4,0xf4,0xde,0xbc, -0xec,0xce,0xa4,0xe4,0xc6,0x94,0xe4,0xc6,0x94,0xe4,0xc6,0x94,0xe4,0xc6,0x94, -0xf4,0xe2,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xf4,0xde,0xc4,0xec,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c, -0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xf4,0xe2,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xea,0xd4,0xe4,0xce,0x9c,0xe4,0xca,0x9c, -0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xce,0x9c,0xe4,0xca,0x9c,0xf4,0xda,0xbc, -0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec, -0xec,0xce,0xa4,0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c, -0xe4,0xca,0x9c,0xec,0xce,0xa4,0xfc,0xf6,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xee,0xe4,0xec,0xce,0xa4,0xdc,0xae,0x64, -0xcc,0x96,0x3c,0xcc,0x8a,0x24,0xc4,0x86,0x1c,0xc4,0x82,0x14,0xc4,0x7e,0x0c, -0xc4,0x82,0x0c,0xc4,0x86,0x14,0xc4,0x8e,0x24,0xcc,0x96,0x3c,0xdc,0xae,0x64, -0xec,0xce,0x9c,0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xf2,0xe4,0xec,0xde,0xbc,0xec,0xd2,0xa4, -0xe4,0xca,0x94,0xe4,0xc6,0x94,0xe4,0xc6,0x94,0xe4,0xc2,0x8c,0xec,0xda,0xbc, -0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xe6,0xcc, -0xcc,0x92,0x2c,0xcc,0x7a,0x04,0xcc,0x82,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7e,0x04,0xc4,0x82,0x04,0xc4,0x76,0x04,0xd4,0x92,0x34,0xf4,0xe2,0xcc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xfc,0xcc,0x96,0x3c,0xcc,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7e,0x04,0xcc,0x82,0x04,0xc4,0x7a,0x04,0xec,0xce,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xf2,0xe4,0xe4,0xc6,0x94,0xd4,0x9e,0x4c,0xcc,0x86,0x14,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x86,0x0c, -0xdc,0xba,0x7c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xd4,0xaa,0x5c,0xd4,0x82,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, -0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xbe,0x84,0xc4,0x7e,0x04,0xcc,0x82,0x04, -0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x82,0x04,0xc4,0x76,0x04,0xcc,0x96,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, -0xcc,0x82,0x04,0xc4,0x7e,0x0c,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xec,0xde,0xbc,0xd4,0xaa,0x54,0xc4,0x82,0x14,0xcc,0x7a,0x04,0xcc,0x7e,0x04, -0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, -0xcc,0x7a,0x04,0xc4,0x7e,0x0c,0xdc,0xa6,0x54,0xec,0xd6,0xb4,0xfc,0xfa,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xf6,0xe4, -0xec,0xce,0xa4,0xdc,0xa2,0x4c,0xc4,0x86,0x14,0xc4,0x7a,0x04,0xcc,0x7e,0x04, -0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x82,0x0c,0xcc,0x76,0x04,0xdc,0xaa,0x5c, -0xfc,0xf2,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xec,0xd6,0xac,0xcc,0x96,0x3c,0xcc,0x82,0x0c,0xcc,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x76,0x04,0xd4,0x9e,0x4c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xe4,0xc6,0x94, -0xcc,0x8e,0x2c,0xc4,0x7a,0x04,0xcc,0x82,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c, -0xdc,0xba,0x7c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xbe,0x8c,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe6,0xd4,0xd4,0xa6,0x5c, -0xc4,0x82,0x0c,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x0c,0xd4,0xa2,0x54, -0xf4,0xe6,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xec,0xca,0x9c,0xcc,0x92,0x2c, -0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x72,0x04,0xdc,0xa6,0x5c, -0xfc,0xf2,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x7a,0x04,0xc4,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xbc,0x7a,0x04, -0xd4,0xaa,0x5c,0xfc,0xfa,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xea,0xd4,0xd4,0x9e,0x4c,0xc4,0x7a,0x04, -0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c, -0xdc,0xba,0x7c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd6,0xac,0xcc,0x8a,0x24,0xcc,0x7a,0x04, -0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04, -0xc4,0x86,0x1c,0xe4,0xc6,0x94,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xea,0xdc,0xd4,0xa2,0x54,0xc4,0x7e,0x04,0xcc,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x72,0x04,0xdc,0xaa,0x5c, -0xfc,0xf6,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xea,0xdc,0xd4,0x9a,0x3c,0xc4,0x76,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04, -0xcc,0x7e,0x04,0xdc,0xb2,0x6c,0xfc,0xfe,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xec,0xda,0xbc,0xcc,0x8e,0x2c,0xcc,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c, -0xdc,0xba,0x7c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xe4,0xca,0x94,0xcc,0x86,0x14,0xc4,0x7a,0x04,0xc4,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04, -0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xc4,0x82,0x0c,0xe4,0xba,0x7c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xf4,0xe2,0xc4,0xc4,0x8e,0x2c,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x72,0x04,0xdc,0xaa,0x5c, -0xfc,0xf6,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe2,0xc4,0xcc,0x92,0x2c, -0xc4,0x76,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xcc,0x7a,0x04,0xcc,0x82,0x0c,0xdc,0xbe,0x7c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xec,0xda,0xbc,0xcc,0x8e,0x24,0xcc,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c, -0xdc,0xba,0x7c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xe4,0xce,0xa4,0xcc,0x8a,0x1c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04, -0xcc,0x7e,0x04,0xcc,0x7a,0x04,0xc4,0x7e,0x0c,0xcc,0x8e,0x24,0xcc,0x92,0x34, -0xcc,0x92,0x34,0xcc,0x8a,0x24,0xc4,0x7e,0x0c,0xc4,0x7e,0x04,0xcc,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x82,0x0c,0xe4,0xbe,0x84,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xe2,0xcc, -0xc4,0x8a,0x24,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x72,0x04,0xdc,0xaa,0x5c, -0xfc,0xf6,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xf4,0xfc,0xfe,0xfc,0xec,0xd2,0xb4, -0xcc,0x8a,0x1c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x86,0x14,0xe4,0xca,0x9c,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe6,0xd4, -0xcc,0x9a,0x3c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04, -0xcc,0x82,0x04,0xcc,0x82,0x04,0xd4,0x82,0x04,0xd4,0x82,0x04,0xd4,0x86,0x04, -0xdc,0xb6,0x74,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe2,0xcc, -0xcc,0x8a,0x24,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x82,0x0c, -0xd4,0xa2,0x4c,0xe4,0xca,0x94,0xf4,0xe6,0xcc,0xfc,0xf2,0xe4,0xfc,0xf6,0xf4, -0xfc,0xf6,0xf4,0xfc,0xf2,0xdc,0xec,0xde,0xbc,0xdc,0xba,0x7c,0xcc,0x92,0x34, -0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xc4,0x82,0x14,0xf4,0xd6,0xac, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf2,0xe4,0xcc,0x96,0x3c, -0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x82,0x04, -0xcc,0x82,0x04,0xd4,0x82,0x04,0xd4,0x86,0x0c,0xcc,0x7a,0x04,0xd4,0xaa,0x54, -0xf4,0xf2,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xe4,0xca,0x94,0xcc,0x86,0x14,0xcc,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x8a,0x24,0xec,0xd6,0xb4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xdc,0xb2,0x6c, -0xc4,0x72,0x04,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x8a,0x1c, -0xd4,0xa6,0x54,0xdc,0xb2,0x6c,0xdc,0xb6,0x74,0xdc,0xb6,0x74,0xdc,0xb6,0x74, -0xec,0xda,0xb4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xd4,0xa2,0x4c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xcc,0x9a,0x44,0xf4,0xda,0xbc, -0xfc,0xfa,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec, -0xe4,0xbe,0x84,0xcc,0x86,0x14,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xd4,0x96,0x34, -0xfc,0xf2,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xd4,0xb2,0x6c,0xcc,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xcc,0x86,0x1c,0xdc,0xa2,0x4c, -0xdc,0xb6,0x74,0xdc,0xb6,0x74,0xdc,0xb6,0x74,0xdc,0xb2,0x6c,0xec,0xd2,0xa4, -0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xe4,0xbe,0x84,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x8e,0x2c, -0xec,0xde,0xc4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd6,0xac,0xc4,0x86,0x14, -0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x8e,0x24,0xec,0xca,0x9c,0xf4,0xf2,0xe4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xca,0x9c,0xc4,0x86,0x14, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xdc,0xb6,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xec,0xda,0xc4,0xcc,0x8e,0x24,0xcc,0x7e,0x04,0xcc,0x7e,0x04, -0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xd4,0x86,0x0c, -0xdc,0xbe,0x84,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xde,0xc4,0xc4,0x7e,0x0c,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xcc,0x8e,0x24,0xe4,0xc6,0x94,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xdc,0xb2,0x6c,0xbc,0x7a,0x04,0xc4,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04, -0xcc,0x96,0x3c,0xf4,0xea,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xdc,0xaa,0x5c,0xc4,0x72,0x04, -0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xd4,0xa2,0x4c,0xfc,0xf2,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xf4,0xcc,0x9a,0x44,0xc4,0x76,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c, -0xc4,0x76,0x04,0xdc,0xb6,0x6c,0xfc,0xfa,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe2,0xc4,0xdc,0xae,0x64,0xdc,0xae,0x64, -0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xae,0x64, -0xe4,0xc6,0x94,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xd4,0xaa,0x5c,0xc4,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xd4,0xa2,0x4c,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf2,0xe4,0xd4,0xa6,0x5c,0xc4,0x76,0x04, -0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04, -0xc4,0x7a,0x04,0xd4,0xa2,0x4c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xde,0xbc,0xcc,0x8e,0x24,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04, -0xcc,0x9a,0x3c,0xfc,0xf2,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xda,0xb4,0xcc,0x86,0x1c,0xc4,0x76,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x76,0x04, -0xd4,0x9a,0x44,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xdc,0xc4,0x8a,0x1c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x96,0x34, -0xf4,0xea,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xea,0xd4,0xd4,0x9a,0x44, -0xc4,0x72,0x04,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xdc,0xaa,0x5c,0xfc,0xfa,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xc6,0x94,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x8a,0x1c, -0xec,0xd6,0xb4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xb2,0x74,0xc4,0x82,0x0c,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xec,0xce,0x9c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xe4,0xce,0xa4,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x0c,0xec,0xda,0xbc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe6,0xc4, -0xcc,0x96,0x2c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x82,0x0c,0xdc,0xba,0x74,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xdc,0xb6,0x6c,0xbc,0x76,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0xa6,0x54, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xcc,0x9a,0x3c,0xc4,0x76,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xd4,0x96,0x34, -0xf4,0xe6,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xdc,0xb6,0x74,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xd4,0xa6,0x54,0xfc,0xf6,0xec, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xec,0xda,0xb4,0xcc,0x8a,0x1c,0xcc,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x86,0x14,0xe4,0xc6,0x8c, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xf2,0xec,0xdc,0xa6,0x5c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c,0xe4,0xbe,0x84, -0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xea,0xd4,0xcc,0x8a,0x24,0xc4,0x76,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x72,0x04,0xd4,0xaa,0x5c, -0xf4,0xf2,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xd4,0xa6,0x54,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x76,0x04,0xe4,0xc2,0x84,0xfc,0xfa,0xf4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xec,0xce,0xa4,0xc4,0x82,0x0c,0xcc,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c, -0xec,0xce,0xa4,0xf4,0xf2,0xe4,0xf4,0xee,0xdc,0xf4,0xee,0xdc,0xf4,0xee,0xdc, -0xf4,0xee,0xdc,0xf4,0xee,0xdc,0xf4,0xee,0xdc,0xf4,0xee,0xdc,0xf4,0xee,0xdc, -0xf4,0xee,0xdc,0xf4,0xee,0xdc,0xf4,0xee,0xdc,0xf4,0xee,0xdc,0xfc,0xf2,0xe4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x14,0xe4,0xce,0x9c, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xec,0xd6,0xb4,0xcc,0x86,0x1c,0xc4,0x76,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x72,0x04,0xd4,0xaa,0x5c, -0xf4,0xea,0xdc,0xfc,0xf6,0xec,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4, -0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4, -0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4, -0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4, -0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4,0xfc,0xf2,0xe4, -0xf4,0xf2,0xe4,0xfc,0xf2,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xcc,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x76,0x04,0xec,0xd2,0xa4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x94,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xc4,0x82,0x14,0xc4,0x82,0x14,0xc4,0x82,0x14, -0xc4,0x82,0x14,0xc4,0x82,0x14,0xc4,0x82,0x14,0xc4,0x82,0x14,0xc4,0x82,0x14, -0xc4,0x82,0x14,0xc4,0x82,0x14,0xc4,0x82,0x14,0xcc,0x82,0x14,0xd4,0xa6,0x54, -0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xe4,0xca,0x94,0xcc,0x86,0x14,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c, -0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c, -0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c, -0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c, -0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c, -0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c,0xc4,0x86,0x1c, -0xcc,0x86,0x1c,0xd4,0xa2,0x4c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xdc,0xba,0x74,0xc4,0x7a,0x04, -0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xcc,0x82,0x04,0xd4,0x9a,0x3c, -0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xe4,0xbe,0x84,0xcc,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xcc,0x7e,0x04,0xcc,0x92,0x34,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xf2,0xe4,0xd4,0xaa,0x5c, -0xc4,0x72,0x04,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xd4,0x9e,0x44, -0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xdc,0xba,0x7c,0xcc,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xcc,0x96,0x34,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xee,0xdc, -0xd4,0x9e,0x4c,0xc4,0x76,0x04,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xd4,0x9e,0x44, -0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xe4,0xba,0x7c,0xcc,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xcc,0x96,0x34,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xf4,0xe6,0xcc,0xd4,0x96,0x34,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xd4,0x9e,0x44, -0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb6,0x6c,0xfc,0xfa,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x82,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xcc,0x86,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xcc,0x9a,0x3c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xec,0xde,0xbc,0xc4,0x8a,0x1c,0xcc,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04, -0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04,0xd4,0x86,0x04,0xcc,0x96,0x34, -0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x64,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xdc,0xb2,0x6c,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc2,0x8c,0xc4,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0x9a,0x3c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc, -0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x82,0x14,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xec,0xce,0xa4,0xcc,0x86,0x14,0xc4,0x76,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, -0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, -0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, -0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xd4,0xa6,0x54,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd2,0xac,0xc4,0x82,0x0c,0xc4,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xcc,0x92,0x2c,0xdc,0xb2,0x6c,0xdc,0xb2,0x6c,0xdc,0xb2,0x6c, -0xdc,0xb2,0x6c,0xdc,0xb2,0x6c,0xdc,0xb2,0x6c,0xdc,0xb2,0x6c,0xe4,0xc6,0x8c, -0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xae,0x6c,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xd4,0xa6,0x54,0xfc,0xf6,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xba,0x7c,0xbc,0x76,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x72,0x04,0xd4,0x92,0x34, -0xf4,0xe6,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd2,0xac, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xcc,0x86,0x1c,0xfc,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xe2,0xc4,0xcc,0x8a,0x1c,0xc4,0x76,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x92,0x34, -0xe4,0xc2,0x94,0xec,0xd2,0xac,0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xce,0xa4, -0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xce,0xa4, -0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xce,0xa4, -0xec,0xce,0xa4,0xec,0xce,0xa4,0xec,0xd2,0xac,0xdc,0xbe,0x7c,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x82,0x0c,0xdc,0xb6,0x74,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xc6,0x94,0xbc,0x7e,0x04, -0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xcc,0x8e,0x24,0xec,0xe2,0xc4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xdc,0xbe,0x84,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x8a,0x24,0xf4,0xea,0xe4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xd4,0xa6,0x54,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x8a,0x1c, -0xec,0xd2,0xac,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xba,0x7c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xcc,0x92,0x24,0xfc,0xee,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xf2,0xec,0xcc,0x96,0x34,0xc4,0x76,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xd4,0x92,0x34, -0xf4,0xe2,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xda,0xb4,0xc4,0x76,0x04, -0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x82,0x0c,0xe4,0xce,0x9c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xe4,0xba,0x7c, -0xc4,0x76,0x04,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x8a,0x24,0xf4,0xe6,0xd4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xe4,0xd2,0xa4,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xc4,0x76,0x04,0xe4,0xce,0x9c,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xec,0xda,0xb4,0xcc,0x8e,0x24,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04, -0xdc,0xae,0x6c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf2,0xe4,0xcc,0x92,0x2c, -0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xd4,0xa2,0x4c,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xd4,0xaa,0x64,0xc4,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xbc,0x76,0x04, -0xe4,0xc2,0x8c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xdc,0xaa,0x5c,0xc4,0x76,0x04, -0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x86,0x0c,0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec, -0xdc,0xae,0x64,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x96,0x3c,0xf4,0xf2,0xe4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xf4,0xea,0xd4,0xc4,0x82,0x14,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x96,0x34,0xf4,0xee,0xdc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xf6,0xf4,0xdc,0xa6,0x5c,0xbc,0x72,0x04,0xc4,0x7e,0x0c,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04, -0xcc,0x8a,0x1c,0xec,0xd6,0xac,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xbe,0x84,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xe4,0xbe,0x7c,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd2,0xa4,0xcc,0x8a,0x14,0xc4,0x76,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xcc,0x92,0x2c,0xf4,0xe2,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xbc,0xc4,0x82,0x0c,0xc4,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04, -0xcc,0x9e,0x44,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xf4,0xf2,0xe4,0xd4,0x9e,0x44,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xd4,0xa2,0x4c, -0xfc,0xf6,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0xa2,0x4c,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xd4,0xa2,0x54, -0xf4,0xf2,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4, -0xdc,0xb6,0x74,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x76,0x04,0xcc,0x92,0x2c,0xf4,0xe6,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xca,0x9c,0xc4,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x0c,0xf4,0xde,0xbc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xcc,0x9a,0x3c,0xc4,0x76,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c, -0xc4,0x72,0x04,0xdc,0xaa,0x5c,0xfc,0xf2,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xdc,0xd4,0x9e,0x3c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c, -0xe4,0xca,0x9c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xea,0xdc,0xd4,0x96,0x34,0xcc,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04, -0xd4,0xae,0x64,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xf2,0xe4,0xdc,0xa2,0x54,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd6,0xac, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xe4,0xce,0xa4,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04, -0xd4,0x9a,0x3c,0xec,0xde,0xc4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xea,0xd4,0xdc,0xaa,0x54, -0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xcc,0x8a,0x24,0xe4,0xce,0xa4,0xfc,0xfa,0xf4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xf2,0xe4,0xe4,0xba,0x7c,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04, -0xd4,0xa2,0x4c,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xc6,0x94,0xc4,0x86,0x14, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x76,0x04,0xdc,0xae,0x5c,0xfc,0xf2,0xe4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xf2,0xe4,0xdc,0xa6,0x5c,0xc4,0x76,0x04,0xc4,0x7e,0x0c,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x92,0x2c, -0xf4,0xf6,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xe2,0xc4,0xcc,0x8a,0x24,0xcc,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xe4,0xbe,0x84,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe6,0xcc,0xe4,0xca,0x94, -0xec,0xce,0xa4,0xe4,0xc2,0x8c,0xcc,0x92,0x2c,0xc4,0x76,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x14,0xdc,0xae,0x64, -0xe4,0xce,0xa4,0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c, -0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xca,0x9c,0xe4,0xce,0x9c, -0xf4,0xee,0xdc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xcc,0x9a,0x3c,0xc4,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xcc,0x7e,0x04,0xcc,0x86,0x14,0xd4,0xa2,0x4c,0xec,0xc6,0x94,0xec,0xda,0xb4, -0xec,0xda,0xb4,0xec,0xca,0x9c,0xdc,0xae,0x64,0xcc,0x86,0x14,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c,0xcc,0x9a,0x3c, -0xe4,0xc2,0x8c,0xec,0xd6,0xb4,0xec,0xda,0xb4,0xec,0xce,0xa4,0xdc,0xb6,0x74, -0xcc,0x8e,0x2c,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xec,0xda,0xb4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xd4,0xa2,0x4c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xcc,0x96,0x3c,0xec,0xda,0xb4, -0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xda,0xb4, -0xd4,0x96,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x0c,0xec,0xc6,0x94, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd6,0xb4,0xcc,0x7e,0x0c, -0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xce,0x9c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xb2,0x6c,0xc4,0x76,0x04, -0xcc,0x82,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, -0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x82,0x0c, -0xe4,0xce,0x9c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd6,0xb4,0xc4,0x82,0x0c,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04, -0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04, -0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xdc,0xae,0x64, -0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe2,0xcc, -0xcc,0x8e,0x24,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x0c, -0xcc,0x96,0x3c,0xdc,0xbe,0x7c,0xec,0xd2,0xac,0xf4,0xe2,0xc4,0xf4,0xe6,0xcc, -0xf4,0xe6,0xcc,0xec,0xda,0xb4,0xe4,0xbe,0x84,0xcc,0x9a,0x44,0xc4,0x82,0x0c, -0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xd4,0xa2,0x54,0xfc,0xfe,0xf4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xca,0x9c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x82,0x14,0xec,0xd6,0xb4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xb6,0x74,0xbc,0x76,0x04, -0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c, -0xe4,0xd2,0x9c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xbe,0x84,0xcc,0x82,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x96,0x2c,0xfc,0xf2,0xe4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xe4,0xce,0xa4,0xcc,0x86,0x1c,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04, -0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04,0xc4,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x92,0x2c,0xfc,0xea,0xdc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4, -0xe4,0xbe,0x84,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x86,0x1c,0xf4,0xe2,0xcc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xb6,0x74,0xbc,0x76,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c, -0xe4,0xd2,0xa4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xae,0x64, -0xcc,0x82,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04, -0xd4,0xa6,0x5c,0xdc,0xbe,0x7c,0xcc,0x86,0x14,0xcc,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x92,0x2c,0xf4,0xe6,0xd4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xe4,0xca,0x9c,0xcc,0x86,0x1c,0xc4,0x7a,0x04,0xc4,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xcc,0x7a,0x04,0xcc,0x8e,0x1c,0xf4,0xe2,0xc4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xdc,0xae,0x64,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x92,0x2c, -0xfc,0xee,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xb6,0x74,0xbc,0x76,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c, -0xe4,0xd2,0xa4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4, -0xdc,0xb6,0x74,0xc4,0x82,0x0c,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xdc,0xae,0x64, -0xf4,0xf2,0xec,0xfc,0xfe,0xfc,0xe4,0xca,0x9c,0xcc,0x86,0x14,0xcc,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xcc,0x7e,0x04,0xcc,0x96,0x34,0xf4,0xe6,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd2,0xac,0xcc,0x8e,0x1c,0xcc,0x7a,0x04, -0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04, -0xd4,0x96,0x34,0xf4,0xe2,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xd4,0xa2,0x4c,0xcc,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04, -0xd4,0x9e,0x44,0xfc,0xf6,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xb6,0x74,0xbc,0x76,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c, -0xe4,0xd2,0xa4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xec,0xce,0xa4,0xc4,0x8e,0x24,0xcc,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xcc,0x7e,0x04,0xcc,0x7a,0x04,0xcc,0x86,0x14,0xe4,0xc2,0x8c,0xfc,0xfa,0xf4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xde,0xc4,0xcc,0x96,0x3c, -0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04, -0xdc,0xae,0x6c,0xfc,0xf2,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe6,0xd4,0xd4,0xa6,0x5c, -0xc4,0x82,0x0c,0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x0c,0xdc,0xb2,0x6c, -0xfc,0xee,0xe4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf2,0xe4,0xcc,0x92,0x34,0xcc,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xdc,0xaa,0x5c,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xd4,0xb2,0x6c,0xcc,0x76,0x04, -0xd4,0x86,0x0c,0xcc,0x82,0x04,0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x82,0x04, -0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04, -0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x82,0x04,0xcc,0x86,0x0c, -0xe4,0xce,0x9c,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xea,0xdc,0xe4,0xb6,0x7c,0xc4,0x86,0x1c, -0xcc,0x7e,0x04,0xcc,0x82,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x82,0x04,0xc4,0x7e,0x04, -0xc4,0x82,0x14,0xd4,0xaa,0x5c,0xf4,0xe6,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec, -0xe4,0xc2,0x94,0xcc,0x8e,0x2c,0xc4,0x7e,0x04,0xcc,0x82,0x04,0xcc,0x7e,0x04, -0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xcc,0x7e,0x04,0xcc,0x82,0x04,0xc4,0x7e,0x04,0xd4,0xa2,0x4c,0xec,0xda,0xb4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4, -0xec,0xd6,0xb4,0xd4,0xa2,0x4c,0xc4,0x7e,0x0c,0xcc,0x7e,0x04,0xcc,0x82,0x04, -0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x82,0x04, -0xcc,0x7e,0x04,0xc4,0x7e,0x0c,0xd4,0xa2,0x54,0xf4,0xda,0xb4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe2,0xcc,0xcc,0x8a,0x24, -0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x76,0x04,0xdc,0xb6,0x7c,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xcc,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd2,0xac,0xdc,0xaa,0x5c, -0xdc,0xae,0x6c,0xdc,0xaa,0x5c,0xcc,0x8a,0x1c,0xc4,0x76,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x0c,0xd4,0x9a,0x44, -0xdc,0xb2,0x6c,0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xae,0x64, -0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xae,0x64,0xdc,0xb2,0x6c, -0xf4,0xe2,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xee,0xe4, -0xec,0xca,0x94,0xd4,0xaa,0x54,0xcc,0x92,0x2c,0xc4,0x86,0x14,0xc4,0x7e,0x0c, -0xc4,0x7e,0x0c,0xc4,0x82,0x0c,0xcc,0x8e,0x24,0xd4,0xa2,0x4c,0xe4,0xc2,0x8c, -0xf4,0xea,0xd4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xe4,0xd2,0xa4,0xdc,0xae,0x64,0xd4,0x96,0x3c, -0xc4,0x82,0x14,0xc4,0x7e,0x0c,0xc4,0x7e,0x0c,0xc4,0x7e,0x0c,0xc4,0x8a,0x1c, -0xd4,0x9e,0x44,0xdc,0xba,0x7c,0xec,0xe2,0xc4,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfa,0xfc,0xf4,0xe2,0xcc,0xe4,0xbe,0x84,0xd4,0x9e,0x4c, -0xc4,0x86,0x1c,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x7e,0x04,0xcc,0x7e,0x04, -0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x86,0x1c,0xd4,0x9e,0x44, -0xe4,0xbe,0x7c,0xf4,0xe6,0xcc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd6,0xb4, -0xc4,0x82,0x14,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xe4,0xc6,0x94,0xfc,0xfa,0xf4, -0xfc,0xfe,0xfc,0xcc,0x9a,0x3c,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xf2,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xfc,0xf2,0xe4,0xf4,0xea,0xdc, -0xf4,0xee,0xdc,0xfc,0xf2,0xdc,0xfc,0xf6,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xf6,0xec,0xf4,0xee,0xdc,0xf4,0xea,0xd4,0xf4,0xee,0xdc,0xfc,0xf6,0xec, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xf6,0xec,0xf4,0xe6,0xd4,0xf4,0xd6,0xbc,0xec,0xce,0xa4,0xec,0xce,0xa4, -0xec,0xce,0xa4,0xec,0xd6,0xb4,0xf4,0xe6,0xcc,0xf4,0xf2,0xec,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xec,0xce,0x9c,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xec,0xd2,0xa4, -0xfc,0xfe,0xfc,0xd4,0x9a,0x44,0xc4,0x76,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xdc,0xba,0x7c,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xcc,0x8a,0x1c, -0xec,0xd6,0xb4,0xd4,0x9e,0x44,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xae,0x6c,0xc4,0x7e,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04, -0xcc,0x8e,0x2c,0xc4,0x86,0x14,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf6,0xec,0xd4,0xa2,0x4c,0xcc,0x7e,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xf2,0xe4,0xcc,0x92,0x34, -0xcc,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xfc,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xe6,0xcc, -0xc4,0x86,0x1c,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xde,0xb4, -0xdc,0xb2,0x6c,0xdc,0xa6,0x5c,0xdc,0xb6,0x7c,0xf4,0xea,0xd4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xec,0xda,0xbc,0xc4,0x8a,0x14,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xec,0xd2,0xac,0xdc,0xa6,0x5c, -0xec,0xd2,0xa4,0xfc,0xfa,0xec,0xdc,0xc2,0x8c,0xdc,0xaa,0x5c,0xf4,0xea,0xcc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xec,0xca,0x9c,0xc4,0x7e,0x0c,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xb6,0x6c,0xec,0xd2,0xa4, -0xec,0xd6,0xac,0xe4,0xbe,0x7c,0xec,0xda,0xbc,0xe4,0xbe,0x84,0xec,0xce,0x9c, -0xfc,0xfe,0xf4,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xbe,0x84,0xcc,0x82,0x0c,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x76,0x04,0xcc,0x86,0x1c,0xe4,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xd4,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf2,0xec,0xdc,0xba,0x7c,0xec,0xde,0xc4, -0xe4,0xc2,0x8c,0xcc,0x9e,0x44,0xec,0xd6,0xac,0xec,0xca,0x9c,0xec,0xc6,0x9c, -0xfc,0xf6,0xec,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xdc,0xae,0x64,0xcc,0x82,0x04, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xec,0xd6,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xe4,0xd4,0xa2,0x4c,0xc4,0x72,0x04,0xc4,0x7e,0x0c, -0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04,0xcc,0x8a,0x1c,0xe4,0xce,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xcc,0x9e,0x44,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xc4,0x7a,0x04, -0xc4,0x7a,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xec,0xd2,0xac,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xe4,0xba,0x7c,0xe4,0xc2,0x8c, -0xec,0xca,0x9c,0xe4,0xc2,0x8c,0xec,0xd6,0xb4,0xdc,0xb6,0x74,0xec,0xd2,0xa4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfa,0xf4,0xd4,0xa6,0x4c, -0xcc,0x7e,0x04,0xcc,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7e,0x04,0xcc,0x82,0x0c,0xc4,0x7a,0x04,0xec,0xce,0xa4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xf4,0xee,0xdc,0xd4,0xa2,0x4c,0xcc,0x76,0x04,0xcc,0x82,0x0c, -0xc4,0x7e,0x04,0xc4,0x7e,0x04,0xc4,0x7a,0x04,0xcc,0x86,0x14,0xe4,0xce,0x9c, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfa,0xf4,0xcc,0x9a,0x44,0xcc,0x82,0x04,0xc4,0x7e,0x04,0xc4,0x7e,0x04, -0xc4,0x7e,0x04,0xcc,0x82,0x0c,0xc4,0x76,0x04,0xec,0xd2,0xa4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xea,0xd4,0xdc,0xae,0x64, -0xdc,0xb6,0x74,0xec,0xce,0xa4,0xd4,0xb2,0x6c,0xe4,0xba,0x7c,0xfc,0xf2,0xe4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xf4,0xf2,0xdc, -0xe4,0xc6,0x94,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c, -0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xf4,0xea,0xd4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xf6,0xf4,0xec,0xd2,0xb4,0xe4,0xbe,0x84,0xe4,0xc2,0x8c, -0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xec,0xca,0x94,0xfc,0xea,0xd4, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xec,0xd2,0xac,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c, -0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xe4,0xc2,0x8c,0xfc,0xea,0xd4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xf2,0xe4, -0xec,0xd2,0xac,0xe4,0xc2,0x8c,0xec,0xda,0xb4,0xfc,0xfa,0xf4,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc, -0xfc,0xfe,0xfc,0xfc,0xfe,0xfc,0xfc,0xfe,0xfc -}; -#endif /* __ATMEL_LOGO_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/main.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/main.c deleted file mode 100644 index 919077191..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/main.c +++ /dev/null @@ -1,296 +0,0 @@ -/* - FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. - All rights reserved - - VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. - - >>! NOTE: The modification to the GPL is included to allow you to !<< - >>! distribute a combined work that includes FreeRTOS without being !<< - >>! obliged to provide the source code for proprietary components !<< - >>! outside of the FreeRTOS kernel. !<< - - FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. Full license text is available on the following - link: http://www.freertos.org/a00114.html - - 1 tab == 4 spaces! - - *************************************************************************** - * * - * Having a problem? Start by reading the FAQ "My application does * - * not run, what could be wrong?". Have you defined configASSERT()? * - * * - * http://www.FreeRTOS.org/FAQHelp.html * - * * - *************************************************************************** - - *************************************************************************** - * * - * FreeRTOS provides completely free yet professionally developed, * - * robust, strictly quality controlled, supported, and cross * - * platform software that is more than just the market leader, it * - * is the industry's de facto standard. * - * * - * Help yourself get started quickly while simultaneously helping * - * to support the FreeRTOS project by purchasing a FreeRTOS * - * tutorial book, reference manual, or both: * - * http://www.FreeRTOS.org/Documentation * - * * - *************************************************************************** - - *************************************************************************** - * * - * Investing in training allows your team to be as productive as * - * possible as early as possible, lowering your overall development * - * cost, and enabling you to bring a more robust product to market * - * earlier than would otherwise be possible. Richard Barry is both * - * the architect and key author of FreeRTOS, and so also the world's * - * leading authority on what is the world's most popular real time * - * kernel for deeply embedded MCU designs. Obtaining your training * - * from Richard ensures your team will gain directly from his in-depth * - * product knowledge and years of usage experience. Contact Real Time * - * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * - * by Richard Barry: http://www.FreeRTOS.org/contact - * * - *************************************************************************** - - *************************************************************************** - * * - * You are receiving this top quality software for free. Please play * - * fair and reciprocate by reporting any suspected issues and * - * participating in the community forum: * - * http://www.FreeRTOS.org/support * - * * - * Thank you! * - * * - *************************************************************************** - - http://www.FreeRTOS.org - Documentation, books, training, latest versions, - license and Real Time Engineers Ltd. contact details. - - http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, - including FreeRTOS+Trace - an indispensable productivity tool, a DOS - compatible FAT file system, and our tiny thread aware UDP/IP stack. - - http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. - Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. - - http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High - Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS - licenses offer ticketed support, indemnification and commercial middleware. - - http://www.SafeRTOS.com - High Integrity Systems also provide a safety - engineered and independently SIL3 certified version for use in safety and - mission critical applications that require provable dependability. - - 1 tab == 4 spaces! -*/ - -/****************************************************************************** - * This project provides two demo applications. A simple blinky style project, - * and a more comprehensive application that includes FreeRTOS+CLI, FreeRTOS+UDP - * and FreeRTOS+FAT SL. The mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting (defined - * in this file) is used to select between the two. The simply blinky demo is - * implemented and described in main_blinky.c. The more comprehensive demo - * application is implemented and described in main_full.c and full user - * instructions are provided on the following URL: - * http://www.FreeRTOS.org/Atmel_SAM4E_RTOS_Demo.html - * - * This file implements the code that is not demo specific, including the - * hardware setup and FreeRTOS hook functions. - * - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo application includes. */ -#include "partest.h" - -/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to one to run the simple blinky demo, -or 0 to run the more comprehensive demo application that includes add-on -components. */ -#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 1 - -/*-----------------------------------------------------------*/ - -/* - * Set up the hardware ready to run this demo. - */ -static void prvSetupHardware( void ); - -/* - * main_blinky() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1. - * main_full() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0. - */ -extern void main_blinky( void ); -extern void main_full( void ); - -/*-----------------------------------------------------------*/ - -int main( void ) -{ - /* Prepare the hardware to run this demo. */ - prvSetupHardware(); - - /* The mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting is described at the top - of this file. */ - #if ( mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 1 ) - { - main_blinky(); - } - #else - { - /* Full user instructions are provided on the following URL: - http://www.FreeRTOS.org/Atmel_SAM4E_RTOS_Demo.html */ - main_full(); - } - #endif /* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY */ - - return 0; -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - /* Call the ASF initialisation functions. */ - board_init(); - sysclk_init(); - pmc_enable_periph_clk( ID_GMAC ); - pmc_enable_periph_clk( ID_SMC ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ -static volatile uint32_t ulCount = 0; - - /* vApplicationMallocFailedHook() will only be called if - configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - function that will get called if a call to pvPortMalloc() fails. - pvPortMalloc() is called internally by the kernel whenever a task, queue, - timer or semaphore is created. It is also called by various parts of the - demo application. If heap_1.c or heap_2.c are used, then the size of the - heap available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in - FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used - to query the size of free heap space that remains (although it does not - provide information on how the remaining heap might be fragmented). - - Just count the number of malloc fails as some failures may occur simply - because the network load is very high, resulting in the consumption of a - lot of network buffers. */ - ulCount++; -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ - /* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set - to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle - task. It is essential that code added to this hook function never attempts - to block in any way (for example, call xQueueReceive() with a block time - specified, or call vTaskDelay()). If the application makes use of the - vTaskDelete() API function (as this demo application does) then it is also - important that vApplicationIdleHook() is permitted to return to its calling - function, because it is the responsibility of the idle task to clean up - memory allocated by the kernel to any task that has since been deleted. */ - - /* The simple blinky demo does not use the idle hook - the full demo does. */ - #if( mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0 ) - { - extern void vFullDemoIdleHook( void ); - - /* Implemented in main_full.c. */ - vFullDemoIdleHook(); - } - #endif -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* Run time stack overflow checking is performed if - configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook function is - called if a stack overflow is detected. */ - vAssertCalled( __LINE__, __FILE__ ); -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ - /* This function will be called by each tick interrupt if - configUSE_TICK_HOOK is set to 1 in FreeRTOSConfig.h. User code can be - added here, but the tick hook is called from an interrupt context, so - code must not attempt to block, and only the interrupt safe FreeRTOS API - functions can be used (those that end in FromISR()). */ - - /* The simple blinky demo does not use the tick hook - the full demo does. */ - #if( mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0 ) - { - extern void vFullDemoTickHook( void ); - - /* Implemented in main_full.c. */ - vFullDemoTickHook(); - } - #endif -} -/*-----------------------------------------------------------*/ - -void vAssertCalled( uint32_t ulLine, const char *pcFile ) -{ -/* The following two variables are just to ensure the parameters are not -optimised away and therefore unavailable when viewed in the debugger. */ -volatile uint32_t ulLineNumber = ulLine, ulSetNonZeroInDebuggerToReturn = 0; -volatile const char * const pcFileName = pcFile; - - taskENTER_CRITICAL(); - while( ulSetNonZeroInDebuggerToReturn == 0 ) - { - /* If you want to set out of this function in the debugger to see the - assert() location then set ulSetNonZeroInDebuggerToReturn to a non-zero - value. */ - } - taskEXIT_CRITICAL(); - - ( void ) pcFileName; - ( void ) ulLineNumber; -} -/*-----------------------------------------------------------*/ - -/* Provided to keep the linker happy. */ -void _exit_( int status ) -{ - ( void ) status; - vAssertCalled( __LINE__, __FILE__ ); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* Provided to keep the linker happy. */ -int _read( void ) -{ - return 0; -} -/*-----------------------------------------------------------*/ - -/* Provided to keep the linker happy. */ -int _write( int x ) -{ - ( void ) x; - return 0; -} -/*-----------------------------------------------------------*/ - - - diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/main_blinky.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/main_blinky.c deleted file mode 100644 index 0e7399037..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/main_blinky.c +++ /dev/null @@ -1,297 +0,0 @@ -/* - FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. - All rights reserved - - VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. - - >>! NOTE: The modification to the GPL is included to allow you to !<< - >>! distribute a combined work that includes FreeRTOS without being !<< - >>! obliged to provide the source code for proprietary components !<< - >>! outside of the FreeRTOS kernel. !<< - - FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. Full license text is available on the following - link: http://www.freertos.org/a00114.html - - 1 tab == 4 spaces! - - *************************************************************************** - * * - * Having a problem? Start by reading the FAQ "My application does * - * not run, what could be wrong?". Have you defined configASSERT()? * - * * - * http://www.FreeRTOS.org/FAQHelp.html * - * * - *************************************************************************** - - *************************************************************************** - * * - * FreeRTOS provides completely free yet professionally developed, * - * robust, strictly quality controlled, supported, and cross * - * platform software that is more than just the market leader, it * - * is the industry's de facto standard. * - * * - * Help yourself get started quickly while simultaneously helping * - * to support the FreeRTOS project by purchasing a FreeRTOS * - * tutorial book, reference manual, or both: * - * http://www.FreeRTOS.org/Documentation * - * * - *************************************************************************** - - *************************************************************************** - * * - * Investing in training allows your team to be as productive as * - * possible as early as possible, lowering your overall development * - * cost, and enabling you to bring a more robust product to market * - * earlier than would otherwise be possible. Richard Barry is both * - * the architect and key author of FreeRTOS, and so also the world's * - * leading authority on what is the world's most popular real time * - * kernel for deeply embedded MCU designs. Obtaining your training * - * from Richard ensures your team will gain directly from his in-depth * - * product knowledge and years of usage experience. Contact Real Time * - * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * - * by Richard Barry: http://www.FreeRTOS.org/contact - * * - *************************************************************************** - - *************************************************************************** - * * - * You are receiving this top quality software for free. Please play * - * fair and reciprocate by reporting any suspected issues and * - * participating in the community forum: * - * http://www.FreeRTOS.org/support * - * * - * Thank you! * - * * - *************************************************************************** - - http://www.FreeRTOS.org - Documentation, books, training, latest versions, - license and Real Time Engineers Ltd. contact details. - - http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, - including FreeRTOS+Trace - an indispensable productivity tool, a DOS - compatible FAT file system, and our tiny thread aware UDP/IP stack. - - http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. - Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. - - http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High - Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS - licenses offer ticketed support, indemnification and commercial middleware. - - http://www.SafeRTOS.com - High Integrity Systems also provide a safety - engineered and independently SIL3 certified version for use in safety and - mission critical applications that require provable dependability. - - 1 tab == 4 spaces! -*/ - -/****************************************************************************** - * NOTE 1: This project provides two demo applications. A simple blinky style - * project, and a more comprehensive demo application that makes use of - * FreeRTOS_CLI, FreeRTOS+UDP and FreeRTOS+FAT SL. The - * mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting in main.c is used to select - * between the two. See the notes on using mainCREATE_SIMPLE_BLINKY_DEMO_ONLY - * in main.c. This file implements the simply blinky style version. - * - * NOTE 2: This file only contains the source code that is specific to the - * basic demo. Generic functions, such FreeRTOS hook functions, and functions - * required to configure the hardware, are defined in main.c. - ****************************************************************************** - * - * main_blinky() creates one queue, two tasks and one software timer. It then - * starts the scheduler. - * - * The Queue Send Task: - * The queue send task is implemented by the prvQueueSendTask() function in - * this file. The task sits in a loop that sends a value to the queue every - * 200 milliseconds. - * - * The Queue Receive Task: - * The queue receive task is implemented by the prvQueueReceiveTask() function - * in this file. The task sits in a loop that blocks on the queue to wait for - * data to arrive (it does not use any CPU time while it is in the Blocked - * state), toggling an LED each time it receives the value sent by the queue - * send task. As the queue send task writes to the queue every 200 milliseconds - * the LED will toggle every 200 milliseconds. - */ - - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* Demo application includes. */ -#include "partest.h" - -/* Priorities at which the tasks are created. */ -#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue. The 200ms value is converted -to ticks using the portTICK_PERIOD_MS constant. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added, meaning the send task should always find -the queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* The period of the blinky software timer. The period is specified in ms and -converted to ticks using the portTICK_PERIOD_MS constant. */ -#define mainBLINKY_TIMER_PERIOD ( 50 / portTICK_PERIOD_MS ) - -/* A block time of zero simply means "don't block". */ -#define mainDONT_BLOCK ( 0 ) - -/* The LEDs toggled by the timer callback and queue receive task respectively. */ -#define mainTIMER_LED 0 -#define mainTASK_LED 1 - -/*-----------------------------------------------------------*/ - -/* - * The tasks as described in the comments at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The callback function for the blinky software timer, as described at the top - * of this file. - */ -static void prvBlinkyTimerCallback( TimerHandle_t xTimer ); - -/* - * Called by main() to create the simply blinky style application if - * mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1. - */ -void main_blinky( void ); - -/*-----------------------------------------------------------*/ - -void main_blinky( void ) -{ -TimerHandle_t xTimer; -QueueHandle_t xQueue; - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described in the comments at the top of this - file. */ - xTaskCreate( prvQueueReceiveTask, /* The function that implements the task. */ - "Rx", /* The text name assigned to the task - for debug only as it is not used by the kernel. */ - configMINIMAL_STACK_SIZE, /* The size of the stack to allocate to the task. */ - ( void * ) xQueue, /* Pass the queue into the task using the task parameter. */ - mainQUEUE_RECEIVE_TASK_PRIORITY, /* The priority assigned to the task. */ - NULL ); /* The task handle is not required, so NULL is passed. */ - - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, ( void * ) xQueue, mainQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Create the blinky software timer as described at the top of this - file. */ - xTimer = xTimerCreate( "Blinky", /* A text name, purely to help debugging. */ - ( mainBLINKY_TIMER_PERIOD ),/* The timer period. */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvBlinkyTimerCallback ); /* The callback function that inspects the status of all the other tasks. */ - - configASSERT( xTimer ); - - if( xTimer != NULL ) - { - xTimerStart( xTimer, mainDONT_BLOCK ); - } - - /* Start the tasks and timer running. */ - vTaskStartScheduler(); - } - - /* If all is well, the scheduler will now be running, and the following - line will never be reached. If the following line does execute, then - there was insufficient FreeRTOS heap memory available for the idle and/or - timer tasks to be created. See the memory management section on the - FreeRTOS web site for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; -QueueHandle_t xQueue; - - /* The handle of the queue is passed in using the task's parameter. */ - xQueue = ( QueueHandle_t ) pvParameters; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block time is specified in ticks, the constant used converts ticks - to ms. While in the Blocked state this task will not consume any CPU - time. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to unblock and - toggle the LED. 0 is used as the block time so the sending operation - will not block - it shouldn't need to block as the queue should always - be empty at this point in the code. */ - xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; -QueueHandle_t xQueue; - - /* The queue is passed in as the task's parameter. */ - xQueue = ( QueueHandle_t ) pvParameters; - - for( ;; ) - { - /* Wait until something arrives in the queue - this task will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have been received from the queue, but - is it the expected value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( mainTASK_LED ); - ulReceivedValue = 0U; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvBlinkyTimerCallback( TimerHandle_t xTimer ) -{ - /* Avoid compiler warnings. */ - ( void ) xTimer; - - /* This function is called when the blinky software time expires. All the - function does is toggle the LED. LED mainTIMER_LED should therefore toggle - with the period set by mainBLINKY_TIMER_PERIOD. */ - vParTestToggleLED( mainTIMER_LED ); -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/main_full.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/main_full.c deleted file mode 100644 index ab56c9918..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/main_full.c +++ /dev/null @@ -1,1002 +0,0 @@ -/* - FreeRTOS V8.2.0rc1 - Copyright (C) 2014 Real Time Engineers Ltd. - All rights reserved - - VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. - - >>! NOTE: The modification to the GPL is included to allow you to !<< - >>! distribute a combined work that includes FreeRTOS without being !<< - >>! obliged to provide the source code for proprietary components !<< - >>! outside of the FreeRTOS kernel. !<< - - FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. Full license text is available on the following - link: http://www.freertos.org/a00114.html - - 1 tab == 4 spaces! - - *************************************************************************** - * * - * Having a problem? Start by reading the FAQ "My application does * - * not run, what could be wrong?". Have you defined configASSERT()? * - * * - * http://www.FreeRTOS.org/FAQHelp.html * - * * - *************************************************************************** - - *************************************************************************** - * * - * FreeRTOS provides completely free yet professionally developed, * - * robust, strictly quality controlled, supported, and cross * - * platform software that is more than just the market leader, it * - * is the industry's de facto standard. * - * * - * Help yourself get started quickly while simultaneously helping * - * to support the FreeRTOS project by purchasing a FreeRTOS * - * tutorial book, reference manual, or both: * - * http://www.FreeRTOS.org/Documentation * - * * - *************************************************************************** - - *************************************************************************** - * * - * Investing in training allows your team to be as productive as * - * possible as early as possible, lowering your overall development * - * cost, and enabling you to bring a more robust product to market * - * earlier than would otherwise be possible. Richard Barry is both * - * the architect and key author of FreeRTOS, and so also the world's * - * leading authority on what is the world's most popular real time * - * kernel for deeply embedded MCU designs. Obtaining your training * - * from Richard ensures your team will gain directly from his in-depth * - * product knowledge and years of usage experience. Contact Real Time * - * Engineers Ltd to enquire about the FreeRTOS Masterclass, presented * - * by Richard Barry: http://www.FreeRTOS.org/contact - * * - *************************************************************************** - - *************************************************************************** - * * - * You are receiving this top quality software for free. Please play * - * fair and reciprocate by reporting any suspected issues and * - * participating in the community forum: * - * http://www.FreeRTOS.org/support * - * * - * Thank you! * - * * - *************************************************************************** - - http://www.FreeRTOS.org - Documentation, books, training, latest versions, - license and Real Time Engineers Ltd. contact details. - - http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, - including FreeRTOS+Trace - an indispensable productivity tool, a DOS - compatible FAT file system, and our tiny thread aware UDP/IP stack. - - http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. - Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. - - http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High - Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS - licenses offer ticketed support, indemnification and commercial middleware. - - http://www.SafeRTOS.com - High Integrity Systems also provide a safety - engineered and independently SIL3 certified version for use in safety and - mission critical applications that require provable dependability. - - 1 tab == 4 spaces! -*/ - -/****************************************************************************** - * NOTE 1: This project provides two demo applications. A simple blinky style - * project, and a more comprehensive test and demo application that makes use of - * the FreeRTOS+CLI, FreeRTOS+UDP and FreeRTOS+FAT SL components. The - * mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting in main.c is used to select - * between the two. See the notes on using mainCREATE_SIMPLE_BLINKY_DEMO_ONLY - * in main.c. This file implements the comprehensive test and demo version, - * which is fully documented on the following URL: - * http://www.FreeRTOS.org/Atmel_SAM4E_RTOS_Demo.html - * - * NOTE 2: This file only contains the source code that is specific to the - * full demo. Generic functions, such FreeRTOS hook functions, and functions - * required to configure the hardware, are defined in main.c. - ****************************************************************************** - * - * Full user instructions are provided on the following URL: - * http://www.FreeRTOS.org/Atmel_SAM4E_RTOS_Demo.html - * - * main_full(): - * + Uses FreeRTOS+FAT SL to create a set of example files on a RAM disk. - * + Displays some bitmaps on the LCD. - * + Registers sample generic, file system related and UDP related commands - * with FreeRTOS+CLI. - * + Creates all the standard demo application tasks and software timers. - * + Starts the scheduler. - * - * A UDP command server and optionally two UDP echo client tasks are created - * from the network event hook after an IP address has been obtained. The IP - * address is displayed on the LCD. - * - * A "check software timer" is created to provide visual feedback of the system - * status. The timer's period is initially set to three seconds. The callback - * function associated with the timer checks all the standard demo tasks are not - * only still executed, but are executing without reporting any errors. If the - * timer discovers a task has either stalled, or reported an error, then it - * changes its own period from the initial three seconds, to just 200ms. The - * check software timer also toggles the LED marked D4 - so if the LED toggles - * every three seconds then no potential errors have been found, and if the LED - * toggles every 200ms then a potential error has been found in at least one - * task. - * - * Information on accessing the CLI and file system, and using the UDP echo - * tasks is provided on http://www.FreeRTOS.org/Atmel_SAM4E_RTOS_Demo.html - * - */ - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" - -/* FreeRTOS+UDP includes. */ -#include "FreeRTOS_UDP_IP.h" -#include "FreeRTOS_Sockets.h" - -/* UDP demo includes. */ -#include "UDPCommandInterpreter.h" -#include "TwoEchoClients.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "blocktim.h" -#include "flash_timer.h" -#include "semtest.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "IntQueue.h" -#include "countsem.h" -#include "dynamic.h" -#include "QueueOverwrite.h" -#include "QueueSet.h" -#include "recmutex.h" -#include "EventGroupsDemo.h" -#include "TaskNotify.h" -#include "IntSemTest.h" -#include "TimerDemo.h" -#include "IntQueue.h" - -/* The period after which the check timer will expire, in ms, provided no errors -have been reported by any of the standard demo tasks. ms are converted to the -equivalent in ticks using the portTICK_PERIOD_MS constant. */ -#define mainCHECK_TIMER_PERIOD_MS ( 3000UL / portTICK_PERIOD_MS ) - -/* The period at which the check timer will expire, in ms, if an error has been -reported in one of the standard demo tasks. ms are converted to the equivalent -in ticks using the portTICK_PERIOD_MS constant. */ -#define mainERROR_CHECK_TIMER_PERIOD_MS ( 200UL / portTICK_PERIOD_MS ) - -/* The priorities of the various demo application tasks. */ -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainQUEUE_OVERWRITE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The LED controlled by the 'check' software timer. */ -#define mainCHECK_LED ( 2 ) - -/* The number of LEDs that should be controlled by the flash software timer -standard demo. In this case it is only 1 as the starter kit has three LEDs, one -of which is controlled by the check timer and one of which is controlled by the -ISR triggered task. */ -#define mainNUM_FLASH_TIMER_LEDS ( 1 ) - -/* Misc. */ -#define mainDONT_BLOCK ( 0 ) - -/* Note: If the application is started without the network cable plugged in -then ipconfigUDP_TASK_PRIORITY should be set to 0 in FreeRTOSIPConfig.h to -ensure the IP task is created at the idle priority. This is because the Atmel -ASF GMAC driver polls the GMAC looking for a connection, and doing so will -prevent any lower priority tasks from executing. In this demo the IP task is -started at the idle priority, then set to configMAX_PRIORITIES - 2 in the -network event hook only after a connection has been established (when the event -passed into the network event hook is eNetworkUp). -http://www.FreeRTOS.org/udp */ -#define mainCONNECTED_IP_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainDISCONNECTED_IP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* UDP command server and echo task parameters. */ -#define mainUDP_CLI_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainUDP_CLI_PORT_NUMBER ( 5001UL ) -#define mainUDP_CLI_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE + 90 ) -#define mainECHO_CLIENT_STACK_SIZE ( configMINIMAL_STACK_SIZE + 30 ) - -/* Set to 1 to include the UDP echo client tasks in the build. The echo clients -require the IP address of the echo server to be defined using the -configECHO_SERVER_ADDR0 to configECHO_SERVER_ADDR3 constants in -FreeRTOSConfig.h. */ -#define mainINCLUDE_ECHO_CLIENT_TASKS 1 - -/* Used by the standard demo timer tasks. */ -#define mainTIMER_TEST_PERIOD ( 50 ) - -/*-----------------------------------------------------------*/ - -/* - * The check timer callback function, as described at the top of this file. - */ -static void prvCheckTimerCallback( TimerHandle_t xTimer ); - -/* - * Creates a set of sample files on a RAM disk. http://www.FreeRTOS.org/fat_sl - */ -extern void vCreateAndVerifySampleFiles( void ); - -/* - * Register sample generic commands that can be used with FreeRTOS+CLI. Type - * 'help' in the command line to see a list of registered commands. - * http://www.FreeRTOS.org/cli - */ -extern void vRegisterSampleCLICommands( void ); - -/* - * Register sample file system commands that can be used with FreeRTOS+CLI. - */ -extern void vRegisterFileSystemCLICommands( void ); - -/* - * Register sample UDP related commands that can be used with FreeRTOS+CLI. - */ -extern void vRegisterUDPCLICommands( void ); - -/* - * Initialise the LCD and output a bitmap. - */ -extern void vInitialiseLCD( void ); - -/* - * Register check tasks, and the tasks used to write over and check the contents - * of the FPU registers, as described at the top of this file. The nature of - * these files necessitates that they are written in an assembly file. - */ -static void prvRegTest1Task( void *pvParameters ) __attribute__((naked)); -static void prvRegTest2Task( void *pvParameters ) __attribute__((naked)); - -/*-----------------------------------------------------------*/ - -/* The default IP and MAC address used by the demo. The address configuration -defined here will be used if ipconfigUSE_DHCP is 0, or if ipconfigUSE_DHCP is -1 but a DHCP server could not be contacted. See the online documentation for -more information. */ -static const uint8_t ucIPAddress[ 4 ] = { configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 }; -static const uint8_t ucNetMask[ 4 ] = { configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 }; -static const uint8_t ucGatewayAddress[ 4 ] = { configGATEWAY_ADDR0, configGATEWAY_ADDR1, configGATEWAY_ADDR2, configGATEWAY_ADDR3 }; -static const uint8_t ucDNSServerAddress[ 4 ] = { configDNS_SERVER_ADDR0, configDNS_SERVER_ADDR1, configDNS_SERVER_ADDR2, configDNS_SERVER_ADDR3 }; - -/* The MAC address used by the demo. In production units the MAC address would -probably be read from flash memory or an EEPROM. Here it is just hard coded. -Note each node on a network must have a unique MAC address. */ -const uint8_t ucMACAddress[ 6 ] = { configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 }; - -/* The following two variables are used to communicate the status of the -register check tasks to the check software timer. If the variables keep -incrementing, then the register check tasks has not discovered any errors. If -a variable stops incrementing, then an error has been found. */ -volatile unsigned long ulRegTest1LoopCounter = 0UL, ulRegTest2LoopCounter = 0UL; - -/*-----------------------------------------------------------*/ - -int main_full( void ) -{ - /* Usage instructions on http://www.FreeRTOS.org/Atmel_SAM4E_RTOS_Demo.html */ - - /* Initialise the LCD and output a bitmap. The IP address will also be - displayed on the LCD when it has been obtained. */ - vInitialiseLCD(); - - /* If the file system is only going to be accessed from one task then - F_FS_THREAD_AWARE can be set to 0 and the set of example files are created - before the RTOS scheduler is started. If the file system is going to be - access from more than one task then F_FS_THREAD_AWARE must be set to 1 and - the set of sample files are created from the idle task hook function - vApplicationIdleHook(). */ - #if( F_FS_THREAD_AWARE == 0 ) - { - /* Initialise the drive and file system, then create a few example - files. The files can be viewed and accessed via the CLI. View the - documentation page for this demo (link at the top of this file) for more - information. */ - vCreateAndVerifySampleFiles(); - } - #endif - - /* Register example generic, file system related and UDP related CLI - commands respectively. Type 'help' into the command console to view a list - of registered commands. */ - vRegisterSampleCLICommands(); - vRegisterFileSystemCLICommands(); - vRegisterUDPCLICommands(); - - /* Initialise the network interface. Tasks that use the network are - created in the network event hook when the network is connected and ready - for use. The address values passed in here are used if ipconfigUSE_DHCP is - set to 0, or if ipconfigUSE_DHCP is set to 1 but a DHCP server cannot be - contacted. The IP address actually used is displayed on the LCD (after DHCP - has completed if DHCP is used). */ - FreeRTOS_IPInit( ucIPAddress, ucNetMask, ucGatewayAddress, ucDNSServerAddress, ucMACAddress ); - - /* Create all the other standard demo tasks. */ - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartCountingSemaphoreTasks(); - vStartDynamicPriorityTasks(); - vStartQueueOverwriteTask( mainQUEUE_OVERWRITE_TASK_PRIORITY ); - vStartQueueSetTasks(); - vStartRecursiveMutexTasks(); - vStartEventGroupTasks(); - vStartTaskNotifyTask(); - vStartInterruptSemaphoreTasks(); - vStartTimerDemoTask( mainTIMER_TEST_PERIOD ); - vStartInterruptQueueTasks(); - - /* Create the register check tasks, as described at the top of this - file */ - xTaskCreate( prvRegTest1Task, "Reg1", configMINIMAL_STACK_SIZE, ( void * ) NULL, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "Reg2", configMINIMAL_STACK_SIZE, ( void * ) NULL, tskIDLE_PRIORITY, NULL ); - - /* Start the scheduler itself. */ - vTaskStartScheduler(); - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTimerCallback( TimerHandle_t xTimer ) -{ -static long lChangedTimerPeriodAlready = pdFALSE; -static unsigned long ulLastRegTest1Value = 0, ulLastRegTest2Value = 0; -unsigned long ulErrorOccurred = pdFALSE; - - /* Avoid compiler warnings. */ - ( void ) xTimer; - - /* Have any of the standard demo tasks detected an error in their - operation? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - ulErrorOccurred |= ( 0x01UL << 3UL ); - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - ulErrorOccurred |= ( 0x01UL << 4UL ); - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - ulErrorOccurred |= ( 0x01UL << 5UL ); - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - ulErrorOccurred |= ( 0x01UL << 6UL ); - } - else if( xAreCountingSemaphoreTasksStillRunning() != pdTRUE ) - { - ulErrorOccurred |= ( 0x01UL << 8UL ); - } - else if( xAreDynamicPriorityTasksStillRunning() != pdTRUE ) - { - ulErrorOccurred |= ( 0x01UL << 9UL ); - } - else if( xIsQueueOverwriteTaskStillRunning() != pdTRUE ) - { - ulErrorOccurred |= ( 0x01UL << 10UL ); - } - else if( xAreQueueSetTasksStillRunning() != pdTRUE ) - { - ulErrorOccurred |= ( 0x01UL << 11UL ); - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - ulErrorOccurred |= ( 0x01UL << 12UL ); - } - else if( xAreEventGroupTasksStillRunning() != pdTRUE ) - { - ulErrorOccurred |= ( 0x01UL << 13UL ); - } - else if( xAreTaskNotificationTasksStillRunning() != pdTRUE ) - { - ulErrorOccurred |= ( 0x01UL << 14UL ); - } - else if( xAreInterruptSemaphoreTasksStillRunning() != pdTRUE ) - { - ulErrorOccurred |= ( 0x01UL << 15UL ); - } - else if( xAreTimerDemoTasksStillRunning( mainCHECK_TIMER_PERIOD_MS ) != pdTRUE ) - { - ulErrorOccurred |= 1UL << 16UL; - } - else if( xAreIntQueueTasksStillRunning() != pdTRUE ) - { - ulErrorOccurred |= 1UL << 17UL; - } - - - /* Check that the register test 1 task is still running. */ - if( ulLastRegTest1Value == ulRegTest1LoopCounter ) - { - ulErrorOccurred |= 1UL << 18UL; - } - ulLastRegTest1Value = ulRegTest1LoopCounter; - - /* Check that the register test 2 task is still running. */ - if( ulLastRegTest2Value == ulRegTest2LoopCounter ) - { - ulErrorOccurred |= 1UL << 19UL; - } - ulLastRegTest2Value = ulRegTest2LoopCounter; - - if( ulErrorOccurred != pdFALSE ) - { - /* An error occurred. Increase the frequency at which the check timer - toggles its LED to give visual feedback of the potential error - condition. */ - if( lChangedTimerPeriodAlready == pdFALSE ) - { - lChangedTimerPeriodAlready = pdTRUE; - - /* This call to xTimerChangePeriod() uses a zero block time. - Functions called from inside of a timer callback function must - *never* attempt to block as to do so could impact other software - timers. */ - xTimerChangePeriod( xTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK ); - } - } - - /* Toggle the LED to give visual feedback of the system status. The rate at - which the LED toggles will increase to mainERROR_CHECK_TIMER_PERIOD_MS if a - suspected error has been found in any of the standard demo tasks. */ - vParTestToggleLED( mainCHECK_LED ); -} -/*-----------------------------------------------------------*/ - -/* Called by FreeRTOS+UDP when the network connects. */ -void vApplicationIPNetworkEventHook( eIPCallbackEvent_t eNetworkEvent ) -{ -static long lTasksAlreadyCreated = pdFALSE; -const unsigned long ulXCoord = 3, ulYCoord = 3, ulIPAddressOffset = 45; -unsigned long ulIPAddress; -char cIPAddress[ 20 ]; - - /* Note: If the application is started without the network cable plugged in - then ipconfigUDP_TASK_PRIORITY should be set to 0 in FreeRTOSIPConfig.h to - ensure the IP task is created at the idle priority. This is because the Atmel - ASF GMAC driver polls the GMAC looking for a connection, and doing so will - prevent any lower priority tasks from executing. In this demo the IP task is - started at the idle priority, then set to configMAX_PRIORITIES - 2 in the - network event hook only after a connection has been established (when the event - passed into the network event hook is eNetworkUp). */ - if( eNetworkEvent == eNetworkUp ) - { - /* Ensure tasks are only created once. */ - if( lTasksAlreadyCreated == pdFALSE ) - { - /* Create the task that handles the CLI on a UDP port. The port - number is set using the configUDP_CLI_PORT_NUMBER setting in - FreeRTOSConfig.h. */ - vStartUDPCommandInterpreterTask( mainUDP_CLI_TASK_STACK_SIZE, mainUDP_CLI_PORT_NUMBER, mainUDP_CLI_TASK_PRIORITY ); - - #if( mainINCLUDE_ECHO_CLIENT_TASKS == 1 ) - { - /* Create the UDP echo tasks. The UDP echo tasks require the IP - address of the echo server to be defined using the - configECHO_SERVER_ADDR0 to configECHO_SERVER_ADDR3 constants in - FreeRTOSConfig.h. */ - vStartEchoClientTasks( mainECHO_CLIENT_STACK_SIZE, tskIDLE_PRIORITY ); - } - #endif - } - - /* Obtain the IP address, convert it to a string, then display it on the - LCD. */ - FreeRTOS_GetAddressConfiguration( &ulIPAddress, NULL, NULL, NULL ); - FreeRTOS_inet_ntoa( ulIPAddress, cIPAddress ); - ili93xx_draw_string( ulXCoord, ulYCoord, ( uint8_t * ) "IP: " ); - ili93xx_draw_string( ulXCoord + ulIPAddressOffset, ulYCoord, ( uint8_t * ) cIPAddress ); - - /* Set the priority of the IP task up to the desired priority now it has - connected. */ - vTaskPrioritySet( NULL, mainCONNECTED_IP_TASK_PRIORITY ); - } - - /* NOTE: At the time of writing the Ethernet driver does not report the - cable being unplugged - so the following if() condition will never be met. - It is included for possible future updates to the driver. */ - if( eNetworkEvent == eNetworkDown ) - { - /* Ensure the Atmel GMAC drivers don't hog all the CPU time as they look - for a new connection by lowering the priority of the IP task to that of - the Idle task. */ - vTaskPrioritySet( NULL, tskIDLE_PRIORITY ); - - /* Disconnected - so no IP address. */ - ili93xx_draw_string( ulXCoord, ulYCoord, ( uint8_t * ) "IP: " ); - } -} -/*-----------------------------------------------------------*/ - -void vFullDemoIdleHook( void ) -{ -static TimerHandle_t xCheckTimer = NULL; - - if( xCheckTimer == NULL ) - { - /* Create the software timer that performs the 'check' - functionality, in the full demo. This is not done before the - scheduler is started as to do so would prevent the standard demo - timer tasks from passing their tests (they expect the timer - command queue to be empty. */ - xCheckTimer = xTimerCreate( "CheckTimer", /* A text name, purely to help debugging. */ - ( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvCheckTimerCallback ); /* The callback function that inspects the status of all the other tasks. */ - - if( xCheckTimer != NULL ) - { - xTimerStart( xCheckTimer, mainDONT_BLOCK ); - } - - /* Also start some timers that just flash LEDs. */ - vStartLEDFlashTimers( mainNUM_FLASH_TIMER_LEDS ); - } - - /* If the file system is only going to be accessed from one task then - F_FS_THREAD_AWARE can be set to 0 and the set of example files is created - before the RTOS scheduler is started. If the file system is going to be - access from more than one task then F_FS_THREAD_AWARE must be set to 1 and - the set of sample files are created from the idle task hook function. */ - #if( F_FS_THREAD_AWARE == 1 ) - { - static portBASE_TYPE xCreatedSampleFiles = pdFALSE; - - /* Initialise the drive and file system, then create a few example - files. The output from this function just goes to the stdout window, - allowing the output to be viewed when the UDP command console is not - connected. */ - if( xCreatedSampleFiles == pdFALSE ) - { - vCreateAndVerifySampleFiles(); - xCreatedSampleFiles = pdTRUE; - } - } - #endif -} -/*-----------------------------------------------------------*/ - -void vFullDemoTickHook( void ) -{ - /* Call the periodic queue overwrite from ISR test function. */ - vQueueOverwritePeriodicISRDemo(); - - /* Call the periodic queue set ISR test function. */ - vQueueSetAccessQueueSetFromISR(); - - /* Call the event group ISR tests. */ - vPeriodicEventGroupsProcessing(); - - /* Exercise task notifications from interrupts. */ - xNotifyTaskFromISR(); - - /* Use mutexes from interrupts. */ - vInterruptSemaphorePeriodicTest(); - - /* Use timers from an interrupt. */ - vTimerPeriodicISRTests(); -} -/*-----------------------------------------------------------*/ - -/* Called automatically when a reply to an outgoing ping is received. */ -void vApplicationPingReplyHook( ePingReplyStatus_t eStatus, uint16_t usIdentifier ) -{ - /* This demo has nowhere to output any information so does nothing, but the - IP address resolved for the pined URL is displayed in the CLI. */ - ( void ) usIdentifier; - ( void ) eStatus; -} -/*-----------------------------------------------------------*/ - -/* This is a naked function. */ -static void prvRegTest1Task( void *pvParameters ) -{ - __asm volatile - ( - " /* Fill the core registers with known values. */ \n" - " mov r0, #100 \n" - " mov r1, #101 \n" - " mov r2, #102 \n" - " mov r3, #103 \n" - " mov r4, #104 \n" - " mov r5, #105 \n" - " mov r6, #106 \n" - " mov r7, #107 \n" - " mov r8, #108 \n" - " mov r9, #109 \n" - " mov r10, #110 \n" - " mov r11, #111 \n" - " mov r12, #112 \n" - " \n" - " /* Fill the VFP registers with known values. */ \n" - " vmov d0, r0, r1 \n" - " vmov d1, r2, r3 \n" - " vmov d2, r4, r5 \n" - " vmov d3, r6, r7 \n" - " vmov d4, r8, r9 \n" - " vmov d5, r10, r11 \n" - " vmov d6, r0, r1 \n" - " vmov d7, r2, r3 \n" - " vmov d8, r4, r5 \n" - " vmov d9, r6, r7 \n" - " vmov d10, r8, r9 \n" - " vmov d11, r10, r11 \n" - " vmov d12, r0, r1 \n" - " vmov d13, r2, r3 \n" - " vmov d14, r4, r5 \n" - " vmov d15, r6, r7 \n" - " \n" - "reg1_loop: \n" - " /* Check all the VFP registers still contain the values set above.\n" - " First save registers that are clobbered by the test. */ \n" - " push { r0-r1 } \n" - " \n" - " vmov r0, r1, d0 \n" - " cmp r0, #100 \n" - " bne reg1_error_loopf \n" - " cmp r1, #101 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d1 \n" - " cmp r0, #102 \n" - " bne reg1_error_loopf \n" - " cmp r1, #103 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d2 \n" - " cmp r0, #104 \n" - " bne reg1_error_loopf \n" - " cmp r1, #105 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d3 \n" - " cmp r0, #106 \n" - " bne reg1_error_loopf \n" - " cmp r1, #107 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d4 \n" - " cmp r0, #108 \n" - " bne reg1_error_loopf \n" - " cmp r1, #109 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d5 \n" - " cmp r0, #110 \n" - " bne reg1_error_loopf \n" - " cmp r1, #111 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d6 \n" - " cmp r0, #100 \n" - " bne reg1_error_loopf \n" - " cmp r1, #101 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d7 \n" - " cmp r0, #102 \n" - " bne reg1_error_loopf \n" - " cmp r1, #103 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d8 \n" - " cmp r0, #104 \n" - " bne reg1_error_loopf \n" - " cmp r1, #105 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d9 \n" - " cmp r0, #106 \n" - " bne reg1_error_loopf \n" - " cmp r1, #107 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d10 \n" - " cmp r0, #108 \n" - " bne reg1_error_loopf \n" - " cmp r1, #109 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d11 \n" - " cmp r0, #110 \n" - " bne reg1_error_loopf \n" - " cmp r1, #111 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d12 \n" - " cmp r0, #100 \n" - " bne reg1_error_loopf \n" - " cmp r1, #101 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d13 \n" - " cmp r0, #102 \n" - " bne reg1_error_loopf \n" - " cmp r1, #103 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d14 \n" - " cmp r0, #104 \n" - " bne reg1_error_loopf \n" - " cmp r1, #105 \n" - " bne reg1_error_loopf \n" - " vmov r0, r1, d15 \n" - " cmp r0, #106 \n" - " bne reg1_error_loopf \n" - " cmp r1, #107 \n" - " bne reg1_error_loopf \n" - " \n" - " /* Restore the registers that were clobbered by the test. */\n" - " pop {r0-r1} \n" - " \n" - " /* VFP register test passed. Jump to the core register test. */\n" - " b reg1_loopf_pass \n" - " \n" - "reg1_error_loopf: \n" - " /* If this line is hit then a VFP register value was found to be\n" - " incorrect. */ \n" - " b reg1_error_loopf \n" - " \n" - "reg1_loopf_pass: \n" - " \n" - " cmp r0, #100 \n" - " bne reg1_error_loop \n" - " cmp r1, #101 \n" - " bne reg1_error_loop \n" - " cmp r2, #102 \n" - " bne reg1_error_loop \n" - " cmp r3, #103 \n" - " bne reg1_error_loop \n" - " cmp r4, #104 \n" - " bne reg1_error_loop \n" - " cmp r5, #105 \n" - " bne reg1_error_loop \n" - " cmp r6, #106 \n" - " bne reg1_error_loop \n" - " cmp r7, #107 \n" - " bne reg1_error_loop \n" - " cmp r8, #108 \n" - " bne reg1_error_loop \n" - " cmp r9, #109 \n" - " bne reg1_error_loop \n" - " cmp r10, #110 \n" - " bne reg1_error_loop \n" - " cmp r11, #111 \n" - " bne reg1_error_loop \n" - " cmp r12, #112 \n" - " bne reg1_error_loop \n" - " \n" - " /* Everything passed, increment the loop counter. */ \n" - " push { r0-r1 } \n" - " ldr r0, =ulRegTest1LoopCounter \n" - " ldr r1, [r0] \n" - " adds r1, r1, #1 \n" - " str r1, [r0] \n" - " pop { r0-r1 } \n" - " \n" - " /* Start again. */ \n" - " b reg1_loop \n" - " \n" - "reg1_error_loop: \n" - " /* If this line is hit then there was an error in a core register value.\n" - " The loop ensures the loop counter stops incrementing. */\n" - " b reg1_error_loop \n" - " nop " - ); - - /* Remove compiler warnings about unused parameters. */ - ( void ) pvParameters; -} -/*-----------------------------------------------------------*/ - -/* This is a naked function. */ -static void prvRegTest2Task( void *pvParameters ) -{ - __asm volatile - ( - " /* Set all the core registers to known values. */ \n" - " mov r0, #-1 \n" - " mov r1, #1 \n" - " mov r2, #2 \n" - " mov r3, #3 \n" - " mov r4, #4 \n" - " mov r5, #5 \n" - " mov r6, #6 \n" - " mov r7, #7 \n" - " mov r8, #8 \n" - " mov r9, #9 \n" - " mov r10, #10 \n" - " mov r11, #11 \n" - " mov r12, #12 \n" - " \n" - " /* Set all the VFP to known values. */ \n" - " vmov d0, r0, r1 \n" - " vmov d1, r2, r3 \n" - " vmov d2, r4, r5 \n" - " vmov d3, r6, r7 \n" - " vmov d4, r8, r9 \n" - " vmov d5, r10, r11 \n" - " vmov d6, r0, r1 \n" - " vmov d7, r2, r3 \n" - " vmov d8, r4, r5 \n" - " vmov d9, r6, r7 \n" - " vmov d10, r8, r9 \n" - " vmov d11, r10, r11 \n" - " vmov d12, r0, r1 \n" - " vmov d13, r2, r3 \n" - " vmov d14, r4, r5 \n" - " vmov d15, r6, r7 \n" - " \n" - "reg2_loop: \n" - " \n" - " /* Check all the VFP registers still contain the values set above.\n" - " First save registers that are clobbered by the test. */ \n" - " push { r0-r1 } \n" - " \n" - " vmov r0, r1, d0 \n" - " cmp r0, #-1 \n" - " bne reg2_error_loopf \n" - " cmp r1, #1 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d1 \n" - " cmp r0, #2 \n" - " bne reg2_error_loopf \n" - " cmp r1, #3 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d2 \n" - " cmp r0, #4 \n" - " bne reg2_error_loopf \n" - " cmp r1, #5 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d3 \n" - " cmp r0, #6 \n" - " bne reg2_error_loopf \n" - " cmp r1, #7 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d4 \n" - " cmp r0, #8 \n" - " bne reg2_error_loopf \n" - " cmp r1, #9 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d5 \n" - " cmp r0, #10 \n" - " bne reg2_error_loopf \n" - " cmp r1, #11 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d6 \n" - " cmp r0, #-1 \n" - " bne reg2_error_loopf \n" - " cmp r1, #1 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d7 \n" - " cmp r0, #2 \n" - " bne reg2_error_loopf \n" - " cmp r1, #3 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d8 \n" - " cmp r0, #4 \n" - " bne reg2_error_loopf \n" - " cmp r1, #5 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d9 \n" - " cmp r0, #6 \n" - " bne reg2_error_loopf \n" - " cmp r1, #7 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d10 \n" - " cmp r0, #8 \n" - " bne reg2_error_loopf \n" - " cmp r1, #9 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d11 \n" - " cmp r0, #10 \n" - " bne reg2_error_loopf \n" - " cmp r1, #11 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d12 \n" - " cmp r0, #-1 \n" - " bne reg2_error_loopf \n" - " cmp r1, #1 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d13 \n" - " cmp r0, #2 \n" - " bne reg2_error_loopf \n" - " cmp r1, #3 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d14 \n" - " cmp r0, #4 \n" - " bne reg2_error_loopf \n" - " cmp r1, #5 \n" - " bne reg2_error_loopf \n" - " vmov r0, r1, d15 \n" - " cmp r0, #6 \n" - " bne reg2_error_loopf \n" - " cmp r1, #7 \n" - " bne reg2_error_loopf \n" - " \n" - " /* Restore the registers that were clobbered by the test. */\n" - " pop {r0-r1} \n" - " \n" - " /* VFP register test passed. Jump to the core register test. */\n" - " b reg2_loopf_pass \n" - " \n" - "reg2_error_loopf: \n" - " /* If this line is hit then a VFP register value was found to be\n" - " incorrect. */ \n" - " b reg2_error_loopf \n" - " \n" - "reg2_loopf_pass: \n" - " \n" - " cmp r0, #-1 \n" - " bne reg2_error_loop \n" - " cmp r1, #1 \n" - " bne reg2_error_loop \n" - " cmp r2, #2 \n" - " bne reg2_error_loop \n" - " cmp r3, #3 \n" - " bne reg2_error_loop \n" - " cmp r4, #4 \n" - " bne reg2_error_loop \n" - " cmp r5, #5 \n" - " bne reg2_error_loop \n" - " cmp r6, #6 \n" - " bne reg2_error_loop \n" - " cmp r7, #7 \n" - " bne reg2_error_loop \n" - " cmp r8, #8 \n" - " bne reg2_error_loop \n" - " cmp r9, #9 \n" - " bne reg2_error_loop \n" - " cmp r10, #10 \n" - " bne reg2_error_loop \n" - " cmp r11, #11 \n" - " bne reg2_error_loop \n" - " cmp r12, #12 \n" - " bne reg2_error_loop \n" - " \n" - " /* Increment the loop counter to indicate this test is still functioning\n" - " correctly. */ \n" - " push { r0-r1 } \n" - " ldr r0, =ulRegTest2LoopCounter \n" - " ldr r1, [r0] \n" - " adds r1, r1, #1 \n" - " str r1, [r0] \n" - " \n" - " /* Yield to increase test coverage. */ \n" - " movs r0, #0x01 \n" - " ldr r1, =0xe000ed04 \n" /* NVIC_INT_CTRL */ - " lsl r0, #28 \n" /* Shift to PendSV bit */ - " str r0, [r1] \n" - " dsb \n" - " pop { r0-r1 } \n" - " \n" - " /* Start again. */ \n" - " b reg2_loop \n" - " \n" - "reg2_error_loop: \n" - " /* If this line is hit then there was an error in a core register value.\n" - " This loop ensures the loop counter variable stops incrementing. */\n" - " b reg2_error_loop \n" - " nop \n" - ); - - /* Remove compiler warnings about unused parameters. */ - ( void ) pvParameters; -} diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/printf-stdarg.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/printf-stdarg.c deleted file mode 100644 index 7062a04e4..000000000 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/printf-stdarg.c +++ /dev/null @@ -1,280 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -#define putchar(c) outbyte(c) -*/ - -#include - -static void printchar(char **str, int c) -{ - extern int putchar(int c); - - if (str) { - **str = c; - ++(*str); - } - else (void)putchar(c); -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = -i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = t + '0'; - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - -